get data if ready

This commit is contained in:
Kurt Zeilenga 2002-07-10 22:03:32 +00:00
parent 99133f7944
commit 0fffad53c3

View File

@ -1164,14 +1164,13 @@ int connection_read(ber_socket_t s)
* to propagate to client. */ * to propagate to client. */
FD_ZERO(&rfd); FD_ZERO(&rfd);
FD_SET(s, &rfd); FD_SET(s, &rfd);
for (rc=1; rc>0;) for (rc=1; rc>0;) {
{
tv.tv_sec = 1; tv.tv_sec = 1;
tv.tv_usec = 0; tv.tv_usec = 0;
rc = select(s+1, &rfd, NULL, NULL, &tv); rc = select(s+1, &rfd, NULL, NULL, &tv);
if (rc == 1) if (rc == 1) {
ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_DRAIN, ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_DRAIN, NULL);
NULL); }
} }
#endif #endif
connection_close( c ); connection_close( c );
@ -1206,9 +1205,15 @@ int connection_read(ber_socket_t s)
slap_sasl_external( c, c->c_tls_ssf, authid.bv_val ); slap_sasl_external( c, c->c_tls_ssf, authid.bv_val );
if ( authid.bv_val ) free( authid.bv_val ); if ( authid.bv_val ) free( authid.bv_val );
} }
connection_return( c );
ldap_pvt_thread_mutex_unlock( &connections_mutex ); /* if success and data is ready, fall thru to data input loop */
return 0; if( rc != 0 ||
!ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_DATA_READY, NULL ) )
{
connection_return( c );
ldap_pvt_thread_mutex_unlock( &connections_mutex );
return 0;
}
} }
#endif #endif