aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/server.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/server/server.c b/src/server/server.c
index 46c860f..6fa864b 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -345,6 +345,21 @@ int add_service(char *name,
return ERROR_OK;
}
+static void remove_connections(struct service *service)
+{
+ struct connection *connection;
+
+ connection = service->connections;
+
+ while (connection) {
+ struct connection *tmp;
+
+ tmp = connection->next;
+ remove_connection(service, connection);
+ connection = tmp;
+ }
+}
+
static int remove_services(void)
{
struct service *c = services;
@@ -353,6 +368,8 @@ static int remove_services(void)
while (c) {
struct service *next = c->next;
+ remove_connections(c);
+
if (c->name)
free(c->name);