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

Skip to content
Snippets Groups Projects
history.txt 333 KiB
Newer Older
jrandom's avatar
jrandom committed
                                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

2004-10-09  jrandom
    * Added a watchdog timer to do some baseline liveliness checking to help 
      debug some odd errors.
    * Added a pair of summary stats for bandwidth usage, allowing easy export
      with the other stats ("bw.sendBps" and "bw.receiveBps")
    * Trimmed another memory allocation on message reception.
jrandom's avatar
jrandom committed

2004-10-08  jrandom
    * Revamp the AESInputStream so it doesn't allocate any temporary objects 
      during its operation.
jrandom's avatar
jrandom committed

2004-10-08  jrandom
    * Don't kill the establisher threads during a soft restart.
    * Attempt to validate the peer's routerInfo earlier during handshaking.
    * Revamp the AESOutputStream so it doesn't allocate any temporary objects 
      during its operation.
jrandom's avatar
jrandom committed

2004-10-07  jrandom
    * Reimplement the I2NP reading with less temporary memory allocation.
      There is still significant GC churn, especially under load, but this
      should help.
    * Catch some oddball errors in the transport (message timeout while 
      establishing).
jrandom's avatar
jrandom committed

2004-10-07  jrandom
    * Expire queued messages even when the writer is blocked.
    * Reimplement most of the I2NP writing with less temporary memory 
      allocations (I2NP reading still gobbles memory).
jrandom's avatar
jrandom committed

2004-10-06  jrandom
    * Implement an active queue management scheme on the TCP transports,
      dropping messages probabalistically as the queue fills up.  The 
      estimated queue capacity is determined by the rate at which messages 
      have been sent to the peer (averaged at 1, 5, and 60m periods).  As 
      we exceed 1/2 of the estimated capacity, we drop messages throughout
      the queue probabalistically with regards to their size.  This is based
      on RFC 2309's RED, with the minimum threshold set to 1/2 the 
      estimated connection capacity.  We may want to consider using a send
      rate and queue size measured across all connections, to deal with our
      own local bandwidth saturation, but we'll try the per-con metrics first.
jrandom's avatar
jrandom committed

2004-10-06  jrandom
    * Enable explicit disabling of the systray entirely for windows machines
      with strange configurations: add -Dsystray.disable=true to the java 
      command line.  (thanks mihi!)
jrandom's avatar
jrandom committed

2004-10-05  jrandom
    * Allow peers on the same LAN to communicate with each other safely even
      when they cannot talk to each other through the external address.
jrandom's avatar
jrandom committed

2004-10-05  jrandom
    * Display how much time is left before the graceful shutdown is complete.
    * Debug some improperly failed messages on timeout or disconnection.
jrandom's avatar
jrandom committed

2004-10-05  jrandom
    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
      (thanks mule!)
    * Handle some more error conditions regarding abruptly closing sockets 
      (thanks Jonva!)
jrandom's avatar
jrandom committed

2004-10-04  jrandom
    * Update the shitlist to reject a peer for an exponentially increasing 
      period of time (with an upper bounds of an hour).  
    * Various minor stat and debugging fixes
jrandom's avatar
jrandom committed

2004-10-03  jrandom
    * Add a new stat logging component to optionally dump the raw stats to 
      disk as they are generated, rather than rely upon the summarized data.
      By default, this is off, but the router property "stat.logFilters" can
      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
      which will be written to the file "stats.log" (or whatever the property
      "stat.logFile" is set to).  This can also log profile related stats,
      such as "dbResponseTime" or "tunnelTestResponseTime".
jrandom's avatar
jrandom committed

2004-10-02  jrandom
    * Assure that we quickly fail messages bound for shitlisted peers.
    * Address a race on startup where the first peer contacted could hang the
      router (thanks Romster!)
    * Only whine about an intermittent inability to query the time server once
jrandom's avatar
jrandom committed

