From 3fb46241f2f3bc6ffc2e2be3b2c734573a8e5910 Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Tue, 25 Apr 2017 11:38:29 +0800 Subject: [PATCH] raise error when you forget response the request, fix issue #625 --- lualib/skynet.lua | 15 +++++++++++---- lualib/skynet/debug.lua | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) 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