From: Timo Sirainen Date: Wed, 13 May 2015 14:16:21 +0000 (+0300) Subject: fts-solr: Fixed memory leak at user deinit. X-Git-Tag: 2.2.17~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f7fa93fb42a5b9d4a7e2f0367f03f920ef7ec443;p=thirdparty%2Fdovecot%2Fcore.git fts-solr: Fixed memory leak at user deinit. --- diff --git a/src/plugins/fts-solr/fts-backend-solr-old.c b/src/plugins/fts-solr/fts-backend-solr-old.c index bfa50bdc1f..38eefbfca5 100644 --- a/src/plugins/fts-solr/fts-backend-solr-old.c +++ b/src/plugins/fts-solr/fts-backend-solr-old.c @@ -249,6 +249,7 @@ static void fts_backend_solr_deinit(struct fts_backend *_backend) { 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); diff --git a/src/plugins/fts-solr/fts-backend-solr.c b/src/plugins/fts-solr/fts-backend-solr.c index 7ee12084cf..22afe527ec 100644 --- a/src/plugins/fts-solr/fts-backend-solr.c +++ b/src/plugins/fts-solr/fts-backend-solr.c @@ -179,6 +179,7 @@ static void fts_backend_solr_deinit(struct fts_backend *_backend) { struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend; + solr_connection_deinit(&backend->solr_conn); i_free(backend); } diff --git a/src/plugins/fts-solr/solr-connection.c b/src/plugins/fts-solr/solr-connection.c index 2d12db84cc..cb35c86306 100644 --- a/src/plugins/fts-solr/solr-connection.c +++ b/src/plugins/fts-solr/solr-connection.c @@ -142,8 +142,11 @@ int solr_connection_init(const char *url, bool debug, 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); diff --git a/src/plugins/fts-solr/solr-connection.h b/src/plugins/fts-solr/solr-connection.h index 3c5ca29fb7..05a4d2b500 100644 --- a/src/plugins/fts-solr/solr-connection.h +++ b/src/plugins/fts-solr/solr-connection.h @@ -15,7 +15,7 @@ struct solr_result { 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);