changeset 15234:acd76b5272e9

connection API: Track the number of connections.
author Timo Sirainen <tss@iki.fi>
date Tue, 23 Oct 2012 12:59:41 +0300
parents f417cab3a21f
children 3e70eacf67a4
files src/lib/connection.c src/lib/connection.h
diffstat 2 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/connection.c	Tue Oct 23 12:34:42 2012 +0300
+++ b/src/lib/connection.c	Tue Oct 23 12:59:41 2012 +0300
@@ -163,6 +163,7 @@
 	connection_init_streams(conn);
 
 	DLLIST_PREPEND(&list->connections, conn);
+	list->connections_count++;
 }
 
 void connection_init_client_ip(struct connection_list *list,
@@ -179,6 +180,7 @@
 	conn->port = port;
 
 	DLLIST_PREPEND(&list->connections, conn);
+	list->connections_count++;
 }
 
 void connection_init_client_unix(struct connection_list *list,
@@ -191,6 +193,7 @@
 	conn->name = i_strdup(path);
 
 	DLLIST_PREPEND(&list->connections, conn);
+	list->connections_count++;
 }
 
 static void connection_ip_connected(struct connection *conn)
@@ -253,6 +256,9 @@
 
 void connection_deinit(struct connection *conn)
 {
+	i_assert(conn->list->connections_count > 0);
+
+	conn->list->connections_count--;
 	DLLIST_REMOVE(&conn->list->connections, conn);
 
 	connection_disconnect(conn);
--- a/src/lib/connection.h	Tue Oct 23 12:34:42 2012 +0300
+++ b/src/lib/connection.h	Tue Oct 23 12:59:41 2012 +0300
@@ -85,6 +85,7 @@
 
 struct connection_list {
 	struct connection *connections;
+	unsigned int connections_count;
 
 	struct connection_settings set;
 	struct connection_vfuncs v;