From: Sean Hefty Date: Fri, 25 May 2012 19:57:17 +0000 (-0700) Subject: Refresh of pre-socket X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=045162911d56fcf6c5167bd7f9d726d112c8bc9c;p=~shefty%2Flibrdmacm.git Refresh of pre-socket --- diff --git a/src/preload.c b/src/preload.c index a3ef4883..d21389f3 100644 --- a/src/preload.c +++ b/src/preload.c @@ -325,22 +325,28 @@ void set_rsocket_options(int rsocket) int socket(int domain, int type, int protocol) { + static __thread int recursive; int index, ret; + if (recursive) + goto real; + init_preload(); index = fd_open(); if (index < 0) return index; + recursive = 1; ret = rsocket(domain, type, protocol); + recursive = 0; if (ret >= 0) { fd_store(index, ret, fd_rsocket); set_rsocket_options(ret); return index; - } else { - fd_close(index, &ret); - return real_socket(domain, type, protocol); } + fd_close(index, &ret); +real: + return real_socket(domain, type, protocol); } int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)