]> git.sur5r.net Git - openldap/commitdiff
destroy socket set (man page for epoll_create(2) states that close(2) must be called...
authorPierangelo Masarati <ando@openldap.org>
Thu, 31 Aug 2006 13:51:25 +0000 (13:51 +0000)
committerPierangelo Masarati <ando@openldap.org>
Thu, 31 Aug 2006 13:51:25 +0000 (13:51 +0000)
servers/slapd/daemon.c

index fecc89284678df966b18eca417e54136c00097a7..31596c4846bdc572bed4d7016f02fc0198375154 100644 (file)
@@ -235,6 +235,16 @@ static struct slap_daemon {
        for (i=0; i<dtblsize; i++) slap_daemon.sd_index[i] = -1; \
 } while (0)
 
+#define SLAP_SOCK_SET_DESTROY do { \
+       if ( slap_daemon.sd_epolls != NULL ) { \
+               ch_free( slap_daemon.sd_epolls ); \
+               slap_daemon.sd_epolls = NULL; \
+               ch_free( slap_daemon.sd_index ); \
+               slap_daemon.sd_index = NULL; \
+               close( slap_daemon.sd_epfd ); \
+       } \
+} while ( 0 )
+
 # define SLAP_EVENT_DECL struct epoll_event *revents
 
 # define SLAP_EVENT_INIT do { \
@@ -275,6 +285,8 @@ static struct slap_daemon {
        FD_ZERO(&slap_daemon.sd_writers); \
 } while (0)
 
+#define                SLAP_SOCK_SET_DESTROY
+
 # define SLAP_SOCK_IS_ACTIVE(fd)       FD_ISSET((fd), &slap_daemon.sd_actives)
 # define SLAP_SOCK_IS_READ(fd)         FD_ISSET((fd), &slap_daemon.sd_readers)
 # define SLAP_SOCK_IS_WRITE(fd)                FD_ISSET((fd), &slap_daemon.sd_writers)
@@ -2319,6 +2331,8 @@ static int sockdestroy(void)
 #if defined( HAVE_WINSOCK2 ) || defined( HAVE_WINSOCK )
        WSACleanup();
 #endif
+       SLAP_SOCK_SET_DESTROY;
+
        return 0;
 }