From 55136b77ad6c0cafd75a094cb9c649e39816d8eb Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Mon, 25 Sep 2017 15:10:21 +0800 Subject: [PATCH] fix issue #741 --- service/clusterd.lua | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/service/clusterd.lua b/service/clusterd.lua index 595b7973..151e83ac 100644 --- a/service/clusterd.lua +++ b/service/clusterd.lua @@ -138,18 +138,26 @@ function command.socket(source, subcmd, fd, msg) local sz local addr, session, msg, padding, is_push = cluster.unpackrequest(msg) if padding then - local req = large_request[session] or { addr = addr , is_push = is_push } - large_request[session] = req + local requests = large_request[fd] + if requests == nil then + requests = {} + large_request[fd] = requests + end + local req = requests[session] or { addr = addr , is_push = is_push } + requests[session] = req table.insert(req, msg) return else - local req = large_request[session] - if req then - large_request[session] = nil - table.insert(req, msg) - msg,sz = cluster.concat(req) - addr = req.addr - is_push = req.is_push + local requests = large_request[fd] + if requests then + local req = requests[session] + if req then + requests[session] = nil + table.insert(req, msg) + msg,sz = cluster.concat(req) + addr = req.addr + is_push = req.is_push + end end if not msg then local response = cluster.packresponse(session, false, "Invalid large req") @@ -191,8 +199,8 @@ function command.socket(source, subcmd, fd, msg) skynet.error(string.format("socket accept from %s", msg)) skynet.call(source, "lua", "accept", fd) else - large_request = {} - skynet.error(string.format("socket %s %d : %s", subcmd, fd, msg)) + large_request[fd] = nil + skynet.error(string.format("socket %s %d %s", subcmd, fd, msg or "")) end end