From: Sean Hefty Date: Thu, 23 Aug 2012 18:31:58 +0000 (-0700) Subject: Refresh of fork-fix X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=5185cbcc0ca048c3492ed2af2abfcf5e8810f0a3;p=~shefty%2Flibrdmacm.git Refresh of fork-fix --- 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);