diff --git a/include/proto/fd.h b/include/proto/fd.h index 1efe32399..38c12b687 100644 --- a/include/proto/fd.h +++ b/include/proto/fd.h @@ -338,6 +338,7 @@ static inline void fd_insert(int fd) { fdtab[fd].ev = 0; fdtab[fd].new = 1; + fdtab[fd].updated = 0; fdtab[fd].linger_risk = 0; fdtab[fd].cloned = 0; if (fd + 1 > maxfd) diff --git a/src/fd.c b/src/fd.c index 1a62f9a66..c197557be 100644 --- a/src/fd.c +++ b/src/fd.c @@ -190,10 +190,11 @@ static void fd_dodelete(int fd, int do_close) port_range_release_port(fdinfo[fd].port_range, fdinfo[fd].local_port); fdinfo[fd].port_range = NULL; + fdtab[fd].owner = NULL; + fdtab[fd].updated = 0; + fdtab[fd].new = 0; if (do_close) close(fd); - fdtab[fd].owner = NULL; - fdtab[fd].new = 0; while ((maxfd-1 >= 0) && !fdtab[maxfd-1].owner) maxfd--;