ITS#7583 Fix ldap_init_fd() for LDAP_PROTO_UDP

ldap_init_fd() tried to handle UDP sockets but was missing
certain key pieces to make it work. Fill in the address and
set the UDP flag correctly.
This commit is contained in:
Stef Walter 2013-05-03 09:20:14 +02:00 committed by Howard Chu
parent 63312f109f
commit ffe383c27b

View file

@ -268,6 +268,9 @@ ldap_init_fd(
int rc;
LDAP *ld;
LDAPConn *conn;
#ifdef LDAP_CONNECTIONLESS
ber_socklen_t len;
#endif
*ldp = NULL;
rc = ldap_create( &ld );
@ -308,6 +311,15 @@ ldap_init_fd(
#ifdef LDAP_CONNECTIONLESS
case LDAP_PROTO_UDP:
LDAP_IS_UDP(ld) = 1;
if( ld->ld_options.ldo_peer )
ldap_memfree( ld->ld_options.ldo_peer );
ld->ld_options.ldo_peer = ldap_memalloc( sizeof( struct sockaddr ) );
len = sizeof( struct sockaddr );
if( getpeername ( fd, ld->ld_options.ldo_peer, &len ) < 0) {
ldap_unbind_ext( ld, NULL, NULL );
return( AC_SOCKET_ERROR );
}
#ifdef LDAP_DEBUG
ber_sockbuf_add_io( conn->lconn_sb, &ber_sockbuf_io_debug,
LBER_SBIOD_LEVEL_PROVIDER, (void *)"udp_" );