From: Timo Sirainen Date: Thu, 8 Jul 2010 12:58:35 +0000 (+0100) Subject: director: Make sure all director connections are deinitialized at exit. X-Git-Tag: 2.0.rc2~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=23e1e4033d311a50253259de8866525980b23227;p=thirdparty%2Fdovecot%2Fcore.git director: Make sure all director connections are deinitialized at exit. --HG-- branch : HEAD --- diff --git a/src/director/director-connection.c b/src/director/director-connection.c index b5a573381e..12149ec24a 100644 --- a/src/director/director-connection.c +++ b/src/director/director-connection.c @@ -1135,3 +1135,14 @@ void director_connection_wait_sync(struct director_connection *conn) director_connection_ping, conn); conn->sync_ping = TRUE; } + +void director_connections_deinit(struct director *dir) +{ + struct director_connection *conn; + + while (dir->connections != NULL) { + conn = dir->connections; + dir->connections = conn->next; + director_connection_deinit(&conn); + } +} diff --git a/src/director/director-connection.h b/src/director/director-connection.h index 9e248e52de..3299210195 100644 --- a/src/director/director-connection.h +++ b/src/director/director-connection.h @@ -29,4 +29,6 @@ director_connection_find_outgoing(struct director *dir, void director_connection_cork(struct director_connection *conn); void director_connection_uncork(struct director_connection *conn); +void director_connections_deinit(struct director *dir); + #endif diff --git a/src/director/director.c b/src/director/director.c index fdd832e986..e701ce5556 100644 --- a/src/director/director.c +++ b/src/director/director.c @@ -381,11 +381,7 @@ void director_deinit(struct director **_dir) *_dir = NULL; - if (dir->left != NULL) - director_connection_deinit(&dir->left); - if (dir->right != NULL) - director_connection_deinit(&dir->right); - + director_connections_deinit(dir); user_directory_deinit(&dir->users); mail_hosts_deinit(&dir->mail_hosts); mail_hosts_deinit(&dir->orig_config_hosts);