From d1ebca057b357e701b7250d432be417cb9a3092b Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Tue, 1 Oct 2013 03:09:26 +0100 Subject: [PATCH] accept as much as possible and stop processing as soon as possible --- src/server/run.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/server/run.c b/src/server/run.c index 27bda4b..25804bc 100644 --- a/src/server/run.c +++ b/src/server/run.c @@ -55,18 +55,24 @@ serverRun(Server this) * handle accept */ if (0 != ((this->fds)[0].revents & POLLIN)) { - if (0 > serverHandleAccept(this, 0)) { - events--; - } + while (0 < serverHandleAccept(this, 0)) {} + events--; + } + + if (events == 0) { + continue; } /** * handle accept SSL */ if (0 != ((this->fds)[1].revents & POLLIN)) { - if (0 > serverHandleAccept(this, 1)) { - events--; - } + while (0 < serverHandleAccept(this, 1)) {} + events--; + } + + if (events == 0) { + continue; } for (i=2; i < this->nfds; i++) { @@ -93,6 +99,10 @@ serverRun(Server this) } } + if (events == 0) { + break; + } + /** * handle writes */ @@ -122,8 +132,9 @@ serverRun(Server this) } } - if (0 >= events) + if (events == 0) { break; // no more events to handle + } } } }