2004-10-02  jrandom
    * Command line utility to verify a peer's reachability - simply run
      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
      will print out whether that peer is reachable or not (using a simple
      verification handshake).
jrandom's avatar
jrandom committed

* 2004-10-01  0.4.1.1 released
jrandom's avatar
jrandom committed

2004-10-01  jrandom
    * Handle partial reseeds, caused by seeds going away before the download
      completes (thanks Sugadude!)
jrandom's avatar
jrandom committed

2004-10-01  jrandom
    * Explicitly refuse IPv6 addresses, since only some peers support 
      them and we want fully reachable peers.
jrandom's avatar
jrandom committed

2004-10-01  jrandom
    * Additional error handling for a variety of transport layer errors.

* 2004-09-30  0.4.1 released (not backwards compatible)
jrandom's avatar
jrandom committed

2004-09-30  jrandom
    * Bundle the configuration necessary to run an eepsite out of the box
      with Jetty - simply edit ./eepsite/docroot/index.html and give people
      the key listed on the I2PTunnel configuration page, and its up.
    * Router console cleanup, and some (off by default) tunnels - 
      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
      irc.baffled.i2p (port 7661)
jrandom's avatar
jrandom committed

2004-09-29  jrandom
    * Always wipe the Jetty work directory on startup, so that web updates
      are reflected immediately (Jetty does not honor the cache across
      multiple executions)
jrandom's avatar
jrandom committed

2004-09-27  jrandom
    * Limit the number of connection tags saved to 10,000.  This is a huge 
      limit, but consumes no more than 1MB of RAM.  For now, we drop them 
      randomly after reaching that size, forcing those dropped peers to use
      a full DH negotiation.
    * HTML cleanup in the console.

2004-09-26  jrandom
    * Complete rewrite of the TCP transport with IP autodetection and 
      low CPU overhead reconnections.  More concise connectivity errors
      are listed on the /oldconsole.jsp as well.  The IP autodetection works
      by listening to the first person who tells you what your IP address is
      when you have not defined one yourself and you have no other TCP 
      connections.
    * Update to the I2NP message format to add transparent verification at
      the I2NP level (beyond standard TCP verification).
    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
      implementation (rather than verifying with E(H(key)), we now verify with
      E(H(iv))).
    * The above changes are NOT BACKWARDS COMPATIBLE.
    * Removed all of the old unused PHTTP code.
    * Refactor various methods and clean up some javadoc.
jrandom's avatar
jrandom committed

2004-09-21  jrandom
    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
      but values stored in the later take precedence.  Both are queried on
      lookup.
jrandom's avatar
jrandom committed

2004-09-16  jrandom
    * Refactor the TCP transport to deal with changing identities gracefully,
      and to prevent some wasted effort by keeping track of what host+port
      combinations we are connected to (rather than just the identities).  Also
      catch a few configuration errors earlier.
    * Removed no longer relevent methods from the Transport API that were 
      exposing ideas that probably shouldn't be exposed.
    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
      updates)
jrandom's avatar
jrandom committed

2004-09-13  jrandom
    * Update for the SDK reconnection to deal with overflow.
    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the 
      rounding on lifetime bandwidth used [thanks gott!]).

* 2004-09-08  0.4.0.1 released

2004-09-08  jrandom
    * Updated the "Active:" peer count to display the # of connections as well
      as the number of recently active router identities.
    * Implement some basic updating code - on startup, if there is a file named 
      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
      then restart.
    * Added an ugly little script to allow launching the router on win9x 
      machines without a dos box (using javaw to run a .bat file).
    * Logging updates.
    * Updated VERSION constants to 0.4.0.1
hypercubus's avatar
hypercubus committed
2004-09-08  hypercubus
    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
      hopefully any other affected *nix systems) now properly discards non-
      essential directories after installation.
    * Support for Win9x in the installer and postinstall.bat.
    * Changed the name of the default installation directory on all platforms
      from "I2P" to "i2p" in the installer.
    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
      other configuration files.
