Decouple ldap-ssl-ads from ldap-ssl option
[samba.git] / source3 / lib / smbldap.c
index cdd350fffa1e23051594b7efbedc197456472085..4815dd81fc38d852a4c21f167a8f2545f075bc8c 100644 (file)
@@ -278,7 +278,7 @@ void smbldap_set_bind_callback(struct smbldap_state *state,
                       struct dom_sid *sid)
 {
        DATA_BLOB blob;
-       struct sid_parse_ret ret;
+       ssize_t ret;
 
        if (!smbldap_talloc_single_blob(talloc_tos(), ld, msg, attrib,
                                        &blob)) {
@@ -286,7 +286,7 @@ void smbldap_set_bind_callback(struct smbldap_state *state,
        }
        ret = sid_parse(blob.data, blob.length, sid);
        TALLOC_FREE(blob.data);
-       return (ret.len != -1);
+       return (ret != -1);
 }
 
  static int ldapmsg_destructor(LDAPMessage **result) {
@@ -598,20 +598,27 @@ static void smbldap_store_state(LDAP *ld, struct smbldap_state *smbldap_state)
 }
 
 /********************************************************************
- start TLS on an existing LDAP connection
+ start TLS on an existing LDAP connection per config
 *******************************************************************/
 
 int smbldap_start_tls(LDAP *ldap_struct, int version)
-{ 
-#ifdef LDAP_OPT_X_TLS
-       int rc,tls;
-#endif
-
+{
        if (lp_ldap_ssl() != LDAP_SSL_START_TLS) {
                return LDAP_SUCCESS;
        }
 
+       return smbldap_start_tls_start(ldap_struct, version);
+}
+
+/********************************************************************
+ start TLS on an existing LDAP connection unconditionally
+*******************************************************************/
+
+int smbldap_start_tls_start(LDAP *ldap_struct, int version)
+{
 #ifdef LDAP_OPT_X_TLS
+       int rc,tls;
+
        /* check if we use ldaps already */
        ldap_get_option(ldap_struct, LDAP_OPT_X_TLS, &tls);
        if (tls == LDAP_OPT_X_TLS_HARD) {
@@ -1689,7 +1696,7 @@ int smbldap_search_suffix (struct smbldap_state *ldap_state,
                           const char *filter, const char **search_attr,
                           LDAPMessage ** result)
 {
-       return smbldap_search(ldap_state, lp_ldap_suffix(talloc_tos()),
+       return smbldap_search(ldap_state, lp_ldap_suffix(),
                              LDAP_SCOPE_SUBTREE,
                              filter, search_attr, 0, result);
 }