]> Pileus Git - ~andy/fetchmail/commitdiff
Allow multidrop to be handled if all sites have `no dns' on.
authorEric S. Raymond <esr@thyrsus.com>
Mon, 1 Dec 1997 08:11:03 +0000 (08:11 -0000)
committerEric S. Raymond <esr@thyrsus.com>
Mon, 1 Dec 1997 08:11:03 +0000 (08:11 -0000)
svn path=/trunk/; revision=1552

NEWS
driver.c
fetchmail.c

diff --git a/NEWS b/NEWS
index 00bdedd94fe45b610da6e5519ed16d5917f96dca..0057354545c9904f1132e5adde83abfc4fd6c699 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -5,8 +5,6 @@
 * More log levels?
 * Allow an explicit "append" option to specify what reqwrite appends?  (For
   when user's pop3 host isn't the same as his SMTP host.)
-* Add logic to check whether *all* entries have `no dns' in them and allow
-  fetchmail to proceed in that case even if dns is down.
 * Periodically check for listener-up and croak gracefully if it's not.
 * Rewrite maps "From: John Smith (Systems) <jsmith@domain>" to 
   "From: John Smith@my.pop.server (Systems) <jsmith@domain>".  Is this
@@ -26,8 +24,10 @@ fetchmail-4.3.4 (Sat Nov 22 01:51:41 EST 1997)
   before anything else gets done (suggested by Greg Stark).
 * Added Gordon Matzigkeit's warning about -F to the man page.
 * Improved POP3 protocol-synchronization error messages.
+* Allow fetchmail to proceed in that case even if DNS is down or unavailable
+  if all multidrop entries have `no dns'.
 
-There are 277 people on fetchmail-friends and 92 on fetchmail-announce.
+There are 274 people on fetchmail-friends and 95 on fetchmail-announce.
 
 fetchmail-4.3.3 (Sat Nov 22 01:51:41 EST 1997)
 * Robert Hardy <rhardy@webcon.net>'s patch to use IMAP EXAMINE in check mode. 
index 317e75949a5416a25b6f58ccedd08733f518f543..7e5824ce3cd4b31716bba105f4026854b42848c8 100644 (file)
--- a/driver.c
+++ b/driver.c
@@ -114,7 +114,6 @@ static void timeout_handler (int signal)
 #define XMIT_ANTISPAM          3       
 static int accept_count, reject_count;
 
-#ifdef HAVE_RES_SEARCH
 #define MX_RETRIES     3
 
 static int is_host_alias(const char *name, struct query *ctl)
@@ -150,7 +149,13 @@ static int is_host_alias(const char *name, struct query *ctl)
     else if (!ctl->server.dns)
        return(FALSE);
 
+#ifndef HAVE_RES_SEARCH
+    return(FALSE);
+#else
     /*
+     * The only code that calls the BIND library is here and in the
+     * start-of-query probe with gethostbyname(3).
+     *
      * We know DNS service was up at the beginning of this poll cycle.
      * If it's down, our nameserver has crashed.  We don't want to try
      * delivering the current message or anything else from this
@@ -219,6 +224,7 @@ static int is_host_alias(const char *name, struct query *ctl)
     /* add this name to relevant server's `also known as' list */
     save_str(&lead_server->akalist, -1, name);
     return(TRUE);
+#endif /* HAVE_RES_SEARCH */
 }
 
 static void map_name(name, ctl, xmit_names)
@@ -381,7 +387,6 @@ static char *parse_received(struct query *ctl, char *bufp)
        return(rbuf);
     }
 }
-#endif /* HAVE_RES_SEARCH */
 
 static int smtp_open(struct query *ctl)
 /* try to open a socket to the appropriate SMTP server for this query */ 
@@ -546,10 +551,8 @@ int num;           /* index of message */
     int n, linelen, oldlen, ch, remaining, skipcount;
     char               *cp;
     struct idlist      *idp, *xmit_names;
-    flag                       good_addresses, bad_addresses, has_nuls;
-#ifdef HAVE_RES_SEARCH
+    flag               good_addresses, bad_addresses, has_nuls;
     flag               no_local_matches = FALSE;
-#endif /* HAVE_RES_SEARCH */
     int                        olderrs;
 
     next_address = sizeticker = 0;
@@ -787,14 +790,12 @@ int num;          /* index of message */
                    env_offs = (line - headers);
                }    
            }
-#ifdef HAVE_RES_SEARCH
            else if (!received_for && !strncasecmp("Received:", line, 9))
            {
                if (skipcount++ != ctl->server.envskip)
                    continue;
                received_for = parse_received(ctl, line);
            }
-#endif /* HAVE_RES_SEARCH */
        }
     }
 
@@ -827,7 +828,6 @@ int num;            /* index of message */
     /* cons up a list of local recipients */
     xmit_names = (struct idlist *)NULL;
     bad_addresses = good_addresses = accept_count = reject_count = 0;
-#ifdef HAVE_RES_SEARCH
     /* is this a multidrop box? */
     if (MULTIDROP(ctl))
     {
@@ -867,7 +867,6 @@ int num;            /* index of message */
        }
     }
     else       /* it's a single-drop box, use first localname */
-#endif /* HAVE_RES_SEARCH */
        save_str(&xmit_names, XMIT_ACCEPT, ctl->localnames->id);
 
 
@@ -1238,18 +1237,13 @@ int num;                /* index of message */
        fputs("#", stderr);
 
     /* write error notifications */
-#ifdef HAVE_RES_SEARCH
     if (no_local_matches || has_nuls || bad_addresses)
-#else
-    if (has_nuls || bad_addresses)
-#endif /* HAVE_RES_SEARCH */
     {
        int     errlen = 0;
        char    errhd[USERNAMELEN + POPBUFSIZE], *errmsg;
 
        errmsg = errhd;
        (void) strcpy(errhd, "X-Fetchmail-Warning: ");
-#ifdef HAVE_RES_SEARCH
        if (no_local_matches)
        {
            if (reject_count != 1)
@@ -1262,7 +1256,6 @@ int num;          /* index of message */
                sprintf(errhd+strlen(errhd), "recipient address %s didn't match any local name", idp->id);
            }
        }
-#endif /* HAVE_RES_SEARCH */
 
        if (has_nuls)
        {
index 493cb24773f234091c111aae195a93e822f79edf..8165fea068a3de2174db25bacaba8c66abe230df 100644 (file)
@@ -664,7 +664,7 @@ static int load_params(int argc, char **argv, int optind)
 
 #if !defined(HAVE_GETHOSTBYNAME) || !defined(HAVE_RES_SEARCH)
            /* can't handle multidrop mailboxes unless we can do DNS lookups */
-           if (ctl->localnames && ctl->localnames->next)
+           if (ctl->localnames && ctl->localnames->next && ctl->server.dns)
            {
                fputs("fetchmail: can't handle multidrop mailboxes without DNS\n",
                        stderr);