From e1c2fd8a9467a8d180beb50ad55f1a0c381f60cb Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 18 Jul 2012 10:10:20 -0700 Subject: [PATCH] refresh --- meta | 7 +++---- patches/fork | 33 ++++++++++++++++++++++++++------- patches/refresh-temp | 41 ----------------------------------------- 3 files changed, 29 insertions(+), 52 deletions(-) delete mode 100644 patches/refresh-temp diff --git a/meta b/meta index 6120c551..8fbb7d40 100644 --- a/meta +++ b/meta @@ -1,10 +1,9 @@ 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 diff --git a/patches/fork b/patches/fork index 17f713e0..52c4515c 100644 --- a/patches/fork +++ b/patches/fork @@ -1,5 +1,5 @@ Bottom: c0306f4628b14e75db3da212b4a99875f49be65f -Top: 8e858610108557f53e93dd7af44d25857fb890d0 +Top: e06d8cda98db4e12dce26674115aa70458eae4d8 Author: Sean Hefty Date: 2012-07-13 15:25:53 -0700 @@ -17,7 +17,7 @@ Signed-off-by: Sean Hefty --- 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 @@ @@ -90,11 +90,30 @@ index d2058e2..e901d13 100644 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; @@ -139,7 +158,7 @@ index d2058e2..e901d13 100644 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; @@ -149,7 +168,7 @@ index d2058e2..e901d13 100644 } 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; } diff --git a/patches/refresh-temp b/patches/refresh-temp deleted file mode 100644 index 2f333f38..00000000 --- a/patches/refresh-temp +++ /dev/null @@ -1,41 +0,0 @@ -Bottom: 8e858610108557f53e93dd7af44d25857fb890d0 -Top: e06d8cda98db4e12dce26674115aa70458eae4d8 -Author: Sean Hefty -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; -- 2.46.0