changeset 18678:8973648dd361

fts-solr: Fixed memory leak at user deinit.
author Timo Sirainen <tss@iki.fi>
date Wed, 13 May 2015 17:16:21 +0300
parents e6e04177374d
children b6ea460e7cc4
files src/plugins/fts-solr/fts-backend-solr-old.c src/plugins/fts-solr/fts-backend-solr.c src/plugins/fts-solr/solr-connection.c src/plugins/fts-solr/solr-connection.h
diffstat 4 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts-solr/fts-backend-solr-old.c	Wed May 13 16:54:27 2015 +0300
+++ b/src/plugins/fts-solr/fts-backend-solr-old.c	Wed May 13 17:16:21 2015 +0300
@@ -249,6 +249,7 @@
 {
 	struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend;
 
+	solr_connection_deinit(&backend->solr_conn);
 	i_free(backend->id_namespace);
 	i_free(backend->id_username);
 	i_free(backend);
--- a/src/plugins/fts-solr/fts-backend-solr.c	Wed May 13 16:54:27 2015 +0300
+++ b/src/plugins/fts-solr/fts-backend-solr.c	Wed May 13 17:16:21 2015 +0300
@@ -179,6 +179,7 @@
 {
 	struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend;
 
+	solr_connection_deinit(&backend->solr_conn);
 	i_free(backend);
 }
 
--- a/src/plugins/fts-solr/solr-connection.c	Wed May 13 16:54:27 2015 +0300
+++ b/src/plugins/fts-solr/solr-connection.c	Wed May 13 17:16:21 2015 +0300
@@ -142,8 +142,11 @@
 	return 0;
 }
 
-void solr_connection_deinit(struct solr_connection *conn)
+void solr_connection_deinit(struct solr_connection **_conn)
 {
+	struct solr_connection *conn = *_conn;
+
+	*_conn = NULL;
 	XML_ParserFree(conn->xml_parser);
 	i_free(conn->http_host);
 	i_free(conn->http_base_url);
--- a/src/plugins/fts-solr/solr-connection.h	Wed May 13 16:54:27 2015 +0300
+++ b/src/plugins/fts-solr/solr-connection.h	Wed May 13 17:16:21 2015 +0300
@@ -15,7 +15,7 @@
 
 int solr_connection_init(const char *url, bool debug,
 			 struct solr_connection **conn_r, const char **error_r);
-void solr_connection_deinit(struct solr_connection *conn);
+void solr_connection_deinit(struct solr_connection **conn);
 
 int solr_connection_select(struct solr_connection *conn, const char *query,
 			   pool_t pool, struct solr_result ***box_results_r);