From 7bd3d855404258e161a5a43627a2c33f628f194d Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 18 Jul 2012 10:10:20 -0700 Subject: [PATCH] Refresh of fork --- src/preload.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/preload.c b/src/preload.c index e901d130..7be40f63 100644 --- a/src/preload.c +++ b/src/preload.c @@ -437,20 +437,23 @@ int listen(int socket, int backlog) int accept(int socket, struct sockaddr *addr, socklen_t *addrlen) { int fd, index, ret; + enum fd_type type; - if (fd_get(socket, &fd) == fd_rsocket) { + type = fd_get(socket, &fd); + if (type == fd_rsocket || type == fd_fork) { index = fd_open(); if (index < 0) return index; - ret = raccept(fd, addr, addrlen); + ret = (type == fd_rsocket) ? raccept(fd, addr, addrlen) : + real.accept(fd, addr, addrlen); if (ret < 0) { fd_close(index, &fd); return ret; } - fd_store(index, ret, fd_rsocket); - last_accept = index; + fd_store(index, ret, type); + last_accept = (type == fd_fork) ? index : -1; return index; } else { last_accept = -1; -- 2.45.2