X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=pex.go;h=a0a5f49f5babfb54a2ca11b532d7a017babf4bb8;hb=5380337f869ed630e1102036bf6dec48c044152a;hp=4770f3d3bbf7f1804d66f33b8c230207092d9a3c;hpb=98234f943f98032a1be79097f13b89818d821ec1;p=btrtrc.git diff --git a/pex.go b/pex.go index 4770f3d3..a0a5f49f 100644 --- a/pex.go +++ b/pex.go @@ -4,6 +4,7 @@ import ( "net" "net/netip" "sync" + "time" pp "github.com/anacrolix/torrent/peer_protocol" ) @@ -144,8 +145,11 @@ func (me *pexMsgFactory) PexMsg() *pp.PexMsg { // Per-torrent PEX state type pexState struct { sync.RWMutex - tail *pexEvent // event feed list - hold []pexEvent // delayed drops + tail *pexEvent // event feed list + hold []pexEvent // delayed drops + // Torrent-wide cooldown deadline on inbound. This exists to prevent PEX from drowning out other + // peer address sources, until that is fixed. + rest time.Time nc int // net number of alive conns msg0 pexMsgFactory // initial message } @@ -157,6 +161,7 @@ func (s *pexState) Reset() { s.tail = nil s.hold = nil s.nc = 0 + s.rest = time.Time{} s.msg0 = pexMsgFactory{} }