diff options
Diffstat (limited to 'source3/libads')
-rw-r--r-- | source3/libads/ads_struct.c | 4 | ||||
-rw-r--r-- | source3/libads/ldap.c | 12 | ||||
-rw-r--r-- | source3/libads/ldap_utils.c | 6 |
3 files changed, 14 insertions, 8 deletions
diff --git a/source3/libads/ads_struct.c b/source3/libads/ads_struct.c index c66d4e84e8..c769d8ff48 100644 --- a/source3/libads/ads_struct.c +++ b/source3/libads/ads_struct.c @@ -141,9 +141,7 @@ void ads_destroy(ADS_STRUCT **ads) is_mine = (*ads)->is_mine; #if HAVE_LDAP - if ((*ads)->ld) { - ldap_unbind((*ads)->ld); - } + ads_disconnect(*ads); #endif SAFE_FREE((*ads)->server.realm); SAFE_FREE((*ads)->server.workgroup); diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c index 84ceba2406..c5c43c44c5 100644 --- a/source3/libads/ldap.c +++ b/source3/libads/ldap.c @@ -465,6 +465,18 @@ got_connection: return ads_sasl_bind(ads); } +/** + * Disconnect the LDAP server + * @param ads Pointer to an existing ADS_STRUCT + **/ +void ads_disconnect(ADS_STRUCT *ads) +{ + if (ads->ld) { + ldap_unbind(ads->ld); + ads->ld = NULL; + } +} + /* Duplicate a struct berval into talloc'ed memory */ diff --git a/source3/libads/ldap_utils.c b/source3/libads/ldap_utils.c index 3ad08085bb..16fd32b807 100644 --- a/source3/libads/ldap_utils.c +++ b/source3/libads/ldap_utils.c @@ -75,11 +75,7 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind DEBUG(3,("Reopening ads connection to realm '%s' after error %s\n", ads->config.realm, ads_errstr(status))); - if (ads->ld) { - ldap_unbind(ads->ld); - } - - ads->ld = NULL; + ads_disconnect(ads); status = ads_connect(ads); if (!ADS_ERR_OK(status)) { |