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

Skip to content
Snippets Groups Projects
history.txt 206 KiB
Newer Older
jrandom's avatar
jrandom committed
2005-08-03  jrandom
    * Backed out an inadvertant change to the netDb store redundancy factor.
    * Verify tunnel participant caching.
    * Logging cleanup
duck's avatar
duck committed

2005-08-01  duck
    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
duck's avatar
duck committed

2005-08-01  duck
    * Fix an addressbook NPE when a new hostname from the master addressbook
      didn't exist in the router addressbook.
    * Fix an addressbook bug which caused subscriptions not to be parsed at
      all. (Oops!)
jrandom's avatar
jrandom committed

2005-07-31  jrandom
    * Adjust the netDb search and store per peer timeouts to match the average
      measured per peer success times, rather than huge fixed values.
    * Optimized and reverified the netDb peer selection / retrieval process 
      within the kbuckets.
    * Drop TCP connections that don't have any useful activity in 10 minutes.
    * If i2np.udp.fixedPort=true, never change the externally published port,
      even if we are autodetecting the IP address.
jrandom's avatar
jrandom committed

* 2005-07-27  0.6 released

2005-07-27  jrandom
    * Enabled SSU as the default top priority transport, adjusting the 
      config.jsp page accordingly.
    * Add verification fields to the SSU and TCP connection negotiation (not
      compatible with previous builds)
    * Enable the backwards incompatible tunnel crypto change as documented in
      tunnel-alt.html (have each hop encrypt the received IV before using it,
      then encrypt it again before sending it on)
    * Disable the I2CP encryption, leaving in place the end to end garlic 
      encryption (another backwards incompatible change)
    * Adjust the protocol versions on the TCP and SSU transports so that they
      won't talk to older routers.
    * Fix up the config stats handling again
    * Fix a rare off-by-one in the SSU fragmentation
    * Reduce some unnecessary netDb resending by inluding the peers queried
      successfully in the store redundancy count.
jrandom's avatar
jrandom committed

2005-07-22  jrandom
    * Use the small thread pool for I2PTunnelHTTPServer (already used for 
      I2PTunnelServer)
    * Minor memory churn reduction in I2CP
    * Small stats update
jrandom's avatar
jrandom committed

2005-07-21  jrandom
    * Fix in the SDK for a bug which would manifest itself as misrouted
      streaming packets when a destination has many concurrent streaming
      connections (thanks duck!)
    * No more "Graceful shutdown in -18140121441141s"
jrandom's avatar
jrandom committed

2005-07-20  jrandom
    * Allow the user to specify an external port # for SSU even if the external
      host isn't specified (thanks duck!)
jrandom's avatar
jrandom committed

2005-07-19  jrandom
    * Further preparation for removing I2CP crypto
    * Added some validation to the DH key agreement (thanks $anon)
    * Validate tunnel data message expirations (though not really a problem, 
      since tunnels expire)
    * Minor PRNG threading cleanup
cervantes's avatar
cervantes committed

2005-07-15  cervantes
jrandom's avatar
jrandom committed
    * Added workaround for an odd win32 bug in the stats configuration console
      page which meant only the first checkbox selection was saved.
cervantes's avatar
cervantes committed

2005-07-15  Romster
jrandom's avatar
jrandom committed
    * Added per group selection toggles in the stats configuration console 
      page.
jrandom's avatar
jrandom committed

2005-07-13  jrandom
    * Fixed a recently injected bug in the multitransport bidding which had 
      allowed an essentially arbitrary choice of transports, rather than the
      properly ordered choice.
jrandom's avatar
jrandom committed

2005-07-13  jrandom
    * Fixed a long standing bug where we weren't properly comparing session 
      tags but instead largely depending upon comparing their hashCode, 
      causing intermittent decryption errors.
jrandom's avatar
jrandom committed

2005-07-12  jrandom
jrandom's avatar
jrandom committed
    * Add some data duplication to avoid a recently injected concurrency 
      problem in the session tag manager (thanks redzara and romster).
jrandom's avatar
jrandom committed

