]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/daemon.c
fix ITS#5959 fix
[openldap] / servers / slapd / daemon.c
index 31720d2d7833c5f358cff714c2cdc3a96d6ed080..fe87e196a4629a031e221c75bf981834214175eb 100644 (file)
@@ -2513,7 +2513,7 @@ slapd_daemon_task(
                                        char c[BUFSIZ];
                                        waking = 0;
                                        tcp_read( SLAP_FD2SOCK(wake_sds[0]), c, sizeof(c) );
-                                       break;
+                                       continue;
                                }
 
                                if ( SLAP_EVENT_IS_WRITE( i ) ) {
@@ -2545,7 +2545,14 @@ slapd_daemon_task(
                                } else if ( !w ) {
                                        Debug( LDAP_DEBUG_CONNS,
                                                "daemon: hangup on %d\n", fd, 0, 0 );
-                                       connection_hangup( fd );
+                                       if ( SLAP_SOCK_IS_ACTIVE( fd )) {
+#ifdef HAVE_EPOLL
+                                               /* Don't keep reporting the hangup
+                                                */
+                                               SLAP_EPOLL_SOCK_SET( fd, EPOLLET );
+#endif
+                                               connection_hangup( fd );
+                                       }
                                }
                        }
                }