Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8682:49ad944c5741 HEAD
dict: Fixes to handling dying dict processes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 25 Jan 2009 18:39:07 -0500 |
parents | 0c2ba85280d1 |
children | a68ed51b681d |
files | src/master/dict-process.c |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/master/dict-process.c Sun Jan 25 18:23:52 2009 -0500 +++ b/src/master/dict-process.c Sun Jan 25 18:39:07 2009 -0500 @@ -27,6 +27,7 @@ struct dict_process { struct child_process process; struct dict_process *next; + pid_t pid; struct dict_listener *listener; struct log_io *log; @@ -64,6 +65,7 @@ if (pid != 0) { /* master */ + process->pid = pid; process->next = process->listener->processes; process->listener->processes = process; @@ -123,7 +125,7 @@ { struct dict_process **p; - for (p = &process->listener->processes; *p != NULL; p++) { + for (p = &process->listener->processes; *p != NULL; p = &(*p)->next) { if (*p == process) { *p = process->next; break; @@ -186,8 +188,10 @@ if (close(listener->fd) < 0) i_error("close(dict listener) failed: %m"); - while (listener->processes != NULL) + while (listener->processes != NULL) { + child_process_remove(listener->processes->pid); dict_process_deinit(listener->processes); + } } static void