Changeset 164

Show
Ignore:
Timestamp:
09/04/07 16:37:48 (20 months ago)
Author:
smoku
Message:

Integrated LDAP rebind patch by Stephen Marquard. Fixes #28

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/c2s/authreg_ldap.c

    r158 r164  
    7373 
    7474    return ld_errno; 
     75} 
     76 
     77/** entry-point function for following referrals, required in some cases by Active Directory */ 
     78static int rebindProc(LDAP *ld, LDAP_CONST char *url, ber_tag_t request, ber_int_t msgid, void *mdata) 
     79{ 
     80    moddata_t data = mdata; 
     81    data->ld = ld; 
     82    if(ldap_simple_bind_s(data->ld, data->binddn, data->bindpw)) { 
     83        log_write(data->ar->c2s->log, LOG_ERR, "ldap: bind failed (to %s): %s", url, ldap_err2string(_ldap_get_lderrno(data->ld))); 
     84        ldap_unbind_s(data->ld); 
     85        data->ld = NULL; 
     86        return NULL; 
     87    } 
     88 
     89    return LDAP_SUCCESS; 
    7590} 
    7691 
     
    186201    snprintf(filter, 1024, "(%s=%s)", data->uidattr, username); 
    187202 
     203    if(ldap_set_rebind_proc(data->ld, &rebindProc, data)) { 
     204        log_write(data->ar->c2s->log, LOG_ERR, "ldap: set_rebind_proc failed: %s", ldap_err2string(_ldap_get_lderrno(data->ld))); 
     205        ldap_unbind_s(data->ld); 
     206        data->ld = NULL; 
     207        return NULL; 
     208    } 
     209 
    188210    if(ldap_search_s(data->ld, basedn, LDAP_SCOPE_SUBTREE, filter, no_attrs, 0, &result)) 
    189211    {