From: Wietse Venema Date: Wed, 30 May 2007 05:00:00 +0000 (-0500) Subject: postfix-2.5-20070530 X-Git-Tag: v2.5.0-RC1~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76f9a46b987f259577c00c611ee67f6d756ee1d2;p=thirdparty%2Fpostfix.git postfix-2.5-20070530 --- diff --git a/postfix/HISTORY b/postfix/HISTORY index 3c6c986e3..d924587a9 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -13574,6 +13574,14 @@ Apologies for any names omitted. commands would hang when trying to submit a message larger than the per-message size limit. File: postdrop/postdrop.c. +20070530 + + Sabotage the saboteur who insists on breaking Postfix by + adding gethostbyname() calls that cause maildir delivery + to fail when the machine name is not found in /etc/hosts, + or that cause Postfix processes to hang when the network + is down. + Wish list: Update attr_print/scan() so they can send/receive file diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index b6d1fc8a2..41f73f7ca 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20070529" +#define MAIL_RELEASE_DATE "20070530" #define MAIL_VERSION_NUMBER "2.5" #ifdef SNAPSHOT diff --git a/postfix/src/postdrop/postdrop.c b/postfix/src/postdrop/postdrop.c index 803363bde..92170708f 100644 --- a/postfix/src/postdrop/postdrop.c +++ b/postfix/src/postdrop/postdrop.c @@ -439,8 +439,9 @@ int main(int argc, char **argv) /* rec_get() errors must not clobber errno. */ saved_errno = errno; while ((rec_type = rec_get_raw(VSTREAM_IN, buf, var_line_limit, - REC_FLAG_NONE)) != REC_TYPE_END) - if (rec_type <= 0) + REC_FLAG_NONE)) != REC_TYPE_END + && rec_type != REC_TYPE_EOF) + if (rec_type == REC_TYPE_ERROR) msg_fatal("uid=%ld: malformed input", (long) uid); errno = saved_errno; break; diff --git a/postfix/src/util/get_hostname.c b/postfix/src/util/get_hostname.c index fcf4a7f7f..eb2cfea06 100644 --- a/postfix/src/util/get_hostname.c +++ b/postfix/src/util/get_hostname.c @@ -61,13 +61,23 @@ const char *get_hostname(void) * part of the socket interface library. We avoid the more politically- * correct uname() routine because that has no portable way of dealing * with long (FQDN) hostnames. + * + * DO NOT CALL GETHOSTBYNAME FROM THIS FUNCTION. IT BREAKS MAILDIR DELIVERY + * AND OTHER THINGS WHEN THE MACHINE NAME IS NOT FOUND IN /ETC/HOSTS OR + * CAUSES PROCESSES TO HANG WHEN THE NETWORK IS DISCONNECTED. + * + * POSTFIX NO LONGER NEEDS A FULLY QUALIFIED HOSTNAME. INSTEAD POSTFIX WILL + * USE A DEFAULT DOMAIN NAME "LOCALDOMAIN". */ if (my_host_name == 0) { + /* DO NOT CALL GETHOSTBYNAME FROM THIS FUNCTION */ if (gethostname(namebuf, sizeof(namebuf)) < 0) msg_fatal("gethostname: %m"); namebuf[MAXHOSTNAMELEN] = 0; + /* DO NOT CALL GETHOSTBYNAME FROM THIS FUNCTION */ if (valid_hostname(namebuf, DO_GRIPE) == 0) msg_fatal("unable to use my own hostname"); + /* DO NOT CALL GETHOSTBYNAME FROM THIS FUNCTION */ my_host_name = mystrdup(namebuf); } return (my_host_name);