From: Amos Jeffries Date: Tue, 3 Feb 2009 23:04:24 +0000 (+1300) Subject: Author: Christos Tsantilas X-Git-Tag: SQUID_3_2_0_1~1218 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b32edd27e0e5b58d63f61be129b533fd4d9305f2;p=thirdparty%2Fsquid.git Author: Christos Tsantilas Bug 2586: Memory leaks on reconfigure --- diff --git a/src/cache_cf.cc b/src/cache_cf.cc index c81d800856..661f41ca26 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1885,6 +1885,27 @@ free_peer(peer ** P) while ((p = *P) != NULL) { *P = p->next; + + safe_free(p->host); + safe_free(p->name); + safe_free(p->login); +#if USE_CACHE_DIGESTS + safe_free(p->digest_url); +#endif + safe_free(p->domain); +#if USE_SSL + safe_free(p->sslcert); + safe_free(p->sslkey); + safe_free(p->ssloptions); + safe_free(p->sslcipher); + safe_free(p->sslcapath); + safe_free(p->sslcafile); + safe_free(p->sslflags); + safe_free(p->ssldomain); + if (p->sslContext) + SSL_CTX_free(p->sslContext); +#endif + #if USE_CACHE_DIGESTS cbdataReferenceDone(p->digest); @@ -3276,6 +3297,9 @@ void configFreeMemory(void) { free_all(); +#if USE_SSL + SSL_CTX_free(Config.ssl_client.sslContext); +#endif } void diff --git a/src/cache_manager.cc b/src/cache_manager.cc index ceee60b65a..76819f2d32 100644 --- a/src/cache_manager.cc +++ b/src/cache_manager.cc @@ -74,6 +74,10 @@ void CacheManager::registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic) { debugs(16, 3, "CacheManager::registerAction: registering legacy " << action); + if (findAction(action) != NULL) { + debugs(16, 2, "CacheManager::registerAction: Duplicate '" << action << "'. Skipping."); + return; + } registerAction(new CacheManagerActionLegacy(action,desc,pw_req_flag,atomic,handler)); } diff --git a/src/mime.cc b/src/mime.cc index c08201c9f5..0fb42f2bcb 100644 --- a/src/mime.cc +++ b/src/mime.cc @@ -511,6 +511,7 @@ mimeFreeMemory(void) safe_free(m->icon); safe_free(m->content_encoding); regfree(&m->compiled_pattern); + m->theIcon._free(); delete m; }