From: Quanah Gibson-Mount Date: Fri, 30 Jan 2009 19:51:16 +0000 (+0000) Subject: Further fixes from HEAD for ITS#5835 X-Git-Tag: OPENLDAP_REL_ENG_2_4_14~60 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=04c1c96a742465d5bc81e5078ea93eb52379bcc6;p=openldap Further fixes from HEAD for ITS#5835 --- diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index 9460806b7d..8675dd7206 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -1856,7 +1856,9 @@ int connection_write(ber_socket_t s) Debug( LDAP_DEBUG_TRACE, "connection_write(%d): waking output for id=%lu\n", s, c->c_connid, 0 ); + ldap_pvt_thread_mutex_lock( &c->c_write2_mutex ); ldap_pvt_thread_cond_signal( &c->c_write2_cv ); + ldap_pvt_thread_mutex_unlock( &c->c_write2_mutex ); if ( ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_NEEDS_READ, NULL ) ) { slapd_set_read( s, 1 ); diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index c82260eba8..ddea122b54 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -215,7 +215,7 @@ static struct slap_daemon { int rc; \ SLAP_EPOLL_SOCK_IX((s)) = slap_daemon.sd_nfds; \ SLAP_EPOLL_SOCK_EP((s)).data.ptr = (l) ? (l) : (void *)(&SLAP_EPOLL_SOCK_IX(s)); \ - SLAP_EPOLL_SOCK_EV((s)) = EPOLLIN|EPOLLET; \ + SLAP_EPOLL_SOCK_EV((s)) = EPOLLIN; \ rc = epoll_ctl(slap_daemon.sd_epfd, EPOLL_CTL_ADD, \ (s), &SLAP_EPOLL_SOCK_EP((s))); \ if ( rc == 0 ) { \ @@ -2545,6 +2545,11 @@ slapd_daemon_task( } else if ( !w ) { Debug( LDAP_DEBUG_CONNS, "daemon: hangup on %d\n", fd, 0, 0 ); +#ifdef HAVE_EPOLL + /* Don't keep reporting the hangup + */ + SLAP_EPOLL_SOCK_SET( fd, EPOLLET ); +#endif connection_hangup( fd ); } }