]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
pop
authorSean Hefty <sean.hefty@intel.com>
Mon, 13 Aug 2012 23:01:17 +0000 (16:01 -0700)
committerSean Hefty <sean.hefty@intel.com>
Mon, 13 Aug 2012 23:01:17 +0000 (16:01 -0700)
meta
patches/fork-connect

diff --git a/meta b/meta
index 344e1e2bf59d7a7372aee97aeb34cc1758cce720..e8825402145cdc009d3616ea805058f3d3d6a3c5 100644 (file)
--- a/meta
+++ b/meta
@@ -1,13 +1,13 @@
 Version: 1
-Previous: 8f78cc179be50491375f7684f934c17900d423b9
-Head: 9d661d643b62858fe119794e0ca41b5575faa0ce
+Previous: 8daa1fa20bfd70d34f864f025fe9ed271de3e14e
+Head: a50a83fb4e574a2cc435bba1abf6f9df3d0cc7a6
 Applied:
   real-close: 3409f8d6af187d25c63a5d1f8ee8bff5f14555e2
   dup2: ca5813e7cf95dee5933fc417e4a34d26f2b01824
   oobinline: ac51c1095f505373a6ec54b8f1d990259fb34d97
   fork-pass: 9d661d643b62858fe119794e0ca41b5575faa0ce
+  fork-connect: a50a83fb4e574a2cc435bba1abf6f9df3d0cc7a6
 Unapplied:
-  fork-connect: 85934ae0f5efd5fb11c2f7414e69787d81d62b1c
   dbg-out: 04273ee712db4d53efb390462c1b738bb54a57df
   fstat: a62c653906870422edef5f6388dac9f76c953e35
   dbg: 0c269855776d3001e37da8c8afe283c20e1d6cd6
index b4e0640a1742eb73be2117b250cdf45825e4bbc1..62ca397fcc32b0f75d77047c2f5109096a0c7c4d 100644 (file)
@@ -1,4 +1,4 @@
-Bottom: 3ea2748a5c41b11a2e7033c56bddd938d2770b6c
+Bottom: 216c0397df2215433e2acfe73e52db57cbf694c4
 Top:    652ae6e1dadacc92be353adaafd434f1ff7ddbfa
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2012-08-10 21:44:39 -0700
@@ -29,7 +29,7 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 ---
 
 diff --git a/src/preload.c b/src/preload.c
-index b18d310..8b86415 100644
+index bb8e3fb..8b86415 100644
 --- a/src/preload.c
 +++ b/src/preload.c
 @@ -99,12 +99,20 @@ static int fork_support;
@@ -133,32 +133,32 @@ index b18d310..8b86415 100644
 -      type = fd_get(socket, &fd);
 -      if (type == fd_rsocket || type == fd_fork) {
 +      if (fd_get(socket, &fd) == fd_rsocket) {
-+              index = fd_open();
-+              if (index < 0)
-+                      return index;
-+
-+              ret = raccept(fd, addr, addrlen);
-+              if (ret < 0) {
-+                      fd_close(index, &fd);
-+                      return ret;
-+              }
-+
-+              fd_store(index, ret, fd_rsocket, fd_ready);
-+              return index;
-+      } else if (fd_gets(socket) == fd_fork_listen) {
                index = fd_open();
                if (index < 0)
                        return index;
  
 -              ret = (type == fd_rsocket) ? raccept(fd, addr, addrlen) :
 -                                           real.accept(fd, addr, addrlen);
-+              ret = real.accept(fd, addr, addrlen);
++              ret = raccept(fd, addr, addrlen);
                if (ret < 0) {
                        fd_close(index, &fd);
                        return ret;
                }
  
 -              fd_store(index, ret, type);
++              fd_store(index, ret, fd_rsocket, fd_ready);
++              return index;
++      } else if (fd_gets(socket) == fd_fork_listen) {
++              index = fd_open();
++              if (index < 0)
++                      return index;
++
++              ret = real.accept(fd, addr, addrlen);
++              if (ret < 0) {
++                      fd_close(index, &fd);
++                      return ret;
++              }
++
 +              fd_store(index, ret, fd_normal, fd_fork_passive);
                return index;
        } else {
@@ -216,16 +216,16 @@ index b18d310..8b86415 100644
 +      ret = rconnect(ret, (struct sockaddr *) &addr, len);
 +      if (ret)
 +              goto err2;
-+
+-      real.close(fd);
+-      return rconnect(ret, addr, addrlen);
 +      set_rsocket_options(dfd);
 +      copysockopts(dfd, sfd, &rs, &real);
 +      real.shutdown(sfd, SHUT_RDWR);
 +      real.close(sfd);
 +      fd_store(socket, dfd, fd_rsocket, fd_ready);
 +      return;
--      real.close(fd);
--      return rconnect(ret, addr, addrlen);
++
 +err2:
 +      rclose(dfd);
 +err1:
@@ -241,32 +241,7 @@ index b18d310..8b86415 100644
  static void fork_passive(int socket)
  {
        struct sockaddr_in6 sin6;
-@@ -492,7 +545,7 @@ static void fork_passive(int socket)
-       socklen_t len;
-       uint32_t msg;
--      fd_get(socket, &sfd);
-+      sfd = fd_getd(socket);
-       len = sizeof sin6;
-       ret = real.getsockname(sfd, (struct sockaddr *) &sin6, &len);
-@@ -510,7 +563,7 @@ static void fork_passive(int socket)
-       lfd = rsocket(sin6.sin6_family, SOCK_STREAM, 0);
-       if (lfd < 0) {
--              ret  = lfd;
-+              ret = lfd;
-               goto sclose;
-       }
-@@ -537,14 +590,11 @@ static void fork_passive(int socket)
-               goto lclose;
-       }
--      param = 1;
--      rsetsockopt(dfd, IPPROTO_TCP, TCP_NODELAY, &param, sizeof param);
-       set_rsocket_options(dfd);
--
+@@ -541,7 +594,7 @@ static void fork_passive(int socket)
        copysockopts(dfd, sfd, &rs, &real);
        real.shutdown(sfd, SHUT_RDWR);
        real.close(sfd);
@@ -275,7 +250,7 @@ index b18d310..8b86415 100644
  
  lclose:
        rclose(lfd);
-@@ -553,7 +603,7 @@ sclose:
+@@ -550,7 +603,7 @@ sclose:
        sem_close(sem);
  out:
        if (ret)
@@ -284,7 +259,7 @@ index b18d310..8b86415 100644
  }
  
  static inline enum fd_type fd_fork_get(int index, int *fd)
-@@ -562,8 +612,10 @@ static inline enum fd_type fd_fork_get(int index, int *fd)
+@@ -559,8 +612,10 @@ static inline enum fd_type fd_fork_get(int index, int *fd)
  
        fdi = idm_lookup(&idm, index);
        if (fdi) {
@@ -296,7 +271,7 @@ index b18d310..8b86415 100644
                *fd = fdi->fd;
                return fdi->type;
  
-@@ -577,10 +629,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -574,10 +629,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
  {
        int fd, ret;
  
@@ -308,7 +283,7 @@ index b18d310..8b86415 100644
                ret = rconnect(fd, addr, addrlen);
                if (!ret || errno == EINPROGRESS)
                        return ret;
-@@ -591,9 +640,8 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -588,9 +640,8 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
  
                rclose(fd);
                fd = ret;