]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-solr: Fixed memory leak at user deinit.
authorTimo Sirainen <tss@iki.fi>
Wed, 13 May 2015 14:16:21 +0000 (17:16 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 13 May 2015 14:16:21 +0000 (17:16 +0300)
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

index bfa50bdc1f22dd0b8bee1e93d3cf6e9de0f5f8ff..38eefbfca558b7a5e53fde861d5e21851aecaf23 100644 (file)
@@ -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);
index 7ee12084cfa88560ade87c182b0a0ffb99c7d985..22afe527ecbf6a51bf5cd71fff55e9bf3a627bf6 100644 (file)
@@ -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);
 }
 
index 2d12db84ccfc9c77b91efe84fc9402aa949f866e..cb35c86306555f6329dd0340766d544285aab344 100644 (file)
@@ -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);
index 3c5ca29fb79dfc957e92373eeca64ae9c3fac70b..05a4d2b50079299f9d6c3354d5fb4cae8d8c618f 100644 (file)
@@ -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);