From 0b726a899b169a2f670ed5fcdceb5f67c10c2ed8 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 15 Oct 2020 12:45:19 +1100 Subject: [PATCH] We might want to close webseed peers on response errors --- webseed-peer.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/webseed-peer.go b/webseed-peer.go index 064a197c..4ed32372 100644 --- a/webseed-peer.go +++ b/webseed-peer.go @@ -76,7 +76,11 @@ func (ws *webseedPeer) requestResultHandler(r request, webseedRequest webseed.Re defer ws.peer.t.cl.unlock() if result.Err != nil { ws.peer.logger.Printf("request %v rejected: %v", r, result.Err) - if strings.Contains(errors.Cause(result.Err).Error(), "unsupported protocol scheme") { + // Always close for now. We need to filter out temporary errors, but this is a nightmare in + // Go. Currently a bad webseed URL can starve out the good ones due to the chunk selection + // algorithm. + const closeOnAllErrors = false + if closeOnAllErrors || strings.Contains(errors.Cause(result.Err).Error(), "unsupported protocol scheme") { ws.peer.close() } else { ws.peer.remoteRejectedRequest(r) -- 2.44.0