diff options
author | Kim Alvefur <zash@zash.se> | 2017-01-01 19:34:18 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-01-01 19:34:18 +0100 |
commit | cced8730558fbc331ab1b7c8f1574b34c625d761 (patch) | |
tree | e7417e8c29dfbf3a29c237f63f42f4db36c8e820 /net | |
parent | 827faaf5f98c8c4fdb8eb322202a2c5fb44b3b1c (diff) | |
download | prosody-cced8730558fbc331ab1b7c8f1574b34c625d761.tar.gz prosody-cced8730558fbc331ab1b7c8f1574b34c625d761.zip |
server_epoll: Flush and close all connections before quitting mainloop so no data is lost in buffers
Diffstat (limited to 'net')
-rw-r--r-- | net/server_epoll.lua | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/server_epoll.lua b/net/server_epoll.lua index d5f9d266..274368b0 100644 --- a/net/server_epoll.lua +++ b/net/server_epoll.lua @@ -15,6 +15,7 @@ local t_concat = table.concat; local setmetatable = setmetatable; local tostring = tostring; local pcall = pcall; +local next = next; local pairs = pairs; local log = require "util.logger".init("server_epoll"); local epoll = require "epoll"; @@ -615,6 +616,7 @@ local quitting = nil; local function setquitting(quit) if quit then quitting = "quitting"; + closeall(); else quitting = nil; end @@ -641,7 +643,7 @@ local function loop(once) elseif r ~= "timeout" then log("debug", "epoll_wait error: %s", tostring(r)); end - until once or quitting; + until once or (quitting and next(fds) == nil); return quitting; end |