aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/server_epoll.lua15
1 files changed, 8 insertions, 7 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua
index 66a60b5e..c7ab0c13 100644
--- a/net/server_epoll.lua
+++ b/net/server_epoll.lua
@@ -1109,10 +1109,11 @@ local function loop(once)
return loop_once();
end
- repeat
- local t = runtimers(cfg.max_wait, cfg.min_wait);
+ local t = 0;
+ while not quitting do
local fd, r, w = poll:wait(t);
- while fd do
+ if fd then
+ t = 0;
local conn = fds[fd];
if conn then
if r then
@@ -1125,12 +1126,12 @@ local function loop(once)
log("debug", "Removing unknown fd %d", fd);
poll:del(fd);
end
- fd, r, w = poll:wait(0);
- end
- if r ~= "timeout" and r ~= "signal" then
+ elseif r == "timeout" then
+ t = runtimers(cfg.max_wait, cfg.min_wait);
+ elseif r ~= "signal" then
log("debug", "epoll_wait error: %s[%d]", r, w);
end
- until (quitting and next(fds) == nil);
+ end
return quitting;
end