jrandom's avatar
jrandom committed
2005-07-11  jrandom
    * Reduced the growth factor on the slow start and congestion avoidance for
      the streaming lib.
    * Adjusted some of the I2PTunnelServer threading to use a small pool of
      handlers, rather than launching off new threads which then immediately
      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
    * Don't persist session keys / session tags (not worth it, for now)
    * Added some detection and handling code for duplicate session tags being
      delivered (root cause still not addressed)
    * Make the PRNG's buffer size configurable (via the config property
      "i2p.prng.totalBufferSizeKB=4096")
    * Disable SSU flooding by default (duh)
    * Updates to the StreamSink apps for better throttling tests.

2005-07-05  jrandom
jrandom's avatar
jrandom committed
    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated 
      buffer, rather than the underlying PRNG's (likely small) one, which in
      turn reduces the frequency of recalcing.
    * More tuning to reduce temporary allocation churn
jrandom's avatar
jrandom committed

2005-07-04  jrandom
    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups, 
      rather than the IV by itself, preventing an attack that would let 
      colluding internal adversaries tag a message to determine that they are
      in the same tunnel.  Thanks dvorak for the catch!
    * Drop long inactive profiles on startup and shutdown
    * /configstats.jsp: web interface to pick what stats to log
    * Deliver more session tags to account for wider window sizes
    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
    * UrlLauncher: adjust the browser selection order
    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
    * StreamSinkClient: add support for sending an unlimited amount of data
    * Migrate the tests out of the default build jars

2005-06-22  Comwiz
    * Migrate the core tests to junit
duck's avatar
duck committed

