]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Sat, 11 Aug 2012 05:13:06 +0000 (22:13 -0700)
committerSean Hefty <sean.hefty@intel.com>
Sat, 11 Aug 2012 05:13:06 +0000 (22:13 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index 1b714daa05d3bcabd96aec3531fb65d05cba0abe..4152a26c56878b9b4883e75f30227a8270c3a27c 100644 (file)
--- a/meta
+++ b/meta
@@ -1,11 +1,12 @@
 Version: 1
-Previous: 9e3b8e99f67e95c4f38b158c8c77379d3ec449db
-Head: 8c650d7a0e10582928f0fd3e5d9e045a84fc0b66
+Previous: 7b5ed8f3aa4c981d0fd5d588c01ab246724c5bbc
+Head: 6d2d228c1827b30af934bc63121140282c3b3282
 Applied:
   real-close: 3409f8d6af187d25c63a5d1f8ee8bff5f14555e2
   dup2: ca5813e7cf95dee5933fc417e4a34d26f2b01824
   oobinline: ac51c1095f505373a6ec54b8f1d990259fb34d97
   fork-connect: 8c650d7a0e10582928f0fd3e5d9e045a84fc0b66
+  refresh-temp: 6d2d228c1827b30af934bc63121140282c3b3282
 Unapplied:
   dbg-out: 04273ee712db4d53efb390462c1b738bb54a57df
   fstat: a62c653906870422edef5f6388dac9f76c953e35
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..cc10bb6
--- /dev/null
@@ -0,0 +1,52 @@
+Bottom: 216390f24bdb1fa45d9326571f8dd46b1fd804ef
+Top:    64baa18c546931a07eef988a8d6bdef26a73feab
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2012-08-10 22:13:06 -0700
+
+Refresh of fork-connect
+
+---
+
+diff --git a/src/preload.c b/src/preload.c
+index c61d092..e5d3fcb 100644
+--- a/src/preload.c
++++ b/src/preload.c
+@@ -436,9 +436,15 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
+ int listen(int socket, int backlog)
+ {
+-      int fd;
+-      return (fd_get(socket, &fd) == fd_rsocket) ?
+-              rlisten(fd, backlog) : real.listen(fd, backlog);
++      int fd, ret;
++      if (fd_get(socket, &fd) == fd_rsocket) {
++              ret = rlisten(fd, backlog);
++      } else {
++              ret = real.listen(fd, backlog);
++              if (!ret && fd_gets(socket) == fd_fork)
++                      fd_store(socket, fd, fd_normal, fd_fork_listen);
++      }
++      return ret;
+ }
+ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -589,8 +595,10 @@ static inline enum fd_type fd_fork_get(int index, int *fd)
+       fdi = idm_lookup(&idm, index);
+       if (fdi) {
+-              if (fdi->type == fd_fork)
++              if (fdi->type == fd_fork_passive)
+                       fork_passive(index);
++              else if (fdi->type == fd_fork_active)
++                      fork_active(index);
+               *fd = fdi->fd;
+               return fdi->type;
+@@ -616,6 +624,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+               rclose(fd);
+               fd = ret;
+       } else {
++              /* Set state to fork_active if nonblocking.  if blocking fork_active */
+               return real.connect(fd, addr, addrlen);
+       }
+ }