//logPieceStateChanges(leecherTorrent)
// Now do some things with leecher and seeder.
- leecherTorrent.AddClientPeer(seeder)
+ added := leecherTorrent.AddClientPeer(seeder)
// The Torrent should not be interested in obtaining peers, so the one we
// just added should be the only one.
assert.False(t, leecherTorrent.Seeding())
- assert.EqualValues(t, 1, leecherTorrent.Stats().PendingPeers)
+ assert.EqualValues(t, added, leecherTorrent.Stats().PendingPeers)
r := leecherTorrent.NewReader()
defer r.Close()
if ps.Responsive {
return
}
-func (t *Torrent) addPeer(p Peer) {
+func (t *Torrent) addPeer(p Peer) (added bool) {
cl := t.cl
torrent.Add(fmt.Sprintf("peers added by source %q", p.Source), 1)
if t.closed.IsSet() {
- return
+ return false
}
if ipAddr, ok := tryIpPortFromNetAddr(p.Addr); ok {
if cl.badPeerIPPort(ipAddr.IP, ipAddr.Port) {
torrent.Add("peers not added because of bad addr", 1)
// cl.logger.Printf("peers not added because of bad addr: %v", p)
- return
+ return false
}
}
if replaced, ok := t.peers.AddReturningReplacedPeer(p); ok {
torrent.Add("peers replaced", 1)
if !replaced.Equal(p) {
t.logger.Printf("added %v replacing %v", p, replaced)
+ added = true
}
+ } else {
+ added = true
}
t.openNewConns()
for t.peers.Len() > cl.config.TorrentPeersHighWater {
torrent.Add("excess reserve peers discarded", 1)
}
}
+ return
}
func (t *Torrent) invalidateMetadata() {
}
}
-func (t *Torrent) addPeers(peers []Peer) {
+func (t *Torrent) addPeers(peers []Peer) (added int) {
for _, p := range peers {
- t.addPeer(p)
+ if t.addPeer(p) {
+ added++
+ }
}
+ return
}
// The returned TorrentStats may require alignment in memory. See
// Adds a trusted, pending peer for each of the given Client's addresses. Typically used in tests to
// quickly make one Client visible to the Torrent of another Client.
-func (t *Torrent) AddClientPeer(cl *Client) {
- t.AddPeers(func() (ps []Peer) {
+func (t *Torrent) AddClientPeer(cl *Client) int {
+ return t.AddPeers(func() (ps []Peer) {
for _, la := range cl.ListenAddrs() {
ps = append(ps, Peer{
Addr: la,