ITS#4338 delete extraneous slapd_close() calls. Descriptors that were in

the event set must be removed using slapd_remove() and the whole sequence
must be protected with the slap_daemon.sd_mutex to close them properly.
Otherwise it will wind up closing valid, freshly opened sockets, or closing
dead sockets twice, etc. It's unnecessary to do any close management here
since connection.c already does the correct teardown sequence.
This commit is contained in:
Howard Chu 2006-01-13 17:30:03 +00:00
parent b85926a2c1
commit 84429e8bcb

View File

@ -1980,13 +1980,15 @@ slapd_daemon_task(
* and that the stream is now inactive.
* connection_write() must validate the stream is still
* active.
*
* ITS#4338: if the stream is invalid, there is no need to
* close it here. It has already been closed in connection.c.
*/
if ( connection_write( wd ) < 0 ) {
if ( SLAP_EVENT_IS_READ( wd )) {
SLAP_EVENT_CLR_READ( (unsigned) wd );
nrfds--;
}
slapd_close( wd );
}
#endif
}
@ -2014,9 +2016,7 @@ slapd_daemon_task(
#ifdef SLAP_LIGHTWEIGHT_DISPATCHER
connection_read_activate( rd );
#else
if ( connection_read( rd ) < 0 ) {
slapd_close( rd );
}
connection_read( rd );
#endif
}
#else /* !SLAP_EVENTS_ARE_INDEXED */
@ -2106,7 +2106,6 @@ slapd_daemon_task(
* active.
*/
if ( connection_write( fd ) < 0 ) {
slapd_close( fd );
continue;
}
#endif
@ -2125,7 +2124,7 @@ slapd_daemon_task(
* connection_read() must valid the stream is still
* active.
*/
if ( connection_read( fd ) < 0 ) slapd_close( fd );
connection_read( fd );
#endif
}
}