From 291032d68243f4cb3d7e6a517d6fab2b8bb89e9a Mon Sep 17 00:00:00 2001 From: Yoshiyuki Asaba Date: Thu, 26 Jul 2007 03:01:42 +0000 Subject: [PATCH] Fix memory leak when connection slot is full. --- pool_connection_pool.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pool_connection_pool.c b/pool_connection_pool.c index cb99d56..ceb801e 100644 --- a/pool_connection_pool.c +++ b/pool_connection_pool.c @@ -104,11 +104,12 @@ POOL_CONNECTION_POOL *pool_get_cp(char *user, char *database, int protoMajor, in pool_log("connection closed. retry to create new connection pool."); pool_free_startup_packet(MASTER_CONNECTION(p)->sp); pool_close(MASTER_CONNECTION(p)->con); + free(MASTER_CONNECTION(p)); if (DUAL_MODE) { - /* do not free memory! we did not allocate them */ pool_close(SECONDARY_CONNECTION(p)->con); + free(SECONDARY_CONNECTION(p)); } memset(p, 0, sizeof(POOL_CONNECTION_POOL)); @@ -205,11 +206,13 @@ POOL_CONNECTION_POOL *pool_create_cp(void) pool_free_startup_packet(MASTER_CONNECTION(p)->sp); pool_close(MASTER_CONNECTION(p)->con); + free(MASTER_CONNECTION(p)); if (DUAL_MODE) { /* do not free memory! we did not allocate them */ pool_close(SECONDARY_CONNECTION(p)->con); + free(SECONDARY_CONNECTION(p)); } memset(p, 0, sizeof(POOL_CONNECTION_POOL)); @@ -290,11 +293,12 @@ RETSIGTYPE pool_backend_timer_handler(int sig) pool_free_startup_packet(MASTER_CONNECTION(p)->sp); pool_close(MASTER_CONNECTION(p)->con); + free(MASTER_CONNECTION(p)); if (DUAL_MODE) { - /* do not free memory! we did not allocate them */ pool_close(SECONDARY_CONNECTION(p)->con); + free(SECONDARY_CONNECTION(p)); } memset(p, 0, sizeof(POOL_CONNECTION_POOL)); -- 2.39.5