forked from I2P_Developers/i2p.i2p
* i2psnark: Don't prefer leeches during end game, to
prevent slowdowns or stalls
This commit is contained in:
@@ -1202,22 +1202,23 @@ class PeerCoordinator implements PeerListener
|
|||||||
boolean skipped = false;
|
boolean skipped = false;
|
||||||
for(Piece piece : wantedPieces) {
|
for(Piece piece : wantedPieces) {
|
||||||
if (piece.getId() == savedPiece) {
|
if (piece.getId() == savedPiece) {
|
||||||
if (peer.isCompleted() && piece.getPeerCount() > 1) {
|
if (peer.isCompleted() && piece.getPeerCount() > 1 &&
|
||||||
|
wantedPieces.size() > 2*END_GAME_THRESHOLD) {
|
||||||
// Try to preserve rarest-first
|
// Try to preserve rarest-first
|
||||||
// by not requesting a partial piece that non-seeders also have
|
// by not requesting a partial piece that at least two non-seeders also have
|
||||||
// from a seeder
|
// from a seeder
|
||||||
boolean nonSeeds = false;
|
int nonSeeds = 0;
|
||||||
for (Peer pr : peers) {
|
for (Peer pr : peers) {
|
||||||
PeerState state = pr.state;
|
PeerState state = pr.state;
|
||||||
if (state == null) continue;
|
if (state == null) continue;
|
||||||
BitField bf = state.bitfield;
|
BitField bf = state.bitfield;
|
||||||
if (bf == null) continue;
|
if (bf == null) continue;
|
||||||
if (bf.get(savedPiece) && !pr.isCompleted()) {
|
if (bf.get(savedPiece) && !pr.isCompleted()) {
|
||||||
nonSeeds = true;
|
if (++nonSeeds > 1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (nonSeeds) {
|
if (nonSeeds > 1) {
|
||||||
skipped = true;
|
skipped = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -1,3 +1,8 @@
|
|||||||
|
2014-07-19 zzz
|
||||||
|
* i2psnark: Don't prefer leeches during end game, to
|
||||||
|
prevent slowdowns or stalls
|
||||||
|
* Streaming; Disable fail-fast for now.
|
||||||
|
|
||||||
2014-07-15 str4d
|
2014-07-15 str4d
|
||||||
* I2CP: Stubs for I2CP connections over Unix domain sockets
|
* I2CP: Stubs for I2CP connections over Unix domain sockets
|
||||||
|
|
||||||
|
@@ -18,7 +18,7 @@ public class RouterVersion {
|
|||||||
/** deprecated */
|
/** deprecated */
|
||||||
public final static String ID = "Monotone";
|
public final static String ID = "Monotone";
|
||||||
public final static String VERSION = CoreVersion.VERSION;
|
public final static String VERSION = CoreVersion.VERSION;
|
||||||
public final static long BUILD = 15;
|
public final static long BUILD = 16;
|
||||||
|
|
||||||
/** for example "-test" */
|
/** for example "-test" */
|
||||||
public final static String EXTRA = "";
|
public final static String EXTRA = "";
|
||||||
|
Reference in New Issue
Block a user