diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2001-09-24 23:31:48 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2001-09-24 23:31:48 +0000 |
commit | 1aa5b7ad191fe589eb7b9bd8256d55c925185a1e (patch) | |
tree | 2a668f3d7bc1ff98c4d858465f8e083faa153582 /driver.c | |
parent | a83b5715bb2a4def9231959bb56e5257b8e258b5 (diff) | |
download | fetchmail-1aa5b7ad191fe589eb7b9bd8256d55c925185a1e.tar.gz fetchmail-1aa5b7ad191fe589eb7b9bd8256d55c925185a1e.tar.bz2 fetchmail-1aa5b7ad191fe589eb7b9bd8256d55c925185a1e.zip |
Move Hesiod lookups away from startup time.
svn path=/trunk/; revision=3484
Diffstat (limited to 'driver.c')
-rw-r--r-- | driver.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -28,6 +28,9 @@ #ifdef HAVE_NET_SOCKET_H #include <net/socket.h> #endif +#ifdef HESIOD +#include <hesiod.h> +#endif #ifdef HAVE_RES_SEARCH #include <netdb.h> @@ -806,6 +809,26 @@ const int maxfetch; /* maximum number of messages to fetch */ #endif #endif /* !INET6_ENABLE */ +#ifdef HESIOD + /* If either the pollname or vianame are "hesiod" we want to + lookup the user's hesiod pobox host */ + if (!strcasecmp(ctl->server.queryname, "hesiod")) { + struct hes_postoffice *hes_p; + hes_p = hes_getmailhost(ctl->remotename); + if (hes_p != NULL && strcmp(hes_p->po_type, "POP") == 0) { + free(ctl->server.queryname); + ctl->server.queryname = xstrdup(hes_p->po_host); + if (ctl->server.via) + free(ctl->server.via); + ctl->server.via = xstrdup(hes_p->po_host); + } else { + report(stderr, + GT_("couldn't find HESIOD pobox for %s\n"), + ctl->remotename); + } + } +#endif /* HESIOD */ + #ifdef HAVE_GETHOSTBYNAME /* * Canonicalize the server truename for later use. This also |