From 30e4904b6baf5c3f00d4b096f5b51cfbb69958d0 Mon Sep 17 00:00:00 2001 From: Alan Hicks Date: Wed, 12 Oct 2016 16:56:22 +0100 Subject: [PATCH 14/33] Refactor deprecared functions --- src/modules/authldap.c | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git src/modules/authldap.c src/modules/authldap.c index 3f43a56..bbe553b 100644 --- src/modules/authldap.c +++ src/modules/authldap.c @@ -28,7 +28,23 @@ extern char configFile[PATH_MAX]; -GStaticPrivate ldap_conn_key; +/* + signal-safe releasing of thread-local ldap connection +*/ +static void authldap_free(gpointer data) +{ + LDAP *c = (LDAP *)data; + struct sigaction act, oldact; + + memset(&act, 0, sizeof(act)); + memset(&oldact, 0, sizeof(oldact)); + act.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &act, &oldact); + ldap_unbind(c); + sigaction(SIGPIPE, &oldact, 0); +} + +static GPrivate ldap_conn_key = G_PRIVATE_INIT (authldap_free); static GOnce ldap_conn_once = G_ONCE_INIT; static int authldap_connect(void); @@ -105,7 +121,6 @@ static void __auth_get_config(void) */ static gpointer authldap_once(gpointer UNUSED data) { - g_static_private_init(&ldap_conn_key); __auth_get_config(); return (gpointer)NULL; } @@ -120,7 +135,7 @@ static gpointer authldap_once(gpointer UNUSED data) */ static LDAP * ldap_con_get(void) { - LDAP * ld = (LDAP *)g_static_private_get(&ldap_conn_key); + LDAP * ld = (LDAP *)g_private_get(&ldap_conn_key); if (ld) { TRACE(TRACE_DEBUG, "connection [%p]", ld); return ld; @@ -136,7 +151,7 @@ static LDAP * ldap_con_get(void) switch (err) { case LDAP_SUCCESS: - ld = (LDAP *)g_static_private_get(&ldap_conn_key); + ld = (LDAP *)g_private_get(&ldap_conn_key); TRACE(TRACE_DEBUG, "connection [%p]", ld); break; case LDAP_SERVER_DOWN: @@ -144,7 +159,6 @@ static LDAP * ldap_con_get(void) sleep(1); // reconnect failed. wait before trying again break; default: - // Includes timeouts etc. Should probably refactor. TRACE(TRACE_ERR, "LDAP error(%d): %s", err, ldap_err2string(err)); sleep(1); break; @@ -158,22 +172,6 @@ static LDAP * ldap_con_get(void) } /* - signal-safe releasing of thread-local ldap connection -*/ -static void authldap_free(gpointer data) -{ - LDAP *c = (LDAP *)data; - struct sigaction act, oldact; - - memset(&act, 0, sizeof(act)); - memset(&oldact, 0, sizeof(oldact)); - act.sa_handler = SIG_IGN; - sigaction(SIGPIPE, &act, &oldact); - ldap_unbind(c); - sigaction(SIGPIPE, &oldact, 0); -} - -/* * auth_ldap_bind() * * Bind to server using config credentials @@ -247,7 +245,7 @@ static int authldap_connect(void) if (strncasecmp(_ldap_cfg.referrals, "no", 2) == 0) ldap_set_option(_ldap_conn, LDAP_OPT_REFERRALS, 0); - g_static_private_set(&ldap_conn_key, _ldap_conn, (GDestroyNotify)authldap_free); + g_private_replace(&ldap_conn_key, _ldap_conn); return auth_ldap_bind(); } @@ -289,7 +287,6 @@ static LDAPMessage * authldap_search(const gchar *query) TRACE(TRACE_WARNING, "LDAP gone away: %s. Trying again(%d/%d).", ldap_err2string(err), c, c_tries); break; default: - // Includes timeouts etc. Should probably refactor. TRACE(TRACE_ERR, "LDAP error(%d): %s. Trying again (%d/%d).", err, ldap_err2string(err), c, c_tries); break; } @@ -634,7 +631,6 @@ int auth_connect(void) } int auth_disconnect(void) { - g_static_private_free(&ldap_conn_key); return 0; } -- 2.10.1 (Apple Git-78)