-
-
-#ifdef LDAP_CONNECTIONLESS
-int
-cldap_getmsg( LDAP *ld, struct timeval *timeout, BerElement *ber )
-{
- int rc;
- ber_tag_t tag;
- ber_len_t len;
- ber_socket_t sd;
-
- ber_sockbuf_ctrl( ld->ld_sb, LBER_SB_OPT_GET_FD, &sd );
- if ( sd != AC_SOCKET_INVALID ) {
- /* restored from ldap_select1() in result.c version 1.24 */
- fd_set readfds;
- if ( ldap_int_tblsize == 0 )
- ldap_int_ip_init();
- FD_ZERO( &readfds );
- FD_SET( sd, &readfds );
- rc = select( ldap_int_tblsize, &readfds, 0, 0, timeout );
-
- if ( rc == -1 || rc == 0 ) {
- ld->ld_errno = (rc == -1 ? LDAP_SERVER_DOWN :
- LDAP_TIMEOUT);
- return( rc );
- }
- }
-
- /* get the next message */
- if ( (tag = ber_get_next( ld->ld_sb, &len, ber ))
- != LDAP_TAG_MESSAGE ) {
- ld->ld_errno = (tag == LBER_DEFAULT ? LDAP_SERVER_DOWN :
- LDAP_LOCAL_ERROR);
- return( -1 );
- }
-
- return( 0 );
-}
-#endif /* LDAP_CONNECTIONLESS */