source: history.txt @ d6c3ffd

Last change on this file since d6c3ffd was d6c3ffd, checked in by zzz <zzz@…>, 15 years ago

2005-09-17 jrandom

  • Added the natively compiled jbigi and patched java service wrapper for OS X. Thanks Bill Dorsey for letting me use your machine!
  • Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we don't bundle the binutils necessary (and there'd be a naming conflict if we did).
  • Added 'single user' functionality to syndie - if the single user checkbox on the admin page is checked, all users are allowed to control the instance and sync up with remote syndie nodes.
  • Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely debugged.
  • Property mode set to 100644
File size: 90.9 KB
1$Id: history.txt,v 1.253 2005/09/16 16:24:43 jrandom Exp $
32005-09-17  jrandom
4    * Added the natively compiled jbigi and patched java service wrapper for
5      OS X.  Thanks Bill Dorsey for letting me use your machine!
6    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
7      don't bundle the binutils necessary (and there'd be a naming conflict
8      if we did).
9    * Added 'single user' functionality to syndie - if the single user
10      checkbox on the admin page is checked, all users are allowed to control
11      the instance and sync up with remote syndie nodes.
12    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
13      debugged.
152005-09-16  jrandom
16    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
17      you have i2np.udp.allowLocal=true defined - useful for private nets)
192005-09-16  jrandom
20    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
21      (just specify the spoofed host as an empty string), allowing them to
22      honor x-i2p-gzip encoding.
23    * Let windows users build the exes too (thanks bar and redzara!)
24    * Allow I2PTunnel httpserver operators to disable gzip compression on
25      individual tunnels with the i2ptunnel.gzip=false client option
26      (good idea susi!)
282005-09-16  jrandom
29    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
30    * Added for *nix/osx users having problems using the java
31      service wrapper (called from the install dir as: sh
32    * Bundle susidns and syndie, with links on the top nav
33    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
34      content-encoding (if offered), reducing the payload size before it
35      reaches the streaming lib.  The existing compression is at the i2cp
36      level, so we've been packetizing 4KB of uncompressed data and then
37      compressing those messages, rather than compressing and then packetizing
38      4KB of compressed data.  This should reduce the number of round trips
39      to fetch web pages substantially.
40    * Adjust the startup and timing of the addressbook so that susidns always
41      has config to work off, and expose a method for susidns to tell it to
42      reload its config and rerun.
442005-09-15  jrandom
45    * Error handling for failed intro packets (thanks red.hand!)
46    * More carefully verify intro addresses
482005-09-13  jrandom
49    * More careful error handling with introductions (thanks dust!)
50    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
51    * Hide the shitlist on the summary so it doesn't confuse new users.
532005-09-12  comwiz
54    * Migrated the router tests to junit
562005-09-12  jrandom
57    * Removed guaranteed delivery mode entirely (so existing i2phex clients
58      using it can get the benefits of mode=best_effort).  Guaranteed delivery
59      is offered at the streaming lib level.
60    * Improve the peer selection code for peer testing, as everyone now
61      supports tests.
62    * Give the watchdog its fangs - if it detects obscene job lag or if
63      clients have been unable to get a leaseSet for more than 5 minutes,
64      restart the router.  This was disabled a year ago due to spurious
65      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
66      cause of the spurious restarts should be gone.
682005-09-12  jrandom
69    * Bugfix for skewed store which could kill a UDP thread (causing complete
70      comm failure and eventual OOM)
722005-09-12  jrandom
73    * More aggressively publish updated routerInfo.
74    * Expose the flag to force SSU introductions on the router console
75    * Don't give people the option to disable SNTP time sync, at least not
76      through the router console, because there is no reason to disable it.
77      No, not even if your OS is "ntp synced", because chances are, its not.
792005-09-10  jrandom
80    * Test the router's reachability earlier and more aggressively
81    * Use the low level bandwidth limiter's rates for the router console, and
82      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
83      the logger config, keep track of the 1 second transfer rates as the stat
84      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
85      behavior.
872005-09-09  jrandom
88    * Added preliminary support for NAT hole punching through SSU introducers
89    * Honor peer test results from peers that we have an SSU session with if
90      those sessions are idle for 3 minutes or more.
922005-09-09  cervantes
93    * New build due to change in build number :P (thanks ugha!)
952005-09-07  BarkerJr
96    * HTML cleanup for the router console (thanks!)
982005-09-07  jrandom
99    * Lay the foundation for 'client routers' - the ability for peers to opt
100      out of participating in tunnels entirely due to firewall/NAT issues. 
101      Individual routers have control over where those peers are used in
102      tunnels - in outbound or inbound, exploratory or client tunnels, or
103      none at all.  The defaults with this build are to simply act as before -
104      placing everyone as potential participants in any tunnel.
105    * Another part of the foundation includes the option for netDb
106      participants to refuse to answer queries regarding peers who are marked
107      as unreachable, though this too is disabled by default (meaning the
108      routerInfo is retrievable from the netDb).
1102005-09-05  jrandom
111    * Expose the HTTP headers to EepGet status listeners
112    * Handle DSA key failures properly (if the signature is not invertable, it
113      is obviously invalid)
1152005-09-04  jrandom
116    * Don't persist peer profiles until we are shutting down, as the
117      persistence process gobbles RAM and wall time.
118    * Bugfix to allow you to check/uncheck the sharedClient setting on the
119      I2PTunnel web interface (thanks BarkerJr!)
120    * Be more careful when expiring a failed tunnel message fragment so we
121      don't drop the data while attempting to read it.
123* 2005-09-02 released
1252005-09-02  jrandom
126    * Don't refuse to send a netDb store if the targetted peer has failed a
127      bit (the value was an arbitrary amount).
128    * Logging changes
130* 2005-09-01 released
1322005-09-01  jrandom
133    * Don't send out a netDb store of a router if it is more than a few hours
134      old, even if someone asked us for it.
1362005-08-31  jrandom
137    * Don't publish leaseSets to the netDb if they will never be looked for -
138      namely, if they are for destinations that only establish outbound
139      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
140      modified to tell the router that it doesn't need to publish their
141      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
142      to 'true').
143    * Don't publish the top 10 peer rankings of each router in the netdb, as
144      it isn't being watched right now.
1462005-08-29  jrandom
147    * Added the new test Floodfill netDb
1492005-08-27  jrandom
150    * Minor logging and optimization tweaks in the router and SDK
151    * Use ISO-8859-1 in the XML files (thanks redzara!)
152    * The consolePassword config property can now be used to bypass the router
153      console's nonce checking, allowing CLI restarts
1552005-08-24  jrandom
156    * Catch errors with corrupt tunnel messages more gracefully (no need to
157      kill the thread and cause an OOM...)
158    * Don't skip shitlisted peers for netDb store messages, as they aren't
159      necessarily shitlisted by other people (though they probably are).
160    * Adjust the netDb store per-peer timeout based on each particular peer's
161      profile (timeout = 4x their average netDb store response time)   
162    * Don't republish leaseSets to *failed* peers - send them to peers who
163      replied but just didn't know the value.
164    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
165      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
166      sent entirely within the first streaming packet anyway, so this won't be
167      a problem.
168    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
169      prevent any clients from accessing the server if the handlers get
170      blocked by the streaming lib or other issues.
171    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
172      Unknown.
1742005-08-23  jrandom
175    * Removed the concept of "no bandwidth limit" - if none is specified, its
176      16KBps in/out.
177    * Include ack packets in the per-peer cwin throttle (they were part of the
178      bandwidth limit though).
179    * Tweak the SSU cwin operation to get more accurrate estimates under
180      congestions.
181    * SSU improvements to resend more efficiently.
182    * Added a basic scheduler to eepget to fetch multiple files sequentially.
184* 2005-08-21 released
1862005-08-21  jrandom
187    * If we already have an established SSU session with the Charlie helping
188      test us, cancel the test with the status of "unknown".
1902005-08-17  jrandom
191    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
192      viability before agreeing to Alice's request.  This doesn't work with
193      older SSU peer test builds, but is backwards compatible (older nodes
194      won't ask newer nodes to participate in tests, and newer nodes won't
195      ask older nodes to either).
1972005-08-12  jrandom
198    * Keep detailed stats on the peer testing, publishing the results in the
199      netDb.
200    * Don't overwrite the status with 'unknown' unless we haven't had a valid
201      status in a while.
202    * Make sure to avoid shitlisted peers for peer testing.
203    * When we get an unknown result to a peer test, try again soon afterwards.
204    * When a peer tells us that our address is different from what we expect,
205      if we've done a recent peer test with a result of OK, fire off a peer
206      test to make sure our IP/port is still valid.  If our test is old or the
207      result was not OK, accept their suggestion, but queue up a peer test for
208      later.
209    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
210      we monitor netDb store progress (to clear up the high netDb.storePeers
211      stat)
2132005-08-10  jrandom
214    * Deployed the peer testing implementation to be run every few minutes on
215      each router, as well as any time the user requests a test manually.  The
216      tests do not reconfigure the ports at the moment, merely determine under
217      what conditions the local router is reachable.  The status shown in the
218      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
219      differently for different peers, "ERR-Reject" if the router cannot
220      receive unsolicited packets or the peer helping test could not find a 
221      collaborator, "Unknown" if the test has not been run or the test
222      participants were unreachable, or "OK" if the router can receive
223      unsolicited connections and those connections use the same IP and port.
225* 2005-08-08 released
2272005-08-08  jrandom
228    * Add a configurable throttle to the number of concurrent outbound SSU
229      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
230      may help those with slow connections to get integrated at the start.
231    * Further fixlets to the streaming lib
2332005-08-07  Complication
234    * Display the average clock skew for both SSU and TCP connections
2362005-08-07  jrandom
237    * Fixed the long standing streaming lib bug where we could lose the first
238      packet on retransmission.
239    * Avoid an NPE when a message expires on the SSU queue.
240    * Adjust the streaming lib's window growth factor with an additional
241      Vegas-esque congestion detection algorithm.
242    * Removed an unnecessary SSU session drop
243    * Reduced the MTU (until we get a working PMTU lib)
244    * Deferr tunnel acceptance until we know how to reach the next hop,
245      rejecting it if we can't find them in time.
246    * If our netDb store of our leaseSet fails, give it a few seconds before
247      republishing.
249* 2005-08-03 released
2512005-08-03  jrandom
252    * Backed out an inadvertant change to the netDb store redundancy factor.
253    * Verify tunnel participant caching.
254    * Logging cleanup
2562005-08-01  duck
257    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
2592005-08-01  duck
260    * Fix an addressbook NPE when a new hostname from the master addressbook
261      didn't exist in the router addressbook.
262    * Fix an addressbook bug which caused subscriptions not to be parsed at
263      all. (Oops!)
2652005-07-31  jrandom
266    * Adjust the netDb search and store per peer timeouts to match the average
267      measured per peer success times, rather than huge fixed values.
268    * Optimized and reverified the netDb peer selection / retrieval process
269      within the kbuckets.
270    * Drop TCP connections that don't have any useful activity in 10 minutes.
271    * If i2np.udp.fixedPort=true, never change the externally published port,
272      even if we are autodetecting the IP address.
274* 2005-07-27  0.6 released
2762005-07-27  jrandom
277    * Enabled SSU as the default top priority transport, adjusting the
278      config.jsp page accordingly.
279    * Add verification fields to the SSU and TCP connection negotiation (not
280      compatible with previous builds)
281    * Enable the backwards incompatible tunnel crypto change as documented in
282      tunnel-alt.html (have each hop encrypt the received IV before using it,
283      then encrypt it again before sending it on)
284    * Disable the I2CP encryption, leaving in place the end to end garlic
285      encryption (another backwards incompatible change)
286    * Adjust the protocol versions on the TCP and SSU transports so that they
287      won't talk to older routers.
288    * Fix up the config stats handling again
289    * Fix a rare off-by-one in the SSU fragmentation
290    * Reduce some unnecessary netDb resending by inluding the peers queried
291      successfully in the store redundancy count.
2932005-07-22  jrandom
294    * Use the small thread pool for I2PTunnelHTTPServer (already used for
295      I2PTunnelServer)
296    * Minor memory churn reduction in I2CP
297    * Small stats update
2992005-07-21  jrandom
300    * Fix in the SDK for a bug which would manifest itself as misrouted
301      streaming packets when a destination has many concurrent streaming
302      connections (thanks duck!)
303    * No more "Graceful shutdown in -18140121441141s"
3052005-07-20  jrandom
306    * Allow the user to specify an external port # for SSU even if the external
307      host isn't specified (thanks duck!)
3092005-07-19  jrandom
310    * Further preparation for removing I2CP crypto
311    * Added some validation to the DH key agreement (thanks $anon)
312    * Validate tunnel data message expirations (though not really a problem,
313      since tunnels expire)
314    * Minor PRNG threading cleanup
3162005-07-15  cervantes
317    * Added workaround for an odd win32 bug in the stats configuration console
318      page which meant only the first checkbox selection was saved.
3202005-07-15  Romster
321    * Added per group selection toggles in the stats configuration console
322      page.
3242005-07-13  jrandom
325    * Fixed a recently injected bug in the multitransport bidding which had
326      allowed an essentially arbitrary choice of transports, rather than the
327      properly ordered choice.
3292005-07-13  jrandom
330    * Fixed a long standing bug where we weren't properly comparing session
331      tags but instead largely depending upon comparing their hashCode,
332      causing intermittent decryption errors.
3342005-07-12  jrandom
335    * Add some data duplication to avoid a recently injected concurrency
336      problem in the session tag manager (thanks redzara and romster).
3382005-07-11  jrandom
339    * Reduced the growth factor on the slow start and congestion avoidance for
340      the streaming lib.
341    * Adjusted some of the I2PTunnelServer threading to use a small pool of
342      handlers, rather than launching off new threads which then immediately
343      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
344    * Don't persist session keys / session tags (not worth it, for now)
345    * Added some detection and handling code for duplicate session tags being
346      delivered (root cause still not addressed)
347    * Make the PRNG's buffer size configurable (via the config property
348      "i2p.prng.totalBufferSizeKB=4096")
349    * Disable SSU flooding by default (duh)
350    * Updates to the StreamSink apps for better throttling tests.
3522005-07-05  jrandom
353    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
354      buffer, rather than the underlying PRNG's (likely small) one, which in
355      turn reduces the frequency of recalcing.
356    * More tuning to reduce temporary allocation churn
3582005-07-04  jrandom
359    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
360      rather than the IV by itself, preventing an attack that would let
361      colluding internal adversaries tag a message to determine that they are
362      in the same tunnel.  Thanks dvorak for the catch!
363    * Drop long inactive profiles on startup and shutdown
364    * /configstats.jsp: web interface to pick what stats to log
365    * Deliver more session tags to account for wider window sizes
366    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
367    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
368    * UrlLauncher: adjust the browser selection order
369    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
370    * StreamSinkClient: add support for sending an unlimited amount of data
371    * Migrate the tests out of the default build jars
3732005-06-22  Comwiz
374    * Migrate the core tests to junit
3762005-05-25  duck
377    * Fixed PRNG bug (bugzilla #107)
3792005-05-01  jrandom
380    * Added a substantial optimization to the AES engine by caching the
381      prepared session keys (duh).
3832005-05-01  jrandom
384    * Cleaned up the peers page a bit more.
3862005-04-30  jrandom
387    * Added a small new page to the web console (/peers.jsp) which contains
388      the peer connection information.  This will be cleaned up a lot more
389      before 0.6 is out, but its a start.
3912005-04-30  jrandom
392    * Reduced some SimpleTimer churn
3942005-04-29  jrandom
395    * Reduce the peer profile stat coallesce overhead by inlining it with the
396      reorganize.
397    * Limit each transport to at most one address (any transport that requires
398      multiple entry points can include those alternatives in the address).
4002005-04-28  jrandom
401    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
402    * Add back the code to handle bids from multiple transports (though there
403      is still only one transport enabled by default)
404    * Adjust the router's queueing of outbound client messages when under
405      heavy load by running the preparatory job in the client's I2CP handler
406      thread, thereby blocking additional outbound messages when the router is
407      hosed.
408    * No need to validate or persist a netDb entry if we already have it
4102005-04-25  smeghead
411    * Added button to router console for manual update checks.
412    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
413      every time the form was submitted even if it hadn't changed.
4152005-04-24  jrandom
416    * Added a pool of PRNGs using a different synchronization technique,
417      hopefully sufficient to work around IBM's PRNG bugs until we get our
418      own Fortuna.
419    * In the streaming lib, don't jack up the RTT on NACK, and have the window
420      size bound the not-yet-ready messages to the peer, not the unacked
421      message count (not sure yet whether this is worthwile).
422    * Many additions to the messageHistory log.
423    * Handle out of order tunnel fragment delivery (not an issue on the live
424      net with TCP, but critical with UDP).
426* 2005-04-20 released
4282005-04-20  jrandom
429    * In the SDK, we don't actually need to block when we're sending a message
430      as BestEffort (and these days, we're always sending BestEffort).
431    * Pass out client messages in fewer (larger) steps.
432    * Have the InNetMessagePool short circuit dispatch requests.
433    * Have the message validator take into account expiration to cut down on
434      false positives at high transfer rates.
435    * Allow configuration of the probabalistic window size growth rate in the
436      streaming lib's slow start and congestion avoidance phases, and default
437      them to a more conservative value (2), rather than the previous value
438      (1).
439    * Reduce the ack delay in the streaming lib to 500ms
440    * Honor choke requests in the streaming lib (only affects those getting
441      insanely high transfer rates)
442    * Let the user specify an interface besides or on the
443      I2PTunnel client page (thanks maestro^!)
4452005-04-17  sirup
446    * Added the possibility for i2ptunnel client and httpclient instances to
447      have their own i2p session (and hence, destination and tunnels).  By
448      default, tunnels are shared, but that can be changed on the web
449      interface or with the sharedClient config option in i2ptunnel.config.
4512005-04-17  jrandom
452    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
453      this?  If not, I want to drop it (lots of tiny details with lots of
454      duplicated semantics).
4562005-04-17  zzz
457    * Added new user-editable eepproxy error page templates.
4592005-04-17  jrandom
460    * Revamp the tunnel building throttles, fixing a situation where the
461      rebuild may not recover, and defaulting it to unthrottled (users with
462      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
463      advanced router config)
4652005-04-16  jrandom
466    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
4682005-04-12  jrandom
469    * Make sure we don't get cached updates (thanks smeghead!)
470    * Clear out the callback for the TestJob after it passes (only affects the
471      job timing accounting)
4732005-04-08  smeghead
474    * Added NativeBigInteger benchmark to scripts/
4762005-04-08  smeghead
477    * Security improvements to TrustedUpdate: signing and verification of the
478      version string along with the data payload for signed update files
479      (consequently the positions of the DSA signature and version string fields
480      have been swapped in the spec for the update file's header); router will
481      no longer perform a trusted update if the signed update's version is lower
482      than or equal to the currently running router's version.
483    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
484    * Extended TrustedUpdate public API for use by third party applications.
486* 2005-04-06 released
4882005-04-05  jrandom
489    * Retry I2PTunnel startup if we are unable to build a socketManager for a
490      client or httpclient tunnel.
491    * Add some basic sanity checking on the I2CP settings (thanks duck!)
4932005-04-05  jrandom
494    * After a successfull netDb search for a leaseSet, republish it to all of
495      the peers we have tried so far who did not give us the key (up to 10),
496      rather than the old K closest (which may include peers who had given us
497      the key)
498    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
499      republish it every 5 minutes, republish it every 3.  In addition, always
500      republish as soon as the leaseSet changes (duh^2).
501    * Minor fix for oddball startup race (thanks travis_bickle!)
502    * Minor AES update to allow in-place decryption.
5042005-04-03  jrandom
505    * EepGet fix for open-ended HTTP fetches (such as the news.xml
506      feeding the NewsFetcher)
5082005-04-01  jrandom
509    * Allow editing I2PTunnel server instances with five digit ports
510      (thanks nickless_head!)
511    * More NewsFetcher debugging for reported weirdness
5132005-04-01  jrandom
514    * Fix to check for missing news file (thanks smeghead!)
515    * Added destination display CLI:
516      java -cp lib/i2p.jar privKeyFilename
517    * Added destination display to the web interface (thanks pnspns)
518    * Installed CIA backdoor
520* 2005-03-29 released
5222005-03-29  jrandom
523    * Decreased the initial RTT estimate to 10s to allow more retries.
524    * Increased the default netDb store replication factor from 2 to 6 to take
525      into consideration tunnel failures.
526    * Address some statistical anonymity attacks against the netDb that could
527      be mounted by an active internal adversary by only answering lookups for
528      leaseSets we received through an unsolicited store.
529    * Don't throttle lookup responses (we throttle enough elsewhere)
530    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
531      the file (thanks nickster!)
532    * Updated the I2PTunnel HTML (thanks postman!)
533    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
534      which, if matched against the router.config "i2ptunnel.passphrase" value,
535      skips the nonce check.  If the config prop doesn't exist or is blank, no
536      passphrase is accepted.
537    * Implemented HMAC-SHA256.
538    * Enable the tunnel batching with a 500ms delay by default
539    * Dropped compatability with and earlier releases
5412005-03-26  jrandom
542    * Added some error handling and fairly safe to cache data to the streaming
543      lib (good call Tom!)
5452005-03-25  jrandom
546    * Fixed up building dependencies for the routerconsole on some more
547      aggressive compilers (thanks polecat!)
549* 2005-03-24 released
5512005-03-23  jrandom
552    * Added more intelligent version checking in news.xml, in case we have a
553      version newer than the one specified.
5552005-03-23  jrandom
556    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
557      cvsweb.cgi doesn't puke on us.
5592005-03-23  Connelly
560    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
561      stream send data to not be sent if STREAM CLOSE is issued too fast.
5632005-03-23  jrandom
564    * Implemented the news fetch / update policy code, as configurated on
565      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
566      doesn't exist yet, on startup).  No action is taken however, though if
567      the news.xml specifies that a new release is available, an option to
568      update will be shown on the router console.
569    * New initialNews.xml delivered with new installs, and moved news.xml out
570      of the i2pwww module and into the i2p module so that we can bundle it
571      within each update.
5732005-03-23  jrandom
574    * New /configupdate.jsp page for controlling the update / notification
575      process, as well as various minor related updates.  Note that not all
576      options are exposed yet, and the update detection code isn't in place
577      in this commit - it currently says there is always an update available.
578    * New EepGet component for reliable downloading, with a CLI exposed in
579      java -cp lib/i2p.jar net.i2p.util.EepGet url
580    * Added a default signing key to the TrustedUpdate component to be used
581      for verifying updates.  This signing key can be authenticated via
582      gpg --verify i2p/core/java/src/net/i2p/crypto/
583    * New public domain SHA1 implementation for the DSA code so that we can
584      handle signing streams of arbitrary size without excess memory usage
585      (thanks P.Verdy!)
586    * Added some helpers to the TrustedUpdate to work off streams and to offer
587      a minimal CLI:
588          TrustedUpdate keygen pubKeyFile privKeyFile
589          TrustedUpdate sign origFile signedFile privKeyFile
590          TrustedUpdate verify signedFile
5922005-03-22  smeghead
593    * New TrustedUpdate component for signing/verifying files with a DSA
594      signature.
5962005-03-21  jrandom
597    * Fixed the tunnel fragmentation handler to deal with multiple fragments
598      in a single message properly (rather than release the buffer into the
599      cache after processing the first one) (duh!)
600    * Added the batching preprocessor which will bundle together multiple
601      small messages inside a single tunnel message by delaying their delivery
602      up to .5s, or whenever the pending data will fill a full message,
603      whichever comes first.  This is disabled at the moment, since without the
604      above bugfix widely deployed, lots and lots of messages would fail.
605    * Within each tunnel pool, stick with a randomly selected peer for up to
606      .5s before randomizing and selecting again, instead of randomizing the
607      pool each time a tunnel is needed. 
609* 2005-03-18 released
6112005-03-18  jrandom
612    * Minor tweak to the timestamper to help reduce small skews
613    * Adjust the stats published to include only the relevent ones
614    * Only show the currently used speed calculation on the profile page
615    * Allow the full max # resends to be sent, rather than piggybacking the
616      RESET packet along side the final resend (duh)
617    * Add irc.postman.i2p to the default list of IRC servers for new installs
618    * Drop support for routers running 0.5 or while maintaining
619      backwards compatability for users running
6212005-03-18  jrandom
622    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
623    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
6252005-03-17  jrandom
626    * Update the old speed calculator and associated profile data points to
627      use a non-tiered moving average of the tunnel test time, avoiding the
628      freshness issues of the old tiered speed stats.
629    * Explicitly synchronize all of the methods on the PRNG, rather than just
630      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
631      needs all of them synchronized).
632    * Properly use the tunnel tests as part of the profile stats.
633    * Don't flood the jobqueue with sequential persist profile tasks, but
634      instead, inject a brief scheduling delay between them.
635    * Reduce the TCP connection establishment timeout to 20s (which is still
636      absurdly excessive)
637    * Reduced the max resend delay to 30s so we can get some resends in when
638      dealing with client apps that hang up early (e.g. wget)
639    * Added more alternative socketManager factories (good call aum!)
6412005-03-16  jrandom
642    * Adjust the old speed calculator to include end to end RTT data in its
643      estimates, and use that as the primary speed calculator again.
644    * Use the mean of the high capacity speeds to determine the fast
645      threshold, rather than the median.  Perhaps we should use the mean of
646      all active non-failing peers?
647    * Updated the profile page to sort by tier, then alphabetically.
648    * Added some alternative socketManager factories (good call aum!)
6502005-03-14  jrandom
651    * New strict speed calculator that goes off the actual number of messages
652      verifiably sent through the peer by way of tunnels.  Initially, this only
653      contains the successful message count on inbound tunnels, but may be
654      augmented later to include verified outbound messages, peers queried in
655      the netDb, etc.  The speed calculation decays quickly, but should give
656      a better differential than the previous stat (both values are shown on
657      the /profiles.jsp page)
6592005-03-11  jrandom
660    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
661      minimum (increased on resends as before, of course).
662    * Always prod the clock update listeners, even if just to tell them that
663      the time hasn't changed much.
664    * Added support for explicit peer selection for individual tunnel pools,
665      which will be useful in debugging but not recommended for use by normal
666      end users.
667    * More aggressively search for the next hop's routerInfo on tunnel join.
668    * Give messages received via inbound tunnels that are bound to remote
669      locations sufficient time (taking into account clock skew).
670    * Give alternate direct send messages sufficient time (10s min, not 5s)
671    * Always give the end to end data message the explicit timeout (though the
672      old default was sufficient before)
673    * No need to give end to end messages an insane expiration (+2m), as we
674      are already handling skew on the receiving side.
675    * Don't complain too loudly about expired TunnelCreateMessages (at least,
676      not until after all those 0.5 and users upgrade ;)
677    * Properly keep the sendBps stat
678    * When running the router with router.keepHistory=true, log more data to
679      messageHistory.txt
680    * Logging updates
681    * Minor formatting updates
6832005-03-08  jrandom
684    * More aggressively adjust the clock
6862005-03-07  jrandom
687    * Fix the HTTP response header filter to allow multiple headers with the
688      same name (thanks duck and spotteri!)
690* 2005-03-06 released
6922005-03-06  jrandom
693    * Allow the I2PTunnel web interface to select streaming lib options for
694      individual client tunnels, rather than sharing them across all of them,
695      as we do with the session options.  This way people can (and should) set
696      the irc proxy to interactive and the eepproxy to bulk.
697    * Added a script to new installs which simply calls
698      "sh i2prouter start".  This should make it clear how people should start
699      I2P.
700    * Properly expand the HTTP response header buffer (thanks shendaras!)
7022005-03-04  jrandom
703    * Filter HTTP response headers in the eepproxy, forcing Connection: close
704      so that broken (/malicious) webservers can't allow persistent
705      connections.  All HTTP compliant browsers should now always close the
706      socket.
707    * Enabled the GZIPInputStream's cache (they weren't cached before)
708    * Make sure our first send is always a SYN (duh)
709    * Workaround for some buggy compilers
7112005-03-03  jrandom
712    * Loop while starting up the I2PTunnel instances, in case the I2CP
713      listener isn't up yet (thanks detonate!)
714    * Implement custom reusable GZIP streams to both reduce memory churn
715      and prevent the exposure of data in the standard GZIP header (creation
716      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
717      though has only been tested within the confines of I2P's compression use
718      (DataHelper.[de]compress).
719    * Preemptively support the next protocol version, so that after the
720      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
7222005-03-02  jrandom
723    * Fix one substantial OOM cause (session tag manager was only dropping
724      tags once the critical limit was met, rather than honoring their
725      expiration) (duh)
726    * Lots of small memory fixes
727    * Double the allowable concurrent outstanding tunnel build tasks (20)
7292005-03-01  jrandom
730    * Really disable the streaming lib packet caching
731    * Synchronized a message handling point in the SDK (even though its use is
732      already essentially single threaded, its better to play it safe)
733    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
734      existing one (duh)
735    * Throttle the number of concurrent pending tunnel builds across all
736      pools, in addition to simply throttling the number of new requests per
737      minute for each pool individually.  This should avoid the cascading
738      failure when tunnel builds take too long, as no new builds will be
739      created until the previous ones are handled.
740    * Factored out and extended the DataHelper's unit tests for dealing with
741      long and date formatting.
742    * Explicitly specify the HTTP auth realm as "i2prouter", though this
743      alone doesn't address the bug where jetty asks for authentication too
744      much.  (thanks orion!)
745    * Updated the StreamSinkServer to ignore all read bytes, rather than write
746      them to the filesystem.
7482005-02-27  jrandom
749    * Don't rerequest leaseSets if there are already pending requests
750    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
751      temporary disabled the streaming lib packet caching.
752    * Reduced the resend RTT penalty to 10s
7542005-02-26  jrandom
755    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
7572005-02-26  jrandom
758    * Further streaming lib caching improvements
759    * Reduce the minimum RTT (used to calculate retry timeouts), but also
760      increase the RTT on resends.
761    * Lower the default message size to 4KB from 16KB to further reduce the
762      chance of failed fragmentation.
763    * Extend tunnel rebuild throttling to include fallback rebuilds
764    * If there are less than 20 routers known, don't drop the last 20 (to help
765      avoid dropping all peers under catastrophic failures)
766    * New stats for end to end messages - "client.leaseSetFoundLocally",
767      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
7692005-02-24  jrandom
770    * Throttle the number of tunnel rebuilds per minute, preventing CPU
771      overload under catastrophic failures (thanks Tracker and cervantes!)
772    * Block the router startup process until we've initialized the clock
7742005-02-24  jrandom
775    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
776      data in the streaming lib.
777    * Fixed a streaming lib bug where the connection initiator would fail the
778      stream if the ACK to their SYN was lost.
7802005-02-23  jrandom
781    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
782      get stale tunnel pools, don't you think?
784* 2005-02-23 released
7862005-02-22  jrandom
787    * Reworked the tunnel (re)building process to remove the tokens and
788      provide cleaner controls on the tunnels built.
789    * Fixed situations where the timestamper wanted to test more servers than
790      were provided (thanks Tracker!)
791    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
792      (thanks Tracker!)
7942005-02-22  jrandom
795    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
796      try to automatically reconnect on accept()/connect(..)).
797    * Loop check for expired lease republishing (just in case)
7992005-02-22  jrandom
800    * Adjusted (and fixed...) the timestamper change detection
801    * Deal with a rare reordering bug at the beginning of a stream (so we
802      don't drop it unnecessarily)
803    * Cleaned up some dropped message handling in the router
804    * Reduced job queue churn when dealing with a large number of tunnels by
805      sharing an expiration job
806    * Keep a separate list of the most recent CRIT messages (shown on the
807      logs.jsp).  This way they don't get buried among any other messages.
808    * For clarity, display the tunnel variance config as "Randomization" on
809      the web console.
810    * If lease republishing fails (boo! hiss!) try it again
811    * Actually fix the negative jobLag in the right place (this time)
812    * Allow reseeding when there are less than 10 known peer references
813    * Lots of logging updates.
8152005-02-20  jrandom
816    * Allow the streaming lib resend frequency to drop down to 20s as the
817      minimum, so that up to 2 retries can get sent on an http request.
818    * Add further limits to failsafe tunnels.
819    * Keep exploratory and client tunnel testing and building stats separate.
820    * Only use the 60s period for throttling tunnel requests due to transient
821      network overload.
822    * Rebuild tunnels earlier (1-3m before expiration, by default)
823    * Cache the next hop's routerInfo for participating tunnels so that the
824      tunnel participation doesn't depend on the netDb.
825    * Fixed a long standing bug in the streaming lib where we wouldn't always
826      unchoke messages when the window size grows.
827    * Make sure the window size never reaches 0 (duh)
8292005-02-20  jrandom
830    * Only build failsafe tunnels if we need them
831    * Properly implement the selectNotFailingPeers so that we get a random
832      selection of peers, rather than using the strictOrdering (thanks dm!)
833    * Don't include too many "don't tell me about" peer references in the
834      lookup message - only send the 10 peer references closest to the target.
8362005-02-19  jrandom
837    * Only build new extra tunnels on failure if we don't have enough
838    * Fix a fencepost in the tunnel building so that e.g. a variance of
839      2 means +/- 2, not +/- 1 (thanks dm!)
840    * Avoid an NPE on client disconnect
841    * Never select a shitlisted peer to participate in a tunnel
842    * Have netDb store messages timeout after 10s, not the full 60s (duh)
843    * Keep session tags around for a little longer, just in case (grr)
844    * Cleaned up some closing event issues on the streaming lib
845    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
846      so that 0.4.* users will need to do a clean install, but we don't need
847      to shove an additional 2MB in each update to those already on 0.5.
848    * Imported the susimail css (oops, thanks susi!)
850* 2005-02-18  0.5 released
8522005-02-17  jrandom
853    * If the clock is adjusted during a job run, don't act as if the job took
854      negative time.
8562005-02-17  jrandom
857    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
8592005-02-17  jrandom
860    * Fixed the braindead tunnel testing logic
861    * If a large number of tunnels are failing (within the last 5-10 minutes)
862      and the current tunnel pool's configuration allows it, randomly build a
863      zero hop tunnel to replace failed tunnels.
864    * Enable postman's POP3 and SMTP tunnels by default
8662005-02-16  jrandom
867    * Added some error handling when the number of session tags exceeds the
868      realistic capacity, dropping a random chunk of received tag sets and
869      conducting some minor analysis of the remaining ones.  This is a part
870      of a pretty serious error condition, and logs as CRIT (if/when people
871      see "TOO MANY SESSION TAGS!", please let me know the full log line it
872      puts in the wrapper.log or /logs.jsp)
873    * Update the addressbook to only write to the published hosts location
874      if the addressbook's config contains "should_publish=true" (by default,
875      it contains "should_publish=false")
8772005-02-16  jrandom
878    * (Merged the 0.5-pre branch back into CVS HEAD)
879    * Replaced the old tunnel routing crypto with the one specified in
880      router/doc/tunnel-alt.html, including updates to the web console to view
881      and tweak it. 
882    * Provide the means for routers to reject tunnel requests with a wider
883      range of responses:
884        probabalistic rejection, due to approaching overload
885        transient rejection, due to temporary overload
886        bandwidth rejection, due to persistent bandwidth overload
887        critical rejection, due to general router fault (or imminent shutdown)
888      The different responses are factored into the profiles accordingly.
889    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
890      with a series of new properties, relevent to the new tunnel routing code:
891        inbound.nickname (used on the console)
892        inbound.quantity (# of tunnels to use in any leaseSets)
893        inbound.backupQuantity (# of tunnels to keep in the ready)
894        inbound.length (# of remote peers in the tunnel)
895        inbound.lengthVariance (if > 0, permute the length by adding a random #
896                                up to the variance.  if < 0, permute the length
897                                by adding or subtracting a random # up to the
898                                variance)
899        outbound.* (same as the inbound, except for the, uh, outbound tunnels
900                    in that client's pool)
901      There are other options, and more will be added later, but the above are
902      the most relevent ones.
903    * Replaced Jetty 4.2.21 with Jetty 5.1.2
904    * Compress all profile data on disk.
905    * Adjust the reseeding functionality to work even when the JVM's http proxy
906      is set.
907    * Enable a poor-man's interactive-flow in the streaming lib by choking the
908      max window size.
909    * Reduced the default streaming lib max message size to 16KB (though still
910      configurable by the user), also doubling the default maximum window
911      size.
912    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
913    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
914      the first byte of the SHA256.
915    * Added a new "netId" flag to let routers drop references to other routers
916      who we won't be able to talk to.
917    * Extended the timestamper to get a second (or third) opinion whenever it
918      wants to actually adjust the clock offset.
919    * Replaced that kludge of a timestamp I2NP message with a full blown
920      DateMessage.
921    * Substantial memory optimizations within the router and the SDK to reduce
922      GC churn.  Client apps and the streaming libs have not been tuned,
923      however.
924    * More bugfixes than you can shake a stick at.
9262005-02-13  jrandom
927    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
928      only contains 32bit versions, so build your own, placing in
929      your install dir if necessary.  (thanks mule!)
930    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
931      (thanks spaetz!)
9332005-02-10  smeghead
934    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
935      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
936      Pants are still non-functional at this time so don't mess with it yet
937      unless you want to potentially mangle your working copy of CVS.
9392005-02-09  duck
940    * Allow an unneeded newline in the SAM client connection without
941      disconnecting.
9432005-02-07  jrandom
944    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
9462005-02-06  Sugadude
947    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
9492005-02-03  smeghead
950    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
951      library from GNU Crypto's CVS HEAD sources.
9532005-01-26  smeghead
954    * i2pProxy.pac,, and are now shipped with the dist
955      packages and installed to $i2pinstalldir/scripts.
956    * Added command line params to and --gij to run them
957      using gij + libgcj, and --sourcedir to run them from the source tree
958      instead of the installation directory.
959    * Fixed unreachable for() statement clause in the KBucketImpl class that was
960      causing gcj to toss a compilation warning (jrandom++).
9622005-01-26  smeghead
963    * Added a couple of scripts, and, to manage the core
964      tests and benchmarks.
965    * Routerconsole now builds under gcj 3.4.3.
966    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
9682005-01-25  smeghead
969    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
970      supporting apps (except for the routerconsole which is still being
971      investigated).
9732005-01-24  smeghead
974    * C#-ification of sam-sharp: interface greatly simplified using delegates
975      and events; SamBaseEventHandler provides basic implementation and helper
976      methods but is now optional.
977    * NAnt buildfile and README added for sam-sharp.
9792005-01-23  smeghead
980    * Port the java SAM client library to mono/C# and released into the
981      public domain.  The 0.1 version of this port is available in CVS as
982      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
983      library has been removed.
9852005-01-21  Jhor
986    * Updated jbigi build scripts for OSX.
9882005-01-21  jrandom
989    * Added support for OSX to the NativeBigInteger code so that it will look
990      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
991      is not bundled with the shipped jbigi.jar yet though.
9932005-01-18  jrandom
994    * Increased the max # session tags maintained and decreased slightly the
995      period over which they are gathered.
9972005-01-17  jrandom
998    * Added meaningful support for adjusting the preferred message size in the
999      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
1000      whatever).  The other side will mimic a reduction (but never an increase).
1001    * Always make sure to use distinct ConnectionOption objects for each
1002      connection (duh)
1003    * Reduced the default ACK delay to 500ms on in the streaming lib
1004    * Only shrink the streaming window once per window
1005    * Don't bundle a new jetty.xml with updates
1006    * Catch another local routerInfo corruption issue on startup.
10082005-01-15  cervantes
1009    * Added support to the eepproxy for URLs such as
1010      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
1011      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
10132005-01-15  jrandom
1014    * Caught a series of (previously unhandled) errors caused by requeueing
1015      messages that had timed out on the TCP transport (thanks mae^!)
1016    * Reduce the barrier to dropping session tags on streaming lib resends -
1017      every fourth send should drop the tags, forcing ElGamal encryption.  This
1018      will help speed up the recovery after a disconnect, rather than the drop
1019      every fifth send.
1021* 2005-01-06 released
10232005-01-06  jrandom
1024    * Added a startup message to the addressbook, printing its version number
1025      to stdout (which is sent to wrapper.config) when it loads.
1026    * Updated the addressbook to reread the config file periodically
1027    * Added orion.i2p to the list of eepsites on the default homepage
10292005-01-05  jrandom
1030    * Handle unexpected network read errors more carefully (thanks parg!)
1031    * Added more methods to partially compare (DataHelper) and display
1032      arrays (Base64.encode).
1033    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
1034    * Be more generous on the throttle when just starting up the router
1035    * Fix a missing scheduled event in the streaming lib (caused after reset)
1036    * Add a new DisconnectListener on the I2PSocketManager to allow
1037      notification of session destruction.
1038    * Make sure our own router identity is valid, and if it isn't, build a new
1039      one and restart the router.  Alternately, you can run the Router with
1040      the single command line argument "rebuild" and it will do the same.
10422004-12-31  ragnarok
1043    * Integrated latest addressbook changes (2.0.3) which include support for
1044      deploying as a .war file with no existing addressbook configuration.
1045    * Updated main build process to bundle the addressbook.war in the
1046      i2pinstall.jar and
10482004-12-31  jrandom
1049    * Speling fxi (thanks digum!)
1050    * Bugfix for the I2PTunnel web interface so that it now properly launches
1051      newly added tunnels that are defined to be run on startup (thanks ugha!)
10532004-12-30  jrandom
1054    * Revised the I2PTunnel client and httpclient connection establishment
1055      throttles.  There is now a pool of threads that build the I2PSocket
1056      connections with a default size of 5, configurable via the I2PTunnel
1057      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
1058      not throttle the number of concurrent builders, but will launch a thread
1059      per socket during establishment).  In addition, sockets accepted but
1060      not yet allocated to one of the connection builders will be destroyed
1061      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
1062      0, it will wait indefinitely).
10642004-12-29  jrandom
1065    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
1066      deployed in the i2pinstall.jar/ (yet).
1067    * Don't treat connection inactivity closure as a connection error.
10692004-12-29  jrandom
1070    * Add in a new keepalive event on each TCP connection, proactively sending
1071      a (tiny) time message every minute or two, as well as killing the
1072      connection if no message has been fully sent within 5 minutes or so. 
1073      This should help deal with hung connections from IP address changes.
10752004-12-28  jrandom
1076    * Cleaned up the resending and choking algorithm in the streaming lib.
1077    * Removed the read timeout override for I2PTunnel's httpclient, allowing
1078      it to use the default for the streaming lib.
1079    * Revised ack triggers in the streaming lib.
1080    * Logging.
1082* 2004-12-21 released
10842004-12-21  jrandom
1085    * Track a new stat for expired client leases (client.leaseSetExpired).
10872004-12-21  jrandom
1088    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
1089      and added windows info to the headless docs. (thanks ardvark!)
1090    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
1091      a stream (thanks frosk!)
1092    * Add a pair of new stats for monitoring tunnel participation -
1093      tunnel.participatingBytesProcessed (total # bytes transferred) and
1094      tunnel.participatingBytesProcessedActive (total # bytes transferred for
1095      tunnels whose byte count exceed the 10m average).  This should help
1096      further monitor congestion issues.
1097    * Made the NamingService factory property public (thanks susi!)
10992004-12-20  jrandom
1100    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
1101    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
1102      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
1103      reasoning is gone.
11052004-12-19  jrandom
1106    * Fix for a race on startup wrt the new stats (thanks susi!)
11082004-12-19  jrandom
1109    * Added three new stats - router.activePeers, router.fastPeers, and
1110      router.highCapacityPeers, updated every minute
11122004-12-19  jrandom
1113    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
1114      hostname should be sent to the webserver.  By default, new installs will
1115      have an httpserver pointing at their jetty instance with the spoofed
1116      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
11182004-12-19  scintilla
1119    * Convert native jcpuid code from C++ to C. This should alleviate build
1120      problems experienced by some users.
1122* 2004-12-18 released
11242004-12-16  jrandom
1125    * Catch another oddball case for a reset connection in the streaming lib.
1126    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
1127      dumps the current state of that peer's profile.  Instead of the full
1128      base64, you can pass in however many characters you have and it will
1129      return the first match found.
11312004-12-16  jrandom
1132    * Remove the randomized factor in the tunnel rejection by bandwidth -
1133      we now accept the request if we've allocated less than our limit
1134      and reject it if we've allocated more.
1135    * Stick to the standard capacity scale on tunnel rejection, even for
1136      the 10m period.
1137    * Build the time message at the very last possible moment
11392004-12-15  jrandom
1140    * Handle hard disconnects more gracefully within the streaming lib, and
1141      log unmonitored events more aggressively.
1142    * If we drop a peer after connection due to clock skew, log it to the
1143      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
1144      the stat 'tcp.disconnectAfterSkew'.
1145    * Fixed the formatting in the skew display
1146    * Added an ERROR message that is fired once after we run out of
1147      routerInfo files (thanks susi!)
1148    * Set the connect timeout equal to the streaming lib's disconnect timeout
1149      if not already specified (the I2PTunnel httpclient already enforces a
1150      60s connect timeout)
1151    * Fix for another connection startup problem in the streaming lib.
1152    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
1153    * Adjust the capacity calculations so that tunnel failures alone in the
1154      last 10m will not trigger a 0 capacity rank.
11562004-12-14  jrandom
1157    * Periodically send a message along all I2NP connections with the router's
1158      current time, allowing the receiving peer to determine that the clock
1159      has skewed too much, and hence, disconnect.  For backwards compatability
1160      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
1161      next time we have a backwards compatability break, we can put in a proper
1162      message setup for it.
11642004-12-14  jrandom
1165    * Reenable the probabalistic drop on the TCP queues to deal with good old
1166      fashioned bandwidth limiting.  However, by default the probability is
1167      rigged to reserve 0% of the queue free - meaning we just aggressively
1168      fail messages in the queue if we're transferring too slowly.  That
1169      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
1170      (or whatever) and the drop code can be disabled with the parameter
1171      'tcp.dropProbabalistically=false'.
1172    * Still penalize a peer on tunnel failure, but don't immediately drop
1173      their capacity to 0.
1174    * More aggressively ACK duplicates
1175    * Randomize the timestamper period
1176    * Display the clock skew on the connection logs when a peer sends it.
1177    * Allow the timestamper to fix skews of up to 10 minutes
1178    * Logging
11802004-12-13  jrandom
1181    * Added some error checking on the new client send job (thanks duck!)
1182    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
1183      proportional to the bytes allocated in existing tunnels vs the bytes
1184      allowed through the bandwidth limiter).
1185    * Enable a new configuration parameter for triggering a tunnel rebuild
1186      (tunnel.maxTunnelFailures), where that is the max allowed test failures
1187      before killing the tunnel (default 0).
1188    * Gather more data that we rank capacity by (now we monitor and balance the
1189      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
1190    * Fix a truncation/type conversion problem on the long term capacity
1191      values (we were ignoring the daily stats outright)
11932004-12-11  jrandom
1194    * Fix the missing HTTP timeout, which was caused by the deferred syn used
1195      by default.  This, in turn, meant the I2PSocket creation doesn't fail
1196      on .connect, but is unable to transfer any data in any direction.  We now
1197      detect that condition for the I2PTunnelHTTPClient and throw up the right
1198      error page.
1199    * Logging
12012004-12-11  jrandom
1202    * Use a simpler and less memory intensive job for processing outbound
1203      client messages when the session is in mode=bestEffort.  We can
1204      immediately discard the data as soon as its sent the first time,
1205      rather than wait for an ack, since we will never internally resend.
1206    * Reduce some synchronization to avoid a rare deadlock
1207    * Replaced 'localhost' with in the i2ptunnel config, and special
1208      case it within the tunnel controller.
1209    * Script cleanup for building jbigi/jcpuid
1210    * Logging
1212* 2004-12-08 released
12142004-12-08  jrandom
1215    * Revised the buffering when reading from the SAM client and writing
1216      to the stream.  Also added a thread (sigh) so we don't block the
1217      SAM client from giving us more messages for abnormally long periods
1218      of time.
1219    * Display the router version in the logs on startup (oft requested)
1220    * Fix a race during the closing of a messageOutputStream
12222004-12-06  jrandom
1223    * Don't do a 'passive flush' while there are already outbound messages
1224      unacked.
1225    * Show the reseed link if up to 10 peers profiles are active (thanks
1226      dburton!)
12282004-12-06  jrandom
1229    * Don't propogate streaming connection failures out to the SAM bridge as
1230      fatal errors.
1231    * Dont barf on repeated I2CP closure.
12332004-12-05  jrandom
1234    * Explicitly use "" to bind the I2CP listener, not the JVM's
1235      getLocalhost call
12372004-12-05  jrandom
1238    * Default the I2CP listener to localhost only, unless overridden by
1239      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
1240    * More SAM fixes for things recently broken (whee)
12422004-12-05  jrandom
1243    * Fix the recently broken SAM bridge (duh)
1244    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
1245      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
1246      StreamSink and StreamSend apps for transferring files.
1247    * Make the passive flush timer fire more frequently.
12492004-12-05  jrandom
1250    * Fixed some links in the console (thanks ugha!) and the javadoc
1251      (thanks dinoman!)
1252    * Fix the stream's passive flush timer (oh, its supposed to work?)
12542004-12-03  jrandom
1255    * Toss in a small pool of threads (3) to execute the events queued up with
1256      the SimpleTimer, as we do currently see the occational event
1257      notification spiking up to a second or so.
1258    * Implement a SAM client API in java, useful for event based streaming (or
1259      for testing the SAM bridge)
1260    * Added support to shut down the SAM bridge on OOM (useful if the SAM
1261      bridge is being run outside of the router).
1262    * Include the SAM test code in the sam.jar
1263    * Remove an irrelevent warning message from SAM, which was caused by
1264      perfectly normal operation due to a session being closed.
1265    * Removed some unnecessary synchronization in the streaming lib's
1266      PacketQueue
1267    * More quickly clean up the memory used by the streaming lib by
1268      immediately killing each packet's resend job as soon as it is ACKed (or
1269      cancelled), so that there are no longer any valid pointers to the
1270      (potentially 32KB) packet.
1271    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
1272    * Drop packets that would expand our inbound window beyond our maximum
1273      buffer size (default 32 messages)
1274    * Always read the ACK/NACK data from the verified packets received, even
1275      if we are going to drop them
1276    * Always adjust the window when there are messages ACKed, though do not
1277      change its size except as before.
1278    * Streamlined some synchronization in the router's I2CP handling
1279    * Streamlined some memory allocation in the SAM bridge
1280    * Default the streaming lib to disconnect on inactivity, rather than send
1281      an empty message.
12832004-12-01  jrandom
1284    * Fix for a race in the streaming lib as caused by some odd SAM activity
1286* 2004-12-01 released
12882004-12-01  jrandom
1289    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
1290      connections to work (thanks duck!)
1291    * Make sure we override the inactivity timeout too
1293* 2004-12-01 released
12952004-12-01  jrandom
1296    * Strip out any of the Accept-* HTTP header lines, and always make sure to
1297      include the forged User-agent header.
1298    * Adjust the default read timeout on the eepproxy to 60s, unless
1299      overridden.
1300    * Minor tweak on stream shutdown.
13022004-11-30  jrandom
1303    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
1304    * Build in a simple timeout to flush data queued into the I2PSocket but
1305      not yet flushed.
1306    * Don't explicitly flush after each SAM stream write, but leave it up to
1307      the [nonblocking] passive flush.
1308    * Don't whine about 10-99 connection events occurring in a second
1309    * Don't wait for completion of packets that will not be ACKed (duh)
1310    * Adjust the congestion window, even if the packet was resent (duh)
1311    * Make sure to wake up any blocking read()'s when the MessageInputStream
1312      is close()ed (duh)
1313    * Never wait more than the disconnect timeout for a write to complete
13152004-11-29  jrandom
1316    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
13182004-11-29  jrandom
1319    * Reduced contention for local client delivery
1320    * Drop the new code that munges the wrapper.config.  Instead, updates that
1321      need to change it will include their own wrapper.config in the
1322, overwriting the existing file.  If the file
1323      "wrapper.config.updated" is included, it is deleted at first opportunity
1324      and the router shut down, displaying a notice that the router must be
1325      started again cleanly to allow the changes to the wrapper.config to take
1326      effect.
1327    * Properly stop accept()ing I2PSocket connections if we close down the
1328      session (duh).
1329    * Make sure we cancel any outstanding Packets in flight when a connection
1330      is terminated (thanks susi!)
1331    * Split up the I2PTunnel closing a little further.
13332004-11-28  jrandom
1334    * Accept IP address detection changes with a 2-out-of-3 minimum.
1335    * As long as the router is up, keep retrying to bind the I2CP listener.
1336    * Decrease the java service wrapper ping frequency to once every 10
1337      minutes, rather than once every 5 seconds.
13392004-11-27  jrandom
1340    * Some cleanup and bugfixes for the IP address detection code where we
1341      only consider connections that have actually sent and received messages
1342      recently as active, rather than the mere presence of a TCP socket as
1343      activity.
13452004-11-27  jrandom
1346    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
1347      lib can do that (without an additional per-connection thread).
1348    * Close the I2PTunnel forwarder threads more aggressively
13502004-11-27  jrandom
1351    * Fix for a fast loop caused by a race in the new streaming library (thanks
1352      DrWoo, frontier, pwk_, and thetower!)
1353    * Minor updates to the SimpleTimer and Connection to help track down a
1354      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
1355      many events/tasks fire in a second)
1356    * Minor fixes for races on client disconnects (causing NPEs)
1358* 2004-11-26  0.4.2 released
13602004-11-26  jrandom
1361    * Enable the new streaming lib as the default.  That means, for any
1362      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
13642004-11-25  jrandom
1365    * Revised the installer to include start menu and desktop shortcuts for
1366      windows platforms, including pretty icons (thanks DrWoo!)
1367    * Allow clients specified in clients.config to have an explicit startup
1368      delay.
1369    * Update the default install to launch a browser pointing at the console
1370      whenever I2P starts up, rather than only the first time it starts up
1371      (configurable on /configservice.jsp, or in clients.config)
1372    * Bugfix to the clock skew checking code to monitor the delta between
1373      offsets, not the offset itself (duh)
1374    * Router console html update
1375    * New (and uuuuugly) code to verify that the wrapper.config contains
1376      the necessary classpath entries on update.  If it has to update the
1377      wrapper.config, it will stop the JVM and service completely, since the
1378      java service wrapper doesn't reread the wrapper.config on JVM restart -
1379      requiring the user to manually restart the service after an update.
1380    * Increase the TCP connection timeout to 30s (which is obscenely long)
13822004-11-22  jrandom
1383    * Update to the SAM bridge to reduce some unnecessary memory allocation.
1384    * New stat to keep track of slow jobs (ones that take more than a second
1385      to excute).  This is published in the netDb as jobQueue.jobRunSlow
13872004-11-21  jrandom
1388    * Update the I2PTunnel web interface to include an option for the new
1389      streaming lib (which is ignored until the 0.4.2 release).
1390    * Revised the I2PTunnel web interface to keep the I2CP options of client
1391      and httpclient tunnels in sync, as they all share the same I2CP session.
13932004-11-21  jrandom
1394    * Only allow small clock skews after the first 10 minutes of operation
1395      (to prevent later network lag bouncing us way off course - yes, we
1396      really need an NTP impl to balance out the network burps...)
1397    * Revamp the I2PTunnel web interface startup process so that everything
1398      is shown immediately, so that different pieces hanging don't hang
1399      the rest, and other minor bugfixes.
1400    * Take note of SAM startup error (in case you're already running a SAM
1401      bridge...)
1402    * Increase the bandwidth limiter burst values available to 10-60s (or
1403      whatever is placed in /configadvanced.jsp, of course)
14052004-11-21  jrandom
1406    * Allow end of line comments in the hosts.txt and other config files,
1407      using '#' to begin the comments (thanks susi!)
1408    * Add support to I2PTunnel's 'client' feature for picking between multiple
1409      target destinations (e.g. 'client 6668,irc.baffled.i2p')
1410    * Add a quick link on the left hand nav to reseed if there aren't enough
1411      known peers, as well as link to the config page if there are no active
1412      peers.  Revised config page accordingly.
14142004-11-21  jrandom
1415    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
1416      rather that every 15 minutes, and increase the warning period in which
1417      we refresh tags from 30s to 2 minutes.
1418    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
1419      to close the I2PSocket (leaving it to timeout).
14212004-11-19  jrandom
1422    * Off-by-one fix to the tunnel pool management code, along side some
1423      explicit initialization.  This can affect clients whose lengths are
1424      shorter than the router's default (thanks duck!)
14262004-11-17  jrandom
1427    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
1428      Ragnarok!)
14302004-11-17  jrandom
1431    * Minor logging update.
14332004-11-16  jrandom
1434    * Clean up the propogation of i2psocket options so that various streaming
1435      libs can honor them more precisely
14372004-11-16  jrandom
1438    * Minor logging update
14402004-11-14  jrandom
1441    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
1442    * Fix a leak injected into the SimpleTimer
1443    * Fix a race condition in the tunnel message handling
14452004-11-13  jrandom
1446    * Added throttles on how many I2PTunnel client connections we open at once
1447    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
1448      the streaming library used should take care of any buffering.
1449    * Added a cache for some objects used in I2PTunnel, especially useful when
1450      there are many short lived connections.
1451    * Trimmed the SimpleTimer's processing a bit
14532004-11-10  jrandom
1454    * Allow loading the (mini)streaming connection options from the
1455      environment.
1456    * More defensive programming in the DSA implementation.
14582004-11-08  jrandom
1459    * Remove spurious flush calls from I2PTunnel, and work with the
1460      I2PSocket's output stream directly (as the various implementations
1461      do their own buffering).
1462    * Another pass at a long standing JobQueue bug - dramatically simplify
1463      the job management synchronization since we dont need to deal with
1464      high contention (unlike last year when we had dozens of queue runners
1465      going at once).
1466    * Logging
14682004-11-08  jrandom
1469    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
1471* 2004-11-06 released
14732004-11-06  jrandom
1474    * Expose a drop down on the /configclients.jsp to enter the outbound
1475      tunnel depth.
1476    * Improved *hosts.txt loading
1477    * Explicitly override the JVM's timezone settings to use GMT so that
1478      any client applications which use timezones won't leak sensitive
1479      data (thanks gott!)
1480    * Bundle sam.jar in the update (thanks duck!)
14822004-11-06  jrandom
1483    * Fix for a long standing synchronization bug in the SDK that in rare
1484      instances can add a few seconds of lag.
14862004-11-05  jrandom
1487    * Bugfixes and unit tests for the SAM bridge to handle quoted message
1488      parameters, verify proper operation after multiple session lifetimes,
1489      as well as some synchronization problems.
1490    * New properties method on the DataHelper class.
1491    * Address a race on fast disconnecting clients
14932004-11-02  jrandom
1494    * Fix for a long standing synchronization bug in the JobQueue (and added
1495      some kooky flags to make sure it stays dead)
1496    * Update the ministreaming lib to force mode=guaranteed if the default
1497      lib is used, and mode=best_effort for all other libs.
14992004-11-02  jrandom
1500    * Fixed up the configuration overrides for the streaming socket lib
1501      integration so that it properly honors env settings.
1502    * More memory usage streamlining (last major revamp for now, i promise)
15042004-11-01  jrandom
1505    * Increase the tunnel test timeout rapidly if our tunnels are failing.
1506    * Honor message expirations for some tunnel jobs that were prematurely
1507      expired.
1508    * Streamline memory usage with temporary object caches and more efficient
1509      serialization for SHA256 calculation, logging, and both I2CP and I2NP
1510      message handling.
1511    * Fix some situations where we forward messages too eagerly.  For a
1512      request at the tunnel endpoint, if the tunnel is inbound and the target
1513      is remote, honor the message by tunnel routing the data rather than
1514      sending it directly to the requested location.
15162004-10-30  jrandom
1517    * Cache the temporary objects used in the AES encryption/decryption
1518      process so that AES doesn't require any memory allocation to process
1519      data.
1520    * Dramatically reduce memory usage within various crypto implementations
1521      by avoiding unnecessary (though simplifying) buffers.
1522    * If we specify some tags to be sent in an I2CP message explicitly, use
1523      only those, not those plus a new set (otherwise we aren't sure on ACK
1524      which set was delivered)
1525    * Allow configuration for the partial send timeout (how long before
1526      resending a message down a different tunnel in a lease).  This can be
1527      updated with the "router.clientPartialSendTimeout" router config prop.
1528    * Logging
15302004-10-29  jrandom
1531    * Strip the Referer, Via, and From headers completely, rather than
1532      inserting a bogus value ("i2p").  This should help with the use of
1533      SnipSnap and Geeklog (thanks nickster and DrWoo!)
15352004-10-27  jrandom
1536    * Fix a strange race condition on i2cp client disconnect.
1537    * win98 startup fixes (thanks tester-1 and ardvark!)
1538    * include build scripts for the new streaming lib (which is NOT ready
1539      for use yet, but you can hack around with it)
15412004-10-24  jrandom
1542    * Allow explicit inclusion of session tags in the SDK, enabling the
1543      resending of tags bundled with messages that would not otherwise
1544      be ACKed.
1545    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
1546      no DeliveryStatusMessage will be bundled (and as such, client apps using
1547      it will need to do their own session tag ack/nack).
1548    * Handle client errors when notifying them of message availability.
1549    * New StreamSinkSend which sends a file to a destination and disconnects.
1550    * Update the I2PSocketManagerFactory to build the specific
1551      I2PSocketManager instance based on the "i2p.streaming.manager" property,
1552      containing the class name of the I2PSocketManager to instantiate.
15542004-10-23  jrandom
1555    * Minor ministreaming lib refactoring to simplify integration of the full
1556      streaming lib.
1557    * Minor bugfixes to data structure serialization.
1559* 2004-10-18 released
15612004-10-18  jrandom
1562    * Allow sending messages with a section of a byte array.
1563    * Reduced stats published.
15652004-10-17  jrandom
1566    * Don't b0rk on whitespace in the router address.
15682004-10-16  jrandom
1569    * More aggressively reduce the capacity of peers if their tunnels are
1570      failing so that we move off them quicker.
1571    * Simplify some data structure serialization for reuse in the streaming
1572      lib, as well as add support for signing and verifying partial byte
1573      arrays.
1574    * Logging updates
15762004-10-16  jrandom
1577    * Increased the default minimum tunnel test time to 5 seconds, since we
1578      still see the occational message processing time spike to 2 seconds.
1579    * Update the SimpleTimer to allow rescheduling a task thats already
1580      queued (useful for the new streaming lib).
15822004-10-15  jrandom
1583    * Replaced old minimum tunnel test timeout of 1s with a configurable
1584      value (router.config property "router.tunnelTestMinimum", with the
1585      default of 2s).
15872004-10-14  jrandom
1588    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
1589      peer, so don't use it as a key point of the IsFailing calculator.
1590      We still use it as a key point of the Capacity calculator, however.
15922004-10-14  jrandom
1593    * Allow for a configurable tunnel "growth factor", rather than trying
1594      to achieve a steady state.  This will let us grow gradually when
1595      the router is needed more, rather than blindly accepting the request
1596      or arbitrarily choking it at an averaged value.  Configure this with
1597      "router.tunnelGrowthFactor" in the router.config (default "1.5").
1598    * Adjust the tunnel test timeouts dynamically - rather than the old
1599      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
1600      test time (the deviation factor can be adjusted by setting
1601      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
1602      find the 'good' tunnels.
1603    * Added some crazy debugging to try and track down an intermittent hang.
16052004-10-13  jrandom
1606    * Fix the probabalistic tunnel reject (we always accepted everything,
1607      since the docs on java.util.Random.nextDouble() are wrong..)
1608    * Fixed a race on startup (thanks Quadn!)
16102004-10-12  jrandom
1611    * Disable the probabalistic drop by default (enable via the router config
1612      property "tcp.dropProbabalistically=true")
1613    * Disable the actual watchdog shutdown by default, but keep track of more
1614      variables and log a lot more when it occurs (enable via the router
1615      config property "watchdog.haltOnHang=true")
1616    * Implement some tunnel participation smoothing by refusing requests
1617      probabalistically as our participating tunnel count exceeds the previous
1618      hour's, or when the 10 minute average tunnel test time exceeds the 60
1619      minute average tunnel test time.  The probabilities in both cases are
1620      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
1621      and you had previously only participated in 50, you'll have a 25% chance
1622      of accepting a subsequent request.
1624* 2004-10-10 released
16262004-10-10  cervantes
1627    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
1628      the request.
16302004-10-09  jrandom
1631    * Added a watchdog timer to do some baseline liveliness checking to help
1632      debug some odd errors.
1633    * Added a pair of summary stats for bandwidth usage, allowing easy export
1634      with the other stats ("bw.sendBps" and "bw.receiveBps")
1635    * Trimmed another memory allocation on message reception.
16372004-10-08  jrandom
1638    * Revamp the AESInputStream so it doesn't allocate any temporary objects
1639      during its operation.
16412004-10-08  jrandom
1642    * Don't kill the establisher threads during a soft restart.
1643    * Attempt to validate the peer's routerInfo earlier during handshaking.
1644    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
1645      during its operation.
16472004-10-07  jrandom
1648    * Reimplement the I2NP reading with less temporary memory allocation.
1649      There is still significant GC churn, especially under load, but this
1650      should help.
1651    * Catch some oddball errors in the transport (message timeout while
1652      establishing).
16542004-10-07  jrandom
1655    * Expire queued messages even when the writer is blocked.
1656    * Reimplement most of the I2NP writing with less temporary memory
1657      allocations (I2NP reading still gobbles memory).
16592004-10-06  jrandom
1660    * Implement an active queue management scheme on the TCP transports,
1661      dropping messages probabalistically as the queue fills up.  The
1662      estimated queue capacity is determined by the rate at which messages
1663      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
1664      we exceed 1/2 of the estimated capacity, we drop messages throughout
1665      the queue probabalistically with regards to their size.  This is based
1666      on RFC 2309's RED, with the minimum threshold set to 1/2 the
1667      estimated connection capacity.  We may want to consider using a send
1668      rate and queue size measured across all connections, to deal with our
1669      own local bandwidth saturation, but we'll try the per-con metrics first.
16712004-10-06  jrandom
1672    * Enable explicit disabling of the systray entirely for windows machines
1673      with strange configurations: add -Dsystray.disable=true to the java
1674      command line.  (thanks mihi!)
16762004-10-05  jrandom
1677    * Allow peers on the same LAN to communicate with each other safely even
1678      when they cannot talk to each other through the external address.
16802004-10-05  jrandom
1681    * Display how much time is left before the graceful shutdown is complete.
1682    * Debug some improperly failed messages on timeout or disconnection.
16842004-10-05  jrandom
1685    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
1686      (thanks mule!)
1687    * Handle some more error conditions regarding abruptly closing sockets
1688      (thanks Jonva!)
16902004-10-04  jrandom
1691    * Update the shitlist to reject a peer for an exponentially increasing
1692      period of time (with an upper bounds of an hour). 
1693    * Various minor stat and debugging fixes
16952004-10-03  jrandom
1696    * Add a new stat logging component to optionally dump the raw stats to
1697      disk as they are generated, rather than rely upon the summarized data.
1698      By default, this is off, but the router property "stat.logFilters" can
1699      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
1700      which will be written to the file "stats.log" (or whatever the property
1701      "stat.logFile" is set to).  This can also log profile related stats,
1702      such as "dbResponseTime" or "tunnelTestResponseTime".
17042004-10-02  jrandom
1705    * Assure that we quickly fail messages bound for shitlisted peers.
1706    * Address a race on startup where the first peer contacted could hang the
1707      router (thanks Romster!)
1708    * Only whine about an intermittent inability to query the time server once
17102004-10-02  jrandom
1711    * Command line utility to verify a peer's reachability - simply run
1712      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
1713      will print out whether that peer is reachable or not (using a simple
1714      verification handshake).
1716* 2004-10-01 released
17182004-10-01  jrandom
1719    * Handle partial reseeds, caused by seeds going away before the download
1720      completes (thanks Sugadude!)
17222004-10-01  jrandom
1723    * Explicitly refuse IPv6 addresses, since only some peers support
1724      them and we want fully reachable peers.
17262004-10-01  jrandom
1727    * Additional error handling for a variety of transport layer errors.
1729* 2004-09-30  0.4.1 released (not backwards compatible)
17312004-09-30  jrandom
1732    * Bundle the configuration necessary to run an eepsite out of the box
1733      with Jetty - simply edit ./eepsite/docroot/index.html and give people
1734      the key listed on the I2PTunnel configuration page, and its up.
1735    * Router console cleanup, and some (off by default) tunnels -
1736      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
1737      irc.baffled.i2p (port 7661)
17392004-09-29  jrandom
1740    * Always wipe the Jetty work directory on startup, so that web updates
1741      are reflected immediately (Jetty does not honor the cache across
1742      multiple executions)
17442004-09-27  jrandom
1745    * Limit the number of connection tags saved to 10,000.  This is a huge
1746      limit, but consumes no more than 1MB of RAM.  For now, we drop them
1747      randomly after reaching that size, forcing those dropped peers to use
1748      a full DH negotiation.
1749    * HTML cleanup in the console.
17512004-09-26  jrandom
1752    * Complete rewrite of the TCP transport with IP autodetection and
1753      low CPU overhead reconnections.  More concise connectivity errors
1754      are listed on the /oldconsole.jsp as well.  The IP autodetection works
1755      by listening to the first person who tells you what your IP address is
1756      when you have not defined one yourself and you have no other TCP
1757      connections.
1758    * Update to the I2NP message format to add transparent verification at
1759      the I2NP level (beyond standard TCP verification).
1760    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
1761      implementation (rather than verifying with E(H(key)), we now verify with
1762      E(H(iv))).
1763    * The above changes are NOT BACKWARDS COMPATIBLE.
1764    * Removed all of the old unused PHTTP code.
1765    * Refactor various methods and clean up some javadoc.
17672004-09-21  jrandom
1768    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
1769      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
1770      but values stored in the later take precedence.  Both are queried on
1771      lookup.
17732004-09-16  jrandom
1774    * Refactor the TCP transport to deal with changing identities gracefully,
1775      and to prevent some wasted effort by keeping track of what host+port
1776      combinations we are connected to (rather than just the identities).  Also
1777      catch a few configuration errors earlier.
1778    * Removed no longer relevent methods from the Transport API that were
1779      exposing ideas that probably shouldn't be exposed.
1780    * Removed the specific files from (relating to script
1781      updates)
17832004-09-13  jrandom
1784    * Update for the SDK reconnection to deal with overflow.
1785    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
1786      rounding on lifetime bandwidth used [thanks gott!]).
1788* 2004-09-08 released
17902004-09-08  jrandom
1791    * Updated the "Active:" peer count to display the # of connections as well
1792      as the number of recently active router identities.
1793    * Implement some basic updating code - on startup, if there is a file named
1794      "" in the I2P installation directory, extract it, delete it,
1795      then restart.
1796    * Added an ugly little script to allow launching the router on win9x
1797      machines without a dos box (using javaw to run a .bat file).
1798    * Logging updates.
1799    * Updated VERSION constants to
18012004-09-08  hypercubus
1802    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
1803      hopefully any other affected *nix systems) now properly discards non-
1804      essential directories after installation.
1805    * Support for Win9x in the installer and postinstall.bat.
1806    * Changed the name of the default installation directory on all platforms
1807      from "I2P" to "i2p" in the installer.
1808    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
1809      other configuration files.
18112004-09-07  cervantes:
1812    * Proxy recursion disabled by default (strict)
1813    * Password Authentication for session commands
1814    * Support for http://path?i2paddresshelper=BASE64
1815    * Support for http://i2p/BASE64/path syntax
18172004-09-07  jrandom
1818    * Make sure that peers placed in the 'fast' group are ones we both know
1819      how to reach and have been able to reach recently.  These peers may
1820      still be placed in the 'high capacity' group however (though that group
1821      is only queried if the 'fast' group is too small)
1822    * Include some updates to the ProgileOrganizer's CLI.
18242004-09-07  jrandom
1825    * Disable the timestamper by default for all applications except the router
1826      (enable via -Dtime.disabled=false)
1827    * Simplify the retrieval of the full destination with text based browsers.
1828    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
18302004-09-07  jrandom
1831    * Write the native libraries to the current directory when they are loaded
1832      from a resource, and load them from that file on subsequent runs (in
1833      turn, we no longer *cough* delete the running libraries...)
1834    * Added support for a graceful restart.
1835    * Added new pseudo-shutdown hook specific to the router, allowing
1836      applications to request tasks to be run when the router shuts down.  We
1837      use this for integration with the service manager, since otherwise a
1838      graceful shutdown would cause a timeout, followed by a forced hard
1839      shutdown.
1840    * Made the capacity calculator a bit more dynamic by not outright ignoring
1841      the otherwise valid capacity data for a period with a single rejected
1842      tunnel (except for the 10 minute period).  In addition, peers with an
1843      equal capacity are ordered by speed rather than by their hashes.
1844    * Cleaned up the SimpleTimer, addressing some threading and synchronization
1845      issues.
1846    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
1847      associated session (unless there are other clients using it), and deal
1848      with a closed session when starting a new I2PTunnel instance.
1849    * Refactoring and logging.
18512004-09-06  jrandom
1852    * Address a race condition in the key management code that would manifest
1853      itself as a corrupt router identity.
1854    * Properly clear old transport addresses from being displayed on the old
1855      console after soft restarts.
1856    * Properly refuse to load the client applications more than once in the
1857      same JVM.
1858    * Added support for a graceful restart (a graceful shutdown followed by a
1859      full JVM restart - useful for restarting client apps).
1860    * More defensive programming, HTML cleanup, logging
1861    * wrapper.config cleanup of duplicate lines
18632004-09-04  jrandom
1864    * Added some basic guards to prevent multiple instances from running.
1865      Specifically, a file "" in the install directory which is
1866      written to once a minute - if that file exists and has been modified
1867      within the last minute, refuse to start up.  In turn, adjust the
1868      service wrapper to wait a minute before restarting a crashed JVM.
1869    * Create a "work" directory in the I2P install dir which Jetty will
1870      use for all of its temporary files.
1871    * Tell the browser not to cache most of the router console's pages.
18732004-09-04  jrandom
1874    * Update the SDK to automatically reconnect indefinitely with an
1875      exponential delay on retries (capped at 5 minutes).
1877* 2004-09-03  0.4 released
18792004-09-03  jrandom
1880    * Updated default wrapper.config to deal with the hard restart option
1881    * Include the history.txt in the /help.jsp page
1882    * HTML updates (wrapper.log, and no more unix scripts)
1883    * Updated VERSION constants to 0.4
18852004-09-03  hypercubus
1886    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
1887    * Temporarily removed install_i2p_service_unix and
1888      uninstall_i2p_service_unix from distribution packages.
1889    * postinstall.bat/ cleans installation directory of all files
1890      not applicable to the host OS.
18922004-09-03  oOo
1893    * Added some filters to the HTTP request, replacing the User-Agent,
1894      Referrer, Via, and From headers, which helps until we have a more
1895      comprehensive filtering system.
18972004-09-03  jrandom
1898    * Disabled the old listener on port 7655.
19002004-09-02  jrandom
1901    * Cleaned up the base build.xml, adding a new target ("updater") which
1902      builds the file i2pupdate.tar.bz2 which can be safely extracted over
1903      existing installs.
19052004-xx-xx  jrandom
1906    * Implemented the new web architecture and router console
1907    * Implemented I2PTunnel web interface, and revamped startup process.
1908    * Revamped peer selection code to address skew.
1909    * Removed all temporary threads from the router and the SDK.
1910    * Bugfix dealing with timeouts and resends.
1911    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
19132004-xx-xx  hypercubus
1914    * Implemented the new installation process.
1915    * Integrated systray
1916    * Integrated service manager
19182004-xx-xx  oOo
1919    * Implemented ?i2paddresshelper= hook
1920    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
19222004-xx-xx  Nightblade
1923    * libSAM updates.
19252004-xx-xx  cervantes
1926    * Imported i2pProxy.pac proxy script in with the build.
1928* 2004-08-20 released
1929* 2004-08-12 released
1930* 2004-08-08 released
1931* 2004-07-29  0.3.4 released
1932* 2004-07-23  0.3.3 released
1933* 2004-07-16 released
1934* 2004-07-14 released
1935* 2004-07-11 released
1936* 2004-07-07  0.3.2 released
1937* 2004-06-25 released
1938* 2004-05-23 released
1939* 2004-05-20 released
1940* 2004-05-13 released
1941* 2004-05-07 released
1942* 2004-04-30  0.3.1 released
1943* 2004-04-20 released
1944* 2004-04-04 released
1945* 2004-03-30 released
1946* 2004-03-25 released
1947* 2004-03-21  0.3.0 released
1948* 2004-03-10 released
1949* 2004-03-04 released
1950* 2004-02-28 released
1951* 2004-02-27 released
1952* 2004-02-25  0.2.5 released
1953* 2004-02-19 released
1954* 2004-02-15 released
1955* 2004-02-14  0.2.4 released
1956* 2004-01-27 released
1957* 2004-01-21 released
1958* 2004-01-14 released
1959* 2003-12-29 released
1960* 2003-12-27 released
1961* 2003-12-25 released
1962* 2003-12-13  0.2.3 released
1963* 2003-12-01  0.2.2 released
1964* 2003-11-18 released
1965* 2003-11-12  0.2.1 released
1966* 2003-11-09 released
1967* 2003-11-08 released
1968* 2003-11-03 released
1969* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.