]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Author: Christos Tsantilas <chtsanti@users.sourceforge.net>
authorAmos Jeffries <squid3@treenet.co.nz>
Tue, 3 Feb 2009 23:04:24 +0000 (12:04 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Tue, 3 Feb 2009 23:04:24 +0000 (12:04 +1300)
Bug 2586: Memory leaks on reconfigure

src/cache_cf.cc
src/cache_manager.cc
src/mime.cc

index c81d8008564a39dfd6922ec987272c9017eaba8c..661f41ca268d0519fab7aeb9806f43b47ca9cb04 100644 (file)
@@ -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
index ceee60b65a4144381b556311cced13701be49127..76819f2d326360b2a1f2163b94a8bab668bb40f3 100644 (file)
@@ -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));
 }
 
index c08201c9f5fbe76aeebd874b34e451575022c919..0fb42f2bcb5cca375496f52bbc0298e1edcc4924 100644 (file)
@@ -511,6 +511,7 @@ mimeFreeMemory(void)
         safe_free(m->icon);
         safe_free(m->content_encoding);
         regfree(&m->compiled_pattern);
+        m->theIcon._free();
         delete m;
     }