forked from I2P_Developers/i2p.i2p
minor optimization
This commit is contained in:
@ -337,12 +337,14 @@ class BuildExecutor implements Runnable {
|
||||
}
|
||||
} else {
|
||||
if ( (allowed > 0) && (!wanted.isEmpty()) ) {
|
||||
Collections.shuffle(wanted, _context.random());
|
||||
try {
|
||||
Collections.sort(wanted, new TunnelPoolComparator());
|
||||
} catch (IllegalArgumentException iae) {
|
||||
// Java 7 TimSort - see info in TunnelPoolComparator
|
||||
continue;
|
||||
if (wanted.size() > 1) {
|
||||
Collections.shuffle(wanted, _context.random());
|
||||
try {
|
||||
Collections.sort(wanted, new TunnelPoolComparator());
|
||||
} catch (IllegalArgumentException iae) {
|
||||
// Java 7 TimSort - see info in TunnelPoolComparator
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// force the loops to be short, since 3 consecutive tunnel build requests can take
|
||||
|
@ -674,11 +674,17 @@ public class TunnelPool {
|
||||
if (rlen > 1 && llen <= 1)
|
||||
return 1;
|
||||
}
|
||||
byte lhsDelta[] = DataHelper.xor(lhs.getFarEnd().getData(), _base);
|
||||
byte rhsDelta[] = DataHelper.xor(rhs.getFarEnd().getData(), _base);
|
||||
int rv = DataHelper.compareTo(lhsDelta, rhsDelta);
|
||||
if (rv != 0)
|
||||
return rv;
|
||||
// TODO don't prefer exact match for security?
|
||||
byte lhsb[] = lhs.getFarEnd().getData();
|
||||
byte rhsb[] = rhs.getFarEnd().getData();
|
||||
for (int i = 0; i < _base.length; i++) {
|
||||
int ld = (lhsb[i] ^ _base[i]) & 0xff;
|
||||
int rd = (rhsb[i] ^ _base[i]) & 0xff;
|
||||
if (ld < rd)
|
||||
return -1;
|
||||
if (ld > rd)
|
||||
return 1;
|
||||
}
|
||||
// latest-expiring first as a tie-breaker
|
||||
return (int) (rhs.getExpiration() - lhs.getExpiration());
|
||||
}
|
||||
|
Reference in New Issue
Block a user