From c6da7451ca03c53773386615c13c7a5956d274c8 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Fri, 25 May 2012 12:57:17 -0700 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 +++-- patches/refresh-temp | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index 0c68dfeb..b3ebba75 100644 --- a/meta +++ b/meta @@ -1,6 +1,6 @@ Version: 1 -Previous: a4e2929cba9d5f08c579b6983e7e200801709a73 -Head: 60652438ace67e0537f4936a6e5142e1907e11ec +Previous: dffe63e28ccf842c96bc067ea6d9a52a4bf06737 +Head: 045162911d56fcf6c5167bd7f9d726d112c8bc9c Applied: destroy_cqs: 66410c265b2661e16b7f6126bcc4ea5c7e1af1bd conn-err: ac46465ae6061b06f005ba9b49b371c9eb0d2325 @@ -16,5 +16,6 @@ Applied: acm-sock: 0a80aa658097b29b5c5126b23b1fa881bcd96c1a rs-with-acm: fadeaad64ff2d89580b571bee92bf9ecfa7b7396 pre-socket: 60652438ace67e0537f4936a6e5142e1907e11ec + refresh-temp: 045162911d56fcf6c5167bd7f9d726d112c8bc9c Unapplied: Hidden: diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 00000000..f1526f5e --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,45 @@ +Bottom: 5d0cd1d6fe30d4be6e9911b62dee6a220b010988 +Top: 28282e93e467479cf3f579a318609dcce14734ca +Author: Sean Hefty +Date: 2012-05-25 12:57:17 -0700 + +Refresh of pre-socket + +--- + +diff --git a/src/preload.c b/src/preload.c +index a3ef488..d21389f 100644 +--- a/src/preload.c ++++ b/src/preload.c +@@ -325,22 +325,28 @@ void set_rsocket_options(int rsocket) + + int socket(int domain, int type, int protocol) + { ++ static __thread int recursive; + int index, ret; + ++ if (recursive) ++ goto real; ++ + init_preload(); + index = fd_open(); + if (index < 0) + return index; + ++ recursive = 1; + ret = rsocket(domain, type, protocol); ++ recursive = 0; + if (ret >= 0) { + fd_store(index, ret, fd_rsocket); + set_rsocket_options(ret); + return index; +- } else { +- fd_close(index, &ret); +- return real_socket(domain, type, protocol); + } ++ fd_close(index, &ret); ++real: ++ return real_socket(domain, type, protocol); + } + + int bind(int socket, const struct sockaddr *addr, socklen_t addrlen) -- 2.41.0