]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
Refresh of fork
authorSean Hefty <sean.hefty@intel.com>
Wed, 18 Jul 2012 18:30:22 +0000 (11:30 -0700)
committerSean Hefty <sean.hefty@intel.com>
Wed, 18 Jul 2012 18:30:22 +0000 (11:30 -0700)
src/preload.c

index 7be40f639efba2297d2dedb8633cd7a2de06111e..56c6c7d0710483599e4ba1b42d29a5aaed7e0935 100644 (file)
@@ -465,11 +465,15 @@ static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrl
 {
        int fd, ret;
        uint32_t msg;
+       long flags;
 
        fd = fd_getd(socket);
+       flags = real.fcntl(fd, F_GETFD);
+       real.fcntl(fd, F_SETFD, 0);
        ret = real.connect(fd, addr, addrlen);
-       if (ret)
+       if (ret) {
                return ret;
+       }
 
        ret = real.recv(fd, &msg, sizeof msg, MSG_PEEK);
        if ((ret != sizeof msg) || msg) {
@@ -477,6 +481,7 @@ static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrl
                return 0;
        }
 
+       real.fcntl(fd, F_SETFD, flags);
        ret = transpose_socket(socket, fd_rsocket);
        if (ret < 0)
                return ret;