Version: 1
-Previous: c86014f677c31895965dab8d3458a382c6ba5641
-Head: 3deb6392dbcb0b29fb4c96f6a7c73c5e3fca3ee1
+Previous: 047b0dda9d35378aa14f9869160de9d401687b19
+Head: 7bd3d855404258e161a5a43627a2c33f628f194d
Applied:
transpose: 84e0beee0d2d3c217cd9703b9e438d25856cacb6
fork: 3deb6392dbcb0b29fb4c96f6a7c73c5e3fca3ee1
+ refresh-temp: 7bd3d855404258e161a5a43627a2c33f628f194d
Unapplied:
rstream-fork: b0aa1c3fe795a4187d6675bdc0f27ea18f733f20
dbg: ec90e76ee347bb92b73fa7e7d969782f67d4eccf
--- /dev/null
+Bottom: 8e858610108557f53e93dd7af44d25857fb890d0
+Top: e06d8cda98db4e12dce26674115aa70458eae4d8
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2012-07-18 10:10:20 -0700
+
+Refresh of fork
+
+---
+
+diff --git a/src/preload.c b/src/preload.c
+index e901d13..7be40f6 100644
+--- a/src/preload.c
++++ b/src/preload.c
+@@ -437,20 +437,23 @@ int listen(int socket, int backlog)
+ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+ {
+ int fd, index, ret;
++ enum fd_type type;
+
+- if (fd_get(socket, &fd) == fd_rsocket) {
++ type = fd_get(socket, &fd);
++ if (type == fd_rsocket || type == fd_fork) {
+ index = fd_open();
+ if (index < 0)
+ return index;
+
+- ret = raccept(fd, addr, addrlen);
++ ret = (type == fd_rsocket) ? raccept(fd, addr, addrlen) :
++ real.accept(fd, addr, addrlen);
+ if (ret < 0) {
+ fd_close(index, &fd);
+ return ret;
+ }
+
+- fd_store(index, ret, fd_rsocket);
+- last_accept = index;
++ fd_store(index, ret, type);
++ last_accept = (type == fd_fork) ? index : -1;
+ return index;
+ } else {
+ last_accept = -1;