From f1767771dd2cfb27b6fdad0fbf58bfec3bdabc84 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Tue, 30 Sep 2014 23:49:35 +0300 Subject: [PATCH] lib-sasl: Added reference counting to lib-sasl initialization. --- src/lib-sasl/dsasl-client.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib-sasl/dsasl-client.c b/src/lib-sasl/dsasl-client.c index d595406a56..34a90e9e2e 100644 --- a/src/lib-sasl/dsasl-client.c +++ b/src/lib-sasl/dsasl-client.c @@ -5,6 +5,7 @@ #include "safe-memset.h" #include "dsasl-client-private.h" +static int init_refcount = 0; static ARRAY(const struct dsasl_client_mech *) dsasl_mechanisms = ARRAY_INIT; static const struct dsasl_client_mech * @@ -93,6 +94,9 @@ int dsasl_client_output(struct dsasl_client *client, void dsasl_clients_init(void) { + if (init_refcount++ > 0) + return; + i_array_init(&dsasl_mechanisms, 8); dsasl_client_mech_register(&dsasl_client_mech_plain); dsasl_client_mech_register(&dsasl_client_mech_login); @@ -100,5 +104,7 @@ void dsasl_clients_init(void) void dsasl_clients_deinit(void) { + if (--init_refcount > 0) + return; array_free(&dsasl_mechanisms); } -- 2.47.3