Prereq: "2.4.5" diff -cr /var/tmp/postfix-2.4.5/src/global/mail_version.h ./src/global/mail_version.h *** /var/tmp/postfix-2.4.5/src/global/mail_version.h Tue Jul 31 20:04:41 2007 --- ./src/global/mail_version.h Wed Oct 17 11:46:14 2007 *************** *** 20,27 **** * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ ! #define MAIL_RELEASE_DATE "20070731" ! #define MAIL_VERSION_NUMBER "2.4.5" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE --- 20,27 ---- * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ ! #define MAIL_RELEASE_DATE "20071017" ! #define MAIL_VERSION_NUMBER "2.4.6" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff -cr /var/tmp/postfix-2.4.5/HISTORY ./HISTORY *** /var/tmp/postfix-2.4.5/HISTORY Tue Jul 31 19:37:26 2007 --- ./HISTORY Wed Oct 17 11:47:16 2007 *************** *** 13540,13542 **** --- 13540,13564 ---- Bugfix: the loopback TCP performance workaround was ineffective due to a wetware bit-flip during code cleanup. File: util/vstream_tweak.c. + + 20070911 + + Bugfix (introduced Postfix 2.2.11): TLS client certificate + with unparsable canonical name caused the SMTP server's + policy client to allocate zero-length memory, triggering + an assertion that it shouldn't do such things. File: + smtpd/smtpd_check.c. + + 20070912 + + Bugfix (introduced Postfix 2.4) missing initialization of + event mask in the event_mask_drain() routine (used by the + obsolete postkick(1) command). Found by Coverity. File: + util/events.c. + + 20070917 + + Workaround: the flush daemon forces an access time update + for the per-destination logfile, to prevent an excessive + rate of delivery attempts when the queue file system is + mounted with "noatime". File: flush/flush.c. diff -cr /var/tmp/postfix-2.4.5/src/flush/flush.c ./src/flush/flush.c *** /var/tmp/postfix-2.4.5/src/flush/flush.c Sat Mar 17 13:59:38 2007 --- ./src/flush/flush.c Mon Sep 17 20:26:09 2007 *************** *** 149,154 **** --- 149,155 ---- #include #include + #include #include #include #include *************** *** 575,580 **** --- 576,586 ---- */ if (count > 0 && ftruncate(vstream_fileno(log), (off_t) 0) < 0) msg_fatal("%s: truncate fast flush logfile %s: %m", myname, path); + + /* + * Workaround for noatime mounts. Use futimes() if available. + */ + (void) utimes(VSTREAM_PATH(log), (struct timeval *) 0); /* * Request delivery and clean up. diff -cr /var/tmp/postfix-2.4.5/src/smtpd/smtpd_check.c ./src/smtpd/smtpd_check.c *** /var/tmp/postfix-2.4.5/src/smtpd/smtpd_check.c Fri Jan 12 09:45:18 2007 --- ./src/smtpd/smtpd_check.c Tue Sep 11 10:17:20 2007 *************** *** 3302,3308 **** coded_CN_buf = 0; \ coded_CN = ""; \ } else { \ ! coded_CN_buf = vstring_alloc(strlen(CN)); \ xtext_quote(coded_CN_buf, CN, ""); \ coded_CN = STR(coded_CN_buf); \ } \ --- 3302,3308 ---- coded_CN_buf = 0; \ coded_CN = ""; \ } else { \ ! coded_CN_buf = vstring_alloc(strlen(CN) + 1); \ xtext_quote(coded_CN_buf, CN, ""); \ coded_CN = STR(coded_CN_buf); \ } \ diff -cr /var/tmp/postfix-2.4.5/src/util/events.c ./src/util/events.c *** /var/tmp/postfix-2.4.5/src/util/events.c Sun Feb 18 19:38:23 2007 --- ./src/util/events.c Wed Oct 17 11:28:52 2007 *************** *** 108,114 **** /* event_drain() repeatedly calls event_loop() until no more timer /* events or I/O events are pending or until the time limit is reached. /* This routine must not be called from an event_whatever() callback ! /* routine. /* DIAGNOSTICS /* Panics: interface violations. Fatal errors: out of memory, /* system call failure. Warnings: the number of available --- 108,115 ---- /* event_drain() repeatedly calls event_loop() until no more timer /* events or I/O events are pending or until the time limit is reached. /* This routine must not be called from an event_whatever() callback ! /* routine. Note: this function ignores pending timer events, and ! /* assumes that no new I/O events will be registered. /* DIAGNOSTICS /* Panics: interface violations. Fatal errors: out of memory, /* system call failure. Warnings: the number of available *************** *** 622,628 **** --- 623,633 ---- if (EVENT_INIT_NEEDED()) return; + #if (EVENTS_STYLE == EVENTS_STYLE_SELECT) EVENT_MASK_ZERO(&zero_mask); + #else + EVENT_MASK_ALLOC(&zero_mask, event_fdslots); + #endif (void) time(&event_present); max_time = event_present + time_limit; while (event_present < max_time *************** *** 630,635 **** --- 635,643 ---- || memcmp(&zero_mask, &event_xmask, EVENT_MASK_BYTE_COUNT(&zero_mask)) != 0)) event_loop(1); + #if (EVENTS_STYLE != EVENTS_STYLE_SELECT) + EVENT_MASK_FREE(&zero_mask); + #endif } /* event_enable_read - enable read events */