]> Sergey Matveev's repositories - btrtrc.git/blobdiff - webseed-peer.go
Rename tracker/http package
[btrtrc.git] / webseed-peer.go
index 4f4ca1f60eeadf9759862bf5c4b7f6f640d0f722..52e33c721217b51096a5d6e99c6f179233c5e23c 100644 (file)
@@ -10,16 +10,18 @@ import (
 
        "github.com/RoaringBitmap/roaring"
        "github.com/anacrolix/log"
+
        "github.com/anacrolix/torrent/metainfo"
        pp "github.com/anacrolix/torrent/peer_protocol"
        "github.com/anacrolix/torrent/webseed"
 )
 
 type webseedPeer struct {
+       // First field for stats alignment.
+       peer           Peer
        client         webseed.Client
        activeRequests map[Request]webseed.Request
        requesterCond  sync.Cond
-       peer           Peer
        // Number of requester routines.
        maxRequests int
 }
@@ -85,7 +87,7 @@ func (ws *webseedPeer) requester(i int) {
 start:
        for !ws.peer.closed.IsSet() {
                restart := false
-               ws.peer.requestState.Requests.Iterate(func(x uint32) bool {
+               ws.peer.requestState.Requests.Iterate(func(x RequestIndex) bool {
                        r := ws.peer.t.requestIndexToRequest(x)
                        if _, ok := ws.activeRequests[r]; ok {
                                return true
@@ -113,10 +115,13 @@ func (ws *webseedPeer) connectionFlags() string {
        return "WS"
 }
 
-// TODO: This is called when banning peers. Perhaps we want to be able to ban webseeds too. We could
-// return bool if this is even possible, and if it isn't, skip to the next drop candidate.
+// Maybe this should drop all existing connections, or something like that.
 func (ws *webseedPeer) drop() {}
 
+func (cn *webseedPeer) ban() {
+       cn.peer.close()
+}
+
 func (ws *webseedPeer) handleUpdateRequests() {
        // Because this is synchronous, webseed peers seem to get first dibs on newly prioritized
        // pieces.