Improves peer selection when seeding is enabled, we're still downloading.
}
}
-// 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
if !t.haveInfo() {
return c.supportsExtension("ut_metadata")
}
- if t.seeding() {
- return c.PeerInterested
+ if t.seeding() && c.PeerInterested {
+ return true
+ }
+ if c.peerHasWantedPieces() {
+ return true
}
- return c.peerHasWantedPieces()
+ return false
}
func (c *connection) lastHelpful() (ret time.Time) {