mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
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:
parent
b85926a2c1
commit
84429e8bcb
@ -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
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user