Bryan Drewery преди 16 години
родител
ревизия
7fe25596d7
променени са 1 файла, в които са добавени 14 реда и са изтрити 3 реда
  1. 14 3
      src/mod/irc.mod/chan.c

+ 14 - 3
src/mod/irc.mod/chan.c

@@ -178,10 +178,21 @@ void resolve_to_rbl(struct chanset_t *chan, const char *host, resolv_member *r)
 
   *(r->server) = rbl_server;
 
-  size_t iplen = strlen(host) + 1 + rbl_server.length() + 1;
+  size_t iplen = rbl_server.length() + 1;
+  bool v6 = 0;
+  if (strchr(host, ':')) {
+    v6 = 1;
+    iplen += 128 + 1;
+  } else
+    iplen += strlen(host) + 1;
+
   char *ip = (char *) my_calloc(1, iplen);
-  reverse_ip(host, ip);
-  strlcat(ip, ".", iplen);
+  if (v6)
+    socket_ipv6_to_dots(host, ip);
+  else {
+    reverse_ip(host, ip);
+    strlcat(ip, ".", iplen);
+  }
   strlcat(ip, rbl_server.c_str(), iplen);
 
   if (egg_dns_lookup(ip, 20, resolve_rbl_callback, (void *) r, DNS_A) == -2) { //Already querying?