|
From: <ge...@op...> - 2017-03-06 21:47:38
|
This is an automated email from Gerrit. Marc Schink (ope...@ma...) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/4053 -- gerrit commit c15695a7eb5bfc706cd94ed1b22b475462925b9e Author: Marc Schink <ope...@ma...> Date: Sat Jan 7 17:43:49 2017 +0100 server/server: Remove all connections on shutdown This patch fixes a memory leak in the internal server. Steps for reproduction: * valgrind --leak-check=full --show-reachable=yes ./build/src/openocd * Establish more than one connection to OpenOCD (e.g. telnet) * Shutdown OpenOCD * Check for memory leaks in add_connection() Change-Id: I0ae6fcf2918fd9bdec350446d3e26742d08ff698 Signed-off-by: Marc Schink <ope...@ma...> diff --git a/src/server/server.c b/src/server/server.c index 42f7561..51985a7 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -351,6 +351,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; @@ -359,6 +374,8 @@ static int remove_services(void) while (c) { struct service *next = c->next; + remove_connections(c); + if (c->name) free(c->name); -- |