Software / code / prosody
Comparison
net/server_epoll.lua @ 7797:d0c32d86724f
server_epoll: Flush and close all connections before quitting mainloop so no data is lost in buffers
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 01 Jan 2017 19:34:18 +0100 |
| parent | 7796:12609aee3b3b |
| child | 7799:93643a61858a |
comparison
equal
deleted
inserted
replaced
| 7796:12609aee3b3b | 7797:d0c32d86724f |
|---|---|
| 13 local t_remove = table.remove; | 13 local t_remove = table.remove; |
| 14 local t_concat = table.concat; | 14 local t_concat = table.concat; |
| 15 local setmetatable = setmetatable; | 15 local setmetatable = setmetatable; |
| 16 local tostring = tostring; | 16 local tostring = tostring; |
| 17 local pcall = pcall; | 17 local pcall = pcall; |
| 18 local next = next; | |
| 18 local pairs = pairs; | 19 local pairs = pairs; |
| 19 local log = require "util.logger".init("server_epoll"); | 20 local log = require "util.logger".init("server_epoll"); |
| 20 local epoll = require "epoll"; | 21 local epoll = require "epoll"; |
| 21 local socket = require "socket"; | 22 local socket = require "socket"; |
| 22 local luasec = require "ssl"; | 23 local luasec = require "ssl"; |
| 613 | 614 |
| 614 -- Signal main loop about shutdown via above upvalue | 615 -- Signal main loop about shutdown via above upvalue |
| 615 local function setquitting(quit) | 616 local function setquitting(quit) |
| 616 if quit then | 617 if quit then |
| 617 quitting = "quitting"; | 618 quitting = "quitting"; |
| 619 closeall(); | |
| 618 else | 620 else |
| 619 quitting = nil; | 621 quitting = nil; |
| 620 end | 622 end |
| 621 end | 623 end |
| 622 | 624 |
| 639 epoll.ctl("del", fd); | 641 epoll.ctl("del", fd); |
| 640 end | 642 end |
| 641 elseif r ~= "timeout" then | 643 elseif r ~= "timeout" then |
| 642 log("debug", "epoll_wait error: %s", tostring(r)); | 644 log("debug", "epoll_wait error: %s", tostring(r)); |
| 643 end | 645 end |
| 644 until once or quitting; | 646 until once or (quitting and next(fds) == nil); |
| 645 return quitting; | 647 return quitting; |
| 646 end | 648 end |
| 647 | 649 |
| 648 return { | 650 return { |
| 649 get_backend = function () return "epoll"; end; | 651 get_backend = function () return "epoll"; end; |