]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-solr: Free the solr_connection at exit.
authorTimo Sirainen <tss@iki.fi>
Fri, 1 Feb 2013 00:18:54 +0000 (02:18 +0200)
committerTimo Sirainen <tss@iki.fi>
Fri, 1 Feb 2013 00:18:54 +0000 (02:18 +0200)
src/plugins/fts-solr/fts-backend-solr-old.c
src/plugins/fts-solr/fts-backend-solr.c

index c8afb693eacf29187a9a57da0db7dddac4485179..6892f2ab2cd41022c666729cf571aab1b7f84217 100644 (file)
@@ -225,6 +225,11 @@ static struct fts_backend *fts_backend_solr_alloc(void)
        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 @@ fts_backend_solr_init(struct fts_backend *_backend,
        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);
index b24fd79d032ad970baeaef53192a24a2dc98b135..b251cdc1e9c3d7fbfc062ea151225d194d479fcb 100644 (file)
@@ -150,6 +150,11 @@ static struct fts_backend *fts_backend_solr_alloc(void)
        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 @@ fts_backend_solr_init(struct fts_backend *_backend,
        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;
 }