webseed-peer.go | 8 +++++++- diff --git a/webseed-peer.go b/webseed-peer.go index 3511635ab9cdd2ed46d2d0aa03b1ecfa4b36bebf..e5ba748e5df9fc4f71873368fed9a23b6b0f6b43 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 @@ ws.peer.t.cl.lock() 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,