From 4e541951ebef5d2bc4d623c9bf1846040de881b9 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 10 Jul 2020 13:18:33 +1000 Subject: [PATCH] Handle errors in webseed peers for bad URLs --- webseed-peer.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/webseed-peer.go b/webseed-peer.go index 3511635a..e5ba748e 100644 --- a/webseed-peer.go +++ b/webseed-peer.go @@ -2,12 +2,14 @@ package torrent import ( "fmt" + "strings" "github.com/anacrolix/torrent/common" "github.com/anacrolix/torrent/metainfo" pp "github.com/anacrolix/torrent/peer_protocol" "github.com/anacrolix/torrent/segments" "github.com/anacrolix/torrent/webseed" + "github.com/pkg/errors" ) type webseedPeer struct { @@ -70,7 +72,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) - ws.peer.remoteRejectedRequest(r) + if strings.Contains(errors.Cause(result.Err).Error(), "unsupported protocol scheme") { + ws.peer.close() + } else { + ws.peer.remoteRejectedRequest(r) + } } else { err := ws.peer.receiveChunk(&pp.Message{ Type: pp.Piece, -- 2.48.1