From: Wietse Venema Date: Fri, 12 Mar 2004 05:00:00 +0000 (-0500) Subject: postfix-2.0.19 X-Git-Tag: v2.0.19^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b853c2bd1f93e260c9a5b0e9fa163389bd839103;p=thirdparty%2Fpostfix.git postfix-2.0.19 --- diff --git a/postfix/HISTORY b/postfix/HISTORY index c3b4f0d45..5a3150347 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -7965,6 +7965,18 @@ Apologies for any names omitted. Portability: test -e is not portable. File: conf/postfix-script. +20040302 + + Bugfix: the pickup daemon now strokes the watchdog frequently + to prevent the watchdog from barking when mail arrives + faster than it can be picked up. File: pickup/pickup.c. + +20040311 + + Bugfix: bad address syntax caused map lookup with zero-length + keys. Problem reported by Andrei Koulik. Files: + util/match_ops.c, src/trivial-rewrite/transport.c. + Open problems: Doc: mention the proxy_interfaces parameter everywhere the diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 35fd45768..253256add 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,10 +20,10 @@ * Patches change the patchlevel and the release date. Snapshots change the * release date only, unless they include the same bugfix as a patch release. */ -#define MAIL_RELEASE_DATE "20040122" +#define MAIL_RELEASE_DATE "20040312" #define VAR_MAIL_VERSION "mail_version" -#define DEF_MAIL_VERSION "2.0.18" +#define DEF_MAIL_VERSION "2.0.19" extern char *var_mail_version; /* diff --git a/postfix/src/pickup/Makefile.in b/postfix/src/pickup/Makefile.in index 9a078de4f..c78489081 100644 --- a/postfix/src/pickup/Makefile.in +++ b/postfix/src/pickup/Makefile.in @@ -64,6 +64,7 @@ pickup.o: ../../include/vbuf.h pickup.o: ../../include/vstream.h pickup.o: ../../include/set_ugid.h pickup.o: ../../include/safe_open.h +pickup.o: ../../include/watchdog.h pickup.o: ../../include/stringops.h pickup.o: ../../include/mail_queue.h pickup.o: ../../include/mail_open_ok.h diff --git a/postfix/src/pickup/pickup.c b/postfix/src/pickup/pickup.c index 634352fe2..5c47a924d 100644 --- a/postfix/src/pickup/pickup.c +++ b/postfix/src/pickup/pickup.c @@ -89,6 +89,7 @@ #include #include #include +#include #include /* Global library. */ @@ -476,6 +477,10 @@ static void pickup_service(char *unused_buf, int unused_len, * still being written, or garbage. Leave it up to the sysadmin to remove * garbage. Keep scanning the queue directory until we stop removing * files from it. + * + * When we find a file, stroke the watchdog so that it will not bark while + * some application is keeping us busy by injecting lots of mail into the + * maildrop directory. */ queue_name = MAIL_QUEUE_MAILDROP; /* XXX should be a list */ do { @@ -485,6 +490,7 @@ static void pickup_service(char *unused_buf, int unused_len, if (mail_open_ok(queue_name, id, &info.st, &path) == MAIL_OPEN_YES) { pickup_init(&info); info.path = mystrdup(path); + watchdog_pat(); if (pickup_file(&info) == REMOVE_MESSAGE_FILE) { if (REMOVE(info.path)) msg_warn("remove %s: %m", info.path); diff --git a/postfix/src/trivial-rewrite/transport.c b/postfix/src/trivial-rewrite/transport.c index 3c0cfc8a3..f96cae714 100644 --- a/postfix/src/trivial-rewrite/transport.c +++ b/postfix/src/trivial-rewrite/transport.c @@ -281,7 +281,7 @@ int transport_lookup(const char *addr, const char *rcpt_domain, * Specify that the lookup key is partial, to avoid matching partial keys * with regular expressions. */ - for (name = ratsign + 1; /* void */ ; name = next) { + for (name = ratsign + 1; *name != 0; name = next) { if (find_transport_entry(name, rcpt_domain, PARTIAL, channel, nexthop)) RETURN_FREE(FOUND); if (dict_errno != 0) diff --git a/postfix/src/util/match_ops.c b/postfix/src/util/match_ops.c index 5d9e6a5d2..ea615d7c5 100644 --- a/postfix/src/util/match_ops.c +++ b/postfix/src/util/match_ops.c @@ -139,7 +139,7 @@ int match_hostname(int flags, const char *name, const char *pattern) if (strchr(pattern, ':') != 0) { temp = lowercase(mystrdup(name)); match = 0; - for (entry = temp; /* void */ ; entry = next) { + for (entry = temp; *entry != 0; entry = next) { if ((match = (dict_lookup(pattern, entry) != 0)) != 0) break; if (dict_errno != 0)