From 294f6feb50367946102daef620a3b74b49e1cea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Mon, 9 Dec 2013 21:25:22 +0800 Subject: [PATCH] bugfix: remote object support term signal --- lualib/skynet.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lualib/skynet.lua b/lualib/skynet.lua index ce7a06dd..c3a67a44 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -172,7 +172,7 @@ function skynet.sleep(ti) local session = c.command("TIMEOUT",tostring(ti)) assert(session) session = tonumber(session) - local ret = coroutine_yield("SLEEP", session) + local succ, ret = coroutine_yield("SLEEP", session) sleep_session[coroutine.running()] = nil if ret == true then c.trace_switch(trace_handle, session) @@ -486,8 +486,12 @@ do local addr = remote_query(t.__remote) -- the proto is 11 (lua is 10) local session = assert(_send(addr, 11 , nil, _pack(t,method,...)), "call to invalid address") - local msg, sz = coroutine_yield(session) - return select(2,assert(_unpack(msg,sz))) + local succ, msg, sz = coroutine_yield("CALL", session) + if succ then + return select(2,assert(_unpack(msg,sz))) + else + error "call to dead remote object" + end end remote_call_func[method] = f end