From: Kurt Zeilenga Date: Mon, 14 Jun 1999 20:28:30 +0000 (+0000) Subject: Remove check for inactive streams before connection_read/_write X-Git-Tag: OPENLDAP_REL_ENG_2_BP~316 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e2e1cb76cb07c3ee5c03e911bdac30ff3e730242;p=openldap Remove check for inactive streams before connection_read/_write calls. Such checks are ineffective it protecting connection_read/_write from being called inactive streams. connection_read/_write have their own protection against such (in connection_get()). --- diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 83774c8abb..932e36babf 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -553,17 +553,12 @@ slapd_daemon_task( "daemon: write active on %d\n", wd, 0, 0 ); - ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); - active = FD_ISSET( wd, &slap_daemon.sd_actives ); - ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); - - if( ! active ) { - /* descriptor no longer in FD set, should be closed */ - Debug( LDAP_DEBUG_CONNS, - "daemon: write %d inactive, closing.\n", wd, 0, 0 ); - slapd_close( wd ); - continue; - } + /* + * NOTE: it is possible that the connection was closed + * and that the stream is now inactive. + * connection_write() must valid the stream is still + * active. + */ if ( connection_write( wd ) < 0 ) { FD_CLR( (unsigned) wd, &readfds ); @@ -595,17 +590,13 @@ slapd_daemon_task( Debug ( LDAP_DEBUG_CONNS, "daemon: read activity on %d\n", rd, 0, 0 ); - ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); - active = FD_ISSET( rd, &slap_daemon.sd_actives ); - ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); - if( ! active ) { - /* descriptor no longer in FD set, should be closed */ - Debug( LDAP_DEBUG_CONNS, - "daemon: read %d inactive, closing.\n", rd, 0, 0 ); - slapd_close( rd ); - continue; - } + /* + * NOTE: it is possible that the connection was closed + * and that the stream is now inactive. + * connection_read() must valid the stream is still + * active. + */ if ( connection_read( rd ) < 0 ) { slapd_close( rd );