2005-05-25  duck
    * Fixed PRNG bug (bugzilla #107)
jrandom's avatar
jrandom committed

2005-05-01  jrandom
    * Added a substantial optimization to the AES engine by caching the
      prepared session keys (duh).
jrandom's avatar
jrandom committed

2005-05-01  jrandom
    * Cleaned up the peers page a bit more.
jrandom's avatar
jrandom committed

2005-04-30  jrandom
    * Added a small new page to the web console (/peers.jsp) which contains 
      the peer connection information.  This will be cleaned up a lot more 
      before 0.6 is out, but its a start.
jrandom's avatar
jrandom committed

2005-04-30  jrandom
    * Reduced some SimpleTimer churn
jrandom's avatar
jrandom committed

2005-04-29  jrandom
    * Reduce the peer profile stat coallesce overhead by inlining it with the 
      reorganize.
    * Limit each transport to at most one address (any transport that requires
      multiple entry points can include those alternatives in the address).
jrandom's avatar
jrandom committed

2005-04-28  jrandom
    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
    * Add back the code to handle bids from multiple transports (though there
      is still only one transport enabled by default)
    * Adjust the router's queueing of outbound client messages when under 
      heavy load by running the preparatory job in the client's I2CP handler
      thread, thereby blocking additional outbound messages when the router is
      hosed.
    * No need to validate or persist a netDb entry if we already have it
smeghead's avatar
smeghead committed

2005-04-25  smeghead
    * Added button to router console for manual update checks.
    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
      every time the form was submitted even if it hadn't changed.
jrandom's avatar
jrandom committed

2005-04-24  jrandom
    * Added a pool of PRNGs using a different synchronization technique, 
      hopefully sufficient to work around IBM's PRNG bugs until we get our
      own Fortuna.
    * In the streaming lib, don't jack up the RTT on NACK, and have the window
      size bound the not-yet-ready messages to the peer, not the unacked 
      message count (not sure yet whether this is worthwile).
    * Many additions to the messageHistory log.
    * Handle out of order tunnel fragment delivery (not an issue on the live 
      net with TCP, but critical with UDP).
jrandom's avatar
jrandom committed

* 2005-04-20  0.5.0.7 released
jrandom's avatar
jrandom committed

2005-04-20  jrandom
    * In the SDK, we don't actually need to block when we're sending a message
      as BestEffort (and these days, we're always sending BestEffort).
    * Pass out client messages in fewer (larger) steps.
    * Have the InNetMessagePool short circuit dispatch requests.
    * Have the message validator take into account expiration to cut down on
      false positives at high transfer rates.
    * Allow configuration of the probabalistic window size growth rate in the 
      streaming lib's slow start and congestion avoidance phases, and default 
      them to a more conservative value (2), rather than the previous value 
      (1).
    * Reduce the ack delay in the streaming lib to 500ms
    * Honor choke requests in the streaming lib (only affects those getting
      insanely high transfer rates)
    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
      I2PTunnel client page (thanks maestro^!)
jrandom's avatar
jrandom committed

2005-04-17  sirup
    * Added the possibility for i2ptunnel client and httpclient instances to 
      have their own i2p session (and hence, destination and tunnels).  By 
      default, tunnels are shared, but that can be changed on the web 
      interface or with the sharedClient config option in i2ptunnel.config.

2005-04-17  jrandom
    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
      this?  If not, I want to drop it (lots of tiny details with lots of 
      duplicated semantics).
jrandom's avatar
jrandom committed

2005-04-17  zzz
    * Added new user-editable eepproxy error page templates.

2005-04-17  jrandom
    * Revamp the tunnel building throttles, fixing a situation where the 
      rebuild may not recover, and defaulting it to unthrottled (users with
      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
      advanced router config)
jrandom's avatar
jrandom committed

2005-04-16  jrandom
    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
jrandom's avatar
jrandom committed

2005-04-12  jrandom
    * Make sure we don't get cached updates (thanks smeghead!)
    * Clear out the callback for the TestJob after it passes (only affects the
      job timing accounting)
smeghead's avatar
smeghead committed

2005-04-08  smeghead
    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
smeghead's avatar
smeghead committed

2005-04-08  smeghead
    * Security improvements to TrustedUpdate: signing and verification of the
      version string along with the data payload for signed update files
      (consequently the positions of the DSA signature and version string fields
      have been swapped in the spec for the update file's header); router will
      no longer perform a trusted update if the signed update's version is lower
      than or equal to the currently running router's version.
    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
    * Extended TrustedUpdate public API for use by third party applications.
jrandom's avatar
jrandom committed

* 2005-04-06  0.5.0.6 released
jrandom's avatar
jrandom committed

2005-04-05  jrandom
    * Retry I2PTunnel startup if we are unable to build a socketManager for a
      client or httpclient tunnel.
    * Add some basic sanity checking on the I2CP settings (thanks duck!)
jrandom's avatar
jrandom committed

2005-04-05  jrandom
    * After a successfull netDb search for a leaseSet, republish it to all of 
      the peers we have tried so far who did not give us the key (up to 10),
      rather than the old K closest (which may include peers who had given us
      the key)
    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than 
      republish it every 5 minutes, republish it every 3.  In addition, always
      republish as soon as the leaseSet changes (duh^2).
    * Minor fix for oddball startup race (thanks travis_bickle!)
    * Minor AES update to allow in-place decryption.
jrandom's avatar
jrandom committed

2005-04-03  jrandom
    * EepGet fix for open-ended HTTP fetches (such as the news.xml 
      feeding the NewsFetcher)
jrandom's avatar
jrandom committed

2005-04-01  jrandom
    * Allow editing I2PTunnel server instances with five digit ports 
      (thanks nickless_head!)
    * More NewsFetcher debugging for reported weirdness
jrandom's avatar
jrandom committed

2005-04-01  jrandom
    * Fix to check for missing news file (thanks smeghead!)
    * Added destination display CLI:
      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
    * Added destination display to the web interface (thanks pnspns)
    * Installed CIA backdoor
jrandom's avatar
jrandom committed

* 2005-03-29  0.5.0.5 released

2005-03-29  jrandom
    * Decreased the initial RTT estimate to 10s to allow more retries.
    * Increased the default netDb store replication factor from 2 to 6 to take
      into consideration tunnel failures.
    * Address some statistical anonymity attacks against the netDb that could 
      be mounted by an active internal adversary by only answering lookups for 
      leaseSets we received through an unsolicited store.
    * Don't throttle lookup responses (we throttle enough elsewhere)
    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
      the file (thanks nickster!)
    * Updated the I2PTunnel HTML (thanks postman!)
    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
      which, if matched against the router.config "i2ptunnel.passphrase" value,
      skips the nonce check.  If the config prop doesn't exist or is blank, no
      passphrase is accepted.
    * Implemented HMAC-SHA256.
    * Enable the tunnel batching with a 500ms delay by default
    * Dropped compatability with 0.5.0.3 and earlier releases
jrandom's avatar
jrandom committed

2005-03-26  jrandom
    * Added some error handling and fairly safe to cache data to the streaming
      lib (good call Tom!)
jrandom's avatar
jrandom committed

2005-03-25  jrandom
    * Fixed up building dependencies for the routerconsole on some more 
      aggressive compilers (thanks polecat!)
jrandom's avatar
jrandom committed

* 2005-03-24  0.5.0.4 released
jrandom's avatar
jrandom committed

2005-03-23  jrandom
    * Added more intelligent version checking in news.xml, in case we have a 
      version newer than the one specified.
jrandom's avatar
jrandom committed

2005-03-23  jrandom
    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
      cvsweb.cgi doesn't puke on us.
connelly's avatar
connelly committed

2005-03-23  Connelly
    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
      stream send data to not be sent if STREAM CLOSE is issued too fast.
jrandom's avatar
jrandom committed

2005-03-23  jrandom
    * Implemented the news fetch / update policy code, as configurated on
      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
      doesn't exist yet, on startup).  No action is taken however, though if
      the news.xml specifies that a new release is available, an option to
      update will be shown on the router console.
    * New initialNews.xml delivered with new installs, and moved news.xml out
      of the i2pwww module and into the i2p module so that we can bundle it 
      within each update.
jrandom's avatar
jrandom committed

2005-03-23  jrandom
    * New /configupdate.jsp page for controlling the update / notification 
      process, as well as various minor related updates.  Note that not all
      options are exposed yet, and the update detection code isn't in place
      in this commit - it currently says there is always an update available.
    * New EepGet component for reliable downloading, with a CLI exposed in
      java -cp lib/i2p.jar net.i2p.util.EepGet url
    * Added a default signing key to the TrustedUpdate component to be used
      for verifying updates.  This signing key can be authenticated via
      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
    * New public domain SHA1 implementation for the DSA code so that we can
      handle signing streams of arbitrary size without excess memory usage
      (thanks P.Verdy!)
    * Added some helpers to the TrustedUpdate to work off streams and to offer
      a minimal CLI: 
          TrustedUpdate keygen pubKeyFile privKeyFile
          TrustedUpdate sign origFile signedFile privKeyFile
          TrustedUpdate verify signedFile

2005-03-22  smeghead
    * New TrustedUpdate component for signing/verifying files with a DSA 
      signature.
jrandom's avatar
jrandom committed

2005-03-21  jrandom
    * Fixed the tunnel fragmentation handler to deal with multiple fragments 
      in a single message properly (rather than release the buffer into the 
      cache after processing the first one) (duh!)
    * Added the batching preprocessor which will bundle together multiple 
      small messages inside a single tunnel message by delaying their delivery 
      up to .5s, or whenever the pending data will fill a full message, 
      whichever comes first.  This is disabled at the moment, since without the
      above bugfix widely deployed, lots and lots of messages would fail.
    * Within each tunnel pool, stick with a randomly selected peer for up to
      .5s before randomizing and selecting again, instead of randomizing the
      pool each time a tunnel is needed.  
jrandom's avatar
jrandom committed

* 2005-03-18  0.5.0.3 released

2005-03-18  jrandom
    * Minor tweak to the timestamper to help reduce small skews
    * Adjust the stats published to include only the relevent ones
    * Only show the currently used speed calculation on the profile page
    * Allow the full max # resends to be sent, rather than piggybacking the
      RESET packet along side the final resend (duh)
    * Add irc.postman.i2p to the default list of IRC servers for new installs
    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining 
      backwards compatability for users running 0.5.0.2.
jrandom's avatar
jrandom committed

2005-03-18  jrandom
    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
jrandom's avatar
jrandom committed

2005-03-17  jrandom
    * Update the old speed calculator and associated profile data points to 
      use a non-tiered moving average of the tunnel test time, avoiding the 
      freshness issues of the old tiered speed stats. 
    * Explicitly synchronize all of the methods on the PRNG, rather than just
      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