Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6519:66e5f514355e HEAD
Login processes started by inetd aren't ours, don't treat them as such.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 30 Sep 2007 18:03:18 +0300 |
parents | 9b71007b70c7 |
children | 745d5bb908f4 |
files | src/master/login-process.c |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/master/login-process.c Sun Sep 30 17:51:25 2007 +0300 +++ b/src/master/login-process.c Sun Sep 30 18:03:18 2007 +0300 @@ -435,7 +435,8 @@ } static struct login_process * -login_process_new(struct login_group *group, pid_t pid, int fd) +login_process_new(struct login_group *group, pid_t pid, int fd, + bool inetd_child) { struct login_process *p; @@ -447,10 +448,12 @@ p->refcount = 2; /* once for fd close, another for process exit */ p->pid = pid; p->fd = fd; + p->inetd_child = inetd_child; p->io = io_add(fd, IO_READ, login_process_input, p); p->output = o_stream_create_fd(fd, sizeof(struct master_login_reply)*10, FALSE); - child_process_add(pid, &p->process); + if (!inetd_child) + child_process_add(pid, &p->process); p->state = LOGIN_STATE_LISTENING; @@ -627,7 +630,7 @@ net_set_nonblock(fd[0], TRUE); fd_close_on_exec(fd[0], TRUE); - (void)login_process_new(group, pid, fd[0]); + (void)login_process_new(group, pid, fd[0], FALSE); (void)close(fd[1]); (void)close(log_fd); return pid; @@ -907,9 +910,8 @@ net_set_nonblock(fd, TRUE); fd_close_on_exec(fd, TRUE); - p = login_process_new(NULL, ++login_pid_counter, fd); + p = login_process_new(NULL, ++login_pid_counter, fd, TRUE); p->initialized = TRUE; - p->inetd_child = TRUE; } }