diff --git a/lualib/cluster.lua b/lualib/cluster.lua index dba8f318..9883227f 100644 --- a/lualib/cluster.lua +++ b/lualib/cluster.lua @@ -8,6 +8,11 @@ function cluster.call(node, address, ...) return skynet.call(clusterd, "lua", "req", node, address, skynet.pack(...)) end +function cluster.send(node, address, ...) + -- skynet.pack(...) will free by cluster.core.packrequest + skynet.send(clusterd, "lua", "req", node, address, skynet.pack(...)) +end + function cluster.open(port) if type(port) == "string" then skynet.call(clusterd, "lua", "listen", port) diff --git a/lualib/skynet.lua b/lualib/skynet.lua index 9a590d1d..c3b98942 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -161,6 +161,9 @@ function suspend(co, result, command, param, size) sleep_session[co] = param elseif command == "RETURN" then local co_session = session_coroutine_id[co] + if co_session == 0 then + return suspend(co, coroutine_resume(co, false)) -- send don't need ret + end local co_address = session_coroutine_address[co] if param == nil or session_response[co] then error(debug.traceback(co))