Please use full patch. (For ports@) Here it's:

--- src/res.c   2006-09-19 15:45:18.000000000 +0300
+++ src/res.c   2009-06-17 17:50:18.000000000 +0300
@@ -48,10 +48,15 @@

 #include <res.h>

+/* Prevent crashes due to invalid prototype/ABI */
+#if ARES_VERSION < 0x010600
+ #error "You have an old c-ares version on your system and/or Unreals
c-ares failed to compile!"
+#endif
+
 /* Forward declerations */
-void unrealdns_cb_iptoname(void *arg, int status, struct hostent *he);
-void unrealdns_cb_nametoip_verify(void *arg, int status, struct hostent *he);
-void unrealdns_cb_nametoip_link(void *arg, int status, struct hostent *he);
+void unrealdns_cb_iptoname(void *arg, int status, int timeouts,
struct hostent *he);
+void unrealdns_cb_nametoip_verify(void *arg, int status, int
timeouts, struct hostent *he);
+void unrealdns_cb_nametoip_link(void *arg, int status, int timeouts,
struct hostent *he);
 void unrealdns_delasyncconnects(void);
 static unsigned int unrealdns_haship(void *binaryip, int length);
 static void unrealdns_addtocache(char *name, void *binaryip, int length);
@@ -240,7 +245,7 @@
 #endif
 }

-void unrealdns_cb_iptoname(void *arg, int status, struct hostent *he)
+void unrealdns_cb_iptoname(void *arg, int status, int timeouts,
struct hostent *he)
 {
 DNSReq *r = (DNSReq *)arg;
 DNSReq *newr;
@@ -290,7 +295,7 @@
 }


-void unrealdns_cb_nametoip_verify(void *arg, int status, struct hostent *he)
+void unrealdns_cb_nametoip_verify(void *arg, int status, int
timeouts, struct hostent *he)
 {
 DNSReq *r = (DNSReq *)arg;
 aClient *acptr = r->cptr;
@@ -363,7 +368,7 @@
        unrealdns_freeandremovereq(r);
 }

-void unrealdns_cb_nametoip_link(void *arg, int status, struct hostent *he)
+void unrealdns_cb_nametoip_link(void *arg, int status, int timeouts,
struct hostent *he)
 {
 DNSReq *r = (DNSReq *)arg;
 int n;
@@ -390,9 +395,11 @@
                /* fatal error while resolving */
                sendto_realops("Unable to resolve hostname '%s', when trying to
connect to server %s.",
                        r->name, r->linkblock->servername);
+               r->linkblock->refcount--;
                unrealdns_freeandremovereq(r);
                return;
        }
+       r->linkblock->refcount--;

 #ifdef INET6
        if (((he->h_length != 4) && (he->h_length != 16)) || 
!he->h_addr_list[0])
@@ -715,21 +722,34 @@
        } else
        if (*param == 'i') /* INFORMATION */
        {
-               struct ares_config_info inf;
+               struct ares_options inf;
                int i;
+               int optmask;
                
-               ares_get_config(&inf, resolver_channel);
+               ares_save_options(resolver_channel, &inf, &optmask);

                sendtxtnumeric(sptr, "****** DNS Configuration Information 
******");
                sendtxtnumeric(sptr, " c-ares version: %s",ares_version(NULL));
-               sendtxtnumeric(sptr, "        timeout: %d", inf.timeout);
-               sendtxtnumeric(sptr, "          tries: %d", inf.tries);
-               sendtxtnumeric(sptr, "   # of servers: %d", inf.numservers);
-               for (i = 0; i < inf.numservers; i++)
-                       sendtxtnumeric(sptr, "      server #%d: %s", i+1, 
inf.servers[i] ?
inf.servers[i] : "[???]");
-                       
-               /* TODO: free or get memleak ! */
+
+               if(optmask & ARES_OPT_TIMEOUTMS)
+                       sendtxtnumeric(sptr, "        timeout: %d", 
inf.timeout);
+               if(optmask & ARES_OPT_TRIES)
+                       sendtxtnumeric(sptr, "          tries: %d", inf.tries);
+               if(optmask & ARES_OPT_SERVERS)
+               {
+                       sendtxtnumeric(sptr, "   # of servers: %d", 
inf.nservers);
+                       for (i = 0; i < inf.nservers; i++)
+                               sendtxtnumeric(sptr, "      server #%d: %s", 
i+1,
inet_ntoa(inf.servers[i]));
+               }
+               if(optmask & ARES_OPT_DOMAINS)
+               {
+                       sendtxtnumeric(sptr, "   # of search domains: %d", 
inf.ndomains);
+                       for (i = 0; i < inf.ndomains; i++)
+                               sendtxtnumeric(sptr, "      domain #%d: %s", 
i+1, inf.domains[i]);
+               }
                sendtxtnumeric(sptr, "****** End of DNS Configuration Info 
******");
+               
+               ares_destroy_options(&inf);
        } else /* STATISTICS */
        {
                sendtxtnumeric(sptr, "DNS CACHE Stats:");
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to