X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=pexconn.go;h=9254f5e1876c15ceff293d9f37c687d004d73b5c;hb=5380337f869ed630e1102036bf6dec48c044152a;hp=2f7e7df08d110eae7c5a15d28ba4a45c43323680;hpb=98234f943f98032a1be79097f13b89818d821ec1;p=btrtrc.git diff --git a/pexconn.go b/pexconn.go index 2f7e7df0..9254f5e1 100644 --- a/pexconn.go +++ b/pexconn.go @@ -143,9 +143,17 @@ func (s *pexConnState) Recv(payload []byte) error { var peers peerInfos peers.AppendFromPex(rx.Added6, rx.Added6Flags) peers.AppendFromPex(rx.Added, rx.AddedFlags) + if time.Now().Before(s.torrent.pex.rest) { + s.dbg.Printf("in cooldown period, incoming PEX discarded") + return nil + } added := s.torrent.addPeers(peers) s.dbg.Printf("got %v peers over pex, added %v", len(peers), added) + if len(peers) > 0 { + s.torrent.pex.rest = time.Now().Add(pexInterval) + } + // one day we may also want to: // - handle drops somehow // - detect malicious peers