When seeding, connections are not just useful when they're interested

Improves peer selection when seeding is enabled, we're still downloading.
This commit is contained in:
Matt Joiner 2018-02-01 18:49:53 +11:00
parent 2166bf1ec0
commit 186c5df3d3
1 changed files with 7 additions and 4 deletions

View File

@ -794,7 +794,7 @@ func (cn *connection) readBytes(n int64) {
}
}
// Returns whether the connection is currently useful to us. We're seeding and
// 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 *connection) useful() bool {
t := c.t
@ -804,10 +804,13 @@ func (c *connection) useful() bool {
if !t.haveInfo() {
return c.supportsExtension("ut_metadata")
}
if t.seeding() {
return c.PeerInterested
if t.seeding() && c.PeerInterested {
return true
}
return c.peerHasWantedPieces()
if c.peerHasWantedPieces() {
return true
}
return false
}
func (c *connection) lastHelpful() (ret time.Time) {