]> Sergey Matveev's repositories - btrtrc.git/blobdiff - peer.go
Drop support for go 1.20
[btrtrc.git] / peer.go
diff --git a/peer.go b/peer.go
index 4e2a24f60b5de6e2feb0ee981beecfbfc9806fd2..151c4b143b7dcf854284adaf1ecba094bde6f158 100644 (file)
--- a/peer.go
+++ b/peer.go
@@ -6,7 +6,6 @@ import (
        "io"
        "net"
        "strings"
-       "sync/atomic"
        "time"
 
        "github.com/RoaringBitmap/roaring"
@@ -86,7 +85,6 @@ type (
                peerChoking           bool
                peerRequests          map[Request]*peerRequestState
                PeerPrefersEncryption bool // as indicated by 'e' field in extension handshake
-               PeerListenPort        int
                // The highest possible number of pieces the torrent could have based on
                // communication with the peer. Generally only useful until we have the
                // torrent info.
@@ -95,9 +93,7 @@ type (
                peerTouchedPieces map[pieceIndex]struct{}
                peerAllowedFast   typedRoaring.Bitmap[pieceIndex]
 
-               PeerMaxRequests  maxRequests // Maximum pending requests the peer allows.
-               PeerExtensionIDs map[pp.ExtensionName]pp.ExtensionNumber
-               PeerClientName   atomic.Value
+               PeerMaxRequests maxRequests // Maximum pending requests the peer allows.
 
                logger log.Logger
        }
@@ -189,7 +185,7 @@ func (cn *Peer) locker() *lockWithDeferreds {
        return cn.t.cl.locker()
 }
 
-func (cn *Peer) supportsExtension(ext pp.ExtensionName) bool {
+func (cn *PeerConn) supportsExtension(ext pp.ExtensionName) bool {
        _, ok := cn.PeerExtensionIDs[ext]
        return ok
 }
@@ -325,6 +321,9 @@ func (p *Peer) close() {
        if p.updateRequestsTimer != nil {
                p.updateRequestsTimer.Stop()
        }
+       for _, prs := range p.peerRequests {
+               prs.allocReservation.Drop()
+       }
        p.peerImpl.onClose()
        if p.t != nil {
                p.t.decPeerPieceAvailability(p)
@@ -511,16 +510,12 @@ func iterBitmapsDistinct(skip *bitmap.Bitmap, bms ...bitmap.Bitmap) iter.Func {
        }
 }
 
-func (cn *Peer) peerPiecesChanged() {
-       cn.t.maybeDropMutuallyCompletePeer(cn)
-}
-
 // After handshake, we know what Torrent and Client stats to include for a
 // connection.
 func (cn *Peer) postHandshakeStats(f func(*ConnStats)) {
        t := cn.t
        f(&t.stats)
-       f(&t.cl.stats)
+       f(&t.cl.connStats)
 }
 
 // All ConnStats that include this connection. Some objects are not known
@@ -537,25 +532,6 @@ func (cn *Peer) readBytes(n int64) {
        cn.allStats(add(n, func(cs *ConnStats) *Count { return &cs.BytesRead }))
 }
 
-// Returns whether the connection could be useful to us. We're seeding and
-// they want data, we don't have metainfo and they can provide it, etc.
-func (c *Peer) useful() bool {
-       t := c.t
-       if c.closed.IsSet() {
-               return false
-       }
-       if !t.haveInfo() {
-               return c.supportsExtension("ut_metadata")
-       }
-       if t.seeding() && c.peerInterested {
-               return true
-       }
-       if c.peerHasWantedPieces() {
-               return true
-       }
-       return false
-}
-
 func (c *Peer) lastHelpful() (ret time.Time) {
        ret = c.lastUsefulChunkReceived
        if c.t.seeding() && c.lastChunkSent.After(ret) {