]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
refresh (create temporary patch)
authorSean Hefty <sean.hefty@intel.com>
Mon, 16 Jul 2012 21:28:41 +0000 (14:28 -0700)
committerSean Hefty <sean.hefty@intel.com>
Mon, 16 Jul 2012 21:28:41 +0000 (14:28 -0700)
meta
patches/refresh-temp [new file with mode: 0644]

diff --git a/meta b/meta
index aef046882b2ef61b8f1d6e501a1bb5915e46a47b..d18f21ec3fa11022b506dc6ad7996c6db68923be 100644 (file)
--- a/meta
+++ b/meta
@@ -1,8 +1,9 @@
 Version: 1
-Previous: 1c0d74185364be75022dbb84fcacb903e3ecd4e5
-Head: 86a08269137ad38f2d34ab5b2b2131018986b931
+Previous: ef06e26aea2280970341600a38bff87f8edb088b
+Head: 736300c117d5dea95f293a7910a06732aae11dab
 Applied:
   transpose: 86a08269137ad38f2d34ab5b2b2131018986b931
+  refresh-temp: 736300c117d5dea95f293a7910a06732aae11dab
 Unapplied:
   fork: d62b389a7f30187f39e8c6ae709fbdbf8423e7e8
   waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
diff --git a/patches/refresh-temp b/patches/refresh-temp
new file mode 100644 (file)
index 0000000..a89f92c
--- /dev/null
@@ -0,0 +1,119 @@
+Bottom: 18cd5fab283e42099140977cad709ad19315ac7a
+Top:    11bc8abd7626b80e35f4275314327e7ddf07c950
+Author: Sean Hefty <sean.hefty@intel.com>
+Date:   2012-07-16 14:28:41 -0700
+
+Refresh of transpose
+
+---
+
+diff --git a/src/preload.c b/src/preload.c
+index 69597e0..cc0d7eb 100644
+--- a/src/preload.c
++++ b/src/preload.c
+@@ -252,55 +252,6 @@ out:
+ }
+ /*
+- * Convert from an rsocket to a normal socket.  The new socket should have the
+- * same settings and bindings as the rsocket.  We currently only handle setting
+- * a few of the more common values.
+- */
+-static int socket_fallback(int socket, int *fd)
+-{
+-      socklen_t len = 0;
+-      int new_fd, param, ret;
+-
+-      ret = rgetsockname(*fd, NULL, &len);
+-      if (ret)
+-              return ret;
+-
+-      param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
+-      new_fd = real_socket(param, SOCK_STREAM, IPPROTO_TCP);
+-      if (new_fd < 0)
+-              return new_fd;
+-
+-      ret = rfcntl(*fd, F_GETFL);
+-      if (ret > 0)
+-              ret = real_fcntl(new_fd, F_SETFL, ret);
+-      if (ret)
+-              goto err;
+-
+-      len = sizeof param;
+-      ret = rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, &param, &len);
+-      if (param && !ret)
+-              ret = real_setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, &param, len);
+-      if (ret)
+-              goto err;
+-
+-      len = sizeof param;
+-      ret = rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, &param, &len);
+-      if (param && !ret)
+-              ret = real_setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, &param, len);
+-      if (ret)
+-              goto err;
+-
+-      rclose(*fd);
+-      fd_store(socket, new_fd, fd_normal);
+-      *fd = new_fd;
+-      return 0;
+-
+-err:
+-      real_close(new_fd);
+-      return ret;
+-}
+-
+-/*
+  * Convert between an rsocket and a normal socket.  The new socket should have the
+  * same settings and bindings as the current socket.  We currently only handle
+  * setting a few of the more common values.
+@@ -308,8 +259,8 @@ err:
+ static int
+ transpose_socket(int index, int *fd, enum fd_type new_type,
+       int (*socket_new)(int domain, int type, int protocol),
+-      int (*shutdown_old)(int socket, int how),
+       int (*close_old)(int socket),
++      int (*close_new)(int socket),
+       int (*getsockname_old)(int socket, struct sockaddr *addr,
+                              socklen_t *addrlen),
+       int (*getsockopt_old)(int socket, int level, int optname,
+@@ -351,14 +302,13 @@ transpose_socket(int index, int *fd, enum fd_type new_type,
+       if (ret)
+               goto err;
+-      shutdown_old(*fd, SHUT_RDWR);
+       close_old(*fd);
+       fd_store(socket, new_fd, new_type);
+       *fd = new_fd;
+       return 0;
+ err:
+-      real_close(new_fd);
++      close_new(new_fd);
+       return ret;
+ }
+@@ -413,7 +363,10 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
+               if (!sin->sin_port || ntohs(sin->sin_port) > 1024)
+                       return rbind(fd, addr, addrlen);
+-              ret = socket_fallback(socket, &fd);
++              ret = transpose_socket(socket, &fd, fd_normal, real_socket,
++                                     rclose, real_close, rgetsockname,
++                                     rgetsockopt, real_setsockopt,
++                                     rfcntl, real_fcntl);
+               if (ret)
+                       return ret;
+       }
+@@ -463,7 +416,10 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+                               return ret;
+               }
+-              ret = socket_fallback(socket, &fd);
++              ret = transpose_socket(socket, &fd, fd_normal, real_socket,
++                                     rclose, real_close, rgetsockname,
++                                     rgetsockopt, real_setsockopt,
++                                     rfcntl, real_fcntl);
+               if (ret)
+                       return ret;
+       }