# HG changeset patch # User jbe # Date 1497137272 -7200 # Node ID 2fe69234cbe95dc7af8e698a273d2133ec33dbd8 # Parent 26a16090276d89f8e05a61fa41854981d2498c2c Use new sigterm handling in moonbridge_http diff -r 26a16090276d -r 2fe69234cbe9 moonbridge_http.lua --- a/moonbridge_http.lua Sun Jun 11 00:06:34 2017 +0200 +++ b/moonbridge_http.lua Sun Jun 11 01:27:52 2017 +0200 @@ -205,13 +205,7 @@ local poll = options.poll_function or moonbridge_io.poll -- return socket handler: return function(socket) - -- install SIGTERM handler and initialize some variables: - local sigterm_socket = moonbridge_io.signalsocket("TERM") local socket_set = {[socket] = true} -- used for poll function - local socket_term_set = { -- used for poll function - [socket] = true, - [sigterm_socket] = true -- also wakeup if SIGTERM has been received - } local survive = true -- set to false if process shall be terminated later local consume -- can be set to function that reads some input if possible -- function that may be used as "consume" function @@ -1100,12 +1094,12 @@ return true -- success end -- wait for input: - if not poll(socket_term_set, nil, idle_timeout) then + if not poll(socket_set, nil, idle_timeout, true) then + if moonbridge_io.sigterm_received() then + return request_error(false, "408 Request Timeout", "Server shutdown") + end return request_error(false, "408 Request Timeout", "Idle connection timed out") end - if #assert(sigterm_socket:read_nb()) > 0 then - return request_error(false, "408 Request Timeout", "Server shutdown") - end -- read headers (with timeout): do local coro = coroutine.wrap(read_headers)