From 53ca6f11530a73838d73d3064f4b3d48e477f614 Mon Sep 17 00:00:00 2001 From: Alan Hicks Date: Fri, 28 Oct 2016 16:38:20 +0100 Subject: [PATCH 25/33] Update to ldap_unbind_ext_s and remove redundant sigaction --- src/modules/authldap.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git src/modules/authldap.c src/modules/authldap.c index 2180ed0..05c3331 100644 --- src/modules/authldap.c +++ src/modules/authldap.c @@ -167,14 +167,15 @@ static LDAP * ldap_con_get(void) 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_ext(c, NULL, NULL); - sigaction(SIGPIPE, &oldact, 0); + + int err = ldap_set_option(c, LDAP_OPT_SERVER_CONTROLS, NULL ); + if ( err != LDAP_OPT_SUCCESS ) { + TRACE(TRACE_ERR, "Could not unset controls"); + } + + if ((err = ldap_unbind_ext_s(c, NULL, NULL))) { + TRACE(TRACE_ERR, "ldap_unbind_ext_s failed: %s", ldap_err2string(err)); + } } /* @@ -639,7 +640,7 @@ int auth_connect(void) int auth_disconnect(void) { // Just free the pointer, - // G_PRIVATE_INIT calls GDestroyNotify + // G_PRIVATE_INIT calls GDestroyNotify // which calls authldap_free() g_private_replace(&ldap_conn_key, NULL); return 0; -- 2.10.1 (Apple Git-78)