X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=pexconn.go;h=9254f5e1876c15ceff293d9f37c687d004d73b5c;hb=HEAD;hp=459131f416de3de189241c90c9fb67ed5e5ce259;hpb=b18e824a6b9f549bce05e117b1355172d14ef3b3;p=btrtrc.git diff --git a/pexconn.go b/pexconn.go index 459131f4..9254f5e1 100644 --- a/pexconn.go +++ b/pexconn.go @@ -143,11 +143,18 @@ 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: - // - check if the peer is not flooding us with PEX updates // - handle drops somehow // - detect malicious peers