if (( ber = ber_alloc_t( ld->ld_lberoptions )) == NULL ) {
ld->ld_errno = LDAP_NO_MEMORY;
-#ifdef STR_TRANSLATION
- } else {
- ldap_set_ber_options( ld, ber );
-#endif /* STR_TRANSLATION */
}
return( ber );
ldap_set_ber_options( LDAP *ld, BerElement *ber )
{
ber->ber_options = ld->ld_lberoptions;
-#ifdef STR_TRANSLATION
- if (( ld->ld_lberoptions & LBER_TRANSLATE_STRINGS ) != 0 ) {
- ber_set_string_translators( ber,
- ld->ld_lber_encode_translate_proc,
- ld->ld_lber_decode_translate_proc );
- }
-#endif /* STR_TRANSLATION */
}
if( lc->lconn_rebind_queue != NULL) {
int i;
for( i = 0; lc->lconn_rebind_queue[i] != NULL; i++) {
- free_strarray(lc->lconn_rebind_queue[i]);
+ LDAP_VFREE(lc->lconn_rebind_queue[i]);
}
LDAP_FREE( lc->lconn_rebind_queue);
}
*
* Return value - number of referrals followed
*/
-LIBLDAP_F(int)
+int
ldap_chase_v3referrals( LDAP *ld, LDAPRequest *lr, char **refs, char **errstrp, int *hadrefp )
{
char *unfollowed;
if( lc->lconn_rebind_queue != NULL) {
/* Release resources of previous list */
- free_strarray(refarray);
+ LDAP_VFREE(refarray);
refarray = NULL;
ldap_free_urllist(srv);
srv = NULL;
}
} /* end for loop */
done:
- free_strarray(refarray);
+ LDAP_VFREE(refarray);
ldap_free_urllist(srv);
LDAP_FREE( *errstrp );
ldap_pvt_hex_unescape( ref );
len = strlen( ref );
+ /* FIXME: we should use the URL Parser */
+
if ( len > LDAP_LDAP_REF_STR_LEN && strncasecmp( ref,
LDAP_LDAP_REF_STR, LDAP_LDAP_REF_STR_LEN ) == 0 ) {
Debug( LDAP_DEBUG_TRACE,
return( -1 );
}
+ if (( srv->lud_scheme = LDAP_STRDUP("ldap")) == NULL ) {
+ LDAP_FREE( (char *)srv );
+ ber_free( ber, 1 );
+ ld->ld_errno = LDAP_NO_MEMORY;
+ return( -1 );
+ }
+
if (( srv->lud_host = LDAP_STRDUP( tmpref )) == NULL ) {
LDAP_FREE( (char *)srv );
ber_free( ber, 1 );
*ports++ = '\0';
srv->lud_port = atoi( ports );
} else {
- srv->lud_port = ldap_int_global_options.ldo_defport;
+ srv->lud_port = (LDAP_INT_GLOBAL_OPT())->ldo_defport;
}
rinfo.ri_msgid = origreq->lr_origid;
if ( tag == LDAP_REQ_BIND ) {
rc = ber_printf( ber, "{it{is" /*}}*/, msgid, tag, ver, *dnp );
} else if ( tag == LDAP_REQ_DELETE ) {
- rc = ber_printf( ber, "{its}", msgid, tag, *dnp );
+ rc = ber_printf( ber, "{itsN}", msgid, tag, *dnp );
} else {
rc = ber_printf( ber, "{it{s" /*}}*/, msgid, tag, *dnp );
}
if ( tag != LDAP_REQ_DELETE && (
ber_write(ber, tmpber.ber_ptr, ( tmpber.ber_end - tmpber.ber_ptr ), 0)
!= ( tmpber.ber_end - tmpber.ber_ptr ) ||
- ber_printf( ber, /*{{*/ "}}" ) == -1 ) )
+ ber_printf( ber, /*{{*/ "N}N}" ) == -1 ) )
{
ld->ld_errno = LDAP_ENCODING_ERROR;
ber_free( ber, 1 );