Yes, however I don't have anything further to report on the SIGHUP issue. I cannot reproduce the reported problems. Perhaps there is something peculiar about the RedHat environment that is causing trouble?
Aaron On Tue, Aug 21, 2007, umask <[EMAIL PROTECTED]> said: > Somebody read this mailing list? :) > >> Hello! >> We're uging DBMail 2.2.5 from EPEL (Extra Packages for Enterprise Linux by >> RedHat/Fedora Project) - >> http://download.fedora.redhat.com/pub/epel/5/i386/repoview/dbmail.html . >> Sources of dbmail from EPEL contains next patch: >> ------------------------ begin patch >> Index: server.c >> =================================================================== >> --- server.c (revision 2646) >> +++ server.c (revision 2647) >> @@ -172,20 +172,36 @@ >> return Restart; >> } >> -pid_t server_daemonize(serverConfig_t *conf) >> +/* Should be called after a HUP to allow for log rotation, >> + * as the filesystem may want to give us new inodes and/or >> + * the user may have changed the log file configs. */ >> +static void reopen_logs(serverConfig_t *conf) >> { >> int serr; >> - assert(conf); >> + >> + if (! (freopen(conf->log, "a", stdout))) { >> + serr = errno; >> + TRACE(TRACE_ERROR, "freopen failed on [%s] [%s]", >> + conf->log, strerror(serr)); >> + } >> + if (! (freopen(conf->error_log, "a", stderr))) { >> + serr = errno; >> + TRACE(TRACE_ERROR, "freopen failed on [%s] [%s]", >> + conf->error_log, strerror(serr)); >> + } >> + if (! (freopen("/dev/null", "r", stdin))) { >> + serr = errno; >> + TRACE(TRACE_ERROR, "freopen failed on stdin [%s]", >> + strerror(serr)); >> + } >> +} >> - if (fork()) >> - exit(0); >> - setsid(); >> - if (fork()) >> - exit(0); >> +/* Should be called once to initially close the actual std{in,out,err} >> + * and open the redirection files. */ >> +static void reopen_logs_fatal(serverConfig_t *conf) >> +{ >> + int serr; >> - chdir("/"); >> - umask(0077); >> - >> if (! (freopen(conf->log, "a", stdout))) { >> serr = errno; >> TRACE(TRACE_FATAL, "freopen failed on [%s] [%s]", >> @@ -201,7 +217,23 @@ >> TRACE(TRACE_FATAL, "freopen failed on stdin [%s]", >> strerror(serr)); >> } >> +} >> +pid_t server_daemonize(serverConfig_t *conf) >> +{ >> + assert(conf); >> + >> + if (fork()) >> + exit(0); >> + setsid(); >> + if (fork()) >> + exit(0); >> + >> + chdir("/"); >> + umask(0077); >> + >> + reopen_logs_fatal(conf); >> + >> TRACE(TRACE_DEBUG, "sid: [%d]", getsid(0)); >> return getsid(0); >> @@ -225,6 +257,8 @@ >> int serrno, status, result = 0; >> pid_t pid = -1; >> + reopen_logs(conf); >> + >> CreateSocket(conf); >> switch ((pid = fork())) { >> ------------------------ end patch >> I noticed than exist bug http://dbmail.org/mantis/view.php?id=600 . >> DBMail built with patch above but in any case dbmail-imapd just stop >> sometimes on logrotate (e.g. receiving SIGHUP). >> How to solve this problem? >> -- >> Ilyas >> _______________________________________________ >> DBmail mailing list >> DBmail@dbmail.org >> https://mailman.fastxs.nl/mailman/listinfo/dbmail > _______________________________________________ > DBmail mailing list > DBmail@dbmail.org > https://mailman.fastxs.nl/mailman/listinfo/dbmail > -- _______________________________________________ DBmail mailing list DBmail@dbmail.org https://mailman.fastxs.nl/mailman/listinfo/dbmail