From: Matt Joiner Date: Fri, 10 Jul 2020 03:18:33 +0000 (+1000) Subject: Handle errors in webseed peers for bad URLs X-Git-Tag: v1.16.0~9 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=4e541951ebef5d2bc4d623c9bf1846040de881b9;p=btrtrc.git Handle errors in webseed peers for bad URLs --- 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,