moonbridge
changeset 287:2fe69234cbe9
Use new sigterm handling in moonbridge_http
author | jbe |
---|---|
date | Sun Jun 11 01:27:52 2017 +0200 (2017-06-11) |
parents | 26a16090276d |
children | 524bb61496b5 |
files | moonbridge_http.lua |
line diff
1.1 --- a/moonbridge_http.lua Sun Jun 11 00:06:34 2017 +0200 1.2 +++ b/moonbridge_http.lua Sun Jun 11 01:27:52 2017 +0200 1.3 @@ -205,13 +205,7 @@ 1.4 local poll = options.poll_function or moonbridge_io.poll 1.5 -- return socket handler: 1.6 return function(socket) 1.7 - -- install SIGTERM handler and initialize some variables: 1.8 - local sigterm_socket = moonbridge_io.signalsocket("TERM") 1.9 local socket_set = {[socket] = true} -- used for poll function 1.10 - local socket_term_set = { -- used for poll function 1.11 - [socket] = true, 1.12 - [sigterm_socket] = true -- also wakeup if SIGTERM has been received 1.13 - } 1.14 local survive = true -- set to false if process shall be terminated later 1.15 local consume -- can be set to function that reads some input if possible 1.16 -- function that may be used as "consume" function 1.17 @@ -1100,12 +1094,12 @@ 1.18 return true -- success 1.19 end 1.20 -- wait for input: 1.21 - if not poll(socket_term_set, nil, idle_timeout) then 1.22 + if not poll(socket_set, nil, idle_timeout, true) then 1.23 + if moonbridge_io.sigterm_received() then 1.24 + return request_error(false, "408 Request Timeout", "Server shutdown") 1.25 + end 1.26 return request_error(false, "408 Request Timeout", "Idle connection timed out") 1.27 end 1.28 - if #assert(sigterm_socket:read_nb()) > 0 then 1.29 - return request_error(false, "408 Request Timeout", "Server shutdown") 1.30 - end 1.31 -- read headers (with timeout): 1.32 do 1.33 local coro = coroutine.wrap(read_headers)