Parcourir la source

* Fix dns_id in dcc[].u.dns being filled with -1 after callback has already been called

svn: 1497
Bryan Drewery il y a 21 ans
Parent
commit
d71e4cbd68
3 fichiers modifiés avec 14 ajouts et 4 suppressions
  1. 7 2
      src/botnet.c
  2. 4 1
      src/dcc.c
  3. 3 1
      src/mod/server.mod/servmsg.c

+ 7 - 2
src/botnet.c

@@ -950,7 +950,9 @@ int botlink(char *linker, int idx, char *nick)
       dcc[i].u.dns->cptr = strdup(linker);
       dcc[i].u.dns->ibuf = idx;
 
-      dcc[i].u.dns->dns_id = egg_dns_lookup(bi->address, 20, botlink_dns_callback, (void *) i);
+      int dns_id = egg_dns_lookup(bi->address, 20, botlink_dns_callback, (void *) i);
+      if (dns_id >= 0)
+        dcc[i].u.dns->dns_id = dns_id;
      
       return 1;
       /* wait for async reply */
@@ -1121,7 +1123,10 @@ void tandem_relay(int idx, char *nick, register int i)
 
   dcc[i].timeval = now;
   dcc[i].u.dns->ibuf = idx;
-  dcc[i].u.dns->dns_id = egg_dns_lookup(bi->address, 20, tandem_relay_dns_callback, (void *) i);
+  
+  int dns_id = egg_dns_lookup(bi->address, 20, tandem_relay_dns_callback, (void *) i);
+  if (dns_id >= 0)
+    dcc[i].u.dns->dns_id = dns_id;
 
   return;
   /* wait for async reply */

+ 4 - 1
src/dcc.c

@@ -1260,7 +1260,10 @@ dcc_telnet(int idx, char *buf, int ii)
   strcpy(dcc[i].nick, "*");
 
   dcc[i].u.dns->ibuf = idx;
-  dcc[i].u.dns->dns_id = egg_dns_reverse(s, 20, dcc_telnet_dns_callback, (void *) i);
+
+  int dns_id = egg_dns_reverse(s, 20, dcc_telnet_dns_callback, (void *) i);
+  if (dns_id >= 0)
+    dcc[i].u.dns->dns_id = dns_id;
 }
 
 static void dcc_telnet_dns_callback(int id, void *client_data, const char *ip, char **hosts)

+ 3 - 1
src/mod/server.mod/servmsg.c

@@ -1381,7 +1381,9 @@ static void connect_server(void)
     /* I'm resolving... don't start another server connect request */
     resolvserv = 1;
     /* Resolve the hostname. */
-    dcc[newidx].u.dns->dns_id = egg_dns_lookup(botserver, 20, server_dns_callback, (void *) newidx);
+    int dns_id = egg_dns_lookup(botserver, 20, server_dns_callback, (void *) newidx);
+    if (dns_id >= 0)
+      dcc[newidx].u.dns->dns_id = dns_id;
     /* wait for async reply */
   }
 }