changeset 15711:e62a7ca7d1f2

fts-solr: Free the solr_connection at exit.
author Timo Sirainen <tss@iki.fi>
date Fri, 01 Feb 2013 02:18:54 +0200
parents c5230b8ffd40
children 78bdcb6642c7
files src/plugins/fts-solr/fts-backend-solr-old.c src/plugins/fts-solr/fts-backend-solr.c
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts-solr/fts-backend-solr-old.c	Fri Feb 01 01:39:41 2013 +0200
+++ b/src/plugins/fts-solr/fts-backend-solr-old.c	Fri Feb 01 02:18:54 2013 +0200
@@ -225,6 +225,11 @@
 	return &backend->backend;
 }
 
+static void fts_backend_solr_connection_deinit(void)
+{
+	solr_connection_deinit(solr_conn);
+}
+
 static int
 fts_backend_solr_init(struct fts_backend *_backend,
 		      const char **error_r ATTR_UNUSED)
@@ -234,8 +239,10 @@
 	const struct fts_solr_settings *set = &fuser->set;
 	const char *str;
 
-	if (solr_conn == NULL)
+	if (solr_conn == NULL) {
 		solr_conn = solr_connection_init(set->url, set->debug);
+		lib_atexit(fts_backend_solr_connection_deinit);
+	}
 
 	str = solr_escape_id_str(_backend->ns->user->username);
 	backend->id_username = i_strdup(str);
--- a/src/plugins/fts-solr/fts-backend-solr.c	Fri Feb 01 01:39:41 2013 +0200
+++ b/src/plugins/fts-solr/fts-backend-solr.c	Fri Feb 01 02:18:54 2013 +0200
@@ -150,6 +150,11 @@
 	return &backend->backend;
 }
 
+static void fts_backend_solr_connection_deinit(void)
+{
+	solr_connection_deinit(solr_conn);
+}
+
 static int
 fts_backend_solr_init(struct fts_backend *_backend,
 		      const char **error_r ATTR_UNUSED)
@@ -157,8 +162,10 @@
 	struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(_backend->ns->user);
 	const struct fts_solr_settings *set = &fuser->set;
 
-	if (solr_conn == NULL)
+	if (solr_conn == NULL) {
 		solr_conn = solr_connection_init(set->url, set->debug);
+		lib_atexit(fts_backend_solr_connection_deinit);
+	}
 	return 0;
 }