Start ApiListener#SyncClient() in the thread pool

... not hosting the coroutines not to block them.

Otherwise a large replay log would block messages sending
until the peer disconnects us.
This commit is contained in:
Alexander A. Klimov 2020-11-12 13:46:47 +01:00
parent d80eb89908
commit ba87ae8109

View File

@ -708,12 +708,9 @@ void ApiListener::NewClientHandlerInternal(
if (endpoint) {
endpoint->AddClient(aclient);
IoEngine::SpawnCoroutine(IoEngine::Get().GetIoContext(), [this, aclient, endpoint](asio::yield_context yc) {
CpuBoundWork syncClient (yc);
Utility::QueueAsyncCallback([this, aclient, endpoint]() {
SyncClient(aclient, endpoint, true);
});
} else if (!AddAnonymousClient(aclient)) {
Log(LogNotice, "ApiListener")
<< "Ignoring anonymous JSON-RPC connection " << conninfo