2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-29 05:07:58 +00:00

postfix-2.4.11

This commit is contained in:
Wietse Venema 2009-05-11 00:00:00 -05:00 committed by Viktor Dukhovni
parent 5e391ee0a6
commit 94ec984aa2
4 changed files with 34 additions and 7 deletions

View File

@ -13663,3 +13663,14 @@ Apologies for any names omitted.
Cleanup: adjust the VSTREAM buffer strategy when reusing
an SMTP connection with a large TCP MSS value. File:
smtp/smtp_reuse.c.
20090419
Bugfix: don't re-enable SIGHUP if it is ignored in the
parent. This may cause random "Postfix integrity check
failed" errors at boot time (POSIX SIGHUP death), causing
Postfix not to start. We duplicate code from postdrop and
thus avoid past mistakes. File: postsuper/postsuper.c.
Robustness: don't re-enable SIGTERM if it is ignored in the
parent. Files: postsuper/postsuper.c, postdrop/postdrop.c.

View File

@ -20,8 +20,8 @@
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
#define MAIL_RELEASE_DATE "20090103"
#define MAIL_VERSION_NUMBER "2.4.10"
#define MAIL_RELEASE_DATE "20090511"
#define MAIL_VERSION_NUMBER "2.4.11"
#ifdef SNAPSHOT
# define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE

View File

@ -340,7 +340,8 @@ int main(int argc, char **argv)
signal(SIGINT, postdrop_sig);
signal(SIGQUIT, postdrop_sig);
signal(SIGTERM, postdrop_sig);
if (signal(SIGTERM, SIG_IGN) == SIG_DFL)
signal(SIGTERM, postdrop_sig);
if (signal(SIGHUP, SIG_IGN) == SIG_DFL)
signal(SIGHUP, postdrop_sig);
msg_cleanup(postdrop_cleanup);

View File

@ -968,11 +968,17 @@ static void interrupted(int sig)
/*
* This commands requires root privileges. We therefore do not worry
* about hostile signals, and report problems via msg_warn().
*
* We use the in-kernel SIGINT handler address as an atomic variable to
* prevent nested interrupted() calls. For this reason, main() must
* configure interrupted() as SIGINT handler before other signal handlers
* are allowed to invoke interrupted(). See also similar code in
* postdrop.
*/
if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
(void) signal(SIGINT, SIG_IGN);
if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
(void) signal(SIGQUIT, SIG_IGN);
(void) signal(SIGTERM, SIG_IGN);
(void) signal(SIGHUP, SIG_IGN);
if (inode_mismatch > 0 || inode_fixed > 0 || position_mismatch > 0)
msg_warn("OPERATION INCOMPLETE -- RERUN COMMAND TO FIX THE QUEUE FIRST");
if (sig)
@ -1169,11 +1175,20 @@ int main(int argc, char **argv)
*
* Set up signal handlers after permanently dropping super-user privileges,
* so that signal handlers will always run with the correct privileges.
*
* XXX Don't enable SIGHUP or SIGTERM if it was ignored by the parent.
*
* interrupted() uses the in-kernel SIGINT handler address as an atomic
* variable to prevent nested interrupted() calls. For this reason, the
* SIGINT handler must be configured before other signal handlers are
* allowed to invoke interrupted(). See also similar code in postdrop.
*/
signal(SIGHUP, interrupted);
signal(SIGINT, interrupted);
signal(SIGQUIT, interrupted);
signal(SIGTERM, interrupted);
if (signal(SIGTERM, SIG_IGN) == SIG_DFL)
signal(SIGTERM, interrupted);
if (signal(SIGHUP, SIG_IGN) == SIG_DFL)
signal(SIGHUP, interrupted);
msg_cleanup(fatal_warning);
/*