--- ./fetchmail-6.2.5/driver.c Mon Mar 28 01:12:21 2005 +++ ./fetchmail-6.2.5-patched/driver.c Mon Mar 28 17:22:51 2005 @@ -34,6 +34,7 @@ #endif #if defined(HAVE_RES_SEARCH) || defined(HAVE_GETHOSTBYNAME) +#include #include #include "mx.h" #endif /* defined(HAVE_RES_SEARCH) || defined(HAVE_GETHOSTBYNAME) */ @@ -826,6 +827,9 @@ int err, mailserver_socket = -1; #endif /* HAVE_VOLATILE */ const char *msg; +#if INET6_ENABLE + u_long resolver_options; +#endif SIGHANDLERTYPE pipesave; SIGHANDLERTYPE alrmsave; @@ -1007,9 +1011,36 @@ * Received: from hostname [10.0.0.1] */ errno = 0; +#if INET6_ENABLE + res_init(); +#endif /* INET6_ENABLE */ namerec = gethostbyname(ctl->server.queryname); if (namerec == (struct hostent *)NULL) { +#if INET6_ENABLE + resolver_options = _res.options; + _res.options |= RES_USE_INET6; + namerec = gethostbyname(ctl->server.queryname); + _res.options = resolver_options; + if (namerec == (struct hostent *)NULL) + { + report(stderr, + GT_("couldn't find canonical DNS name of %s (%s)\n"), + ctl->server.pollname, ctl->server.queryname); + err = PS_DNS; + set_timeout(0); + phase = oldphase; + goto closeUp; + } + else + { + ctl->server.truename=xstrdup((char *)namerec->h_name); + ctl->server.trueaddr=xmalloc(namerec->h_length); + memcpy(ctl->server.trueaddr, + namerec->h_addr_list[0], + namerec->h_length); + } +#else /* !INET6_ENABLE */ report(stderr, GT_("couldn't find canonical DNS name of %s (%s)\n"), ctl->server.pollname, ctl->server.queryname); @@ -1017,6 +1048,7 @@ set_timeout(0); phase = oldphase; goto closeUp; +#endif /* INET6_ENABLE */ } else {