2005-04-24 jrandom

* Added a pool of PRNGs using a different synchronization technique,
      hopefully sufficient to work around IBM's PRNG bugs until we get our
      own Fortuna.
    * In the streaming lib, don't jack up the RTT on NACK, and have the window
      size bound the not-yet-ready messages to the peer, not the unacked
      message count (not sure yet whether this is worthwile).
    * Many additions to the messageHistory log.
    * Handle out of order tunnel fragment delivery (not an issue on the live
      net with TCP, but critical with UDP).
and for udp stuff:
* implemented tcp-esque rto code in the udp transport
* make sure we don't ACK too many messages at once
* transmit fragments in a simple (nonrandom) order so that we can more easily
  adjust timeouts/etc.
* let the active outbound pool grow dynamically if there are outbound slots to
  spare
* use a simple decaying bloom filter at the UDP level to drop duplicate resent
  packets.
This commit is contained in:
jrandom
2005-04-24 18:42:02 +00:00
committed by zzz
parent dae6be14b7
commit b2f0d17e94
25 changed files with 517 additions and 97 deletions

View File

@@ -22,6 +22,7 @@ import net.i2p.stat.StatManager;
import net.i2p.util.Clock;
import net.i2p.util.LogManager;
import net.i2p.util.RandomSource;
import net.i2p.util.PooledRandomSource;
/**
* <p>Provide a base scope for accessing singletons that I2P exposes. Rather than
@@ -432,7 +433,7 @@ public class I2PAppContext {
private void initializeRandom() {
synchronized (this) {
if (_random == null)
_random = new RandomSource(this);
_random = new PooledRandomSource(this);
_randomInitialized = true;
}
}