mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
ITS#4476 revert connection_write processing back into main thread
This commit is contained in:
parent
8395383d2c
commit
daec2febfb
@ -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,
|
||||
|
@ -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 ) {
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user