mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 04:33:05 +00:00
bugfix: free message when cluster not connected
This commit is contained in:
@@ -74,8 +74,9 @@ lpackrequest(lua_State *L) {
|
|||||||
return luaL_error(L, "Invalid request message");
|
return luaL_error(L, "Invalid request message");
|
||||||
}
|
}
|
||||||
size_t sz = (size_t)luaL_checkinteger(L,4);
|
size_t sz = (size_t)luaL_checkinteger(L,4);
|
||||||
int session = luaL_checkinteger(L,2);
|
int session = luaL_optinteger(L,2,1); // new connection start with 1
|
||||||
if (session <= 0) {
|
if (session <= 0) {
|
||||||
|
skynet_free(msg);
|
||||||
return luaL_error(L, "Invalid request session %d", session);
|
return luaL_error(L, "Invalid request session %d", session);
|
||||||
}
|
}
|
||||||
int addr_type = lua_type(L,1);
|
int addr_type = lua_type(L,1);
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ local function open_channel(t, key)
|
|||||||
}
|
}
|
||||||
assert(c:connect(true))
|
assert(c:connect(true))
|
||||||
t[key] = c
|
t[key] = c
|
||||||
node_session[key] = 1
|
|
||||||
return c
|
return c
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -63,11 +62,11 @@ function command.listen(source, addr, port)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function send_request(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]
|
local session = node_session[node]
|
||||||
-- msg is a local pointer, cluster.packrequest will free it
|
-- msg is a local pointer, cluster.packrequest will free it
|
||||||
request, node_session[node] = cluster.packrequest(addr, session , msg, sz)
|
local request, new_session = cluster.packrequest(addr, session, msg, sz)
|
||||||
|
local c = node_channel[node]
|
||||||
|
node_session[node] = new_session
|
||||||
|
|
||||||
return c:request(request, session)
|
return c:request(request, session)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user