diff options
author | Sunil Nimmagadda <sunil@sunilnimmagadda.com> | 2014-04-10 18:25:43 +0500 |
---|---|---|
committer | Sunil Nimmagadda <sunil@sunilnimmagadda.com> | 2014-04-10 18:25:43 +0500 |
commit | b8ce860618b3c173fb0246a723778139983220db (patch) | |
tree | 5bade539bbeac4b37e786f4a0e9e5d45657c4a03 /pop3d.c | |
parent | 89c7cc9a5e434e25bfcbd06ea633a8b411f0e6de (diff) | |
parent | cf7e82705fd6b2a1edfa0e24f998f2eb6357d950 (diff) |
pull in latest master.
Diffstat (limited to 'pop3d.c')
-rw-r--r-- | pop3d.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -47,7 +47,6 @@ static enum m_type m_type(const char *); static void usage(void); static struct imsgev iev_pop3e; -static pid_t pop3e_pid; static const char *mpath; static int mtype = M_MBOX; @@ -102,7 +101,7 @@ main(int argc, char *argv[]) if ((pw = getpwnam(POP3D_USER)) == NULL) fatalx("main: getpwnam " POP3D_USER); - pop3e_pid = pop3_main(pair, pw); + pop3_main(pair, pw); close(pair[1]); setproctitle("[priv]"); logit(LOG_INFO, "pop3d ready; type:%s, path:%s", mtype_str, mpath); @@ -206,8 +205,9 @@ sig_handler(int sig, short event, void *arg) event_loopexit(NULL); break; case SIGCHLD: - if (waitpid(pop3e_pid, &status, WNOHANG) > 0) - if (WIFEXITED(status) || WIFSIGNALED(status)) { + if (waitpid(WAIT_ANY, &status, WNOHANG) > 0) + if ((WIFEXITED(status) && WEXITSTATUS(status) != 0) || + WIFSIGNALED(status)) { logit(LOG_ERR, "Lost pop3 engine"); event_loopexit(NULL); } |