diff options
author | Linus Nordberg <linus@nordberg.se> | 2019-02-26 15:26:27 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2019-02-26 15:26:27 +0100 |
commit | 5f78dc70efa2824add4560da82e9bba7ef67fb2e (patch) | |
tree | 2adfe6ebb54b1ec0f374670dd4ff403b61fce320 | |
parent | Don't read socket after close due to write done (diff) | |
download | wg-dynamic-5f78dc70efa2824add4560da82e9bba7ef67fb2e.tar.xz wg-dynamic-5f78dc70efa2824add4560da82e9bba7ef67fb2e.zip |
Enter the write block only when the outbuf is set
-rw-r--r-- | wg-dynamic-server.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/wg-dynamic-server.c b/wg-dynamic-server.c index 0f4c296..7a4dd5e 100644 --- a/wg-dynamic-server.c +++ b/wg-dynamic-server.c @@ -342,14 +342,12 @@ int main(int argc, char *argv[]) continue; pollfds[i].revents &= ~POLLOUT; - if (reqs[i - 1].buf - && send_message(pollfds[i].fd, reqs[i - 1].buf, - &reqs[i - 1].buflen)) { + if (send_message(pollfds[i].fd, reqs[i - 1].buf, + &reqs[i - 1].buflen)) { close_connection(&pollfds[i].fd, &reqs[i - 1]); + pollfds[i].events &= ~POLLOUT; continue; } - else - pollfds[i].events |= POLLOUT; } for (int i = 1; i < MAX_CONNECTIONS + 1; ++i) { @@ -360,7 +358,7 @@ int main(int argc, char *argv[]) if (handle_request(pollfds[i].fd, &reqs[i - 1], send_response, send_error)) close_connection(&pollfds[i].fd, &reqs[i - 1]); - else + else if (reqs[i - 1].buf) pollfds[i].events |= POLLOUT; } } |