[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Doing a non-blocking ldap_bind/ldap_simple_bind
- To: OpenLDAP-software@OpenLDAP.org
- Subject: Doing a non-blocking ldap_bind/ldap_simple_bind
- From: Ulka Ranadive <ulka.ranadive@gmail.com>
- Date: Sat, 10 Dec 2005 16:53:47 -0800
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=HdruEkNQIsamD7nzWnGXN3PvhM1UOh8824AHSQTX+6HTDz+PN0Twy15nHdpMOsFNrHX1nXeIoWr5+00vgCDIQsW0dBpxNDzC1cwjsXOLkFgwkUP9Q8flV3amLlJ2hiu91h0f4N8QkvsTrGOlgCCpQH0leSeeDSPqZHRJlNW1hFs=
Hi folks,
I am using OpenLDAP 2.2.20 and trying to make a non-blocking LDAP
connection to the server but havent had much luck. Can someone tell me what
I am doing wrong ?
Whenever, I try to connect to valid ip address & invalid port number,
ldap_bind/ldap_simple_bind( ) seem to block for timeout value. I was hoping
that ldap_bind/ldap_simple_bind( ) return immediately with the socket value
and then I can listen on the socket for any connection/bind errors.
Here is what I am doing:
/* STEP Initialize LDAP data structures & get socket fd
*/
ld = ldap_init (inet_ntoa(srv_addr), hm_probe_info->dest_port);
if (ld == NULL) {
printf ("\n Ldap_init failed");
return FALSE;
}
/* Set LDAP_OPT_NETWORK_TIMEOUT
*/
network_timeout.tv_usec = 0;
network_timeout.tv_sec = timeout_value; //set it to 10sec
if (ldap_set_option (ld, LDAP_OPT_NETWORK_TIMEOUT,
(void *) &network_timeout) != LDAP_OPT_SUCCESS) {
printf ("\n ldap_set_option for network timeout failed");
ldap_unbind (ld);
return FALSE;
}
/* Set LDAP options version & network timeout
*/
version = LDAP_VERSION3;
if (LDAP_OPT_SUCCESS != ldap_set_option (ld,
LDAP_OPT_PROTOCOL_VERSION,
&version)) {
printf ("\n%s - ldap_set_option for version failed");
ldap_unbind (ld);
return FALSE;
};
/* Bind to the server
*/
msgid = ldap_simple_bind (ld, username, passwd);
if (msgid == -1) {
printf ("\n ldap_bind failed with error: %s", ldap_err2string (msgid));
ldap_unbind (ld);
return FALSE;
}
/* Get the socket fd
*/
ret_val = ldap_get_option (ld, LDAP_OPT_DESC,
&hm_conn_info->socket);
if (ret_val == LDAP_SUCCESS) {
printf ("\n ldap_get_option successful");
return TRUE;
} else {
printf ("\n ldap_get_option unsuccessful");
ldap_unbind (ld);
return FALSE;
}
Thanks
-Ulka