diff --git a/lualib/skynet.lua b/lualib/skynet.lua index 900dc5c1..e4dfdc58 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -92,6 +92,7 @@ local function _error_dispatch(error_session, error_source) if watching_session[error_session] then table.insert(error_queue, error_session) end + session_response[coroutine.running()] = true -- error report don't need response end end @@ -238,10 +239,16 @@ function suspend(co, result, command, param, size) elseif command == "EXIT" then -- coroutine exit local address = session_coroutine_address[co] - release_watching(address) - session_coroutine_id[co] = nil - session_coroutine_address[co] = nil - session_response[co] = nil + local session = session_coroutine_id[co] + if address then + release_watching(address) + if session ~= 0 and not session_response[co] then + error "no response" -- need response + end + session_coroutine_id[co] = nil + session_coroutine_address[co] = nil + session_response[co] = nil + end elseif command == "QUIT" then -- service exit return diff --git a/lualib/skynet/debug.lua b/lualib/skynet/debug.lua index e267b9a9..f776c96e 100644 --- a/lualib/skynet/debug.lua +++ b/lualib/skynet/debug.lua @@ -75,7 +75,7 @@ local function init(skynet, export) end function dbgcmd.LINK() - -- no return, raise error when exit + skynet.response() -- get response , but not return. raise error when exit end return dbgcmd