]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Make sure all director connections are deinitialized at exit.
authorTimo Sirainen <tss@iki.fi>
Thu, 8 Jul 2010 12:58:35 +0000 (13:58 +0100)
committerTimo Sirainen <tss@iki.fi>
Thu, 8 Jul 2010 12:58:35 +0000 (13:58 +0100)
--HG--
branch : HEAD

src/director/director-connection.c
src/director/director-connection.h
src/director/director.c

index b5a573381e6ecf284896f7bea92a0a629cc20e3e..12149ec24ab6362ec45538055061bae6190c2514 100644 (file)
@@ -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);
+       }
+}
index 9e248e52dec73e2ef09dc2a06bd2fadb101645a8..32992101950f44e09c11c8e72647be37b1e974af 100644 (file)
@@ -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
index fdd832e986eed2ae2a82964a94d41dbfe139c938..e701ce55563848bb389e480ea732171265982b4d 100644 (file)
@@ -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);