Version: 1
-Previous: 047b0dda9d35378aa14f9869160de9d401687b19
-Head: 7bd3d855404258e161a5a43627a2c33f628f194d
+Previous: d6aeef35e71a5876ae6467d1009dcf1b8ad562de
+Head: 186a9caab5e2bbfd189e5fb2679ce35e63cd40ce
Applied:
transpose: 84e0beee0d2d3c217cd9703b9e438d25856cacb6
- fork: 3deb6392dbcb0b29fb4c96f6a7c73c5e3fca3ee1
- refresh-temp: 7bd3d855404258e161a5a43627a2c33f628f194d
+ fork: 186a9caab5e2bbfd189e5fb2679ce35e63cd40ce
Unapplied:
rstream-fork: b0aa1c3fe795a4187d6675bdc0f27ea18f733f20
dbg: ec90e76ee347bb92b73fa7e7d969782f67d4eccf
Bottom: c0306f4628b14e75db3da212b4a99875f49be65f
-Top: 8e858610108557f53e93dd7af44d25857fb890d0
+Top: e06d8cda98db4e12dce26674115aa70458eae4d8
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 d2058e2..e901d13 100644
+index d2058e2..7be40f6 100644
--- a/src/preload.c
+++ b/src/preload.c
@@ -46,6 +46,8 @@
return index;
}
fd_close(index, &ret);
-@@ -431,18 +450,47 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -418,31 +437,63 @@ 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, fd_rsocket);
++ fd_store(index, ret, type);
++ last_accept = (type == fd_fork) ? index : -1;
return index;
} else {
+ last_accept = -1;
sin = (struct sockaddr_in *) addr;
if (ntohs(sin->sin_port) > 1024) {
ret = rconnect(fd, addr, addrlen);
-@@ -456,6 +504,9 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -456,6 +507,9 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
rclose(fd);
fd = ret;
}
return real.connect(fd, addr, addrlen);
-@@ -754,3 +805,86 @@ int fcntl(int socket, int cmd, ... /* arg */)
+@@ -754,3 +808,86 @@ int fcntl(int socket, int cmd, ... /* arg */)
va_end(args);
return ret;
}
+++ /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;