]> git.sur5r.net Git - openldap/commitdiff
Further fixes from HEAD for ITS#5835
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 30 Jan 2009 19:51:16 +0000 (19:51 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 30 Jan 2009 19:51:16 +0000 (19:51 +0000)
servers/slapd/connection.c
servers/slapd/daemon.c

index 9460806b7d56c12b511e91ad9f19f9e59d1a93b2..8675dd72065209ea67a6e44a0b5d57141d75e948 100644 (file)
@@ -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 );
index c82260eba88bcfbf78c1489b66facdb34f59a567..ddea122b54e91695d1facab2863d2e451844f026 100644 (file)
@@ -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 );
                                }
                        }