From: Howard Chu Date: Thu, 6 Apr 2006 04:34:37 +0000 (+0000) Subject: ITS#4476 revert connection_write processing back into main thread X-Git-Tag: OPENLDAP_REL_ENG_2_4_BP~4 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=daec2febfb9177d1fc7e6c0c4ac2f5ea1a5e1236;p=openldap ITS#4476 revert connection_write processing back into main thread --- diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index 0c788c7b1a..46c28dfc1e 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -2172,37 +2172,6 @@ static int connection_op_activate( Operation *op ) return rc; } -#ifdef SLAP_LIGHTWEIGHT_DISPATCHER -static int connection_write( ber_socket_t s ); -static void *connection_write_thread( void *ctx, void *arg ) -{ - return (void *)(long)connection_write((long)arg); -} - -int connection_write_activate( ber_socket_t s ) -{ - int rc; - - /* - * suspend reading on this file descriptor until a connection processing - * thread write data on it. Otherwise the listener thread will repeatedly - * submit the same event on it to the pool. - */ - slapd_clr_write( s, 0); - - rc = ldap_pvt_thread_pool_submit( &connection_pool, - connection_write_thread, (void *)(long)s ); - - if( rc != 0 ) { - Debug( LDAP_DEBUG_ANY, - "connection_write_activate(%d): submit failed (%d)\n", - (int) s, rc, 0 ); - } - return rc; -} - -static -#endif int connection_write(ber_socket_t s) { Connection *c; @@ -2210,6 +2179,8 @@ int connection_write(ber_socket_t s) assert( connections != NULL ); + slapd_clr_write( s, 0 ); + ldap_pvt_thread_mutex_lock( MCA_GET_CONN_MUTEX( s ) ); c = connection_get( s ); @@ -2221,9 +2192,6 @@ int connection_write(ber_socket_t s) return -1; } -#ifndef SLAP_LIGHTWEIGHT_DISPATCHER - slapd_clr_write( s, 0); -#endif c->c_n_write++; Debug( LDAP_DEBUG_TRACE, diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 004a3435c9..4f6875ff78 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -1979,9 +1979,6 @@ slapd_daemon_task( "daemon: write active on %d\n", wd, 0, 0 ); -#ifdef SLAP_LIGHTWEIGHT_DISPATCHER - connection_write_activate( wd ); -#else /* * NOTE: it is possible that the connection was closed * and that the stream is now inactive. @@ -1997,7 +1994,6 @@ slapd_daemon_task( nrfds--; } } -#endif } for ( i = 0; nrfds > 0; i++ ) { @@ -2105,9 +2101,6 @@ slapd_daemon_task( waswrite = 1; -#ifdef SLAP_LIGHTWEIGHT_DISPATCHER - connection_write_activate( fd ); -#else /* * NOTE: it is possible that the connection was closed * and that the stream is now inactive. @@ -2117,7 +2110,6 @@ slapd_daemon_task( if ( connection_write( fd ) < 0 ) { continue; } -#endif } /* If event is a read or an error */ if( SLAP_EVENT_IS_READ( i ) || !waswrite ) { diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index 9d3e626831..30900a9f0d 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -647,12 +647,11 @@ LDAP_SLAPD_F (const char *) connection_state2str LDAP_P(( int state )) LDAP_GCCATTR((const)); #ifdef SLAP_LIGHTWEIGHT_DISPATCHER -LDAP_SLAPD_F (int) connection_write_activate LDAP_P((ber_socket_t s)); LDAP_SLAPD_F (int) connection_read_activate LDAP_P((ber_socket_t s)); #else -LDAP_SLAPD_F (int) connection_write LDAP_P((ber_socket_t s)); LDAP_SLAPD_F (int) connection_read LDAP_P((ber_socket_t s)); #endif +LDAP_SLAPD_F (int) connection_write LDAP_P((ber_socket_t s)); LDAP_SLAPD_F (unsigned long) connections_nextid(void);