From ad082bc6444edf5e9d2cee38a906a8e2e84392a4 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Mon, 6 Dec 2021 19:24:04 +1100 Subject: [PATCH] Do webseed request updates asynchronously Fixes a bug where received chunks are immediately requested while still being processed. --- webseed-peer.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/webseed-peer.go b/webseed-peer.go index cfce1e81..85e12119 100644 --- a/webseed-peer.go +++ b/webseed-peer.go @@ -124,7 +124,11 @@ func (ws *webseedPeer) drop() {} func (ws *webseedPeer) handleUpdateRequests() { // Because this is synchronous, webseed peers seem to get first dibs on newly prioritized // pieces. - ws.peer.maybeUpdateActualRequestState() + go func() { + ws.peer.t.cl.lock() + defer ws.peer.t.cl.unlock() + ws.peer.maybeUpdateActualRequestState() + }() } func (ws *webseedPeer) onClose() { -- 2.48.1