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

Skip to content
Snippets Groups Projects
history.txt 163 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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.
    
    2004-09-03  jrandom
        * Disabled the old listener on port 7655.
    
    jrandom's avatar
    jrandom committed
    
    2004-09-02  jrandom
        * Cleaned up the base build.xml, adding a new target ("updater") which 
          builds the file i2pupdate.tar.bz2 which can be safely extracted over 
          existing installs.
    
    
    2004-xx-xx  jrandom
        * Implemented the new web architecture and router console
        * Implemented I2PTunnel web interface, and revamped startup process.
        * Revamped peer selection code to address skew.
        * Removed all temporary threads from the router and the SDK.
        * Bugfix dealing with timeouts and resends.
        * Integrated Iakin's jcpuid library and jbigi update, with modifications.
    
    2004-xx-xx  hypercubus
        * Implemented the new installation process.
        * Integrated systray 
        * Integrated service manager
    
    2004-xx-xx  oOo
        * Implemented ?i2paddresshelper= hook 
        * Many small bugfixes to the web interface, router, i2ptunnel, and core.
    
    2004-xx-xx  Nightblade
        * libSAM updates.
    
    2004-xx-xx  cervantes
        * Imported i2pProxy.pac proxy script in with the build.
    
    * 2004-08-20  0.3.4.3 released
    * 2004-08-12  0.3.4.2 released
    * 2004-08-08  0.3.4.1 released
    * 2004-07-29  0.3.4 released
    * 2004-07-23  0.3.3 released
    * 2004-07-16  0.3.2.3 released
    * 2004-07-14  0.3.2.2 released
    * 2004-07-11  0.3.2.1 released
    * 2004-07-07  0.3.2 released
    * 2004-06-25  0.3.1.5 released
    * 2004-05-23  0.3.1.4 released
    * 2004-05-20  0.3.1.3 released
    * 2004-05-13  0.3.1.2 released
    * 2004-05-07  0.3.1.1 released
    * 2004-04-30  0.3.1 released
    * 2004-04-20  0.3.0.4 released
    * 2004-04-04  0.3.0.3 released
    * 2004-03-30  0.3.0.2 released
    * 2004-03-25  0.3.0.1 released
    * 2004-03-21  0.3.0 released
    * 2004-03-10  0.2.5.4 released
    * 2004-03-04  0.2.5.3 released
    * 2004-02-28  0.2.5.2 released
    * 2004-02-27  0.2.5.1 released
    * 2004-02-25  0.2.5 released
    * 2004-02-19  0.2.4.2 released
    * 2004-02-15  0.2.4.1 released
    * 2004-02-14  0.2.4 released
    * 2004-01-27  0.2.3.6 released
    * 2004-01-21  0.2.3.5 released
    * 2004-01-14  0.2.3.4 released
    * 2003-12-29  0.2.3.3 released
    * 2003-12-27  0.2.3.2 released
    * 2003-12-25  0.2.3.1 released
    * 2003-12-13  0.2.3 released
    * 2003-12-01  0.2.2 released
    * 2003-11-18  0.2.1.1 released
    * 2003-11-12  0.2.1 released
    * 2003-11-09  0.2.0.3 released
    * 2003-11-08  0.2.0.2 released
    * 2003-11-03  0.2.0.1 released
    * 2003-11-01  0.2 released