修复执行skynet.exit后别的服务call有概率卡死 (#1846)

Co-authored-by: xingfan.yzj <xingfan.yzj@alibaba-inc.com>
This commit is contained in:
yzj12138
2024-01-03 18:14:17 +08:00
committed by GitHub
parent d9c30f9119
commit 9e000da81f
2 changed files with 4 additions and 2 deletions

View File

@@ -652,7 +652,9 @@ function skynet.exit()
for address in pairs(tmp) do
c.send(address, skynet.PTYPE_ERROR, 0, "")
end
c.callback(function() end)
c.callback(function(prototype, msg, sz, session, source)
c.send(source, skynet.PTYPE_ERROR, session, "")
end)
c.command("EXIT")
-- quit service
coroutine_yield "QUIT"

View File

@@ -118,7 +118,7 @@ drop_message(struct skynet_message *msg, void *ud) {
uint32_t source = d->handle;
assert(source);
// report error to the message source
skynet_send(NULL, source, msg->source, PTYPE_ERROR, 0, NULL, 0);
skynet_send(NULL, source, msg->source, PTYPE_ERROR, msg->session, NULL, 0);
}
struct skynet_context *