ITS#6056 partially revert ITS#5886, close sequencing was broken

This commit is contained in:
Howard Chu 2009-05-28 17:46:25 +00:00
parent 321cee07b5
commit 8edeaefe72
3 changed files with 8 additions and 28 deletions

View File

@ -1271,24 +1271,6 @@ int connection_read_activate( ber_socket_t s )
return rc;
}
void
connection_hangup( ber_socket_t s )
{
Connection *c;
c = connection_get( s );
if ( c ) {
if ( c->c_conn_state == SLAP_C_CLIENT ) {
connection_return( c );
connection_read_activate( s );
} else {
connection_closing( c, "connection lost" );
connection_close( c );
connection_return( c );
}
}
}
static int
connection_read( ber_socket_t s, conn_readinfo *cri )
{

View File

@ -2529,7 +2529,7 @@ slapd_daemon_task(
#endif /* LDAP_DEBUG */
for ( i = 0; i < ns; i++ ) {
int rc = 1, fd, w = 0;
int rc = 1, fd, w = 0, r = 0;
if ( SLAP_EVENT_IS_LISTENER( i ) ) {
rc = slap_listener_activate( SLAP_EVENT_LISTENER( i ) );
@ -2569,24 +2569,23 @@ slapd_daemon_task(
}
}
/* If event is a read */
if ( SLAP_EVENT_IS_READ( i ) ) {
if ( SLAP_EVENT_IS_READ( i ))
r = 1;
if ( r || !w ) {
Debug( LDAP_DEBUG_CONNS,
"daemon: read active on %d\n",
fd, 0, 0 );
SLAP_EVENT_CLR_READ( i );
connection_read_activate( fd );
} else if ( !w ) {
Debug( LDAP_DEBUG_CONNS,
"daemon: hangup on %d\n", fd, 0, 0 );
if ( SLAP_SOCK_IS_ACTIVE( fd )) {
if ( r ) {
SLAP_EVENT_CLR_READ( i );
} else {
#ifdef HAVE_EPOLL
/* Don't keep reporting the hangup
*/
SLAP_EPOLL_SOCK_SET( fd, EPOLLET );
#endif
connection_hangup( fd );
}
connection_read_activate( fd );
}
}
}

View File

@ -758,7 +758,6 @@ LDAP_SLAPD_F (Connection *) connection_init LDAP_P((
LDAP_SLAPD_F (void) connection_closing LDAP_P((
Connection *c, const char *why ));
LDAP_SLAPD_F (void) connection_hangup LDAP_P(( ber_socket_t fd ));
LDAP_SLAPD_F (int) connection_valid LDAP_P(( Connection *c ));
LDAP_SLAPD_F (const char *) connection_state2str LDAP_P(( int state ))
LDAP_GCCATTR((const));