From 5185cbcc0ca048c3492ed2af2abfcf5e8810f0a3 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Thu, 23 Aug 2012 11:31:58 -0700 Subject: [PATCH] Refresh of fork-fix --- src/preload.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/preload.c b/src/preload.c index 0645f6dd..4ba38f5f 100644 --- a/src/preload.c +++ b/src/preload.c @@ -412,20 +412,21 @@ int socket(int domain, int type, int protocol) if (index < 0) return index; + if (fork_support && (domain == PF_INET || domain == PF_INET6) && + (type == SOCK_STREAM) && (!protocol || protocol == IPPROTO_TCP)) { + ret = real.socket(domain, type, protocol); + if (ret < 0) + return ret; + fd_store(index, ret, fd_normal, fd_fork); + return index; + } + recursive = 1; ret = rsocket(domain, type, protocol); recursive = 0; if (ret >= 0) { - if (fork_support) { - rclose(ret); - ret = real.socket(domain, type, protocol); - if (ret < 0) - return ret; - fd_store(index, ret, fd_normal, fd_fork); - } else { - fd_store(index, ret, fd_rsocket, fd_ready); - set_rsocket_options(ret); - } + fd_store(index, ret, fd_rsocket, fd_ready); + set_rsocket_options(ret); return index; } fd_close(index, &ret); -- 2.45.2