diff options
-rw-r--r-- | src/server/server.c | 17 |
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); |