}
c.Choke()
}
+
+func (cn *connection) Drop() {
+ cn.t.dropConnection(cn)
+}
+
+func (cn *connection) sentHave(piece int) bool {
+ return piece < len(cn.sentHaves) && cn.sentHaves[piece]
+}
if !t.wantPieceIndex(piece) {
return
}
+ // We could drop any connections that we told we have a piece that we
+ // don't here. But there's a test failure, and it seems clients don't care
+ // if you request pieces that you already claim to have. Pruning bad
+ // connections might just remove any connections that aren't treating us
+ // favourably anyway.
+ // for c := range t.conns {
+ // if c.sentHave(piece) {
+ // c.Drop()
+ // }
+ // }
for conn := range t.conns {
if conn.PeerHasPiece(piece) {
conn.updateRequests()