hypercubus's avatar
hypercubus committed

2004-09-07  cervantes:
    * Proxy recursion disabled by default (strict)
    * Password Authentication for session commands
    * Support for http://path?i2paddresshelper=BASE64
    * Support for http://i2p/BASE64/path syntax
jrandom's avatar
jrandom committed

2004-09-07  jrandom
    * Make sure that peers placed in the 'fast' group are ones we both know
      how to reach and have been able to reach recently.  These peers may 
      still be placed in the 'high capacity' group however (though that group
      is only queried if the 'fast' group is too small)
    * Include some updates to the ProgileOrganizer's CLI.
jrandom's avatar
jrandom committed

2004-09-07  jrandom
    * Disable the timestamper by default for all applications except the router
      (enable via -Dtime.disabled=false)
    * Simplify the retrieval of the full destination with text based browsers.
    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
jrandom's avatar
jrandom committed

2004-09-07  jrandom
    * Write the native libraries to the current directory when they are loaded 
      from a resource, and load them from that file on subsequent runs (in 
      turn, we no longer *cough* delete the running libraries...)
    * Added support for a graceful restart.
    * Added new pseudo-shutdown hook specific to the router, allowing 
      applications to request tasks to be run when the router shuts down.  We
      use this for integration with the service manager, since otherwise a 
      graceful shutdown would cause a timeout, followed by a forced hard 
      shutdown.
    * Made the capacity calculator a bit more dynamic by not outright ignoring
      the otherwise valid capacity data for a period with a single rejected
      tunnel (except for the 10 minute period).  In addition, peers with an
      equal capacity are ordered by speed rather than by their hashes.
    * Cleaned up the SimpleTimer, addressing some threading and synchronization
      issues.
    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
      associated session (unless there are other clients using it), and deal
      with a closed session when starting a new I2PTunnel instance.
    * Refactoring and logging.
jrandom's avatar
jrandom committed

2004-09-06  jrandom
    * Address a race condition in the key management code that would manifest
      itself as a corrupt router identity.
    * Properly clear old transport addresses from being displayed on the old
      console after soft restarts.
    * Properly refuse to load the client applications more than once in the 
      same JVM.
    * Added support for a graceful restart (a graceful shutdown followed by a
      full JVM restart - useful for restarting client apps).
    * More defensive programming, HTML cleanup, logging
    * wrapper.config cleanup of duplicate lines
jrandom's avatar
jrandom committed

2004-09-04  jrandom
    * Added some basic guards to prevent multiple instances from running.
      Specifically, a file "router.ping" in the install directory which is
      written to once a minute - if that file exists and has been modified
      within the last minute, refuse to start up.  In turn, adjust the 
      service wrapper to wait a minute before restarting a crashed JVM.
    * Create a "work" directory in the I2P install dir which Jetty will
      use for all of its temporary files.
    * Tell the browser not to cache most of the router console's pages.
jrandom's avatar
jrandom committed

2004-09-04  jrandom
    * Update the SDK to automatically reconnect indefinitely with an 
      exponential delay on retries (capped at 5 minutes).
jrandom's avatar
jrandom committed

* 2004-09-03  0.4 released

2004-09-03  jrandom
    * Updated default wrapper.config to deal with the hard restart option
    * Include the history.txt in the /help.jsp page
    * HTML updates (wrapper.log, and no more unix scripts)
    * Updated VERSION constants to 0.4
hypercubus's avatar
hypercubus committed

2004-09-03  hypercubus
    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
    * Temporarily removed install_i2p_service_unix and
      uninstall_i2p_service_unix from distribution packages.
    * postinstall.bat/postinstall.sh cleans installation directory of all files
      not applicable to the host OS.
jrandom's avatar
jrandom committed

2004-09-03  oOo
    * Added some filters to the HTTP request, replacing the User-Agent,
      Referrer, Via, and From headers, which helps until we have a more 
      comprehensive filtering system.