From: Timo Sirainen Date: Sat, 20 Feb 2010 16:20:20 +0000 (+0200) Subject: lib-master: Ignore SIGALRM and SIGPIPE as early as possible. X-Git-Tag: 2.0.beta3~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=40a8e6948d662339c0c5e2c7abfb84ae7c1803fd;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Ignore SIGALRM and SIGPIPE as early as possible. For example alarm() is used while reading configuration, which is done before master_service_init_finish(). --HG-- branch : HEAD --- diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 138f72d05e..a87f1ba195 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -115,6 +115,10 @@ master_service_init(const char *name, enum master_service_flags flags, is properly initialized */ i_set_failure_prefix(t_strdup_printf("%s(init): ", name)); + /* ignore these signals as early as possible */ + lib_signals_ignore(SIGPIPE, TRUE); + lib_signals_ignore(SIGALRM, FALSE); + if (getenv(MASTER_UID_ENV) == NULL) flags |= MASTER_SERVICE_FLAG_STANDALONE; @@ -318,8 +322,6 @@ void master_service_init_finish(struct master_service *service) /* set default signal handlers */ lib_signals_init(); - lib_signals_ignore(SIGPIPE, TRUE); - lib_signals_ignore(SIGALRM, FALSE); lib_signals_set_handler(SIGINT, TRUE, sig_die, service); lib_signals_set_handler(SIGTERM, TRUE, sig_die, service); if ((service->flags & MASTER_SERVICE_FLAG_TRACK_LOGIN_STATE) != 0) {