X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fioset-select.c;h=af7359cc26e8caba9056e8526e1eb1d18ac27d67;hb=HEAD;hp=86b23f25df974d2953e209a24d891f7a7d4628ea;hpb=4a2c9aa9ab119a212d78c6a3a73261de56800251;p=srvx.git diff --git a/src/ioset-select.c b/src/ioset-select.c index 86b23f2..af7359c 100644 --- a/src/ioset-select.c +++ b/src/ioset-select.c @@ -36,7 +36,9 @@ extern int clock_skew; static struct io_fd **fds; static unsigned int fds_size; -static fd_set read_fds, write_fds; +static fd_set read_fds; +static fd_set write_fds; +static fd_set except_fds; static int ioset_select_init(void) @@ -61,6 +63,8 @@ ioset_select_remove(struct io_fd *fd, int closed) { FD_CLR(fd->fd, &read_fds); FD_CLR(fd->fd, &write_fds); + FD_CLR(fd->fd, &except_fds); + fds[fd->fd] = NULL; (void)closed; } @@ -76,9 +80,7 @@ ioset_select_cleanup(void) free(fds); } -#if 0 -#define debug_fdsets(MSG, NFDS, READ_FDS, WRITE_FDS, EXCEPT_FDS, SELECT_TIMEOUT) (void)0 -#else +#if DEBUG_FDSETS static void debug_fdsets(const char *msg, int nfds, fd_set *read_fds, fd_set *write_fds, fd_set *except_fds, struct timeval *select_timeout) { static const char *flag_text[8] = { "---", "r", "w", "rw", "e", "er", "ew", "erw" }; @@ -87,12 +89,11 @@ debug_fdsets(const char *msg, int nfds, fd_set *read_fds, fd_set *write_fds, fd_ struct timeval now; for (pos=ii=0; ii