From: Cyril Bonté Date: Sat, 9 Jan 2010 23:30:14 +0000 (+0100) Subject: [BUG] appsession: possible memory leak in case of out of memory condition X-Git-Tag: v1.4-dev7~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41689c22da8bcbb877449a0ce20fec05b2515ee0;p=thirdparty%2Fhaproxy.git [BUG] appsession: possible memory leak in case of out of memory condition I've tried to follow all the pool_alloc2/pool_free2 calls in the code to track memory leaks. I've found one which only happens when there's already no more memory when allocating a new appsession cookie. --- diff --git a/src/proto_http.c b/src/proto_http.c index fa8f557682..0e5f324f26 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -5957,6 +5957,7 @@ void manage_server_side_cookies(struct session *t, struct buffer *rtr) if ((asession->sessid = pool_alloc2(apools.sessid)) == NULL) { Alert("Not enough Memory process_srv():asession->sessid:malloc().\n"); send_log(t->be, LOG_ALERT, "Not enough Memory process_srv():asession->sessid:malloc().\n"); + t->be->htbl_proxy.destroy(asession); return; } memcpy(asession->sessid, t->sessid, t->be->appsession_len); @@ -5966,6 +5967,7 @@ void manage_server_side_cookies(struct session *t, struct buffer *rtr) if ((asession->serverid = pool_alloc2(apools.serverid)) == NULL) { Alert("Not enough Memory process_srv():asession->sessid:malloc().\n"); send_log(t->be, LOG_ALERT, "Not enough Memory process_srv():asession->sessid:malloc().\n"); + t->be->htbl_proxy.destroy(asession); return; } asession->serverid[0] = '\0';