]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
Refresh of pre-socket
authorSean Hefty <sean.hefty@intel.com>
Fri, 25 May 2012 19:57:17 +0000 (12:57 -0700)
committerSean Hefty <sean.hefty@intel.com>
Fri, 25 May 2012 19:57:17 +0000 (12:57 -0700)
src/preload.c

index a3ef48830cbf901841190feac658436cb2e1905c..d21389f37c5244ba2fa5b6149163e20d97211648 100644 (file)
@@ -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)