void mread_close(struct mread_pool *self) { if (self == NULL) return; int i; struct socket * s = self->sockets; for (i=0;i<self->max_connection;i++) { if (s[i].status >= SOCKET_ALIVE) { close(s[i].fd); } } free(s); if (self->listen_fd >= 0) { close(self->listen_fd); } close(self->epoll_fd); _release_rb(self->rb); free(self); }
void mread_close(struct mread_pool *self) { if (self == NULL) return; int i; struct socket * s = self->sockets; for (i=0;i<self->max_connection;i++) { if (s[i].status >= SOCKET_ALIVE) { close(s[i].fd); } } free(s); if (self->listen_fd >= 0) { close(self->listen_fd); } #ifdef HAVE_EPOLL close(self->epoll_fd); #elif HAVE_KQUEUE close(self->kqueue_fd); #endif _release_rb(self->rb); free(self); }