Version: 1
-Previous: 9517186015b2e8f6da10053be4737197c343c747
-Head: a3854cfc3535f6b396e909741fed3010af710ab4
+Previous: 7e7104e49d842cb0bced6cc9765dc6abe34be1f9
+Head: 9e6907fdc5e19ea5dfd3dd77b3bb8d2b89c064d8
Applied:
transpose: 03f4d89839a16c30de3e5094b587e5c4b386adc4
fork: a3854cfc3535f6b396e909741fed3010af710ab4
+ refresh-temp: 9e6907fdc5e19ea5dfd3dd77b3bb8d2b89c064d8
Unapplied:
waitall-buggy: c49c6b56c55385774065f5aa2704078e6ae0ceb8
rs-1sge: 8ec392829399dec7ed5c608b8697a482e5faa2de
--- /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);