Merge pull request #13537 from bfredl/rpcabort

rpc: don't handle stale requests on already closed channel
This commit is contained in:
Björn Linse
2020-12-24 14:34:47 +01:00
committed by GitHub
2 changed files with 22 additions and 0 deletions

View File

@@ -377,6 +377,10 @@ static void request_event(void **argv)
Channel *channel = e->channel;
MsgpackRpcRequestHandler handler = e->handler;
Error error = ERROR_INIT;
if (channel->rpc.closed) {
// channel was closed, abort any pending requests
goto free_ret;
}
Object result = handler.fn(channel->id, e->args, &error);
if (e->type == kMessageTypeRequest || ERROR_SET(&error)) {
// Send the response.
@@ -391,6 +395,8 @@ static void request_event(void **argv)
} else {
api_free_object(result);
}
free_ret:
api_free_array(e->args);
channel_decref(channel);
xfree(e);