Version: 1
-Previous: 7e7104e49d842cb0bced6cc9765dc6abe34be1f9
-Head: 9e6907fdc5e19ea5dfd3dd77b3bb8d2b89c064d8
+Previous: 7788e843aadb688624b2cccc3a1da5ddb22bff06
+Head: 5d3a35b01c02c3214ae9b8bfa8f6403296724d6f
Applied:
transpose: 03f4d89839a16c30de3e5094b587e5c4b386adc4
- fork: a3854cfc3535f6b396e909741fed3010af710ab4
- refresh-temp: 9e6907fdc5e19ea5dfd3dd77b3bb8d2b89c064d8
+ fork: 5d3a35b01c02c3214ae9b8bfa8f6403296724d6f
Unapplied:
waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
Bottom: a8d2f5e9e4909e604d5a7b614f02d08080507dcb
-Top: e90a53de4491d0aa00f51dec53f5a436f320da53
+Top: 2c3d4d1bd4b9fe1a653896a8d234d46ca6620399
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2012-07-13 15:25:53 -0700
---
diff --git a/src/preload.c b/src/preload.c
-index 498e813..ca81292 100644
+index 498e813..22c4b65 100644
--- a/src/preload.c
+++ b/src/preload.c
@@ -92,10 +92,12 @@ static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
return index;
}
fd_close(index, &ret);
-@@ -421,6 +435,27 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -421,12 +435,37 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
}
}
+static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrlen)
+{
++ struct sockaddr_in *sin;
++ int fd, ret;
+ uint32_t msg;
-+ int rs, fd, ret;
+
-+ fd = fd_getd(socket);
-+ ret = real_connect(fd, addr, addrlen);
-+ if (!ret)
++ fd_get(socket, &fd);
++ ret = real.connect(fd, addr, addrlen);
++ if (ret)
+ return ret;
+
-+ ret = real_read(fd, &msg, sizeof msg);
++ ret = real.read(fd, &msg, sizeof msg);
+ if (ret != sizeof msg)
+ return ret;
+
-+ ret = transpose_socket(socket, &fd, fd_rsocket, rsocket,
-+ real_close, rclose, real_getsockname,
-+ real_getsockopt, rsetsockopt,
-+ real_fcntl, rfcntl);
-+ return connect(socket, addr, addrlen);
++ ret = transpose_socket(socket, &fd, fd_rsocket);
++ if (ret)
++ return ret;
++
++ return rconnect(fd, addr, addrlen);
+}
+
int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
{
struct sockaddr_in *sin;
+ int fd, ret;
+
+- if (fd_get(socket, &fd) == fd_rsocket) {
++ switch (fd_get(socket, &fd)) {
++ case fd_fork:
++ return connect_fork(socket, addr, addrlen);
++ case fd_rsocket:
+ sin = (struct sockaddr_in *) addr;
+ if (ntohs(sin->sin_port) > 1024) {
+ ret = rconnect(fd, addr, addrlen);
+++ /dev/null
-Bottom: e90a53de4491d0aa00f51dec53f5a436f320da53
-Top: 2c3d4d1bd4b9fe1a653896a8d234d46ca6620399
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2012-07-16 16:44:52 -0700
-
-Refresh of fork
-
----
-
-diff --git a/src/preload.c b/src/preload.c
-index ca81292..22c4b65 100644
---- a/src/preload.c
-+++ b/src/preload.c
-@@ -437,23 +437,24 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
-
- static int connect_fork(int socket, const struct sockaddr *addr, socklen_t addrlen)
- {
-+ struct sockaddr_in *sin;
-+ int fd, ret;
- uint32_t msg;
-- int rs, fd, ret;
-
-- fd = fd_getd(socket);
-- ret = real_connect(fd, addr, addrlen);
-- if (!ret)
-+ fd_get(socket, &fd);
-+ ret = real.connect(fd, addr, addrlen);
-+ if (ret)
- return ret;
-
-- ret = real_read(fd, &msg, sizeof msg);
-+ ret = real.read(fd, &msg, sizeof msg);
- if (ret != sizeof msg)
- return ret;
-
-- ret = transpose_socket(socket, &fd, fd_rsocket, rsocket,
-- real_close, rclose, real_getsockname,
-- real_getsockopt, rsetsockopt,
-- real_fcntl, rfcntl);
-- return connect(socket, addr, addrlen);
-+ ret = transpose_socket(socket, &fd, fd_rsocket);
-+ if (ret)
-+ return ret;
-+
-+ return rconnect(fd, addr, addrlen);
- }
-
- int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
-@@ -461,7 +462,10 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
- struct sockaddr_in *sin;
- int fd, ret;
-
-- if (fd_get(socket, &fd) == fd_rsocket) {
-+ switch (fd_get(socket, &fd)) {
-+ case fd_fork:
-+ return connect_fork(socket, addr, addrlen);
-+ case fd_rsocket:
- sin = (struct sockaddr_in *) addr;
- if (ntohs(sin->sin_port) > 1024) {
- ret = rconnect(fd, addr, addrlen);