dovecot-1.2: dict: Fixes to handling dying dict processes.
dovecot at dovecot.org
dovecot at dovecot.org
Mon Jan 26 01:39:12 EET 2009
details: http://hg.dovecot.org/dovecot-1.2/rev/49ad944c5741
changeset: 8682:49ad944c5741
user: Timo Sirainen <tss at iki.fi>
date: Sun Jan 25 18:39:07 2009 -0500
description:
dict: Fixes to handling dying dict processes.
diffstat:
1 file changed, 6 insertions(+), 2 deletions(-)
src/master/dict-process.c | 8 ++++++--
diffs (40 lines):
diff -r 0c2ba85280d1 -r 49ad944c5741 src/master/dict-process.c
--- 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 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 @@ static int dict_process_create(struct di
if (pid != 0) {
/* master */
+ process->pid = pid;
process->next = process->listener->processes;
process->listener->processes = process;
@@ -123,7 +125,7 @@ static void dict_process_deinit(struct d
{
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 @@ static void dict_listener_deinit(struct
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
More information about the dovecot-cvs
mailing list