From 045162911d56fcf6c5167bd7f9d726d112c8bc9c Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Fri, 25 May 2012 12:57:17 -0700 Subject: [PATCH] Refresh of pre-socket --- src/preload.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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) -- 2.45.2