I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
history.txt 107 KiB
Newer Older
  • Learn to ignore specific revisions
  • jrandom's avatar
    jrandom committed
          the feeder methods (sun and kaffe only need the feeder, but it seems ibm
          needs all of them synchronized).
        * Properly use the tunnel tests as part of the profile stats.
        * Don't flood the jobqueue with sequential persist profile tasks, but 
          instead, inject a brief scheduling delay between them.
        * Reduce the TCP connection establishment timeout to 20s (which is still
          absurdly excessive)
        * Reduced the max resend delay to 30s so we can get some resends in when
          dealing with client apps that hang up early (e.g. wget)
        * Added more alternative socketManager factories (good call aum!)
    
    jrandom's avatar
    jrandom committed
    
    2005-03-16  jrandom
        * Adjust the old speed calculator to include end to end RTT data in its 
          estimates, and use that as the primary speed calculator again.
        * Use the mean of the high capacity speeds to determine the fast 
          threshold, rather than the median.  Perhaps we should use the mean of
          all active non-failing peers?
        * Updated the profile page to sort by tier, then alphabetically.
        * Added some alternative socketManager factories (good call aum!)
    
    jrandom's avatar
    jrandom committed
    
    2005-03-14  jrandom
        * New strict speed calculator that goes off the actual number of messages
          verifiably sent through the peer by way of tunnels.  Initially, this only
          contains the successful message count on inbound tunnels, but may be 
          augmented later to include verified outbound messages, peers queried in 
          the netDb, etc.  The speed calculation decays quickly, but should give
          a better differential than the previous stat (both values are shown on 
          the /profiles.jsp page)
    
    
    2005-03-11  jrandom
        * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the 
          minimum (increased on resends as before, of course).
        * Always prod the clock update listeners, even if just to tell them that 
          the time hasn't changed much.
        * Added support for explicit peer selection for individual tunnel pools,
          which will be useful in debugging but not recommended for use by normal
          end users.
        * More aggressively search for the next hop's routerInfo on tunnel join.
        * Give messages received via inbound tunnels that are bound to remote
          locations sufficient time (taking into account clock skew).
        * Give alternate direct send messages sufficient time (10s min, not 5s)
        * Always give the end to end data message the explicit timeout (though the
          old default was sufficient before)
        * No need to give end to end messages an insane expiration (+2m), as we 
          are already handling skew on the receiving side.
        * Don't complain too loudly about expired TunnelCreateMessages (at least,
          not until after all those 0.5 and 0.5.0.1 users upgrade ;)
        * Properly keep the sendBps stat
        * When running the router with router.keepHistory=true, log more data to
          messageHistory.txt
        * Logging updates
        * Minor formatting updates
    
    2005-03-08  jrandom
        * More aggressively adjust the clock
    
    jrandom's avatar
    jrandom committed
    
    2005-03-07  jrandom
        * Fix the HTTP response header filter to allow multiple headers with the
          same name (thanks duck and spotteri!)
    
    jrandom's avatar
    jrandom committed
    
    * 2005-03-06  0.5.0.2 released
    
    2005-03-06  jrandom
        * Allow the I2PTunnel web interface to select streaming lib options for
          individual client tunnels, rather than sharing them across all of them,
          as we do with the session options.  This way people can (and should) set
          the irc proxy to interactive and the eepproxy to bulk.
        * Added a startRouter.sh script to new installs which simply calls 
          "sh i2prouter start".  This should make it clear how people should start
          I2P.
    
        * Properly expand the HTTP response header buffer (thanks shendaras!)
    
    jrandom's avatar
    jrandom committed
    
    2005-03-04  jrandom
        * Filter HTTP response headers in the eepproxy, forcing Connection: close
          so that broken (/malicious) webservers can't allow persistent 
          connections.  All HTTP compliant browsers should now always close the 
          socket.
    
    jrandom's avatar
    jrandom committed
        * Enabled the GZIPInputStream's cache (they weren't cached before)
    
    jrandom's avatar
    jrandom committed
        * Make sure our first send is always a SYN (duh)
        * Workaround for some buggy compilers
    
    jrandom's avatar
    jrandom committed
    
    2005-03-03  jrandom
        * Loop while starting up the I2PTunnel instances, in case the I2CP 
          listener isn't up yet (thanks detonate!)
        * Implement custom reusable GZIP streams to both reduce memory churn
          and prevent the exposure of data in the standard GZIP header (creation
          time, OS, etc).  This is RFC1952 compliant, and backwards compatible, 
          though has only been tested within the confines of I2P's compression use
          (DataHelper.[de]compress).
        * Preemptively support the next protocol version, so that after the 0.5.0.2
          release, we'll be able to drop protocol=2 to get rid of 0.5 users.
    
    jrandom's avatar
    jrandom committed
    
    2005-03-02  jrandom
        * Fix one substantial OOM cause (session tag manager was only dropping 
          tags once the critical limit was met, rather than honoring their 
          expiration) (duh)
        * Lots of small memory fixes
        * Double the allowable concurrent outstanding tunnel build tasks (20)
    
    jrandom's avatar
    jrandom committed
    
    2005-03-01  jrandom
        * Really disable the streaming lib packet caching
        * Synchronized a message handling point in the SDK (even though its use is
          already essentially single threaded, its better to play it safe)
        * Don't add new RepublishLeaseSetJobs on failure, just requeue up the 
          existing one (duh)
        * Throttle the number of concurrent pending tunnel builds across all 
          pools, in addition to simply throttling the number of new requests per 
          minute for each pool individually.  This should avoid the cascading 
          failure when tunnel builds take too long, as no new builds will be 
          created until the previous ones are handled.
        * Factored out and extended the DataHelper's unit tests for dealing with 
          long and date formatting.
        * Explicitly specify the HTTP auth realm as "i2prouter", though this 
          alone doesn't address the bug where jetty asks for authentication too
          much.  (thanks orion!)
        * Updated the StreamSinkServer to ignore all read bytes, rather than write
          them to the filesystem.
    
    jrandom's avatar
    jrandom committed
    
    2005-02-27  jrandom
        * Don't rerequest leaseSets if there are already pending requests
        * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
          temporary disabled the streaming lib packet caching.
        * Reduced the resend RTT penalty to 10s
    
    jrandom's avatar
    jrandom committed
    
    2005-02-26  jrandom
        * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
    
    jrandom's avatar
    jrandom committed
    
    2005-02-26  jrandom
        * Further streaming lib caching improvements
        * Reduce the minimum RTT (used to calculate retry timeouts), but also 
          increase the RTT on resends.
        * Lower the default message size to 4KB from 16KB to further reduce the
          chance of failed fragmentation.
        * Extend tunnel rebuild throttling to include fallback rebuilds
        * If there are less than 20 routers known, don't drop the last 20 (to help
          avoid dropping all peers under catastrophic failures)
        * New stats for end to end messages - "client.leaseSetFoundLocally",
          "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
    
    jrandom's avatar
    jrandom committed
    
    2005-02-24  jrandom
        * Throttle the number of tunnel rebuilds per minute, preventing CPU 
          overload under catastrophic failures (thanks Tracker and cervantes!)
        * Block the router startup process until we've initialized the clock
    
    jrandom's avatar
    jrandom committed
    
    2005-02-24  jrandom
        * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
          data in the streaming lib.
        * Fixed a streaming lib bug where the connection initiator would fail the
          stream if the ACK to their SYN was lost.
    
    jrandom's avatar
    jrandom committed
    
    2005-02-23  jrandom 
        * Now that we don't get stale SAM sessions, it'd be nice if we didn't
          get stale tunnel pools, don't you think?
    
    jrandom's avatar
    jrandom committed
    
    * 2005-02-23  0.5.0.1 released
    
    jrandom's avatar
    jrandom committed
    
    2005-02-22  jrandom
        * Reworked the tunnel (re)building process to remove the tokens and 
          provide cleaner controls on the tunnels built.
        * Fixed situations where the timestamper wanted to test more servers than
          were provided (thanks Tracker!)
        * Get rid of the dead SAM sessions by using the streaming lib's callbacks
          (thanks Tracker!)
    
    jrandom's avatar
    jrandom committed
    
    2005-02-22  jrandom
        * Temporary workaround for the I2CP disconnect bug (have the streaminglib
          try to automatically reconnect on accept()/connect(..)).
        * Loop check for expired lease republishing (just in case)
    
    jrandom's avatar
    jrandom committed
    
    2005-02-22  jrandom
        * Adjusted (and fixed...) the timestamper change detection
        * Deal with a rare reordering bug at the beginning of a stream (so we 
          don't drop it unnecessarily)
        * Cleaned up some dropped message handling in the router
        * Reduced job queue churn when dealing with a large number of tunnels by
          sharing an expiration job
        * Keep a separate list of the most recent CRIT messages (shown on the 
          logs.jsp).  This way they don't get buried among any other messages.
        * For clarity, display the tunnel variance config as "Randomization" on 
          the web console.
        * If lease republishing fails (boo! hiss!) try it again 
        * Actually fix the negative jobLag in the right place (this time)
        * Allow reseeding when there are less than 10 known peer references
        * Lots of logging updates.
    
    jrandom's avatar
    jrandom committed
    
    2005-02-20  jrandom
        * Allow the streaming lib resend frequency to drop down to 20s as the
          minimum, so that up to 2 retries can get sent on an http request.
        * Add further limits to failsafe tunnels.
        * Keep exploratory and client tunnel testing and building stats separate.
        * Only use the 60s period for throttling tunnel requests due to transient
          network overload.
        * Rebuild tunnels earlier (1-3m before expiration, by default)
        * Cache the next hop's routerInfo for participating tunnels so that the
          tunnel participation doesn't depend on the netDb.
        * Fixed a long standing bug in the streaming lib where we wouldn't always
          unchoke messages when the window size grows.
        * Make sure the window size never reaches 0 (duh)
    
    jrandom's avatar
    jrandom committed
    
    2005-02-20  jrandom
        * Only build failsafe tunnels if we need them
        * Properly implement the selectNotFailingPeers so that we get a random
          selection of peers, rather than using the strictOrdering (thanks dm!)
        * Don't include too many "don't tell me about" peer references in the 
          lookup message - only send the 10 peer references closest to the target.
    
    jrandom's avatar
    jrandom committed
    
    2005-02-19  jrandom
        * Only build new extra tunnels on failure if we don't have enough
        * Fix a fencepost in the tunnel building so that e.g. a variance of
          2 means +/- 2, not +/- 1 (thanks dm!)
        * Avoid an NPE on client disconnect
        * Never select a shitlisted peer to participate in a tunnel
        * Have netDb store messages timeout after 10s, not the full 60s (duh)
        * Keep session tags around for a little longer, just in case (grr)
        * Cleaned up some closing event issues on the streaming lib
        * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
          so that 0.4.* users will need to do a clean install, but we don't need 
          to shove an additional 2MB in each update to those already on 0.5.
        * Imported the susimail css (oops, thanks susi!)
    
    jrandom's avatar
    jrandom committed
    
    * 2005-02-18  0.5 released
    
    
    2005-02-17  jrandom
        * If the clock is adjusted during a job run, don't act as if the job took
          negative time.
    
    jrandom's avatar
    jrandom committed
    
    2005-02-17  jrandom
        * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
    
    jrandom's avatar
    jrandom committed
    
    2005-02-17  jrandom
        * Fixed the braindead tunnel testing logic
        * If a large number of tunnels are failing (within the last 5-10 minutes)
          and the current tunnel pool's configuration allows it, randomly build a 
          zero hop tunnel to replace failed tunnels.
        * Enable postman's POP3 and SMTP tunnels by default
    
    jrandom's avatar
    jrandom committed
    
    2005-02-16  jrandom
        * Added some error handling when the number of session tags exceeds the
          realistic capacity, dropping a random chunk of received tag sets and
          conducting some minor analysis of the remaining ones.  This is a part
          of a pretty serious error condition, and logs as CRIT (if/when people 
          see "TOO MANY SESSION TAGS!", please let me know the full log line it
          puts in the wrapper.log or /logs.jsp)
        * Update the addressbook to only write to the published hosts location
          if the addressbook's config contains "should_publish=true" (by default,
          it contains "should_publish=false")
    
    jrandom's avatar
    jrandom committed
    
    2005-02-16  jrandom
        * (Merged the 0.5-pre branch back into CVS HEAD)
        * Replaced the old tunnel routing crypto with the one specified in
          router/doc/tunnel-alt.html, including updates to the web console to view
          and tweak it.  
        * Provide the means for routers to reject tunnel requests with a wider 
          range of responses:
            probabalistic rejection, due to approaching overload
            transient rejection, due to temporary overload
            bandwidth rejection, due to persistent bandwidth overload
            critical rejection, due to general router fault (or imminent shutdown)
          The different responses are factored into the profiles accordingly.
        * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
          with a series of new properties, relevent to the new tunnel routing code:
            inbound.nickname (used on the console)
            inbound.quantity (# of tunnels to use in any leaseSets)
            inbound.backupQuantity (# of tunnels to keep in the ready)
            inbound.length (# of remote peers in the tunnel)
            inbound.lengthVariance (if > 0, permute the length by adding a random # 
                                    up to the variance.  if < 0, permute the length
                                    by adding or subtracting a random # up to the 
                                    variance)
            outbound.* (same as the inbound, except for the, uh, outbound tunnels
                        in that client's pool)
          There are other options, and more will be added later, but the above are
          the most relevent ones.
        * Replaced Jetty 4.2.21 with Jetty 5.1.2
        * Compress all profile data on disk.
        * Adjust the reseeding functionality to work even when the JVM's http proxy
          is set.
        * Enable a poor-man's interactive-flow in the streaming lib by choking the
          max window size.
        * Reduced the default streaming lib max message size to 16KB (though still
          configurable by the user), also doubling the default maximum window 
          size.
        * Replaced the RouterIdentity in a Lease with its SHA256 hash.
        * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
          the first byte of the SHA256.
        * Added a new "netId" flag to let routers drop references to other routers
          who we won't be able to talk to.
        * Extended the timestamper to get a second (or third) opinion whenever it 
          wants to actually adjust the clock offset.
        * Replaced that kludge of a timestamp I2NP message with a full blown 
          DateMessage.
        * Substantial memory optimizations within the router and the SDK to reduce
          GC churn.  Client apps and the streaming libs have not been tuned, 
          however.
    
    jrandom's avatar
    jrandom committed
        * More bugfixes than you can shake a stick at.
    
    jrandom's avatar
    jrandom committed
    
    2005-02-13  jrandom
        * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still 
          only contains 32bit versions, so build your own, placing libjbigi.so in 
          your install dir if necessary.  (thanks mule!)
        * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
          (thanks spaetz!)
    
    smeghead's avatar
    smeghead committed
    
    2005-02-10  smeghead
        * Initial check-in of Pants, a new utility to help us manage our 3rd-party
          dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
          Pants are still non-functional at this time so don't mess with it yet
          unless you want to potentially mangle your working copy of CVS.
    
    
    2005-02-09  duck
        * Allow an unneeded newline in the SAM client connection without
          disconnecting.
    
    jrandom's avatar
    jrandom committed
    
    2005-02-07  jrandom
        * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
    
    jrandom's avatar
    jrandom committed
    
    2005-02-06  Sugadude
        * Added a filter to the addressbook to remove entries that dont end in ".i2p"
    
    smeghead's avatar
    smeghead committed
    
    2005-02-03  smeghead
        * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
          library from GNU Crypto's CVS HEAD sources.
    
    smeghead's avatar
    smeghead committed
    
    2005-01-26  smeghead
        * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
          packages and installed to $i2pinstalldir/scripts.
        * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
          using gij + libgcj, and --sourcedir to run them from the source tree
          instead of the installation directory.
        * Fixed unreachable for() statement clause in the KBucketImpl class that was
          causing gcj to toss a compilation warning (jrandom++).
    
    smeghead's avatar
    smeghead committed
    
    2005-01-26  smeghead
        * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
          tests and benchmarks.
        * Routerconsole now builds under gcj 3.4.3.
        * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
    
    smeghead's avatar
    smeghead committed
    
    2005-01-25  smeghead
        * Tweaked some classes to enable gcj 3.4.3 to compile the router and
          supporting apps (except for the routerconsole which is still being
          investigated).
    
    smeghead's avatar
    smeghead committed
    
    2005-01-24  smeghead
        * C#-ification of sam-sharp: interface greatly simplified using delegates
          and events; SamBaseEventHandler provides basic implementation and helper
          methods but is now optional.
        * NAnt buildfile and README added for sam-sharp.
    
    jrandom's avatar
    jrandom committed
    
    2005-01-23  smeghead
        * Port the java SAM client library to mono/C# and released into the 
          public domain.  The 0.1 version of this port is available in CVS as
          i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
          library has been removed.
    
    jrandom's avatar
    jrandom committed
    
    2005-01-21  Jhor
        * Updated jbigi build scripts for OSX.
    
    2005-01-21  jrandom
        * Added support for OSX to the NativeBigInteger code so that it will look
          in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
          is not bundled with the shipped jbigi.jar yet though.
    
    jrandom's avatar
    jrandom committed
    
    2005-01-18  jrandom
        * Increased the max # session tags maintained and decreased slightly the
          period over which they are gathered.
    
    jrandom's avatar
    jrandom committed
    
    2005-01-17  jrandom
        * Added meaningful support for adjusting the preferred message size in the
          streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or 
          whatever).  The other side will mimic a reduction (but never an increase).
        * Always make sure to use distinct ConnectionOption objects for each 
          connection (duh)
        * Reduced the default ACK delay to 500ms on in the streaming lib
        * Only shrink the streaming window once per window
        * Don't bundle a new jetty.xml with updates
        * Catch another local routerInfo corruption issue on startup.
    
    jrandom's avatar
    jrandom committed
    
    2005-01-15  cervantes
        * Added support to the eepproxy for URLs such as 
          http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
          http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
    
    jrandom's avatar
    jrandom committed
    
    2005-01-15  jrandom
        * Caught a series of (previously unhandled) errors caused by requeueing 
          messages that had timed out on the TCP transport (thanks mae^!)
        * Reduce the barrier to dropping session tags on streaming lib resends -
          every fourth send should drop the tags, forcing ElGamal encryption.  This
          will help speed up the recovery after a disconnect, rather than the drop
          every fifth send.
    
    jrandom's avatar
    jrandom committed
    
    * 2005-01-06  0.4.2.6 released
    
    2005-01-06  jrandom
        * Added a startup message to the addressbook, printing its version number
          to stdout (which is sent to wrapper.config) when it loads.
        * Updated the addressbook to reread the config file periodically
        * Added orion.i2p to the list of eepsites on the default homepage
    
    jrandom's avatar
    jrandom committed
    
    2005-01-05  jrandom
        * Handle unexpected network read errors more carefully (thanks parg!)
        * Added more methods to partially compare (DataHelper) and display 
          arrays (Base64.encode).
        * Exposed the AES encryptBlock/decryptBlock on the context.aes()
        * Be more generous on the throttle when just starting up the router
        * Fix a missing scheduled event in the streaming lib (caused after reset)
        * Add a new DisconnectListener on the I2PSocketManager to allow 
          notification of session destruction.
        * Make sure our own router identity is valid, and if it isn't, build a new
          one and restart the router.  Alternately, you can run the Router with 
          the single command line argument "rebuild" and it will do the same.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-31  ragnarok
        * Integrated latest addressbook changes (2.0.3) which include support for 
          deploying as a .war file with no existing addressbook configuration.
        * Updated main build process to bundle the addressbook.war in the 
          i2pinstall.jar and i2pupdate.zip.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-31  jrandom
        * Speling fxi (thanks digum!)
        * Bugfix for the I2PTunnel web interface so that it now properly launches
          newly added tunnels that are defined to be run on startup (thanks ugha!)
    
    jrandom's avatar
    jrandom committed
    
    2004-12-30  jrandom
        * Revised the I2PTunnel client and httpclient connection establishment 
          throttles.  There is now a pool of threads that build the I2PSocket
          connections with a default size of 5, configurable via the I2PTunnel 
          client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
          not throttle the number of concurrent builders, but will launch a thread
          per socket during establishment).  In addition, sockets accepted but
          not yet allocated to one of the connection builders will be destroyed
          after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
          0, it will wait indefinitely).
    
    jrandom's avatar
    jrandom committed
    
    2004-12-29  jrandom
        * Imported Ragnarok's addressbook source (2.0.2) which is built but not
          deployed in the i2pinstall.jar/i2pupdate.zip (yet).
        * Don't treat connection inactivity closure as a connection error.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-29  jrandom
        * Add in a new keepalive event on each TCP connection, proactively sending
          a (tiny) time message every minute or two, as well as killing the 
          connection if no message has been fully sent within 5 minutes or so.  
          This should help deal with hung connections from IP address changes.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-28  jrandom
        * Cleaned up the resending and choking algorithm in the streaming lib.
        * Removed the read timeout override for I2PTunnel's httpclient, allowing
          it to use the default for the streaming lib.
        * Revised ack triggers in the streaming lib.
        * Logging.
    
    jrandom's avatar
    jrandom committed
    
    * 2004-12-21  0.4.2.5 released
    
    2004-12-21  jrandom
        * Track a new stat for expired client leases (client.leaseSetExpired).
    
    jrandom's avatar
    jrandom committed
    
    2004-12-21  jrandom
        * Cleaned up the postinstall/startup scripts a bit more to handle winME,
          and added windows info to the headless docs. (thanks ardvark!)
        * Fixed a harmless (yet NPE inspiring) race during the final shutdown of 
          a stream (thanks frosk!)
        * Add a pair of new stats for monitoring tunnel participation - 
          tunnel.participatingBytesProcessed (total # bytes transferred) and
          tunnel.participatingBytesProcessedActive (total # bytes transferred for
          tunnels whose byte count exceed the 10m average).  This should help 
          further monitor congestion issues.
        * Made the NamingService factory property public (thanks susi!)
    
    jrandom's avatar
    jrandom committed
    
    2004-12-20  jrandom
        * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
        * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
          dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
          reasoning is gone.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-19  jrandom
        * Fix for a race on startup wrt the new stats (thanks susi!)
    
    jrandom's avatar
    jrandom committed
    
    2004-12-19  jrandom
        * Added three new stats - router.activePeers, router.fastPeers, and 
          router.highCapacityPeers, updated every minute
    
    jrandom's avatar
    jrandom committed
    
    2004-12-19  jrandom
        * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
          hostname should be sent to the webserver.  By default, new installs will
          have an httpserver pointing at their jetty instance with the spoofed 
          name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
    
    
    2004-12-19  scintilla
        * Convert native jcpuid code from C++ to C. This should alleviate build
          problems experienced by some users.
    
    jrandom's avatar
    jrandom committed
    
    * 2004-12-18  0.4.2.4 released
    
    jrandom's avatar
    jrandom committed
    
    2004-12-16  jrandom
        * Catch another oddball case for a reset connection in the streaming lib.
        * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
          dumps the current state of that peer's profile.  Instead of the full 
          base64, you can pass in however many characters you have and it will
          return the first match found.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-16  jrandom
        * Remove the randomized factor in the tunnel rejection by bandwidth -
          we now accept the request if we've allocated less than our limit
          and reject it if we've allocated more.
        * Stick to the standard capacity scale on tunnel rejection, even for 
          the 10m period.
        * Build the time message at the very last possible moment
    
    jrandom's avatar
    jrandom committed
    
    2004-12-15  jrandom
        * Handle hard disconnects more gracefully within the streaming lib, and
          log unmonitored events more aggressively.
        * If we drop a peer after connection due to clock skew, log it to the
          /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
          the stat 'tcp.disconnectAfterSkew'.
        * Fixed the formatting in the skew display
        * Added an ERROR message that is fired once after we run out of 
          routerInfo files (thanks susi!)
        * Set the connect timeout equal to the streaming lib's disconnect timeout
          if not already specified (the I2PTunnel httpclient already enforces a
          60s connect timeout)
        * Fix for another connection startup problem in the streaming lib.
        * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
        * Adjust the capacity calculations so that tunnel failures alone in the 
          last 10m will not trigger a 0 capacity rank.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-14  jrandom
        * Periodically send a message along all I2NP connections with the router's
          current time, allowing the receiving peer to determine that the clock 
          has skewed too much, and hence, disconnect.  For backwards compatability
          reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
          next time we have a backwards compatability break, we can put in a proper
          message setup for it.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-14  jrandom
        * Reenable the probabalistic drop on the TCP queues to deal with good old
          fashioned bandwidth limiting.  However, by default the probability is
          rigged to reserve 0% of the queue free - meaning we just aggressively
          fail messages in the queue if we're transferring too slowly.  That
          reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
          (or whatever) and the drop code can be disabled with the parameter
          'tcp.dropProbabalistically=false'.
        * Still penalize a peer on tunnel failure, but don't immediately drop 
          their capacity to 0.
        * More aggressively ACK duplicates
        * Randomize the timestamper period
        * Display the clock skew on the connection logs when a peer sends it.
        * Allow the timestamper to fix skews of up to 10 minutes
        * Logging
    
    jrandom's avatar
    jrandom committed
    
    2004-12-13  jrandom
        * Added some error checking on the new client send job (thanks duck!)
        * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
          proportional to the bytes allocated in existing tunnels vs the bytes 
          allowed through the bandwidth limiter).
        * Enable a new configuration parameter for triggering a tunnel rebuild 
          (tunnel.maxTunnelFailures), where that is the max allowed test failures
          before killing the tunnel (default 0).
        * Gather more data that we rank capacity by (now we monitor and balance the
          data from 10m/30m/60m/1d instead of just 10m/60m/1d).
        * Fix a truncation/type conversion problem on the long term capacity 
          values (we were ignoring the daily stats outright)
    
    jrandom's avatar
    jrandom committed
    
    2004-12-11  jrandom
        * Fix the missing HTTP timeout, which was caused by the deferred syn used
          by default.  This, in turn, meant the I2PSocket creation doesn't fail
          on .connect, but is unable to transfer any data in any direction.  We now
          detect that condition for the I2PTunnelHTTPClient and throw up the right
          error page.
        * Logging
    
    jrandom's avatar
    jrandom committed
    
    2004-12-11  jrandom
        * Use a simpler and less memory intensive job for processing outbound 
          client messages when the session is in mode=bestEffort.  We can 
          immediately discard the data as soon as its sent the first time, 
          rather than wait for an ack, since we will never internally resend.
        * Reduce some synchronization to avoid a rare deadlock
        * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
          case it within the tunnel controller.
        * Script cleanup for building jbigi/jcpuid
        * Logging
    
    jrandom's avatar
    jrandom committed
    
    * 2004-12-08  0.4.2.3 released
    
    jrandom's avatar
    jrandom committed
    
    2004-12-08  jrandom
        * Revised the buffering when reading from the SAM client and writing 
          to the stream.  Also added a thread (sigh) so we don't block the
          SAM client from giving us more messages for abnormally long periods
          of time.
        * Display the router version in the logs on startup (oft requested)
        * Fix a race during the closing of a messageOutputStream
    
    jrandom's avatar
    jrandom committed
    
    2004-12-06  jrandom
        * Don't do a 'passive flush' while there are already outbound messages 
          unacked.
        * Show the reseed link if up to 10 peers profiles are active (thanks 
          dburton!)
    
    jrandom's avatar
    jrandom committed
    
    2004-12-06  jrandom
        * Don't propogate streaming connection failures out to the SAM bridge as
          fatal errors.
        * Dont barf on repeated I2CP closure.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-05  jrandom
        * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
          getLocalhost call
    
    jrandom's avatar
    jrandom committed
    
    2004-12-05  jrandom
        * Default the I2CP listener to localhost only, unless overridden by 
          i2cp.tcp.bindAllInterfaces=true (thanks dm!)
        * More SAM fixes for things recently broken (whee)
    
    jrandom's avatar
    jrandom committed
    
    2004-12-05  jrandom
        * Fix the recently broken SAM bridge (duh)
        * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
          net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
          StreamSink and StreamSend apps for transferring files.
        * Make the passive flush timer fire more frequently.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-05  jrandom
        * Fixed some links in the console (thanks ugha!) and the javadoc 
          (thanks dinoman!)
        * Fix the stream's passive flush timer (oh, its supposed to work?)
    
    jrandom's avatar
    jrandom committed
    
    2004-12-03  jrandom
        * Toss in a small pool of threads (3) to execute the events queued up with
          the SimpleTimer, as we do currently see the occational event 
          notification spiking up to a second or so.
        * Implement a SAM client API in java, useful for event based streaming (or
          for testing the SAM bridge)
        * Added support to shut down the SAM bridge on OOM (useful if the SAM 
          bridge is being run outside of the router).
        * Include the SAM test code in the sam.jar
        * Remove an irrelevent warning message from SAM, which was caused by 
          perfectly normal operation due to a session being closed.
        * Removed some unnecessary synchronization in the streaming lib's 
          PacketQueue
        * More quickly clean up the memory used by the streaming lib by 
          immediately killing each packet's resend job as soon as it is ACKed (or
          cancelled), so that there are no longer any valid pointers to the 
          (potentially 32KB) packet.
        * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
        * Drop packets that would expand our inbound window beyond our maximum 
          buffer size (default 32 messages)
        * Always read the ACK/NACK data from the verified packets received, even
          if we are going to drop them
        * Always adjust the window when there are messages ACKed, though do not
          change its size except as before.
        * Streamlined some synchronization in the router's I2CP handling
        * Streamlined some memory allocation in the SAM bridge
        * Default the streaming lib to disconnect on inactivity, rather than send
          an empty message.
    
    jrandom's avatar
    jrandom committed
    
    2004-12-01  jrandom
        * Fix for a race in the streaming lib as caused by some odd SAM activity
    
    jrandom's avatar
    jrandom committed
    
    * 2004-12-01  0.4.2.2 released
    
    2004-12-01  jrandom
        * Fixed a stupid typo that inadvertantly allowed persistent HTTP 
          connections to work (thanks duck!)
        * Make sure we override the inactivity timeout too
    
    jrandom's avatar
    jrandom committed
    
    * 2004-12-01  0.4.2.1 released
    
    2004-12-01  jrandom
        * Strip out any of the Accept-* HTTP header lines, and always make sure to
          include the forged User-agent header.
        * Adjust the default read timeout on the eepproxy to 60s, unless 
          overridden.
        * Minor tweak on stream shutdown.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-30  jrandom
        * Render the burst rate fields on /config.jsp properly (thanks ugha!)
        * Build in a simple timeout to flush data queued into the I2PSocket but
          not yet flushed.
        * Don't explicitly flush after each SAM stream write, but leave it up to 
          the [nonblocking] passive flush.
        * Don't whine about 10-99 connection events occurring in a second
        * Don't wait for completion of packets that will not be ACKed (duh)
        * Adjust the congestion window, even if the packet was resent (duh)
        * Make sure to wake up any blocking read()'s when the MessageInputStream
          is close()ed (duh)
        * Never wait more than the disconnect timeout for a write to complete
    
    jrandom's avatar
    jrandom committed
    
    2004-11-29  jrandom
        * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
    
    jrandom's avatar
    jrandom committed
    
    2004-11-29  jrandom
        * Reduced contention for local client delivery
        * Drop the new code that munges the wrapper.config.  Instead, updates that
          need to change it will include their own wrapper.config in the 
          i2pupdate.zip, overwriting the existing file.  If the file 
          "wrapper.config.updated" is included, it is deleted at first opportunity
          and the router shut down, displaying a notice that the router must be 
          started again cleanly to allow the changes to the wrapper.config to take
          effect.
        * Properly stop accept()ing I2PSocket connections if we close down the 
          session (duh).
        * Make sure we cancel any outstanding Packets in flight when a connection
          is terminated (thanks susi!)
        * Split up the I2PTunnel closing a little further.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-28  jrandom
        * Accept IP address detection changes with a 2-out-of-3 minimum.
        * As long as the router is up, keep retrying to bind the I2CP listener.
        * Decrease the java service wrapper ping frequency to once every 10 
          minutes, rather than once every 5 seconds.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-27  jrandom
        * Some cleanup and bugfixes for the IP address detection code where we 
          only consider connections that have actually sent and received messages
          recently as active, rather than the mere presence of a TCP socket as 
          activity.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-27  jrandom
        * Removed the I2PTunnel inactivity timeout thread, since the new streaming
          lib can do that (without an additional per-connection thread).
        * Close the I2PTunnel forwarder threads more aggressively
    
    jrandom's avatar
    jrandom committed
    
    2004-11-27  jrandom
        * Fix for a fast loop caused by a race in the new streaming library (thanks
          DrWoo, frontier, pwk_, and thetower!)
        * Minor updates to the SimpleTimer and Connection to help track down a
          high CPU usage problem (dumping debug info to stdout/wrapper.log if too
          many events/tasks fire in a second)
        * Minor fixes for races on client disconnects (causing NPEs)
    
    jrandom's avatar
    jrandom committed
    
    * 2004-11-26  0.4.2 released
    
    2004-11-26  jrandom
        * Enable the new streaming lib as the default.  That means, for any 
          substantial definition, it is NOT BACKWARDS COMPATIBLE.  
    
    jrandom's avatar
    jrandom committed
    
    2004-11-25  jrandom
        * Revised the installer to include start menu and desktop shortcuts for
          windows platforms, including pretty icons (thanks DrWoo!)
        * Allow clients specified in clients.config to have an explicit startup
          delay.
        * Update the default install to launch a browser pointing at the console
          whenever I2P starts up, rather than only the first time it starts up
          (configurable on /configservice.jsp, or in clients.config)
        * Bugfix to the clock skew checking code to monitor the delta between
          offsets, not the offset itself (duh)
        * Router console html update
        * New (and uuuuugly) code to verify that the wrapper.config contains 
          the necessary classpath entries on update.  If it has to update the
          wrapper.config, it will stop the JVM and service completely, since the
          java service wrapper doesn't reread the wrapper.config on JVM restart -
          requiring the user to manually restart the service after an update.
        * Increase the TCP connection timeout to 30s (which is obscenely long)
    
    jrandom's avatar
    jrandom committed
    
    2004-11-22  jrandom
        * Update to the SAM bridge to reduce some unnecessary memory allocation.
        * New stat to keep track of slow jobs (ones that take more than a second
          to excute).  This is published in the netDb as jobQueue.jobRunSlow
    
    jrandom's avatar
    jrandom committed
    
    2004-11-21  jrandom
        * Update the I2PTunnel web interface to include an option for the new 
          streaming lib (which is ignored until the 0.4.2 release).
        * Revised the I2PTunnel web interface to keep the I2CP options of client 
          and httpclient tunnels in sync, as they all share the same I2CP session.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-21  jrandom
        * Only allow small clock skews after the first 10 minutes of operation
          (to prevent later network lag bouncing us way off course - yes, we
          really need an NTP impl to balance out the network burps...)
        * Revamp the I2PTunnel web interface startup process so that everything
          is shown immediately, so that different pieces hanging don't hang
          the rest, and other minor bugfixes.
        * Take note of SAM startup error (in case you're already running a SAM
          bridge...)
        * Increase the bandwidth limiter burst values available to 10-60s (or
          whatever is placed in /configadvanced.jsp, of course)
    
    jrandom's avatar
    jrandom committed
    
    2004-11-21  jrandom
        * Allow end of line comments in the hosts.txt and other config files,
          using '#' to begin the comments (thanks susi!)
        * Add support to I2PTunnel's 'client' feature for picking between multiple
          target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
        * Add a quick link on the left hand nav to reseed if there aren't enough
          known peers, as well as link to the config page if there are no active 
          peers.  Revised config page accordingly.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-21  jrandom
        * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity 
          rather that every 15 minutes, and increase the warning period in which
          we refresh tags from 30s to 2 minutes.
        * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
          to close the I2PSocket (leaving it to timeout).
    
    jrandom's avatar
    jrandom committed
    
    2004-11-19  jrandom
        * Off-by-one fix to the tunnel pool management code, along side some 
          explicit initialization.  This can affect clients whose lengths are
          shorter than the router's default (thanks duck!)
    
    jrandom's avatar
    jrandom committed
    
    2004-11-17  jrandom
        * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
          Ragnarok!)
    
    jrandom's avatar
    jrandom committed
    
    2004-11-17  jrandom
        * Minor logging update.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-16  jrandom
        * Clean up the propogation of i2psocket options so that various streaming
          libs can honor them more precisely
    
    jrandom's avatar
    jrandom committed
    
    2004-11-16  jrandom
        * Minor logging update
    
    jrandom's avatar
    jrandom committed
    
    2004-11-14  jrandom
        * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
        * Fix a leak injected into the SimpleTimer
        * Fix a race condition in the tunnel message handling
    
    jrandom's avatar
    jrandom committed
    
    2004-11-13  jrandom
        * Added throttles on how many I2PTunnel client connections we open at once
        * Replaced some buffered streams in I2PTunnel with unbuffered streams, as 
          the streaming library used should take care of any buffering.
        * Added a cache for some objects used in I2PTunnel, especially useful when
          there are many short lived connections.
        * Trimmed the SimpleTimer's processing a bit
    
    jrandom's avatar
    jrandom committed
    
    2004-11-10  jrandom
        * Allow loading the (mini)streaming connection options from the 
          environment.
        * More defensive programming in the DSA implementation.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-08  jrandom
        * Remove spurious flush calls from I2PTunnel, and work with the 
          I2PSocket's output stream directly (as the various implementations
          do their own buffering).
        * Another pass at a long standing JobQueue bug - dramatically simplify
          the job management synchronization since we dont need to deal with
          high contention (unlike last year when we had dozens of queue runners
          going at once).
        * Logging
    
    jrandom's avatar
    jrandom committed
    
    2004-11-08  jrandom
        * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
    
    jrandom's avatar
    jrandom committed
    
    * 2004-11-06  0.4.1.4 released
    
    jrandom's avatar
    jrandom committed
    
    2004-11-06  jrandom
        * Expose a drop down on the /configclients.jsp to enter the outbound 
          tunnel depth.
        * Improved *hosts.txt loading
        * Explicitly override the JVM's timezone settings to use GMT so that 
          any client applications which use timezones won't leak sensitive
          data (thanks gott!)
        * Bundle sam.jar in the update (thanks duck!)
    
    jrandom's avatar
    jrandom committed
    
    2004-11-06  jrandom
        * Fix for a long standing synchronization bug in the SDK that in rare 
          instances can add a few seconds of lag.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-05  jrandom
        * Bugfixes and unit tests for the SAM bridge to handle quoted message
          parameters, verify proper operation after multiple session lifetimes,
          as well as some synchronization problems.
        * New properties method on the DataHelper class.
        * Address a race on fast disconnecting clients
    
    jrandom's avatar
    jrandom committed
    
    2004-11-02  jrandom
        * Fix for a long standing synchronization bug in the JobQueue (and added
          some kooky flags to make sure it stays dead)
        * Update the ministreaming lib to force mode=guaranteed if the default
          lib is used, and mode=best_effort for all other libs.
    
    jrandom's avatar
    jrandom committed
    
    2004-11-02  jrandom
        * Fixed up the configuration overrides for the streaming socket lib 
          integration so that it properly honors env settings.
        * More memory usage streamlining (last major revamp for now, i promise)
    
    jrandom's avatar
    jrandom committed
    
    2004-11-01  jrandom
        * Increase the tunnel test timeout rapidly if our tunnels are failing.
        * Honor message expirations for some tunnel jobs that were prematurely
          expired.
        * Streamline memory usage with temporary object caches and more efficient
          serialization for SHA256 calculation, logging, and both I2CP and I2NP
          message handling.
        * Fix some situations where we forward messages too eagerly.  For a 
          request at the tunnel endpoint, if the tunnel is inbound and the target 
          is remote, honor the message by tunnel routing the data rather than
          sending it directly to the requested location.
    
    jrandom's avatar
    jrandom committed
    
    2004-10-30  jrandom
        * Cache the temporary objects used in the AES encryption/decryption
          process so that AES doesn't require any memory allocation to process
          data.
        * Dramatically reduce memory usage within various crypto implementations
          by avoiding unnecessary (though simplifying) buffers.
        * If we specify some tags to be sent in an I2CP message explicitly, use
          only those, not those plus a new set (otherwise we aren't sure on ACK
          which set was delivered)
        * Allow configuration for the partial send timeout (how long before 
          resending a message down a different tunnel in a lease).  This can be
          updated with the "router.clientPartialSendTimeout" router config prop.
        * Logging
    
    jrandom's avatar
    jrandom committed
    
    2004-10-29  jrandom
        * Strip the Referer, Via, and From headers completely, rather than 
          inserting a bogus value ("i2p").  This should help with the use of
          SnipSnap and Geeklog (thanks nickster and DrWoo!)
    
    jrandom's avatar
    jrandom committed
    
    2004-10-27  jrandom
        * Fix a strange race condition on i2cp client disconnect.
        * win98 startup fixes (thanks tester-1 and ardvark!)
        * include build scripts for the new streaming lib (which is NOT ready
          for use yet, but you can hack around with it)
    
    jrandom's avatar
    jrandom committed
    
    2004-10-24  jrandom
        * Allow explicit inclusion of session tags in the SDK, enabling the
          resending of tags bundled with messages that would not otherwise
          be ACKed.
        * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
          no DeliveryStatusMessage will be bundled (and as such, client apps using
          it will need to do their own session tag ack/nack).
        * Handle client errors when notifying them of message availability.
        * New StreamSinkSend which sends a file to a destination and disconnects.
        * Update the I2PSocketManagerFactory to build the specific 
          I2PSocketManager instance based on the "i2p.streaming.manager" property,
          containing the class name of the I2PSocketManager to instantiate.
    
    jrandom's avatar
    jrandom committed
    
    2004-10-23  jrandom
        * Minor ministreaming lib refactoring to simplify integration of the full
          streaming lib.
        * Minor bugfixes to data structure serialization.
    
    jrandom's avatar
    jrandom committed
    
    * 2004-10-18  0.4.1.3 released
    
    2004-10-18  jrandom
        * Allow sending messages with a section of a byte array.
        * Reduced stats published.
    
    jrandom's avatar
    jrandom committed
    
    2004-10-17  jrandom
        * Don't b0rk on whitespace in the router address.
    
    jrandom's avatar
    jrandom committed
    
    2004-10-16  jrandom
    
        * More aggressively reduce the capacity of peers if their tunnels are
          failing so that we move off them quicker.
    
    jrandom's avatar
    jrandom committed
        * Simplify some data structure serialization for reuse in the streaming
          lib, as well as add support for signing and verifying partial byte 
          arrays.
        * Logging updates
    
    jrandom's avatar
    jrandom committed
    
    2004-10-16  jrandom
        * Increased the default minimum tunnel test time to 5 seconds, since we
          still see the occational message processing time spike to 2 seconds.
        * Update the SimpleTimer to allow rescheduling a task thats already 
          queued (useful for the new streaming lib).
    
    jrandom's avatar
    jrandom committed
    
    2004-10-15  jrandom
        * Replaced old minimum tunnel test timeout of 1s with a configurable
          value (router.config property "router.tunnelTestMinimum", with the
          default of 2s).
    
    jrandom's avatar
    jrandom committed
    
    2004-10-14  jrandom
        * Tunnel rejection is no longer a sign of an overwhelmingly loaded
          peer, so don't use it as a key point of the IsFailing calculator.
          We still use it as a key point of the Capacity calculator, however.
    
    jrandom's avatar
    jrandom committed
    
    2004-10-14  jrandom
        * Allow for a configurable tunnel "growth factor", rather than trying
          to achieve a steady state.  This will let us grow gradually when
          the router is needed more, rather than blindly accepting the request
          or arbitrarily choking it at an averaged value.  Configure this with
          "router.tunnelGrowthFactor" in the router.config (default "1.5").
        * Adjust the tunnel test timeouts dynamically - rather than the old
          flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
          test time (the deviation factor can be adjusted by setting 
          "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
          find the 'good' tunnels.
        * Added some crazy debugging to try and track down an intermittent hang.
    
    jrandom's avatar
    jrandom committed
    
    2004-10-13  jrandom
        * Fix the probabalistic tunnel reject (we always accepted everything, 
          since the docs on java.util.Random.nextDouble() are wrong..)
        * Fixed a race on startup (thanks Quadn!)
    
    jrandom's avatar
    jrandom committed
    
    2004-10-12  jrandom
        * Disable the probabalistic drop by default (enable via the router config
          property "tcp.dropProbabalistically=true")
        * Disable the actual watchdog shutdown by default, but keep track of more 
          variables and log a lot more when it occurs (enable via the router 
          config property "watchdog.haltOnHang=true")
        * Implement some tunnel participation smoothing by refusing requests 
          probabalistically as our participating tunnel count exceeds the previous
          hour's, or when the 10 minute average tunnel test time exceeds the 60 
          minute average tunnel test time.  The probabilities in both cases are 
          oldAverage / #current, so if you're suddenly flooded with 200 tunnels
          and you had previously only participated in 50, you'll have a 25% chance
          of accepting a subsequent request.
    
    jrandom's avatar
    jrandom committed
    
    * 2004-10-10  0.4.1.2 released
    
    jrandom's avatar
    jrandom committed
    
    2004-10-10  cervantes
        * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
          the request.
    
    jrandom's avatar
    jrandom committed