From 277b0f78b00b8f3fcdb722f67c84e8aa559aa879 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 16 May 2012 15:37:54 -0700 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 +- patches/refresh-temp | 112 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index efe3eeb2..61e4c595 100644 --- a/meta +++ b/meta @@ -1,6 +1,6 @@ Version: 1 -Previous: e2166663442d8ba5831117b6a4bfad1d24332074 -Head: a8f471739c6fe7acf91d6d39197161795a56d74c +Previous: 2818cec35424f0d431e7a77d3452254e6f76160f +Head: dc51489aca8059b6ac1dd7a9eb543469bace65a7 Applied: rs-locking: ec6a8efe211b0dc98548443c2e0d67e2c355351f reuseaddr: 5ce7d9c48d082fd1959918e9134f4bdd85c402d9 @@ -8,6 +8,7 @@ Applied: rstream-async-opt: 0ee1dfc9ad50f07fd3708ebb04cb92e0fb2f41d5 rs-nodelay: 7601a5adca71f10ad1cb63292c769b7b9a35dd08 rs-async-nonblock: a8f471739c6fe7acf91d6d39197161795a56d74c + refresh-temp: dc51489aca8059b6ac1dd7a9eb543469bace65a7 Unapplied: comp_locks: b89aab130b4619806557e11e6b9c10964f00743f preload: 5dfe7abc07064485c5100e04e5412279244c2bc3 diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 00000000..ad5bbfc9 --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,112 @@ +Bottom: 456260422aff51feca00c1ee2db83c3d63b6e111 +Top: e458b46af068c102885a173b1e9d7a083a3f1511 +Author: Sean Hefty +Date: 2012-05-16 15:37:54 -0700 + +Refresh of rs-async-nonblock + +--- + +diff --git a/examples/rstream.c b/examples/rstream.c +index 8d5a22d..5532905 100644 +--- a/examples/rstream.c ++++ b/examples/rstream.c +@@ -57,6 +57,7 @@ static int use_rs = 1; + static int use_async; + static int verify; + static int flags = MSG_DONTWAIT; ++static int poll_timeout = 0; + static int custom; + static int iterations = 1; + static int transfer_size = 1000; +@@ -190,6 +191,17 @@ static int verify_buf(void *buf, int size) + return 0; + } + ++static int do_poll(struct pollfd *fds) ++{ ++ int ret; ++ ++ do { ++ ret = rs_poll(fds, 1, poll_timeout); ++ } while (!ret); ++ ++ return ret == 1 ? 0 : ret; ++} ++ + static int send_xfer(int rs, int size) + { + struct pollfd fds; +@@ -205,8 +217,8 @@ static int send_xfer(int rs, int size) + + for (offset = 0; offset < size; ) { + if (use_async) { +- ret = rs_poll(&fds, 1, -1); +- if (ret != 1) ++ ret = do_poll(&fds); ++ if (ret) + return ret; + } + +@@ -234,8 +246,8 @@ static int recv_xfer(int rs, int size) + + for (offset = 0; offset < size; ) { + if (use_async) { +- ret = rs_poll(&fds, 1, -1); +- if (ret != 1) ++ ret = do_poll(&fds); ++ if (ret) + return ret; + } + +@@ -377,8 +389,8 @@ static int server_connect(void) + fds.fd = lrs; + fds.events = POLLIN; + +- ret = rs_poll(&fds, 1, -1); +- if (ret != 1) { ++ ret = do_poll(&fds); ++ if (ret) { + perror("rpoll"); + goto close; + } +@@ -421,21 +433,24 @@ static int client_connect(void) + ret = rs_connect(rs, res->ai_addr, res->ai_addrlen); + if (ret && (errno != EINPROGRESS)) { + perror("rconnect"); +- rs_close(rs); +- rs = ret; ++ goto err; + } + + if (errno == EINPROGRESS) { + fds.fd = rs; + fds.events = POLLOUT; +- do { +- ret = rs_poll(&fds, 1, -1); +- } while (!ret); ++ ret = do_poll(&fds); ++ if (ret) ++ goto err; + } + + free: + freeaddrinfo(res); + return rs; ++err: ++ freeaddrinfo(res); ++ rs_close(rs); ++ return ret; + } + + static int run(void) +@@ -562,6 +577,9 @@ int main(int argc, char **argv) + } + } + ++ if (!(flags & MSG_DONTWAIT)) ++ poll_timeout = -1; ++ + ret = run(); + return ret; + } -- 2.41.0