bugfix: socketchannel connect once

This commit is contained in:
Cloud Wu
2014-08-14 17:03:09 +08:00
parent d2cea9b70f
commit bd52c5fece
3 changed files with 39 additions and 17 deletions

View File

@@ -51,13 +51,24 @@ function command.listen(source, addr, port)
skynet.ret(skynet.pack(nil))
end
function command.req(source, node, addr, msg, sz)
local function send_request(source, node, addr, msg, sz)
local request
local c = node_channel[node]
local session = node_session[node]
-- msg is a local pointer, cluster.packrequest will free it
request, node_session[node] = cluster.packrequest(addr, session , msg, sz)
skynet.ret(c:request(request, session))
return c:request(request, session)
end
function command.req(...)
local ok, msg, sz = pcall(send_request, ...)
if ok then
skynet.ret(msg, sz)
else
skynet.error(msg)
skynet.response()(false)
end
end
local proxy = {}