source: history.txt @ 7e3800a

Last change on this file since 7e3800a was 7e3800a, checked in by zzz <zzz@…>, 12 years ago
  • Reachability:
    • Call the previously unused profile.tunnelTestFailed() (redefined to include a probability argument) and severely downgrade a peer's capacity upon failures, depending on tunnel length and direction. This will help push unreachable and malicious peers out of the High Capacity tier.
    • Put recent fail rate on profiles.jsp
  • ProfileOrganizer?: Logging cleanup
  • eepsite_index.html: Update add-host and jump links
  • HTTP Proxy: Remove trevorreznik jump server from list
  • Property mode set to 100644
File size: 200.6 KB
Line 
12008-05-20 zzz
2    * Reachability:
3      - Call the previously unused profile.tunnelTestFailed()
4        (redefined to include a probability argument)
5        and severely downgrade a peer's capacity upon failures,
6        depending on tunnel length and direction.
7        This will help push unreachable and malicious peers
8        out of the High Capacity tier.
9      - Put recent fail rate on profiles.jsp
10    * ProfileOrganizer: Logging cleanup
11    * eepsite_index.html: Update add-host and jump links
12    * HTTP Proxy: Remove trevorreznik jump server from list
13
142008-05-20 welterde
15    * implemented PrivateKeyFile
16
172008-05-18 zzz
18    * Throttle: Reject tunnels for first 20m uptime (was 10m)
19    * TunnelPeerSelectors:
20       - Re-enable strict ordering of peers,
21         based on XOR distance from a random hash
22       - Restrict peers with uptime < 90m from tunnels (was 2h),
23         which is really 60m due to rounding in netDb publishing.
24    * i2psnark:
25       - Limit max pipelined requests from a single peer to 128KB
26         (was unlimited; i2p-bt default is 5 * 64KB)
27       - Increase max uploaders per torrent to 6 (was 4)
28       - Reduce max connections per torrent to 16 (was 24) to increase
29         unchoke time and reduce memory consumption
30       - Strictly enforce max connections per torrent
31       - Choke more gradually when over BW limit
32    * help.jsp: Add a link to the FAQ
33    * peers.jsp: Fix UDP direction indicators
34    * hosts.txt: Add update.postman.i2p
35
362008-05-12 zzz
37    * Outbound message:
38      - Tweak the cache key for efficiency
39    * Stats:
40      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
41    * Summary bar:
42      - Add messages when dropping tunnel requests due to load
43    * Update Handler:
44      - Add postman to the list
45    * i2psnark:
46      - Randomize the PeerCheckerTask start times to make global limiting
47        work better
48      - Calculate bw limits using 40s rather than 4m averages to make
49        bw limiting work better
50      - Change default bw limit from uplimit/3 to uplimit/2 due to
51        overhead reduction from the leaseset bundling change
52    * libjbigi:
53      - Add documentation on dynamic build option
54      - Add two speed tests to the build script
55      - Clean up the build script, make it easier to build dynamic
56
572008-05-10 zzz
58    * NetDb: Don't write the my.info file to disk, it isn't used for anything
59    * Stats:
60      - Simplify oldstats.jsp if no events in a stat
61      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
62        (caused by an SSU hack)
63    * Update Handler:
64      - Add option to download and verify only
65      - Add distinct error message if version check fails
66
672008-05-09 welterde
68    * Add an update URL to the list
69
702008-05-07 zzz
71    * Reachability:
72      - Restrict peers requiring introducers from inbound tunnels,
73        since it's slow and unreliable... and many of them advertise
74        NTCP, which seems unlikely to work
75      - Provide warning on summary bar if firewalled with inbound NTCP enabled
76    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
77      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
78      at startup (you didn't get any data unless you set the log level anyway)
79    * oldstats.jsp: Don't put 2 decimal places on integer event counts
80    * Remove the Internals link from the menu bar
81    * i2psnark: Extend startup delay from 1 to 3 minutes
82
832008-05-06 welterde
84    * HTTP Proxy: Add i2jump.i2p jump service
85
862008-05-05 zzz
87    * NetDb Stats: Cleanup of commented out stats
88    * Outbound message:
89      - Fix a couple of tunnel cache cleaning bugs
90      - Cache based on source+dest pairs rather than just dest
91      - Send the reply leaseSet only when necessary,
92        rather than all the time (big savings in overhead)
93      - Enable persistent lease selection again
94      - Logging tweaks
95    * Reachability:
96      - Restrict <= .32 SSU-only peers from inbound tunnels,
97        since they don't know if they are unreachable
98      - Have SSU bid aggressively when it has less than 3 peers, so
99        we can determine our IP address and do peer testing.
100        Otherwise a router may never determine its IP address or reachability status.
101    * Summary bar:
102      - Add reachability status
103      - Add participating tunnel acceptance status
104    * Throttle: Reject tunnels for first 10m uptime
105    * I2PTunnel: Change default outproxy to false.i2p
106    * profiles.jsp: Add router version
107
108* 2008-04-26  0.6.1.33 released
109
1102008-04-20 zzz
111    * Outbound message/Reachability:
112      - Fix a bug from -19 causing the persistent lease selection
113        removed in -17 to be back again
114      - Use netDb-listed-unreachable instead of detected-unreachable
115        for exclusion of unreachable peers from selected leases,
116        as there are potential anonymity problems with using
117        detected-unreachable
118      - Tweak logging some more
119    * NetDb stats: Remove a couple more including the inefficient stat_identities
120
1212008-04-17 zzz
122    * Reachability:
123      - Track unreachable peers persistently
124        (i.e. separately from shitlist, and not cleared when they contact us)
125      - Exclude detected unreachable peers from inbound tunnels
126      - Exclude detected unreachable peers from selected leases
127      - Exclude detected unreachable floodfill peers from lookups
128      - Show unreachable status on profiles.jsp
129
1302008-04-16 zzz
131    * SSU/Reachability:
132      - Extend shitlist time from 4-8m to 40-60m
133      - Add some shitlist logging
134      - Don't shitlist twice when unreachable on all transports
135      - Exclude netDb-listed unreachable peers from inbound tunnels;
136        this won't help much since there are very few of these now
137      - Remove 10s delay on inbound UDP connections used for the
138        0.6.1.10 transition
139      - Track and display UDP connection direction on peers.jsp
140      - Show shitlist status in-line on profiles.jsp
141
1422008-04-15 zzz
143    * SSU Reachability/PeerTestManager:
144      - Back out strict peer ordering until we fix SSU
145      - Back out persistent lease selection until we fix SSU
146      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
147      - Increase known Charlie time to 10m; 3m wasn't enough
148      - Don't continue retransmitting peer test if we know Charlie
149      - Don't run multiple peer tests at once
150      - Tighten test frequency range to 6.5-19.5m, was 0-26m
151
1522008-04-12 zzz
153    * Addressbook: Disallow '.-' and '-.' in host names
154    * NTCP: Don't drop a connection unless both directions are idle;
155            Fix idle time for outbound connections
156    * Outbound message: Make sure cached lease is in current leaseSet
157    * Stats: Put all NetworkDatabase stats in same group
158    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
159    * i2psnark: Add locking to prevent two I2CP connections
160
1612008-04-07 zzz
162    * i2psnark:
163      - Implement upstream bandwidth limiting
164      - Fix a rare NPE at startup/shutdown
165      - Really increase retries for .torrent fetch
166    * profiles.jsp: Minor cleanup
167    * DataHelper: Only format < 5s as ms
168    * Eepget: Fix percentage output on command line eepget retries
169    * Lower partipating message priority from 400 to 200
170    * NTCP: Add a debug message
171    * Outbound message: Minor cleanup
172
1732008-03-30 zzz
174    * ExploratoryPeerSelector: Try NonFailing even more
175    * HostsTxtNamingService: Add reverse lookup support
176    * Outbound message: Minor cleanup
177    * i2psnark TrackerClient: Minor cleanup
178    * checklist.txt: Minor edit
179    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
180    * i2ptunnel.config: Change CVS client to mtn
181    * netdb.jsp: Show leaseSet destinations using reverse lookup
182    * profiles.jsp: First cut at showing floodfill data
183
1842008-03-27 zzz
185    * Send messages for the same destination to the same inbound
186      lease to reduce out-of-order delivery.
187    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
188      for now, as it prevents speed rating of those peers
189
1902008-03-26 zzz
191    * ReseedHandler: Support multiple urls,
192      add netdb.i2p2.de as a 2nd default
193
1942008-03-25 zzz
195    * i2psnark:
196      - Add support for secondary open trackers
197      - Refactor and simplify the TrackerClient code
198      - Add welterde's tracker to the default list
199      - Don't have eepget retry announces
200      - Slow down tracker contacts if they've failed for a while
201      - Add some debug support showing connections (?p=2)
202    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
203
2042008-03-22 zzz
205    * NewsFetcher: Fix bug causing fetch every 10m
206
2072008-03-22 zzz
208    * Tunnel Testing:
209      - Fix counting so it really takes 4 consecutive failures
210        rather than 4 total to remove a tunnel
211      - Credit or blame goes to the exploratory tunnel as well
212        as the tunnel being tested
213      - Adjust tunnel test timeout based on tunnel length
214    * ExploratoryPeerSelector: Tweak logging
215    * ProfileOrganizer: Adjust integration calculation again
216    * build.xml: Add to help
217    * checklist.txt: Tweak
218    * readme.html: Fix forum links
219    * netDb: Remove tunnel.testFailedTime
220
2212008-03-19 zzz
222    * ExploratoryPeerSelector:
223      - Exclude floodfill peers
224      - Tweak the HighCap vs. NonFailing decision; try NonFailing
225        at least a minimum % of the time
226    * i2psnark: Increase retries for .torrent fetch
227    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
228      containing an IP
229    * readme.html: Reorder some items
230    * Stats: Add some more required stats
231    * Streaming lib: Fix slow start to be exponential growth,
232      fix congestion avoidance to be linear growth.
233      Should speed up local connections a lot, and remote
234      connections a little.
235
2362008-03-14 zzz
237    * Floodfill Search:
238       - Prefer heard-from, unfailing, unshitlisted floodfill peers
239
2402008-03-14 zzz
241    * ProfileOrganizer:
242       - Use more recent stats to calculate integration
243       - Show that fast peers are also high-capacity on profiles.jsp
244    * readme.html: Update Syndie link
245    * TunnelPool: Update comments
246    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
247      get rid of the 60s tunnel stats
248      (effective as of .33 to provide cover)
249
2502008-03-13 zzz
251    * Floodfill Search:
252       - Fix a bug that caused a single FloodfillOnlySearchJob
253         instance to be run multiple times, with unpredictable
254         results
255       - Select ff peers randomly to improve reliability
256       - Add some bulletproofing
257
2582008-03-11 zzz
259    * ProfileOrganizer:
260       - Don't require a peer to be high-capacity to be
261         well-integrated (not used for anything right now,
262         but want to get it right for possible floodfill verification)
263       - Don't fall back to median for high-capacity threshold
264         if the mean is higher than the median, this prevents
265         frequent large high-capacity counts
266       - Fix high-capacity selector that picked one too many
267    * Console: put well-integrated count back in the summary
268
2692008-03-10 zzz
270    * EepGet: Fix byte count for bytesTransferred status listeners
271      (fixes command line status)
272    * UpdateHandler:
273       - Fix byte count display
274       - Display final status on router console
275       - Don't allow multiple update jobs to queue up
276       - Increase max retries
277       - Code cleanup
278       - Don't show 'check for update' button when update in progress
279       - Enhance error messages
280    * NetDb: Comment out published netDb stats disabled for .32
281
2822008-03-08 zzz
283    * TunnelPeerSelectors: Implement strict ordering of peers,
284      based on XOR distance from a random hash
285      separately generated for each tunnel pool
286
2872008-03-07 zzz
288    * Naming: Optimize lookups for a destkey
289    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
290      - Prevent peers with matching IPs from joining same tunnel.
291        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
292        Default is 2 (disallow routers in same /16).
293        Set with router.defaultPool.IPRestriction=x
294      - Comment out unused RebuildPeriod pool setting
295      - Add random key to pool in preparation for XOR peer ordering
296    * SusiMail: Add 'Create Account' link
297    * TunnelDispatcher: Change a common wtf error to a warn
298
2992008-03-05 zzz
300    * Naming: Make HostsTxt the sole default NamingService
301      (was Meta = PetName + HostsTxt)
302    * Naming: Add two new experimental NamingServices, EepGet and Exec,
303      not enabled by default -
304      see source comments in core/java/src/net/i2p/client/naming
305      for configuration instructions
306    * i2psnark: Don't do a naming lookup for Base64 destkeys
307    * i2psnark: Add a StartAll button
308    * Stats: Add code to disable most stats to save memory.
309      Set on configstats.jsp or set stat.full=false to disable the stats.
310      (true by default for now)
311
3122008-03-09 Complication
313    * Give the Jetty build file ability to ask permission
314      before downloading the Jetty archive from the web,
315      and to verify its SHA1 + MD5 hashes. Adjust the main build file
316      in accordance with this change.
317    * Improve the release checklist.
318
319* 2008-03-09  0.6.1.32 released
320
3212008-03-07 zzz
322    * Update news and version numbers
323
3242008-03-01 zzz
325    * Fix netdb.knownLeaseSets count reported by floodfill routers
326      (was broken by -3)
327
3282008-02-27 zzz
329    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
330    * i2psnark: Remove orion and gaytorrents from default tracker list
331    * Remove orion from jump list and from eepsite_index.html
332    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
333    * Capitalize OutboundMessageDistributor job name
334    * TunnelPool: Add a warning if all tunnels are backlogged
335
3362008-02-26 zzz
337    * Reintroduce NTCP backlog pushback, with switch back to
338      previous tunnel when no longer backlogged
339    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
340    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
341
3422008-02-21 zzz
343    * Raise inbound default bandwidth to 32KBps
344    * Fix config.jsp that showed 0KBps share bandwidth by default
345
3462008-02-19 zzz
347    * Addressbook: Disallow '--' in host names except in IDN,
348      add some reserved host names
349    * I2PTunnel: Clarify edit form
350    * NetDb: Remove many stats from netDb, effective as of .32
351    * profiles.jsp: Display capabilities
352    * Tunnels: Enforce max tunnel length of 8, catch an index error
353      http://forum.i2p/viewtopic.php?t=2561
354
3552008-02-16 zzz
356    * Fix race in TunnelDispatcher which caused
357      participating tunnel count to seesaw -
358      should increase network capacity
359    * Leave participating tunnels in 10s batches for efficiency
360    * Update participating tunnel ratestat when leaving a tunnel too,
361      to generate a smoother graph
362    * Fix tunnel.participatingMessageCount stat to include all
363      participating tunnels, not just outbound endpoints
364    * Simplify Expire Tunnel job name
365
3662008-02-13 zzz
367    * PersistentDataStore: Write out 300 records every 10 min
368      rather than 1 every 10 sec;
369      Don't store leasesets to disk or read them in
370    * Combine rates for pools with the same length setting
371      in the new tunnel build algorithm
372    * Clarify a log message in the UpdateHandler
373
3742008-02-13 zzz
375    * Make graphs clickable to get larger graphs
376    * Change SimpleTimer CRIT to a WARN, increase threshold
377    * Checklist update
378
3792008-02-11 welterde
380    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
381
3822008-02-10 zzz
383    * Add new tunnel build algorithm (preliminary)
384    * Change NTCP backlogged message from error to warning
385    * Checklist updates
386
387* 2008-02-10  0.6.1.31 released
388
3892008-02-10 Complication
390    * Update news and version numbers
391
3922008-02-06 zzz
393    * build.xml: Add some apps to javadoc
394    * checklist.txt: Add some things
395    * news.xml: make links relative
396    * runplain.sh: Add some comments
397    * wrapper.config: Add some comments
398
3992008-02-05 Complication
400    * Change the dates too (sorry for such forgetfulness!)
401
4022008-02-04 Complication
403    * Also use the new key for checking, and add it into news.xml
404
4052008-02-04 Complication
406    * Added my release signing key into TrustedUpdate.java
407
4082008-01-31 zzz
409    * NewsFetcher: Change fetch failed from error to warning
410    * installer: Fix URL and "email"
411    * checklist.txt: New release checklist
412
4132008-01-29 zzz
414    * Addressbook: Change default subscription
415    * ConfigUpdateHandler: Change default news URL
416    * initialNews.xml: Update version to .31
417    * news.xml: More updates
418    * hosts.txt: Add i2p-projekt.i2p
419    * readme.html: More URL updates
420    * SusiDNS: Change references to default subscription
421
4222008-01-28 zzz
423    * news.xml: Updates, still preliminary
424    * ReseedHandler: Change default URL
425    * i2ptunnel.config: Change default outproxies
426    * readme.html: Change *.i2p.net URLs
427    * help.jsp: Change *.i2p.net URLs
428    * eepsite_index.html: Change stats.i2p addressbook subscription URL
429    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
430
431* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
432
4332008-01-08 zzz
434    * addressbook: Limit size of subscribed hosts.txt,
435        don't save old etag or last-modified data
436    * EepGet: Add some logging,
437        enforce size limits even when size not in returned header,
438        don't return old etag or last-modified data,
439        don't call transferFailed listener more than once
440    * Sign my update signing key
441    * NewsFetcher: add last-modified support, reduce number of retries
442    * Error pages: add icon and logo,
443        clarify 'destination not found' and 'proxy not found' pages
444
4452008-01-07 zzz
446    * profiles.jsp formatting cleanup
447    * NTCP: Reduce max idle time from 60m to 20m
448    * NTCP: Fix idle time on connections with zero messages,
449      correctly drop these connections
450
4512008-01-03 zzz
452    * addressbook: Do basic validation of hostnames and destkeys
453    * susidns: Add support for the private addressbook,
454      update the text and links somewhat
455
4562008-01-02 zzz
457    * Add stats.i2p to the jump list
458    * Impose 20MB limit on POSTs and catch OOMs in POST
459    * eepsite_index.html: add stats.i2p services
460    * addressbook: log source of new keys; disallow dests > 516 bytes
461    * addressbook: convert hostnames to lower case to prevent duplicates
462    * susidns: generalize references to orion
463
4642007-12-29 zzz
465    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
466    * Allow commas in router.trustedUpdateKeys and router.updateURL again
467    * Change default news host from dev.i2p.net to dev.i2p
468    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
469
4702007-12-28 zzz
471    * Add zzz's update signing key
472
4732007-12-26 Complication
474    * Improve reseed handler (less repetitive code,
475      avoid reporting errors when less than 10% of fetches fail)
476
4772007-12-26 Complication
478    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
479      and unescape them in DataHelper.loadProps() to support
480      saving and loading config properties with line breaks
481    * Change the update URLs textbox into a textarea like keys have,
482      so different URLs go on different lines
483    * Modify TrustedUpdate to provide a method which supplies a key list
484      delimited with CR LF line breaks
485    * Modify DEFAULT_UPDATE_URL to supply a default URL list
486      delimited with CR LF line breaks
487    * Modify selectUpdateURL() to handle URL lists
488      delimited by any kind of line breaks
489    * Start saving trusted update keys
490    * Improve formatting on configupdate.jsp
491
4922007-12-22 zzz
493    * Add support for multiple update URLs
494    * Change default for update to use i2p proxy,
495      add several URLs as defaults
496    * Enable trusted key form on configupdate.jsp
497    * Clarify the 'destination not found' error page
498
4992007-12-16 zzz
500    * i2psnark: remove anonymitytracker from default list
501
5022007-12-10 zzz
503    * Fix NPE in CLI TrustedUpdate keygen
504
5052007-12-02 Complication
506    * Commit SAM v2 patch from mkvore (thank you!)
507    * Minor reformatting to preserve consistent whitespace
508      in old SAM classes (new classes unaltered)
509
5102007-12-01 Complication
511    * Separate the checks "does Jetty .zip file need downloading"
512      and "does Jetty .zip file need extracting" in the Jetty buildfile.
513      First download (unless already done), then extract (unless done).
514
5152007-11-26 zzz
516    * i2psnark: add timeout for receive inactivity
517
5182007-11-24 zzz
519    * i2psnark: increase streaming lib write timeout to 240 sec and change
520      timeout action from "ping" to "disconect", as the fix in .30 to
521      honor options on outbound connections led to hung outbound connections
522      (bitfield never transmitted, connection never dropped)
523
5242007-11-06 jrandom
525    * add i2host.i2p to the jump list
526
5272007-10-11 zzz
528    * IRC Proxy: Fix several possible anonymity holes:
529      - Block CTCP in NOTICE messages
530      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
531      - Check for lower case commands
532    (Thanks sponge!)
533
5342007-10-07  jrandom
535    * back out the NTCP backlog pushback, as it could be used to mount an
536      active anonymity attack.
537
538* 2007-10-07  0.6.1.30 released
539
5402007-10-07  Complication
541    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
542      broke retrying.
543
5442007-09-27  zzz
545    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
546    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
547      fix some of the sorting
548
5492007-09-22  zzz
550    * Send messages for the same destination out the same outbound
551      tunnel to reduce out-of-order delivery.
552
5532007-09-19  zzz
554    * i2psnark: Fix broken multifile torrent Delete;
555        cleanup Storage resources in AddTorrent;
556        don't autostart torrent after Create
557
5582007-09-18  zzz
559    * eepsite_index.html: Add links to trevorreznik address book
560    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
561    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
562    * i2psnark: Don't make outbound connections to already-connected peers
563    * i2psnark: Debug logging cleanup
564
5652007-09-14  zzz
566    * eepget: Increase header timeout to 45s
567    * HTTP proxy: Return a better error message for localhost requests
568    * tunnels: Fix PooledTunnelCreatorConfig memory leak
569
5702007-09-09  zzz
571    * eepget: Add support for Last-Modified and If-Modified-Since
572    * addressbook: Finish incomplete support for Last-Modified
573
5742007-09-08  zzz
575    * eepget: Copy over SocketTimeout.java file from syndie
576
5772007-09-07  jrandom
578    * eepget: Merge timeout support from syndie
579
580* 2007-08-23  0.6.1.29 released
581
5822007-08-12  zzz
583    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
584      tweak the eepsite and troubleshooting sections
585
5862007-08-11  zzz
587    * Add stats for individual tunnel rates (nice when graphed)
588    * i2psnark: Fix outbound tunnel nickname
589
5902007-08-05  Complication
591    * Update the sharing calculator on config.jsp
592      and explain the trade-off even more thoroughly.
593
5942007-08-04  Complication
595    * Lower the threshold between the K and L bandwidth class,
596      so that K is now < 12 KB/s, instead of <= 16 KB/s.
597      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
598      participate in routing, if they keep the default share percentage.
599
6002007-07-16  zzz
601    * i2psnark: Add tooltip info for choked/uninterested
602
6032007-07-16  zzz
604    * Make selection of graphed data configurable via configstats.jsp,
605      remove most of the default graphs to save some memory
606
6072007-07-15  zzz
608    * Add current values to graph legends
609    * Fix up previous Rate fix to check for divide by zero
610
6112007-07-14  Complication
612    * Take the post-download routerInfo size check back out of ReseedHandler,
613      since it wasn't helpful, and a lower limit caused false warnings.
614    * Give EepGet ability to enforce a min/max HTTP response size.
615    * Enforce a maximum response size of 8 MB when ReseedHandler
616      downloads into a ByteArrayOutputStream.
617    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
618      change invocation from RouterConsoleRunner accordingly.
619    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
620      provide status reports to indicate the progress of reseeding.
621    * Enable icon for default eepsite, and the index page
622      of the router console (more later).
623
6242007-07-14  zzz
625    * Clean up graphs.jsp - set K=1024 where appropriate,
626      output image sizes in html, catch ooms, other minor tweaks
627    * Fix current event count truncation which fixes graphs with low
628      60-sec event counts displaying high values
629      (bw.* and router.* graphs for example were 1.5x too high)
630      Affects all "events per period" (non-lifetime) counts.
631
6322007-07-09  zzz
633    * i2psnark: give a better error message for a non-i2p torrent
634
6352007-07-07  zzz
636    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
637      SSU will notify/restart NTCP when the external address changes.
638      Now you can enable inbound TCP without a static IP or dyndns service.
639
6402007-07-04  zzz
641    * Display calculated share bandwidth and remove load testing
642      on config.jsp
643
6442007-07-01  zzz
645    * Replace broken option i2np.udp.alwaysPreferred with
646      i2np.udp.preferred and adjust UDP bids; possible settings are
647      "false" (default), "true", and "always".
648      Default setting results in same behavior as before
649      (NTCP is preferred unless it isn't established and UDP is established).
650      Use to compare NTCP and UDP transports.
651
6522007-06-27  jrandom
653    * fix for a streaming lib bug that could leave a thread waiting
654      indefinitely (thanks Complication!)
655
6562007-06-16  Complication
657    * First pass on EepGet and ReseedHandler improvements,
658      please avoid use on routers which matter!
659    * Give EepGet ability of downloading into an OutputStream,
660      such as the ByteArrayOutputStream of ReseedHandler.
661    * Detect failure to reseed better, report it persistently
662      and more verbosely, provide a link to logs
663      and suggest manual reseed.
664
6652007-05-06  Complication
666    * Fix the build.xml file, so the preppkg build target won't try copying files
667      which became deprecated with the old Syndie (thanks for alerting, itsu!)
668
6692007-03-31  zzz
670    * Add trevorreznik jump server to the http proxy error page
671    * Add anonymity to the trackers supporting details links in i2psnark
672
6732007-03-24  zzz
674    * Remove Syndie from build targets and navbar
675
6762007-03-22  zzz
677    * i2psnark tracker handling tweaks:
678    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
679    -   Add Base URL to tracker list configuration
680    -   Web page links built from tracker list Base URLs
681    -   Only build and sort tracker list once
682    -   Add anonymityWeb tracker to default list
683    -   Add tooltip info for TrackerErrs
684    -   Stop torrent if not registered with tracker
685    -   Mark temp files as delete on exit
686
6872007-03-18  zzz
688    * i2psnark: Cleanup some handling of saved partial pieces
689    * i2psnark: Put bit counting in Bitfield.java for efficiency
690    * i2psnark: Save torrent completion state in i2psnark.config
691
692* 2007-03-17  0.6.1.28 released
693
6942007-03-13  zzz
695    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
696
6972007-03-12  jrandom
698    * dodge a race on startup (thanks zzz!)
699
7002007-03-10  zzz
701    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
702      (RFC 2988) to reduce early RTO values
703
7042007-03-08  zzz
705    * i2psnark changes to improve upload performance:
706    *  Implement total uploader limit (10)
707    *  Don't timeout non-piece messages out
708    *  Change chunk size to 32K (was 64K)
709    *  Change request limit to 64K (was 256K)
710    * i2psnark: Disconnect from seeds when complete
711
7122007-03-07  zzz
713    * Remove dynamic router keys from config.jsp
714
7152007-03-07  zzz
716    * Streaming lib changes to improve upstream performance during congestion:
717    *   Change min window size from 12 to 1
718    *   Change max timeout from 10 to 45 sec
719    *   Change initial timeout from 10 to 15 sec
720    *   Change intial window size for i2psnark from 12 to 1
721    *   Change slow start growth rate for i2psnark from 1/2 to 1
722
7232007-03-04  zzz
724    * Update eepsite_index.html
725
7262007-03-03  zzz
727    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
728    * Add a updaterWithJetty build target
729
7302007-03-03  zzz
731    * Implement priority sending for NTCP
732    * Disable trimForOverload() in tunnel BuildExecutor which
733      was preventing tunnel builds when outbound traffic was high
734      (i.e. most of the time when running i2psnark)
735
7362007-02-28  zzz
737    * i2psnark: File reopen cleanup
738
7392007-02-28  zzz
740    * i2psnark: Add peer details to web page
741
742* 2007-02-15  0.6.1.27 released
743
7442007-02-15  jrandom
745    * Limit the whispering floodfill sends to at most 3 randomly
746      chosen from the known floodfill peers
747
7482007-02-14  jrandom
749    * Don't filter out KICK and H(ide oper status) IRC messages
750      (thanks Takk and postman!)
751
7522007-02-13  jrandom
753    * Tell our peers about who we know in the floodfill netDb every
754      6 hours or so, mitigating the situation where peers lose track
755      of floodfill routers.
756    * Disable the Syndie updater (people should use the new Syndie,
757      not this one)
758    * Disable the eepsite tunnel by default
759
7602007-01-30  zzz
761    * i2psnark: Don't hold _snarks lock while checking a snark,
762      so web page is responsive at startup
763
7642007-01-29  zzz
765    * i2psnark: Add NickyB tracker
766
7672007-01-28  zzz
768    * i2psnark: Don't hold sendQueue lock while flushing output,
769      to make everything run smoother
770
7712007-01-27  zzz
772    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
773
7742007-01-20  Complication
775    * Drop overlooked comment
776
7772007-01-20  Complication
778    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
779      instead of System, so setting a reseed URL in advanced configuration has effect.
780    * Clean out obsolete reseed code from ConfigNetHandler.
781
7822007-01-20  zzz
783    * i2psnark: More choking rotation tweaks
784    * Improve performance by not reading in the whole
785      piece from disk for each request. A huge memory savings
786      on 1MB torrents with many peers.
787
7882007-01-17  zzz
789    * Add new HTTP Proxy error message for non-http protocols
790
7912007-01-17  zzz
792    * Add note on Syndie index.html steering people to new Syndie
793
7942007-01-16  zzz
795    * i2psnark: Fix crash when autostart off and
796      tcrrent started manually
797
7982007-01-16  zzz
799    * i2psnark: Fix bug caused by last i2psnark checkin
800      (ConnectionAcceptor not started)
801    * Don't start PeerCoordinator, ConnectionAcceptor,
802      and TrackerClient unless starting torrent
803
8042007-01-15  jrandom
805    * small guard against unnecessary streaming lib reset packets
806      (thanks Complication!)
807
8082007-01-15  zzz
809    * i2psnark: Add 'Stop All' link on web page
810    * Add some links to trackers and forum on web page
811    * Don't start tunnel if 'Autostart' unchecked
812    * Fix torrent restart bug by reopening file descriptors
813
8142007-01-14  zzz
815    * i2psnark: Improvements for torrents with > 4 leechers:
816      choke based on upload rate when seeding, and
817      be smarter and fairer about rotating choked peers.
818    * Handle two common i2psnark OOM situations rather
819      than shutting down the whole thing.
820    * Fix reporting to tracker of remaining bytes for
821      torrents > 4GB (but ByteMonsoon still has a bug)
822
8232006-10-29  zzz
824    * i2psnark: Fix and enable generation of multifile torrents,
825      print error if no tracker selected at create-torrent,
826      fix stopping a torrent that hasn't started successfully,
827      add eBook and GayTorrents trackers to form,
828      web page formatting tweaks
829
830* 2006-10-10  0.6.1.26 released
831
8322006-10-29  Complication
833    * Ensure we get NTP samples from more diverse sources
834      (0.pool.ntp.org, 1.pool.ntp.org, etc)
835    * Discard median-based peer skew calculator as framed average works,
836      and adjusting its percentage can make it behave median-like
837    * Require more data points (from at least 20 peers)
838      before considering a peer skew measurement reliable
839
8402006-10-10  jrandom
841    * Removed the status display from the console, as its more confusing
842      than informative (though the content is still displayed in the HTML)
843
8442006-10-08  Complication
845    * Add a framed average peer clock skew calculator
846    * Add config property "router.clockOffsetSanityCheck" to determine
847      if NTP-suggested clock offsets get sanity checked (default "true")
848    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
849      by more than 5 seconds, or make it more than 20 seconds total
850    * Decrease log level in getMedianPeerClockSkew()
851
8522006-09-29  zzz
853    * i2psnark: Second try at synchronization fix - synch addRequest()
854      completely rather than just portions of it and requestNextPiece()
855
8562006-09-27  jrandom
857    * added HMAC-SHA256
858    * properly use CRLF with EepPost
859    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
860    * PBE session key generation (with 1000 rounds of SHA256)
861    * misc SDK helper functions
862
8632006-09-26  Complication
864    * Take back another inadverent logging change in NTCPConnection
865
8662006-09-26  Complication
867    * Take back an accidental log level change
868
8692006-09-26  Complication
870    * Subclass from Clock a RouterClock which can access router transports,
871      with the goal of developing it to second-guess NTP results
872    * Make transports report clock skew in seconds
873    * Adjust renderStatusHTML() methods accordingly
874    * Show average for NTCP clock skews too
875    * Give transports a getClockSkews() method to report clock skews
876    * Give transport manager a getClockSkews() method to aggregate results
877    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
878      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
879    * Extra explicitness in NTCP classes to denote unit of time.
880    * Fix some places in NTCPConnection where milliseconds and seconds were confused
881
8822006-09-25  zzz
883    * i2psnark: Paranoid copy before writing pieces,
884      recheck files on completion, redownload bad pieces
885    * i2psnark: Don't contact tracker as often when seeding
886
8872006-09-24  zzz
888    * i2psnark: Add some synchronization to prevent rare problem
889      after restoring orphan piece
890
8912006-09-20  zzz
892    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
893      rapid choke/unchokes
894    * i2psnark: Truncate long TrackerErr messages on web page
895
8962006-09-16  zzz
897    * i2psnark: Implement retransmission of requests. This
898      eliminates one cause of complete stalls with a peer.
899      This problem is common on torrents with a small number of
900      active peers where there are no choke/unchokes to kickstart things.
901
9022006-09-13  zzz
903    * i2psnark: Fix restoral of partial pieces broken by last patch
904
9052006-09-13  zzz
906    * i2psnark: Mark a peer's requests as unrequested on disconnect,
907      preventing premature end game
908    * i2psnark: Randomize selection of next piece during end game
909    * i2psnark: Don't restore a partial piece to a peer that is already working on it
910    * i2psnark: strip ".torrent" on web page
911    * i2psnark: Limit piece size in generated torrent to 1MB max
912
9132006-09-09  zzz
914    * i2psnark: Add "Stalled" indication and stat totals on web page
915
9162006-09-09  zzz
917    * i2psnark: Fix bug where new peers would always be sent an "interested"
918      regardless of actual interest
919    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
920      memory and efficiency problems
921
922* 2006-09-09  0.6.1.25 released
923
9242006-09-08  jrandom
925    * Tweak the PRNG logging so it only displays error messages if there are
926      problems
927    * Disable dynamic router keys for the time being, as they don't offer
928      meaningful security, may hurt the router, and makes it harder to
929      determine the network health.  The code to restart on SSU IP change is
930      still enabled however.
931    * Disable tunnel load testing, leaning back on the tiered selection for
932      the time being.
933    * Spattering of bugfixes
934
9352006-09-07  zzz
936    * i2psnark: Increase output timeout from 2 min to 4 min
937    * i2psnark: Orphan debug msg cleanup
938    * i2psnark: More web rate report cleanup
939
9402006-09-05  zzz
941    * i2psnark: Implement basic partial-piece saves across connections
942    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
943      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
944      code in i2psnark ineffective. Will have to research why there is transmit but
945      not receive inactivity code. With the current connection limit of 24 peers
946      we aren't in any danger of keeping out new peers by keeping inactive ones.
947    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
948    * i2psnark: Fix dropped chunk handling
949    * i2psnark: Web rate report cleanup
950
9512006-09-04  zzz
952    * i2psnark: Report cleared trackerErr immediately
953    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
954    * i2psnark: Set up new connections more quickly
955    * i2psnark: Don't delay tracker fetch when setting up lots of connections
956    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
957
9582006-09-04  zzz
959    * Enable pipelining in i2psnark
960    * Make i2psnark tunnel default be 1 + 0-1
961
9622006-09-03  zzz
963    * Add rate reporting to i2psnark
964
9652006-09-03  Complication
966    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
967    * Print messages about addressbook size to give better overview
968    * Enable delete function in published addressbook
969
9702006-08-21  Complication
971    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
972
9732006-08-03  jrandom
974    * Decrease the recently modified tunnel building timeout, though keep
975      the scaling on their processing
976
9772006-07-31  jrandom
978    * Increase the tunnel building timeout
979    * Avoid a rare race (thanks bar!)
980    * Fix the bandwidth capacity publishing code to factor in share percentage
981      and outbound throttling (oops)
982
9832006-07-29  Complication
984    * Treat NTP responses from unexpected stratums like failures
985
986* 2006-07-28  0.6.1.24 released
987
9882006-07-28  jrandom
989    * Don't try to reverify too many netDb entries at once (thanks
990      cervantes and Complication!)
991
9922006-07-28  jrandom
993    * Actually fix the threading deadlock issue in the netDb (removing
994      the synchronized access to individual kbuckets while validating
995      individual entries) (thanks cervantes, postman, frosk, et al!)
996
997* 2006-07-27  0.6.1.23 released
998
9992006-07-27  jrandom
1000    * Cut down NTCP connection establishments once we know the peer is skewed
1001      (rather than wait for full establishment before verifying)
1002    * Removed a lock on the stats framework when accessing rates, which
1003      shouldn't be a problem, assuming rates are created (pretty much) all at
1004      once and merely updated during the lifetime of the jvm.
1005
10062006-07-27  jrandom
1007    * Further NTCP write status cleanup
1008    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1009
10102006-07-26  jrandom
1011    * When dropping a netDb router reference, only accept newer
1012      references as part of the update check
1013    * If we have been up for a while, don't accept really old
1014      router references (published 2 or more days ago)
1015    * Drop router references once they are no longer valid, even if
1016      they were allowed in due to the lax restrictions on startup
1017
10182006-07-26  jrandom
1019    * Every time we create a new router identity, add an entry to the
1020      new "identlog.txt" text file in the I2P install directory.  For
1021      debugging purposes, publish the count of how many identities the
1022      router has cycled through, though not the identities itself.
1023    * Cleaned up the way the multitransport shitlisting worked, and
1024      added per-transport shitlists
1025    * When dropping a router reference locally, first fire a netDb
1026      lookup for the entry
1027    * Take the peer selection filters into account when organizing the
1028      profiles (thanks Complication!)
1029    * Avoid some obvious configuration errors for the NTCP transport
1030      (invalid ports, "null" ip, etc)
1031    * Deal with some small NTCP bugs found in the wild (unresolveable
1032      hosts, strange network discons, etc)
1033    * Send our netDb info to peers we have direct NTCP connections to
1034      after each 6-12 hours of connection uptime
1035    * Clean up the NTCP reading and writing queue logic to avoid some
1036      potential delays
1037    * Allow people to specify the IP that the SSU transport binds on
1038      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1039
1040* 2006-07-18  0.6.1.22 released
1041
10422006-07-18  jrandom
1043    * Add a failsafe to the NTCP transport to make sure we keep
1044      pumping writes when we should.
1045    * Properly reallow 16-32KBps routers in the default config
1046      (thanks Complication!)
1047
10482006-07-16  Complication
1049    * Collect tunnel build agree/reject/expire statistics
1050      for each bandwidth tier of peers (and peers of unknown tiers,
1051      even if those shouldn't exist)
1052
10532006-07-14  jrandom
1054    * Improve the multitransport shitlisting (thanks Complication!)
1055    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1056      the default configuration (thanks for the stats Complication!)
1057    * Properly allow older router references to load on startup
1058      (thanks bar, Complication, et al!)
1059    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1060      hopefully today's changes should make this unnecessary (thanks void!)
1061    * Improved NTCP buffering
1062    * Close NTCP connections if we are too backlogged when writing to them
1063
10642006-07-04  jrandom
1065    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1066      connections only.  Those who configure their NAT/firewall to allow
1067      inbound connections and specify the external host and port
1068      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1069      SSU is still enabled for use by default for all users as a fallback.
1070    * Substantial bugfix to the tunnel gateway processing to transfer
1071      messages sequentially instead of interleaved
1072    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1073      GNU/Classpath based JVMs
1074    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1075      refill with a background thread to refill the output buffer
1076    * Add per-transport support for the shitlist
1077    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1078      contention
1079
10802006-07-01  Complication
1081    * Ensure that the I2PTunnel web interface won't update tunnel settings
1082      for shared clients when a non-shared client is modified
1083      (thanks for spotting, BarkerJr!)
1084
10852006-06-14  cervantes
1086    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1087      that use Bitstream Vera fonts @ 96 dpi
1088
1089* 2006-06-14  0.6.1.21 released
1090
10912006-06-13  jrandom
1092    * Use a minimum uptime of 2 hours, not 4 (oops)
1093
10942006-06-13  jrandom
1095    * Cut down the proactive rejections due to queue size - if we are
1096      at the point of having decrypted the request off the queue, might
1097      as well let it through, rather than waste that decryption
1098
10992006-06-11  Kloug
1100    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1101      outstanding pings/pongs
1102
11032006-06-10  jrandom
1104    * Further reduction in proactive rejections
1105
11062006-06-09  jrandom
1107    * Don't let the pending tunnel request queue grow beyond reason
1108      (letting things sit for up to 30s when they fail after 10s
1109      seems a bit... off)
1110
11112006-06-08  jrandom
1112    * Be more conservative in the proactive rejections
1113
11142006-06-04  Complication
1115    * Trim out sending a blank line before USER in susimail.
1116      Seemed to break in rare cases, thanks for reporting, Brachtus!
1117
1118* 2006-06-04  0.6.1.20 released
1119
11202006-06-04  jrandom
1121    * Reduce the SSU ack frequency
1122    * Tweaked the tunnel rejection settings to reject less aggressively
1123
11242006-05-31  jrandom
1125    * Only send netDb searches to the floodfill peers for the time being
1126    * Add some proof of concept filters for tunnel participation.  By default,
1127      it will skip peers with an advertised bandwith of less than 32KBps or
1128      an advertised uptime of less than 2 hours.  If this is sufficient, a
1129      safer implementation of these filters will be implemented.
1130
1131* 2006-05-18  0.6.1.19 released
1132
11332006-05-18  jrandom
1134    * Made the SSU ACKs less frequent when possible
1135
11362006-05-17  Complication
1137    * Fix some oversights in my previous changes:
1138      adjust some loglevels, make a few statements less wasteful,
1139      make one comparison less confusing and more likely to log unexpected values
1140
11412006-05-17  jrandom
1142    * Make the peer page sortable
1143    * SSU modifications to cut down on unnecessary connection failures
1144
11452006-05-16  jrandom
1146    * Further shitlist randomizations
1147    * Adjust the stats monitored for detecting cpu overload when dropping new
1148      tunnel requests
1149
11502006-05-15  jrandom
1151    * Add a load dependent throttle on the pending inbound tunnel request
1152      backlog
1153    * Increased the tunnel test failure slack before killing a tunnel
1154
11552006-05-13  Complication
1156    * Separate growth factors for tunnel count and tunnel test time
1157    * Reduce growth factors, so probabalistic throttle would activate
1158    * Square probAccept values to decelerate stronger when far from average
1159    * Create a bandwidth stat with approximately 15-second half life
1160    * Make allowTunnel() check the 1-second bandwidth for overload
1161      before doing allowance calculations using 15-second bandwidth
1162    * Tweak the overload detector in BuildExecutor to be more sensitive
1163      for rising edges, add ability to initiate tunnel drops
1164    * Add a function to seek and drop the highest-rate participating tunnel,
1165      keeping a fixed+random grace period between such drops.
1166      It doesn't seem very effective, so disabled by default
1167      ("router.dropTunnelsOnOverload=true" to enable)
1168
11692006-05-11  jrandom
1170    * PRNG bugfix (thanks cervantes and Complication!)
1171
1172* 2006-05-09  0.6.1.18 released
1173
11742006-05-09  jrandom
1175    * Further tunnel creation timeout revamp
1176
11772006-05-07  Complication
1178    * Fix problem whereby repeated calls to allowed() would make
1179      the 1-tunnel exception permit more than one concurrent build
1180
11812006-05-06  jrandom
1182    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1183      while tracking the extended timeout events.
1184
11852006-05-04  jrandom
1186    * Short circuit a highly congested part of the stat logging unless its
1187      required (may or may not help with a synchronization issue reported by
1188      andreas)
1189
11902006-05-03  Complication
1191    * Allow a single build attempt to proceed despite 1-minute overload
1192      only if the 1-second rate shows enough spare bandwidth
1193      (e.g. overload has already eased)
1194
11952006-05-02  Complication
1196    * Correct a misnamed property in SummaryHelper.java
1197      to avoid confusion
1198    * Make the maximum allowance of our own concurrent
1199      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1200      within the fixed range 2..10
1201    * While overloaded, try to avoid completely choking our own build attempts,
1202      instead prefer limiting them to 1
1203
12042006-05-01  jrandom
1205    * Adjust the tunnel build timeouts to cut down on expirations, and
1206      increased the SSU connection establishment retransmission rate to
1207      something less glacial.
1208    * For the first 5 minutes of uptime, be less aggressive with tunnel
1209      exploration, opting for more reliable peers to start with.
1210
12112006-05-01  jrandom
1212    * Fix for a netDb lookup race (thanks cervantes!)
1213
12142006-04-27  jrandom
1215    * Avoid a race in the message reply registry (thanks cervantes!)
1216
12172006-04-27  jrandom
1218    * Fixed the tunnel expiration desync code (thanks Complication!)
1219
1220* 2006-04-23  0.6.1.17 released
1221
12222006-04-19  jrandom
1223    * Adjust how we pick high capacity peers to allow the inclusion of fast
1224      peers (the previous filter assumed an old usage pattern)
1225    * New set of stats to help track per-packet-type bandwidth usage better
1226    * Cut out the proactive tail drop from the SSU transport, for now
1227    * Reduce the frequency of tunnel build attempts while we're saturated
1228    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1229
1230* 2006-04-15  0.6.1.16 released
1231
12322006-04-15  jrandom
1233    * Adjust the proactive tunnel request dropping so we will reject what we
1234      can instead of dropping so much (but still dropping if we get too far
1235      overloaded)
1236
12372006-04-14  jrandom
1238    * 0 isn't very random
1239    * Adjust the tunnel drop to be more reasonable
1240
12412006-04-14  jrandom
1242    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1243    * Made the bw-related tunnel join throttle much simpler
1244
12452006-04-14  jrandom
1246    * Make some more stats graphable, and allow some internal tweaking on the
1247      tunnel pairing for creation and testing.
1248
1249* 2006-04-13  0.6.1.15 released
1250
12512006-04-12  jrandom
1252    * Added a further failsafe against trying to queue up too many messages to
1253      a peer.
1254
12552006-04-12  jrandom
1256    * Watch out for failed syndie index fetches (thanks bar!)
1257
12582006-04-11  jrandom
1259    * Throttling improvements on SSU - throttle all transmissions to a peer
1260      when we are retransmitting, not just retransmissions.  Also, if
1261      we're already retransmitting to a peer, probabalistically tail drop new
1262      messages targetting that peer, based on the estimated wait time before
1263      transmission.
1264    * Fixed the rounding error in the inbound tunnel drop probability.
1265
12662006-04-10  jrandom
1267    * Include a combined send/receive graph (good idea cervantes!)
1268    * Proactively drop inbound tunnel requests probabalistically as the
1269      estimated queue time approaches our limit, rather than letting them all
1270      through up to that limit.
1271
12722006-04-08  jrandom
1273    * Stat summarization fix (removing the occational holes in the jrobin
1274      graphs)
1275
12762006-04-08  jrandom
1277    * Process inbound tunnel requests more efficiently
1278    * Proactively drop inbound tunnel requests if the queue before we'd
1279      process it in is too long (dynamically adjusted by cpu load)
1280    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1281      proactively drop too many requests.
1282    * Display the number of pending inbound tunnel join requests on the router
1283      console (as the "handle backlog")
1284    * Include a few more stats in the default set of graphs
1285
12862006-04-06  jrandom
1287    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1288
12892006-04-06  jrandom
1290    * Fixed a typo in the reply cleanup code
1291
1292* 2006-04-05  0.6.1.14 released
1293
12942006-04-05  jrandom
1295    * Cut down on the time that we allow a tunnel creation request to sit by
1296      without response, and reject tunnel creation requests that are lagged
1297      locally.  Also switch to a bounded FIFO instead of a LIFO
1298    * Threading tweaks for the message handling (thanks bar!)
1299    * Don't add addresses to syndie with blank names (thanks Complication!)
1300    * Further ban clearance
1301
13022006-04-05  jrandom
1303    * Fix during the ssu handshake to avoid an unnecessary failure on
1304      packet retransmission (thanks ripple!)
1305    * Fix during the SSU handshake to use the negotiated session key asap,
1306      rather than using the intro key for more than we should (thanks ripple!)
1307    * Fixes to the message reply registry (thanks Complication!)
1308    * More comprehensive syndie banning (for repeated pushes)
1309    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1310      testing purposes
1311    * Put a floor back on the capacity threshold, so too many failing peers
1312      won't cause us to pick very bad peers (unless we have very few good
1313      ones)
1314    * Bugfix to cut down on peers using introducers unneessarily (thanks
1315      Complication!)
1316    * Reduced the default streaming lib message size to fit into a single
1317      tunnel message, rather than require 5 tunnel messages to be transferred
1318      without loss before recomposition.  This reduces throughput, but should
1319      increase reliability, at least for the time being.
1320    * Misc small bugfixes in the router (thanks all!)
1321    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1322
13232006-04-01  jrandom
1324    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1325    * Filter the IRC ping/pong messages, as some clients send unsafe
1326      information in them (thanks aardvax and dust!)
1327
13282006-03-30  jrandom
1329    * Substantially reduced the lock contention in the message registry (a
1330      major hotspot that can choke most threads).  Also reworked the locking
1331      so we don't need per-message timer events
1332    * No need to have additional per-peer message clearing, as they are
1333      either unregistered individually or expired.
1334    * Include some of the more transient tunnel throttling
1335
1336* 2006-03-26  0.6.1.13 released
1337
13382006-03-25  jrandom
1339    * Added a simple purge and ban of syndie authors, shown as the
1340      "Purge and ban" button on the addressbook for authors that are already
1341      on the ignore list.  All of their entries and metadata are deleted from
1342      the archive, and the are transparently filtered from any remote
1343      syndication (so no user on the syndie instance will pull any new posts
1344      from them)
1345    * More strict tunnel join throtting when congested
1346
13472006-03-24  jrandom
1348    * Try to desync tunnel building near startup (thanks Complication!)
1349    * If we are highly congested, fall back on only querying the floodfill
1350      netDb peers, and only storing to those peers too
1351    * Cleaned up the floodfill-only queries
1352
13532006-03-21  jrandom
1354    * Avoid a very strange (unconfirmed) bug that people using the systray's
1355      browser picker dialog could cause by disabling the GUI-based browser
1356      picker.
1357    * Cut down on subsequent streaming lib reset packets transmitted
1358    * Use a larger MTU more often
1359    * Allow netDb searches to query shitlisted peers, as the queries are
1360      indirect.
1361    * Add an option to disable non-floodfill netDb searches (non-floodfill
1362      searches are used by default, but can be disabled by adding
1363      netDb.floodfillOnly=true to the advanced config)
1364
13652006-03-20  jrandom
1366    * Fix to allow for some slack when coalescing stats
1367    * Workaround some oddball errors
1368
13692006-03-18  jrandom
1370    * Added a new graphs.jsp page to show all of the stats being harvested
1371
13722006-03-18  jrandom
1373    * Made the netDb search load limitations a little less stringent
1374    * Add support for specifying the number of periods to be plotted on the
1375      graphs - e.g. to plot only the last hour of a stat that is averaged at
1376      the 60 second period, add &periodCount=60
1377
13782006-03-17  jrandom
1379    * Add support for graphing the event count as well as the average stat
1380      value (done by adding &showEvents=true to the URL).  Also supports
1381      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1382      the title (&hideTitle=true).
1383    * Removed an unnecessary arbitrary filter on the profile organizer so we
1384      can pick high capacity and fast peers more appropriately
1385
13862006-03-16  jrandom
1387    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1388      console.  Selected stats can be harvested automatically and fed into
1389      in-memory RRD databases, and those databases can be served up either as
1390      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1391      details).  A base set of stats are harvested by default, but an
1392      alternate list can be specified by setting the 'stat.summaries' list on
1393      the advanced config.  For instance:
1394      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1395    * HTML tweaking for the general config page (thanks void!)
1396    * Odd NPE fix (thanks Complication!)
1397
13982006-03-15  Complication
1399    * Trim out an old, inactive IP second-guessing method
1400      (thanks for spotting, Anonymous!)
1401
14022006-03-15  jrandom
1403    * Further stat cleanup
1404    * Keep track of how many peers we are actively trying to communicate with,
1405      beyond those who are just trying to communicate with us.
1406    * Further router tunnel participation throttle revisions to avoid spurious
1407      rejections
1408    * Rate stat display cleanup (thanks ripple!)
1409    * Don't even try to send messages that have been queued too long
1410
14112006-03-05  zzz
1412    * Remove the +++--- from the logs on i2psnark startup
1413
14142006-03-05  jrandom
1415    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1416    * Give netDb lookups to floodfill peers more time, as they are much more
1417      likely to succeed (thereby cutting down on the unnecessary netDb
1418      searches outside the floodfill set)
1419    * Fix to the SSU IP detection code so we won't use introducers when we
1420      don't need them (thanks Complication!)
1421    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1422      peers given to it
1423    * Don't let netDb searches wander across too many peers
1424    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1425      as its too volatile to have much meaning.
1426    * Don't bork if a Syndie post is missing an entry.sml
1427
14282006-03-05  Complication
1429    * Reduce exposed statistical information,
1430      to make build and uptime tracking more expensive
1431
14322006-03-04  Complication
1433    * Fix the announce URL of orion's tracker in Snark sources
1434
14352006-03-03  Complication
1436    * Explicit check for an index out of bounds exception while parsing
1437      an inbound IRC command (implicit check was there already)
1438
14392006-03-01  jrandom
1440    * More aggressive tunnel throttling as we approach our bandwidth limit,
1441      and throttle based off periods wider than 1 second.
1442    * Included Doubtful Salmon's syndie stylings (thanks!)
1443
14442006-02-27  zzz
1445    * Update error page templates to add \r, Connection: close, and
1446      Proxy-connection: close to headers.
1447
1448* 2006-02-27  0.6.1.12 released
1449
14502006-02-27  jrandom
1451    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1452      machines, rather than the generic jbigi (until we have an athlon64
1453      optimized version)
1454
14552006-02-26  jrandom
1456    * Switch from the bouncycastle to the gnu-crypto implementation for
1457      SHA256, as benchmarks show a 10-30% speedup.
1458    * Removed some unnecessary object caches
1459    * Don't close i2psnark streams prematurely
1460
14612006-02-25  jrandom
1462    * Made the Syndie permalinks in the thread view point to the blog view
1463    * Disabled TCP again (since the live net seems to be doing well w/out it)
1464    * Fix the message time on inbound SSU establishment (thanks zzz!)
1465    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1466      just starts up
1467
14682006-02-24  jrandom
1469    * Rounding calculation cleanup in the stats, and avoid an uncontested
1470      mutex (thanks ripple!)
1471    * SSU handshake cleanup to help force incompatible peers to stop nagging
1472      us by both not giving them an updated reference to us and by dropping
1473      future handshake packets from them.
1474
14752006-02-23  jrandom
1476    * Increase the SSU retransmit ceiling (for slow links)
1477    * Estimate the sender's SSU MTU (to help see if we agree)
1478
14792006-02-22  jrandom
1480    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1481    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1482      links
1483    * Further class validator refactorings
1484
14852006-02-22  jrandom
1486    * Handle a rare race under high bandwidth situations in the SSU transport
1487    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1488
14892006-02-21  Complication
1490    * Reactivate TCP tranport by default, in addition to re-allowing
1491
1492* 2006-02-21  0.6.1.11 released
1493
14942006-02-21  jrandom
1495    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1496      heap when backlogged (and so that the messages queued up on it don't sit
1497      there forever)
1498    * Further SSU memory cleanup
1499    * Clean up the address regeneration code so it knows when to rebuild the
1500      local info more precisely.
1501
15022006-02-20  jrandom
1503    * Properly enable TCP this time (oops)
1504    * Deal with multiple form handlers on the same page in the console without
1505      being too annoying (thanks blubb and bd_!)
1506
15072006-02-20  jrandom
1508    * Reenable the TCP transport as a fallback (we'll continue to muck with
1509      debugging SSU-only elsewhere)
1510
15112006-02-20  jrandom
1512    * Major SSU and router tuning to reduce contention, memory usage, and GC
1513      churn.  There are still issues to be worked out, but this should be a
1514      substantial improvement.
1515    * Modified the optional netDb harvester task to support choosing whether
1516      to use (non-anonymous) direct connections or (anonymous) exploratory
1517      tunnels to do the harvesting.  Harvesting itself is enabled via the
1518      advanced config "netDb.shouldHarvest=true" (default is false) and the
1519      connection type can be chosen via "netDb.harvestDirectly=false" (default
1520      is false).
1521
15222006-02-19  dust
1523    * Added pruning of suckers history (it used to grow indefinitely).
1524
15252006-02-19  jrandom
1526    * Moved the current net's reseed URL to a different location than where
1527      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1528    * More aggressively expire inbound messages (on receive, not just on send)
1529    * Add in a hook for breaking backwards compatibility in the SSU wire
1530      protocol directly by including a version as part of the handshake.  The
1531      version is currently set to 0, however, so the wire protocol from this
1532      build is compatible with all earlier SSU implementations.
1533    * Increased the number of complete message readers, cutting down
1534      substantially on the delay processing inbound messages.
1535    * Delete the message history file on startup
1536    * Reworked the restart/shutdown display on the console (thanks bd_!)
1537
15382006-02-18  jrandom
1539    * Migrate the outbound packets from a central component to the individual
1540      per-peer components, substantially cutting down on lock contention when
1541      dealing with higher degrees.
1542    * Load balance the outbound SSU transfers evenly across peers, rather than
1543      across messages (so peers with few messages won't be starved by peers
1544      with many).
1545    * Reduce the frequency of router info rebuilds (thanks bar!)
1546
15472006-02-18  jrandom
1548    * Add a new AIMD throttle in SSU to control the number of concurrent
1549      messages being sent to a given peer, in addition to the throttle on the
1550      number of concurrent bytes to that peer.
1551    * Adjust the existing SSU outbound queue to throttle based on the queue's
1552      lag, not an arbitrary number of packets.
1553
15542006-02-17  jrandom
1555    * Properly fix the build request queue throttling, using queue age to
1556      detect congestion, rather than queue size.
1557
15582006-02-17  jrandom
1559    * Disable the message history log file by default (duh - feel free to
1560      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1561    * Limit the size of the inbound tunnel build request queue so we don't
1562      get an insane backlog of requests that we're bound to reject, and adjust
1563      the queue processing so we keep on churning through them when we've got
1564      a backlog.
1565    * Small fixes for the multiuser syndie operation (thanks Complication!)
1566    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1567      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1568
1569* 2006-02-16  0.6.1.10 released
1570
15712006-02-16  jrandom
1572    * Add a new toggle to the web config to enable/disable the load testing
1573
15742006-02-16  jrandom
1575    * Dropped much of the abandonware from the apps/ directory
1576
15772006-02-16  jrandom
1578    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1579    * Initial sucker refactoring to simplify reuse of the html parsing
1580    * Beginnings of hooks to push imported rss/atom out to remote syndie
1581      archives automatically (though not enabled currently)
1582    * Further SSU peer test cleanup
1583
15842006-02-15  jrandom
1585    * Add in per-blog RSS feeds to Syndie
1586    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1587      with the posts, marking additional attachments as Media RSS enclosures
1588      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1589      per item.
1590    * Don't allow the default syndie user to be set to something invalid if
1591      its in single user mode.
1592
15932006-02-15  jrandom
1594    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1595      longer backwards compatible (and should not be used until 0.6.1.1 is
1596      out)
1597
15982006-02-14  jrandom
1599    * Syndie ui bugfixes (thanks all!)
1600
16012006-02-13  jrandom
1602    * Use the current directory for some temporary I2PSnark files, rather than
1603      the OS default temp dir (thanks anon!)
1604    * Increase the base streaming lib window size (still shrinks to 1 on
1605      retransmission though, of course)
1606    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1607    * Implement fast retransmit in the streaming lib (fires at most once per
1608      packet), and increased the default ack delay to 2 seconds (from .5s)
1609    * Don't ask for garlic level message acks for end to end messages unless
1610      they're useful (e.g. to ack session tags)
1611
16122006-02-12  cervantes
1613    * Use a different santisation method for some SML attributes
1614    * Make router console update config save button actually save.
1615    * Fix console bandwidth limiter burst rate dropdowns, so the display
1616      relates to what is saved in the config.
1617   
16182006-02-12  cervantes
1619    * SML is now stricter in it's formatting (attributes should only use
1620      double quotes instead of being allowed to mix with singles).
1621    * Using apostrophes in SML attributes will no longer invalidate the tag.
1622    * Some instances of [blog] tag description were not being displayed
1623      correctly.
1624
16252006-02-12  jrandom
1626    * Further SSU peer test throttling
1627    * Put the most common router console features on the main index page too
1628
16292006-02-11  jrandom
1630    * Be more careful about SSU peer test floods
1631
16322006-02-09  jrandom
1633    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1634
16352006-02-08  jrandom
1636    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1637      bundled a precompiled libjbigi.so in the jbigi.jar
1638    * Cleaned up the synchronization for some SSU packet handling code
1639    * Allow explicit rejection of more lagged tunnel build requests, rather
1640      than dropping them outright
1641    * Use lighter load testing
1642
16432006-02-07  jrandom
1644    * Handle HTTP headers without any values (thanks Sugadude!)
1645    * Don't show the option to make Syndie multiuser, since very few people
1646      need it, and multiuser mode is a lot more complex to use.  Geeks can
1647      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1648      (or in the router's advanced config, for the embedded Syndie)
1649    * When a peer rejects participation in a tunnel, they mean it (duh)
1650    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1651    * Remove a throttle on the size of the SSU active outbound pool, since
1652      it was essentially arbitrary
1653    * Use a more appropriate SSU bloom filter size
1654    * Don't "proactively" drop SSU connections if we have partially received
1655      inbound messages (duh)
1656    * Migrate most of the message state across SSU connection reestablishment
1657
16582006-02-06  jrandom
1659    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
1660      piggybacked
1661
16622006-02-05  jrandom
1663    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
1664      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
1665      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
1666    * Enable the messageHistory.txt by default, for debugging
1667
16682006-02-05  jrandom
1669    * Substantial bugfix for the duplicate message detection in the transport
1670      layer
1671    * Handle tunnel build responses ASAP, rather than queueing them up to wait
1672      in line (processing them is really fast - just a few AES loops)
1673    * Don't bother handling build requests that we have queued up for a while
1674      locally, as the requestor will have timed it out anyway (perhaps we
1675      should reply regardless, but with a backoff instead?)
1676
16772006-02-04  jrandom
1678    * Further tunnel test cleanup and disabling of the old tunnel creation
1679      code
1680
16812006-02-04  jrandom
1682    * Clean up and reenable the tunnel testing for the new tunnel system.
1683
16842006-02-04  jrandom
1685    * Don't cache the archive.txt in syndie when fetching it through the web
1686      interface.
1687    * Logging updates
1688
16892006-02-03  jrandom
1690    * Added further replay prevention on the tunnel build requests
1691    * More aggressive streaming lib closing on reset
1692
16932006-02-03  jrandom
1694    * More aggressive refusal of peers from the wrong network (oops)
1695
16962006-02-01  jrandom
1697    * Instruct the router to reseed against a new URL, for migration purposes:
1698      http://dev.i2p.net/i2pdb2/
1699    * Aggressive error handling during UDP packet creation (thanks cervantes)
1700
17012006-02-01  jrandom
1702    * Fix the new tunnel creation crypto, including the addition of a 4 byte
1703      "next message ID" to the encrypted request structure in the spec.
1704    * Backwards incompatible change, using the new tunnel creation crypto, the
1705      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
1706      with the old incompatible network).
1707    * Reworked the leaseSet request process to handle a race condition
1708    * Disable the TCP transport
1709    * Run four separate threads on the job queue to cut down on job lag
1710
17112006-01-28  jrandom
1712    * Removed a race that could show up in leaseSet requesting with the new
1713      tunnel building process
1714
17152006-01-25  jrandom
1716    * Run the peer profile coalescing/reorganization outside the job queue
1717      (on one of the timers), to cut down on some job queue congestion.  Also,
1718      trim old profiles while running, not just when starting up.
1719    * Slightly more sane intra-floodfill-node netDb activity (only flood new
1720      entries)
1721    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
1722      source of the bug is not yet addressed)
1723    * Better I2PSnark reconnection handling
1724    * Further cleanup in the new tunnel build process
1725    * Make sure we expire old participants properly
1726    * Remove much of the transient overload throttling (it wasn't using a good
1727      metric)
1728
17292006-01-25  dust
1730    * Fix IRC client proxy to use ISO-8859-1.
1731
17322006-01-22  jrandom
1733    * New tunnel build process - does not use the new crypto or new peer
1734      selection strategies.  However, it does drop the fallback tunnel
1735      procedure, except for tunnels who are configured to allow them, or for
1736      the exploratory pool during bootstrapping or after a catastrophic
1737      failure.  This new process prefers to fail rather than use too-short
1738      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
1739      it may expose more tunnel failures to the user.
1740    * Always prefer normal tunnels to fallback tunnels.
1741    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
1742      bar!)
1743    * Do all of the netDb entry writing in a separate thread, avoiding
1744      duplicates and batching them up.
1745
17462006-01-19  Complication
1747    * Explain better where eepsite's destkey can be found
1748
17492006-01-18  cervantes
1750    * Add title attributes to all external links in Syndie, so we can rollover
1751      and quickly see if it's worth clicking on.
1752    * Fixed a minor compiler warning.
1753
17542006-01-17  jrandom
1755    * First pass of the new tunnel creation crypto, specified in the new
1756      router/doc/tunnel-alt-creation.html (referenced in the current
1757      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
1758      than in the test code, but the code verifies the technical viability, so
1759      further scrutiny would be warranted.
1760
17612006-01-16  cervantes
1762    * Dragged I2P kicking and screaming into 2006 (Oops)
1763
17642006-01-14  cervantes
1765    * Removed entirely misleading memory status from the console summary.
1766       
17672006-01-13  cervantes
1768    * Further Syndie layout hardening and typeface balancing.
1769
1770* 2006-01-12  0.6.1.9 released
1771
17722006-01-12  jrandom
1773    * Only create the loadtest.log if requested to do so (thanks zzz!)
1774    * Make sure we cleanly take into consideration the appropriate data
1775      points when filtering out duplicate messages in the message validator,
1776      and report the right bloom filter false positives rate (not used for
1777      anything except debugging)
1778
17792006-01-12  cervantes
1780    * Syndie CSS tweaks to removed some redundant declarations, improve font
1781      scaling and layout robustness. Improved cross browser compatibility
1782      (in other words "kicked IE"). Tightened the look of the blog template
1783      a little.
1784
17852006-01-11  Complication
1786    * CSS comment fixes
1787
17882006-01-11  jrandom
1789    * Include the attachments/blogs/etc for comments on the blog view
1790    * Syndie HTML fixes (thanks cervantes!)
1791    * Make sure we fully reset the objects going into our cache before we
1792      reuse them (thanks zzz!)
1793
17942006-01-10  jrandom
1795    * Added the per-post list of attachments/blogs/etc to the blog view in
1796      Syndie (though this does not yet include comments or some further
1797      refinements)
1798    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
1799      removing the dox box (though also removes the restart functionality...)
1800    * Give the i2p.exe the correct java.library.path to support the systray
1801      dll (thanks Bobcat, Sugadude, anon!)
1802
18032006-01-09  jrandom
1804    * Removed a longstanding bug that had caused unnecessary router identity
1805      churn due to clock skew
1806    * Temporarily sanity check within the streaming lib for long pending
1807      writes
1808    * Added support for a blog-wide logo to Syndie, and automated the pushing
1809      of updated extended blog info data along side the metadata.
1810
18112006-01-09  jrandom
1812    * Bugfix for a rare SSU error (thanks cervantes!)
1813    * More progress on the blog interface, allowing customizable blog-wide
1814      links.
1815
18162006-01-08  jrandom
1817    * First pass of the new blog interface, though without much of the useful
1818      customization features (coming soon)
1819
18202006-01-04  jrandom
1821    * Rather than profile individual tunnels for throughput over their
1822      lifetime, do so at 1 minute intervals (allowing less frequently active
1823      tunnels to be more fairly measured).
1824    * Run the live tunnel load test across two tunnels at a time, by default.
1825      The load test runs for a random period from 90s to the tunnel lifetime,
1826      self paced.  This should help gathering data for profiling peers that
1827      are in exploratory tunnels.
1828
18292006-01-03  jrandom
1830    * Calculate the overall peer throughput across the 3 fastest one minute
1831      tunnel throughput values, rather than the single fastest throughput.
1832    * Degrade the profiled throughput data over time (cutting the profiled
1833      peaks in half once a day, on average)
1834    * Enable yet another new speed calculation for profiling peers, using the
1835      peak throughput from individual tunnels that a peer is participating in,
1836      rather than across all tunnels they are participating in.  This helps
1837      gather a fairer peer throughput measurement, since it won't allow a slow
1838      high capacity peer seem to have a higher throughput (pushing a little
1839      data across many tunnels at once, as opposed to lots of data across a
1840      single tunnel).  This degrades over time like the other.
1841    * Add basic OS/2 support to the jbigi code (though we do not bundle a
1842      precompiled OS/2 library)
1843
18442006-01-01  jrandom
1845    * Disable multifile torrent creation in I2PSnark's web UI for the moment
1846      (though it can still seed and participate in multifile swarms)
1847    * Enable a new speed calculation for profiling peers, using their peak
1848      1 minute average tunnel throughput as their speed.
1849
18502005-12-31  jrandom
1851    * Include a simple torrent creator in the I2PSnark web UI
1852    * Further streaming lib closing improvements
1853    * Refactored the load test components to run off live tunnels (though,
1854      still not safe for normal/anonymous load testing)
1855
18562005-12-30  jrandom
1857    * Close streams more gracefully
1858
18592005-12-30  jrandom
1860    * Small streaming lib bugfixes for the modified timeouts
1861    * Minor Syndie/Sucker RSS html fix
1862    * Small synchronization fix in I2PSnark (thanks fsm!)
1863
18642005-12-30  jrandom
1865    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
1866      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
1867      some distros (e.g. mandriva)
1868
18692005-12-29  jrandom
1870    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
1871      actually correct
1872
18732005-12-27  jrandom
1874    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
1875      the clock is too skewed to do anything useful (check the year and month,
1876      not just the hour and minute).
1877    * Fixed the read/write timeouts in the streaming lib (so that it actually
1878      honors them now)
1879    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
1880      torrent closing)
1881    * Handle an oddball tunnel creation failure (thanks Xunk)
1882
18832005-12-26  Complication
1884    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
1885    * HTML readability cosmetics on "Peers" page
1886
1887* 2005-12-22  0.6.1.8 released
1888
18892005-12-22  jrandom
1890    * Bundle the standalone I2PSnark launcher in the installer and update
1891      process (launch as "java -jar launch-i2psnark.jar", viewing the
1892      interface on http://localhost:8002/)
1893    * Don't autostart swarming torrents by default so that you can run a
1894      standalone I2PSnark from the I2P install dir and not have the embedded
1895      I2PSnark autolaunch the torrents that the standalone instance is running
1896    * Fixed a rare streaming lib bug that could let a blocking call wait
1897      forever.
1898
18992005-12-22  jrandom
1900    * Cleaned up some buffer synchronization issues in I2PSnark that could
1901      cause blockage.
1902
19032005-12-21  jrandom
1904    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
1905      behavior)
1906    * Fixed the I2PSnark bug that would lose track of live peers
1907
19082005-12-20  jrandom
1909    * Enabled the control in I2PSnark to toggle whether torrents should be
1910      started automatically or not
1911    * Hopefully finished the last hook to close down torrents completely when
1912      they're stopped.
1913
19142005-12-19  jrandom
1915    * Fix for old Syndie blog bookmarks (thanks Complication!)
1916    * Fix for I2PSnark to accept incoming connections again (oops)
1917    * Randomize the order that peers from the tracker are contacted
1918
19192005-12-19  jrandom
1920    * I2PSnark logging, disconnect old inactive peers rather than new ones,
1921      memory usage reduction, better OOM handling, and a shared connection
1922      acceptor.
1923    * Cleaned up the Syndie blog page and the resulting filters (viewing a
1924      blog from the blog page shows threads started by the selected author,
1925      not those that they merely participate in)
1926
19272005-12-18  jrandom
1928    * Added a standalone runner for the I2PSnark web ui (build with the
1929      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
1930      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
1931    * Further I2PSnark error handling
1932
19332005-12-17  jrandom
1934    * Let multiuser accounts authorize themselves to access the remote
1935      functionality again (thanks Ch0Hag!)
1936    * Adjust the JVM heap size to 128MB for new installs (existing users can
1937      accomplish this by editing wrapper.config, adding the line
1938      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
1939      of the router).  This is relevent for heavy usage of I2PSnark in the
1940      router console.
1941
19422005-12-17  jrandom
1943    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
1944      'piece' sizes grow larger than before.
1945
19462005-12-16  jrandom
1947    * Added some I2PSnark sanity checks, an OOMListener when running
1948      standalone, and a guard against keeping memory tied up indefinitely.
1949    * Sanity check on the watchdog (thanks zzz!)
1950    * Handle invalid HTTP requests in I2PTunnel a little better
1951
19522005-12-16  jrandom
1953    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
1954      properly (thanks Complication!)
1955    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
1956      b0rking in the DirMonitor, etc)
1957
19582005-12-16  jrandom
1959    * Try to run a torrent in readonly mode if we can't write to the file, and
1960      handle failures a little more gracefully (thanks polecat!)
1961
19622005-12-16  jrandom
1963    * Refuse torrents with too many files (128), avoiding ulimit errors.
1964    * Remove an fd leak in I2PSnark
1965    * Further I2PSnark web UI cleanup
1966
19672005-12-15  jrandom
1968    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
1969
19702005-12-15  jrandom
1971    * Added multitorrent support to I2PSnark, accessible currently by running
1972      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
1973      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
1974      their data in that directory as well.  Removing the .torrent file stops
1975      participation, and it is currently set to seed indefinitely.  Completion
1976      is logged to the logger and standard output, with further UI interaction
1977      left to the (work in progress) web UI.
1978
19792005-12-14  jrandom
1980    * Fix to drop peer references when we shitlist people again (thanks zzz!)
1981    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
1982      (thanks Complication!)
1983
19842005-12-13  zzz
1985    * Don't test tunnels expiring within 90 seconds
1986    * Defer Test Tunnel jobs if job lag too large
1987    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
1988      job lag for tunnel build backoff, allowing for more agile handling
1989      (since the stat is only updated once a minute)
1990    * Use tunnel length override if all tunnels are expiring within one
1991      minute.
1992
19932005-12-13  jrandom
1994    * Fixed I2PSnark's handling of some torrent files to deal with those
1995      created by Azureus and I2PRufus (it didn't know how to deal with
1996      additional meta info, such as path.utf-8 or name.utf-8).
1997
19982005-12-09  zzz
1999    * Create different strategies for exploratory tunnels (which are difficult
2000      to create) and client tunnels (which are much easier)
2001    * Gradually increase number of parallel build attempts as tunnel expiry
2002      nears.
2003    * Temporarily shorten attempted build tunnel length if builds using
2004      configured tunnel length are unsuccessful
2005    * React more aggressively to tunnel failure than routine tunnel
2006      replacement
2007    * Make tunnel creation times randomized - there is existing code to
2008      randomize the tunnels but it isn't effective due to the tunnel creation
2009      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2010      to 3 minutes before expiration. The patch fixes this by fixing the
2011      randomization, and by changing the overlap time (with old tunnels) to a
2012      range of 2 to 4 minutes.
2013    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2014      to overlapping calls. Just about anything generated a call which could
2015      build many tunnels all at once, even if tunnel building was already in
2016      process.
2017    * Miscellaneous router console enhancements
2018
20192005-12-08  jrandom
2020    * Minor bugfix in SSU for dealing with corrupt packets
2021    * Added some hooks for load testing
2022
20232005-12-07  jrandom
2024    * Added a first pass at a blog view in Syndie
2025
20262005-12-07  jrandom
2027    * Expand the thread we're viewing to its leaf
2028    * Bugfix on intraday ordering (children are always newer than parents)
2029
20302005-12-05  jrandom
2031    * Added an RDF and XML thread export to Syndie, reachable at
2032      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2033      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2034      displays all threads.
2035
20362005-12-04  TLorD
2037    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2038
20392005-12-04  jrandom
2040    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2041    * Always include ourselves in the favorite authors (since we don't
2042      bookmark ourselves)
2043
20442005-12-03  jrandom
2045    * Use newgroup-like tags by default in Syndie's interface
2046
20472005-12-03  jrandom
2048    * Added support for a 'most recent posts' view that CofE requested, which
2049      includes the ability to filter by age (e.g. posts by your favorite
2050      authors in the last 5 days).
2051
20522005-12-03  jrandom
2053    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2054      displays a a single thread path at a time - from root to leaf - rather
2055      than a depth first traversal.
2056
20572005-12-03  jrandom
2058    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2059      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2060      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2061      running a single user Syndie instance (by default).  It also creates a
2062      default subscription to syndiemedia without any anonymity (using no
2063      proxy).  Upgrades can be done by just replacing the syndie.war with the
2064      one from I2P.
2065
2066* 2005-12-01  0.6.1.7 released
2067
20682005-12-01  jrandom
2069    * Add a new criteria to the tunnel join throttle, backing off people if we
2070      are failing to talk to our peers more than usual.
2071
20722005-11-30  jrandom
2073    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2074      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2075      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2076      separate jdom or rome, as they're inside syndie.war.
2077
20782005-11-30  jrandom
2079    * Don't let the TCP transport alone shitlist a peer, since other
2080      transports may be working.  Also display whether TCP connections are
2081      inbound or outbound on the peers page.
2082    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2083      talk to anyone who didn't expose an IP (even if they had introducers),
2084      among other goofy things.
2085    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2086      rather than sending one a packet at 3s, then another a packet at 6s,
2087      and a third a packet at 9s.
2088    * Fixed Syndie attachments (oops)
2089
20902005-11-29  zzz
2091    * Added a link to orion's jump page on the 'key not found' error page.
2092
20932005-11-29  jrandom
2094    * Further Syndie UI cleanup
2095    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2096      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2097      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2098      will be removed as soon as its integrated into Jetty.  This patch allows
2099      posting content in various character sets.
2100      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2101    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2102      isn't pushed as part of the update yet, as there aren't any critical
2103      bugs.
2104
21052005-11-29  jrandom
2106    * Added back in the OSX jbigi, which was accidentally removed a few revs
2107      back (thanks for the bug report stoerte!)  New installs will get the
2108      full jbigi, or you can pull the jbigi.jar from CVS by going to
2109      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2110      and clicking on the first "download" link, saving that jbigi.jar to
2111      lib/jbigi.jar in your I2P installation directory.  After restarting your
2112      router, it should load up fine.
2113
21142005-11-27  jrandom
2115    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2116      because firefox [and others?] delay rendering until they fetch the css).
2117    * Make sure we fire the shutdown tasks when regenerating a new identity
2118      (thanks picsou!)
2119    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2120    * Don't drop SSU sessions if they're still transmitting data successfully,
2121      even if there are transmission failures
2122    * Adjusted the time summarization to display hours after 119m, not 90m
2123    * Further EepGet cleanup (grr)
2124
2125* 2005-11-26 0.6.1.6 released
2126
21272005-11-26  jrandom
2128    * Update the sorting in Syndie to consider children 'newer' than parents,
2129      even if they have the same message ID (duh)
2130    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2131    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2132    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2133      better)
2134
21352005-11-26  jrandom
2136    * Be more explicit about what messages we will handle through a client
2137      tunnel, and how we will handle them.  This cuts off a set of attacks
2138      that an active adversary could mount, though they're probably nonobvious
2139      and would require at least some sophistication.
2140
21412005-11-26  Raccoon23
2142    * Added support for 'dynamic keys' mode, where the router creates a new
2143      router identity whenever it detects a substantial change in its public
2144      address (read: SSU IP or port).  This only offers minimal additional
2145      protection against trivial attackers, but should provide functional
2146      improvement for people who have periodic IP changes, since their new
2147      router address would not be shitlisted while their old one would be.
2148    * Added further infrastructure for restricted route operation, but its use
2149      is not recommended.
2150
21512005-11-25  jrandom
2152    * Further Syndie UI cleanups
2153    * Logging cleanup
2154    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2155
21562005-11-25  jrandom
2157    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2158    * Cleaned up the syndie threaded display to show the last updated date for
2159      a subthread, and to highlight threads updated in the last two days.
2160
21612005-11-24  jrandom
2162    * Fix to save syndication settings in Syndie (thanks spaetz!)
2163
21642005-11-23  jrandom
2165    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2166    * Streamlined the tunnel batching to schedule batch transmissions more
2167      appropriately.
2168    * Default tunnel pool variance to 2 +0-1 hops
2169
21702005-11-21  jrandom
2171    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2172      within I2PTunnel.
2173    * Increase the maximum SSU retransmission timeout to accomodate slower or
2174      more congested links (though SSU's RTO calculation will usually use a
2175      much lower timeout)
2176    * Moved the streaming lib timed events off the main timer queues and onto
2177      a streaming lib specific set of timer queues.  Streaming lib timed
2178      events are more likely to have lock contention on the I2CP socket while
2179      other timed events in the router are (largely) independent.
2180    * Fixed a case sensitive lookup bug (thanks tino!)
2181    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2182      links (thanks tino!)
2183
21842005-11-19  jrandom
2185    * Implemented a trivial pure java PMTU backoff strategy, switching between
2186      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2187    * Fixed new user registration in Syndie (thanks Complication!)
2188
21892005-11-17  jrandom
2190    * More cautious file handling in Syndie
2191
21922005-11-16  jrandom
2193    * More aggressive I2PTunnel content encoding munging to work around some
2194      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2195      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2196      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2197      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2198      or X-Accept-encoding headers.  Eepsite operators who do not know to
2199      check for X-Accept-encoding will simply use the identity encoding.
2200
2201* 2005-11-15  0.6.1.5 released
2202
22032005-11-14  jrandom
2204    * Migrate to the new Syndie interface
2205
22062005-11-11  jrandom
2207    * Add filtering threads by author to Syndie, populated with authors in the
2208      user's addressbook
2209    * When creating the default user, add
2210      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2211      configured to automatically pull updates.  (what other archives should
2212      be included?)
2213    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2214      the installer/resources/themes/** into ./docs/themes/** on both install
2215      and update.
2216
22172005-11-11  cervantes
2218    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2219      being progressively rolled out to other sections at later dates.
2220      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2221      layout and styling.
2222    * Implemented console themes. Users can create their own themes by
2223      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2224      and activating it using the routerconsole.theme={themename} advanced
2225      config property. Look at the example incomplete "defCon1" theme.
2226      Note: This is very much a work in progress. Folks might want to hold-off
2227      creating their own skins until the markup has solidified.
2228    * Added "routerconsole.javascript.disabled=true" to disable console
2229      client-side scripting and "routerconsole.css.disabled=true" to remove
2230      css styling (only rolled out in the i2ptunnel interface currently)
2231    * Fixed long standing bug with i2ptunnel client and server edit screens
2232      where tunnel count and depth properties would fail to save. Added
2233      backup quantity and variance configuration options.
2234    * Added basic accessibility support (key shortcuts, linear markup, alt and
2235      title information and form labels).
2236    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2237
22382005-11-11  jrandom
2239    * Default Syndie to single user mode, and automatically log into a default
2240      user account (additional accounts can be logged into with the 'switch'
2241      or login pages, and new accounts can be created with the register page).
2242    * Disable the 'automated' column on the Syndie addressbook unless the user
2243      is appropriately authorized (good idea Polecat!)
2244
22452005-11-10  jrandom
2246    * First pass to a new threaded Syndie interface, which isn't enabled by
2247      default, as its not done yet.
2248
22492005-11-06  jrandom
2250    * Include SSU establishment failure in the peer profile as a commError,
2251      as we do for TCP establishment failures.
2252    * Don't throttle the initial transmission of a message because of ongoing
2253      retransmissions to a peer, since the initial transmission of a message
2254      is more valuable than a retransmission (since it has less latency).
2255    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2256
22572005-11-05  jrandom
2258    * Include the most recent ACKs with packets, rather than only sending an
2259      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2260      increasing sequence numbers, while each message ID in SSU is random, so
2261      we don't get the benefit of later ACKs implicitly ACKing earlier
2262      messages.
2263    * Reduced the max retransmission timeout for SSU
2264    * Don't try to send messages queued up for a long time waiting for
2265      establishment.
2266
22672005-11-05  dust
2268    * Fix sucker to delete its temporary files.
2269    * Improve sucker's sml output some.
2270    * Fix Exception in SMLParser for weird sml.
2271
22722005-11-03  zzz
2273    * Added a new error page to the eepproxy to differentiate the full 60
2274      second timeout from the immediate "I don't know this base64" failure.
2275
22762005-11-01  jrandom
2277    * Added a few more css elements (thanks identiguy!)
2278
22792005-10-31  jrandom
2280    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2281    * Removed a potentially infinitely recursive call (oops)
2282
22832005-10-30  dust
2284    * Merge sucker into syndie with a rssimport.jsp page.
2285    * Add getContentType() to EepGet.
2286    * Make chunked transfer work (better) with EepGet.
2287    * Do replaceAll("<","&lt;") for logs.
2288
2289* 2005-10-29  0.6.1.4 released
2290
22912005-10-29  jrandom
2292    * Improved the bandwidth throtting on tunnel participation, especially for
2293      low bandwidth peers.
2294    * Improved failure handling in SSU with proactive reestablishment of
2295      failing idle peers, and rather than shitlisting a peer who failed too
2296      much, drop the SSU session and allow a new attempt (which, if it fails,
2297      will cause a shitlisting)
2298    * Clarify the cause of the shitlist on the profiles page, and include
2299      bandwidth limiter info at the bottom of the peers page.
2300
23012005-10-26  jrandom
2302    * In Syndie, propogate the subject and tags in a reply, and show the parent
2303      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2304    * Streamline some netDb query handling to run outside the jobqueue -
2305      which means they'll run on the particular SSU thread that handles the
2306      message.  This should help out heavily loaded netDb peers.
2307
23082005-10-25  jrandom
2309    * Defer netDb searches for newly referenced peers until we actually want
2310      them
2311    * Ignore netDb references to peers on our shitlist
2312    * Set the timeout for end to end client messages to the max delay after
2313      finding the leaseSet, so we don't have as many expired messages floating
2314      around.
2315    * Add a floor to the streaming lib window size
2316    * When we need to send a streaming lib ACK, try to retransmit one of the
2317      unacked packets instead (with updated ACK/NACK fields, of course).  The
2318      bandwidth cost of an unnecessary retransmission should be minor as
2319      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2320      the probability of a necessary retransmission.
2321    * Adjust the streaming lib cwin algorithm to allow growth after a full
2322      cwin messages if the rtt is trending downwards.  If it is not, use the
2323      existing algorithm.
2324    * Increased the maximum rto size in the streaming lib.
2325    * Load balancing bugfix on end to end messages to distribute across
2326      tunnels more evenly.
2327
23282005-10-22  jrandom
2329    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2330      ./prngseed.rnd (if they exist), and reseeding it with data out of
2331      various crypto operations (unused bits in a DH exchange, intermediary
2332      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2333      The Fortuna implementation under gnu.crypto.prng has been modified to
2334      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2335      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2336      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2337      wrapper around it is, of course, public domain.
2338
23392005-10-20  dust
2340    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2341      always shared. (thx for info Ragnarok)
2342    * Fix crash in Sucker with some bad html.
2343
23442005-10-20  jrandom
2345    * Workaround a bug in GCJ's Calendar implementation
2346    * Propery throw an exception in the streaming lib if we try to write to a
2347      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2348      GregorK!)
2349
23502005-10-19  jrandom
2351    * Ported the snark bittorrent client to I2P such that it is compatible
2352      with i2p-bt and azneti2p.  For usage information, grab an update and run
2353      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2354      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2355    * Don't allow leaseSets expiring too far in the future (thanks postman)
2356
23572005-10-19  jrandom
2358    * Bugfix for the auto-update code to handle different usage patterns
2359    * Decreased the addressbook recheck frequency to once every 12 hours
2360      instead of hourly.
2361    * Handle dynamically changing the HMAC size (again, unless your nym is
2362      toad or jrandom, ignore this ;)
2363    * Cleaned up some synchronization/locking code
2364
23652005-10-17  dust
2366    * Exchange the remaining URL with EepGet in Sucker.
2367    * Allow /TOPIC irc command.
2368
23692005-10-17  jrandom
2370    * Allow an env prop to configure whether we want to use the backwards
2371      compatible (but not standards compliant) HMAC-MD5, or whether we want
2372      to use the not-backwards compatible (but standards compliant) one.  No
2373      one should touch this setting, unless your name is toad or jrandom ;)
2374    * Added some new dummy facades
2375    * Be more aggressive on loading up the router.config before building the
2376      router context
2377    * Added new hooks for apps to deal with previously undefined I2NP message
2378      types without having to modify any code.
2379    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2380
23812005-10-14  jrandom
2382    * More explicit filter for linux/PPC building (thanks anon!)
2383    * Fixed Syndie's Sucker to not explicitly reference something only found
2384      in sun's JVM (thanks cervantes!)
2385    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2386
2387* 2005-10-14  0.6.1.3 released
2388
23892005-10-14  jrandom
2390    * Added a key explaining peers.jsp a bit (thanks tethra!)
2391
23922005-10-13  dust
2393    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2394      then be injected into Syndie with the Syndie CLI.
2395    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2396      RSS/Atom parsing.
2397
23982005-10-13  jrandom
2399    * SSU retransmission choke bugfix (== != !=)
2400    * Include initial transmissions in the retransmission choke, so that
2401      if we are already retransmitting a message, we won't send anything
2402      to that peer other than that message (or ACKs, if necessary)
2403
24042005-10-12  jrandom
2405    * Choke SSU retransmissions to a peer while there is already a
2406      retransmission in flight to them.  This currently lets other initial
2407      transmissions through, since packet loss is often sporadic, but maybe
2408      this should block initial transmissions as well?
2409    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2410    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2411
24122005-10-11  jrandom
2413    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2414      compatible.
2415    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2416      just the blurb before the cut.
2417
24182005-10-11  jrandom
2419    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2420      yet piggybacked).  This is backwards compatible.
2421    * SML parser cleanup in Syndie
2422
24232005-10-10  dust
2424    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2425      outbound IRC commands for anonymity and security purposes, removing all
2426      CTCP messages except ACTION, as well as stripping the hostname from the
2427      USER message (while leaving the nick and 'full name').  The IRC proxy
2428      doesn't use this by default, but you can enable it by creating a new
2429      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2430      to "ircclient" in i2ptunnel.config.
2431
24322005-10-10  jrandom
2433    * I2PTunnel http client config cleanup and stats
2434    * Minor SSU congestion tweaks and stats
2435    * Reduced netDb exploration period
2436
24372005-10-09  jrandom
2438    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2439      java -jar lib/syndie.jar
2440    * Beginnings of the Syndie logging cleanup
2441    * Delete corrupt Syndie posts
2442
24432005-10-09  jrandom
2444    * Now that the streaming lib works reasonably, set the default inactivity
2445      event to send a 0 byte keepalive payload, rather than disconnecting the
2446      stream.  This should cut the irc netsplits and help out with other long
2447      lived streams.  The default timeout is now less than the old timeout as
2448      well, so the keepalive will be sent before earlier builds fire their
2449      fatal timeouts.
2450
24512005-10-08  jrandom
2452    * Use the OS clock for stat timing, since it doesn't jump around (though
2453      still use the NTP'ed clock for display)
2454    * Added new DH stats
2455
2456* 2005-10-07  0.6.1.2 released
2457
24582005-10-07  jrandom
2459    * Include the 1 second bandwidth usage on the console rather than the
2460      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2461      issues.
2462
24632005-10-07  jrandom
2464    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2465      HTTP response quicker, and initialize the streaming lib's cwin more
2466      carefully.
2467    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2468      as a user authorized to use the remote archive funtionality, you can
2469      request remote archives in your address book to be automatically pulled
2470      down by checking the "scheduled?" checkbox.
2471
24722005-10-05  jrandom
2473    * Allow the first few packets in the stream to fill in their IDs during
2474      handshake (thanks cervantes, Complication, et al!)  This should fix at
2475      least some of the intermittent HTTP POST issues.
2476
24772005-10-04  jrandom
2478    * Syndie patch for single user remote archives (thanks nickless_head!)
2479    * Handle an invalid netDb store (thanks Complication!)
2480
24812005-10-04  jrandom
2482    * Further reduction in unnecessary streaming packets.
2483
24842005-10-03  jrandom
2485    * Properly reject unroutable IP addresses *cough*
2486
24872005-10-03  rangarok
2488    * Changed default update delay to twelve hours, and enforced a minimum
2489      delay of one hour.
2490
24912005-10-03  ragnarok
2492    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2493      from selected syndie archives.  To try it out, add
2494      syndie.updateArchives=<comma seperated list of syndie archives> to your
2495      syndie.config.  Archives must be specified as the full url to archive.txt
2496      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2497      for new posts every hour.  This can be modified by setting
2498      syndie.updateDelay=<delay in hours> also in syndie.config.
2499
2500* 2005-10-01  0.6.1.1 released
2501
25022005-09-30  ragnarok
2503    * Implemented conditional get for syndie remote archive imports.
2504
25052005-09-30  jrandom
2506    * Killed three more streaming lib bugs, one of which caused excess packets
2507      to be transmitted (dupacking dupacks), one that was the root of many of
2508      the old hung streams (shrinking highest received), and another that was
2509      releasing data too soon.
2510
25112005-09-30  jrandom
2512    * Only allow autodetection of our IP address if we haven't received an
2513      inbound connection in the last two minutes.
2514    * Increase the default max streaming resends to 8 from 5 (and down from
2515      the earlier 10)
2516
25172005-09-29  ragnarok
2518    * Export petnames from syndie to the router's petname db instead of
2519      userhosts.txt.
2520
25212005-09-29  jrandom
2522    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2523      reseeding - useful on OSes that make it hard to create dot files. 
2524      Thanks Complication (and anon)!
2525    * Fixed the installer version string (thanks Frontier!)
2526    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2527      us invalid IP addresses, verify again that we are not sending invalid IP
2528      addresses, and log an error if it happens. (Thanks Complication, ptm,
2529      and adab!)
2530
2531* 2005-09-29  0.6.1 released
2532
25332005-09-29  jrandom
2534    * Let syndie users modify their metadata.
2535    * Reseed the router on startup if there aren't enough peer references
2536      known locally.  This can be disabled by creating the file .i2pnoreseed
2537      in your home directory, and the existing detection and reseed handling
2538      on the web interface is unchanged.
2539
25402005-09-28  jrandom
2541    * Fix for at least some (all?) of the wrong stream errors in the streaming
2542      lib
2543
25442005-09-27  jrandom
2545    * Properly suggest filenames for attachments in Syndie (thanks all!)
2546    * Fixed the Syndie authorization scheme for single user vs. multiuser
2547
25482005-09-27  jrandom
2549    * I2PTunnel bugfix (thanks Complication!)
2550    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2551      instead of k/cwin)
2552    * Limit the number of inbound SSU sessions being built at once (using
2553      half of the i2np.udp.maxConcurrentEstablish config prop)
2554    * Don't shitlist on a message send failure alone (unless there aren't any
2555      common transports).
2556    * More careful bandwidth bursting
2557
25582005-09-26  jrandom
2559    * Reworded the SSU introductions config section (thanks duck!)
2560    * Force identity content encoding for I2PTunnel httpserver requests
2561      (thanks redzara!)
2562    * Further x-i2p-gzip bugfixes for the end of streams
2563    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2564      I2P's performance at 3KBps is another issue)
2565    * Cleaned up some streaming lib structures
2566
25672005-09-25  jrandom
2568    * Allow reseeding on the console if the netDb knows less than 30 peers,
2569      rather than less than 10 (without internet connectivity, we keep the
2570      last 15 router references)
2571    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2572      more aggressively.
2573    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2574    * Reduced the default maximum number of streaming lib resends of a packet
2575      (10 retransmits is a bit much with a reasonable RTO)
2576
25772005-09-25  Complication
2578    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2579      conflict resolution page if the i2paddresshelper parameter differs from
2580      an existing name to destination mapping.
2581
25822005-09-25  jrandom
2583    * Fix a long standing streaming lib bug (in the inactivity detection code)
2584    * Improved handling of initial streaming lib packet retransmissions to
2585      kill the "lost first packet" bug (where a page shows up with the first
2586      few KB missing)
2587    * Add support for initial window sizes greater than 1 - useful for
2588      eepsites to transmit e.g. 4 packets full of data along with the initial
2589      ACK, thereby cutting down on the rtt latency.  The congestion window
2590      size can and does still shrink down to 1 packet though.
2591    * Adjusted the streaming lib retransmission calculation algorithm to be
2592      more TCP-like.
2593
25942005-09-21  redzara
2595    * Use ISO-8859-1 for the susidns xml
2596
25972005-09-21  susi
2598    * Bugfix in susidns for deleting entries
2599
26002005-09-21  jrandom
2601    * Add support for HTTP POST to EepGet
2602    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2603      put in that URL.
2604
26052005-09-18  jrandom
2606    * Added support for pure 64bit linux with jbigi and the java service
2607      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2608      et al for help testing!
2609    * UI cleanup in Syndie (thanks gloin and bar!)
2610
26112005-09-18  Ragnarok
2612    * Made MetaNamingService the default naming service.
2613
26142005-09-17  Ragnarok
2615    * Implemented a naming service using Syndie's petname db.  It's not enabled
2616      by default, but you can try it out by setting
2617      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2618      router.config.
2619    * Implemented a meta naming service that will first lookup names in the
2620      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2621      naming services are checked and in which order is specified by
2622      i2p.nameservicelist.  This will probably become the default naming service
2623      so please help test it out by setting
2624      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2625     
2626* 2005-09-17  0.6.0.6 released
2627
26282005-09-17  jrandom
2629    * Clean up syndie a bit more and bundle a default introductory post with
2630      both new installs and updates.
2631    * Typo fixes on the console (thanks bar!)
2632
26332005-09-17  jrandom
2634    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2635      steady state rate, plus a new limit on how fast we transfer when
2636      bursting.  This is different from the old "burst as fast as possible
2637      until we're out of tokens" policy, and should help those with congested
2638      networks.  See /config.jsp to manage this rate.
2639    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2640      old posts just didn't show up).
2641    * Log properly in EepPost
2642
26432005-09-17  jrandom
2644    * Added the natively compiled jbigi and patched java service wrapper for
2645      OS X.  Thanks Bill Dorsey for letting me use your machine!
2646    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2647      don't bundle the binutils necessary (and there'd be a naming conflict
2648      if we did).
2649    * Added 'single user' functionality to syndie - if the single user
2650      checkbox on the admin page is checked, all users are allowed to control
2651      the instance and sync up with remote syndie nodes.
2652    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2653      debugged.
2654
26552005-09-16  jrandom
2656    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
2657      you have i2np.udp.allowLocal=true defined - useful for private nets)
2658
26592005-09-16  jrandom
2660    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
2661      (just specify the spoofed host as an empty string), allowing them to
2662      honor x-i2p-gzip encoding.
2663    * Let windows users build the exes too (thanks bar and redzara!)
2664    * Allow I2PTunnel httpserver operators to disable gzip compression on
2665      individual tunnels with the i2ptunnel.gzip=false client option
2666      (good idea susi!)
2667
26682005-09-16  jrandom
2669    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
2670    * Added runplain.sh for *nix/osx users having problems using the java
2671      service wrapper (called from the install dir as: sh runplain.sh)
2672    * Bundle susidns and syndie, with links on the top nav
2673    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
2674      content-encoding (if offered), reducing the payload size before it
2675      reaches the streaming lib.  The existing compression is at the i2cp
2676      level, so we've been packetizing 4KB of uncompressed data and then
2677      compressing those messages, rather than compressing and then packetizing
2678      4KB of compressed data.  This should reduce the number of round trips
2679      to fetch web pages substantially.
2680    * Adjust the startup and timing of the addressbook so that susidns always
2681      has config to work off, and expose a method for susidns to tell it to
2682      reload its config and rerun.
2683
26842005-09-15  jrandom
2685    * Error handling for failed intro packets (thanks red.hand!)
2686    * More carefully verify intro addresses
2687
26882005-09-13  jrandom
2689    * More careful error handling with introductions (thanks dust!)
2690    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
2691    * Hide the shitlist on the summary so it doesn't confuse new users.
2692
26932005-09-12  comwiz
2694    * Migrated the router tests to junit
2695
26962005-09-12  jrandom
2697    * Removed guaranteed delivery mode entirely (so existing i2phex clients
2698      using it can get the benefits of mode=best_effort).  Guaranteed delivery
2699      is offered at the streaming lib level.
2700    * Improve the peer selection code for peer testing, as everyone now
2701      supports tests.
2702    * Give the watchdog its fangs - if it detects obscene job lag or if
2703      clients have been unable to get a leaseSet for more than 5 minutes,
2704      restart the router.  This was disabled a year ago due to spurious
2705      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
2706      cause of the spurious restarts should be gone.
2707
27082005-09-12  jrandom
2709    * Bugfix for skewed store which could kill a UDP thread (causing complete
2710      comm failure and eventual OOM)
2711
27122005-09-12  jrandom
2713    * More aggressively publish updated routerInfo.
2714    * Expose the flag to force SSU introductions on the router console
2715    * Don't give people the option to disable SNTP time sync, at least not
2716      through the router console, because there is no reason to disable it.
2717      No, not even if your OS is "ntp synced", because chances are, its not.
2718
27192005-09-10  jrandom
2720    * Test the router's reachability earlier and more aggressively
2721    * Use the low level bandwidth limiter's rates for the router console, and
2722      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
2723      the logger config, keep track of the 1 second transfer rates as the stat
2724      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
2725      behavior.
2726
27272005-09-09  jrandom
2728    * Added preliminary support for NAT hole punching through SSU introducers
2729    * Honor peer test results from peers that we have an SSU session with if
2730      those sessions are idle for 3 minutes or more.
2731
27322005-09-09  cervantes
2733    * New build due to change in build number :P (thanks ugha!)
2734
27352005-09-07  BarkerJr
2736    * HTML cleanup for the router console (thanks!)
2737
27382005-09-07  jrandom
2739    * Lay the foundation for 'client routers' - the ability for peers to opt
2740      out of participating in tunnels entirely due to firewall/NAT issues. 
2741      Individual routers have control over where those peers are used in
2742      tunnels - in outbound or inbound, exploratory or client tunnels, or
2743      none at all.  The defaults with this build are to simply act as before -
2744      placing everyone as potential participants in any tunnel.
2745    * Another part of the foundation includes the option for netDb
2746      participants to refuse to answer queries regarding peers who are marked
2747      as unreachable, though this too is disabled by default (meaning the
2748      routerInfo is retrievable from the netDb).
2749
27502005-09-05  jrandom
2751    * Expose the HTTP headers to EepGet status listeners
2752    * Handle DSA key failures properly (if the signature is not invertable, it
2753      is obviously invalid)
2754
27552005-09-04  jrandom
2756    * Don't persist peer profiles until we are shutting down, as the
2757      persistence process gobbles RAM and wall time.
2758    * Bugfix to allow you to check/uncheck the sharedClient setting on the
2759      I2PTunnel web interface (thanks BarkerJr!)
2760    * Be more careful when expiring a failed tunnel message fragment so we
2761      don't drop the data while attempting to read it.
2762
2763* 2005-09-02  0.6.0.5 released
2764
27652005-09-02  jrandom
2766    * Don't refuse to send a netDb store if the targetted peer has failed a
2767      bit (the value was an arbitrary amount).
2768    * Logging changes
2769
2770* 2005-09-01  0.6.0.4 released
2771
27722005-09-01  jrandom
2773    * Don't send out a netDb store of a router if it is more than a few hours
2774      old, even if someone asked us for it.
2775
27762005-08-31  jrandom
2777    * Don't publish leaseSets to the netDb if they will never be looked for -
2778      namely, if they are for destinations that only establish outbound
2779      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
2780      modified to tell the router that it doesn't need to publish their
2781      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
2782      to 'true').
2783    * Don't publish the top 10 peer rankings of each router in the netdb, as
2784      it isn't being watched right now.
2785
27862005-08-29  jrandom
2787    * Added the new test Floodfill netDb
2788
27892005-08-27  jrandom
2790    * Minor logging and optimization tweaks in the router and SDK
2791    * Use ISO-8859-1 in the XML files (thanks redzara!)
2792    * The consolePassword config property can now be used to bypass the router
2793      console's nonce checking, allowing CLI restarts
2794
27952005-08-24  jrandom
2796    * Catch errors with corrupt tunnel messages more gracefully (no need to
2797      kill the thread and cause an OOM...)
2798    * Don't skip shitlisted peers for netDb store messages, as they aren't
2799      necessarily shitlisted by other people (though they probably are).
2800    * Adjust the netDb store per-peer timeout based on each particular peer's
2801      profile (timeout = 4x their average netDb store response time)   
2802    * Don't republish leaseSets to *failed* peers - send them to peers who
2803      replied but just didn't know the value.
2804    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
2805      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
2806      sent entirely within the first streaming packet anyway, so this won't be
2807      a problem.
2808    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
2809      prevent any clients from accessing the server if the handlers get
2810      blocked by the streaming lib or other issues.
2811    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
2812      Unknown.
2813
28142005-08-23  jrandom
2815    * Removed the concept of "no bandwidth limit" - if none is specified, its
2816      16KBps in/out.
2817    * Include ack packets in the per-peer cwin throttle (they were part of the
2818      bandwidth limit though).
2819    * Tweak the SSU cwin operation to get more accurrate estimates under
2820      congestions.
2821    * SSU improvements to resend more efficiently.
2822    * Added a basic scheduler to eepget to fetch multiple files sequentially.
2823
2824* 2005-08-21  0.6.0.3 released
2825
28262005-08-21  jrandom
2827    * If we already have an established SSU session with the Charlie helping
2828      test us, cancel the test with the status of "unknown".
2829
28302005-08-17  jrandom
2831    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
2832      viability before agreeing to Alice's request.  This doesn't work with
2833      older SSU peer test builds, but is backwards compatible (older nodes
2834      won't ask newer nodes to participate in tests, and newer nodes won't
2835      ask older nodes to either).
2836
28372005-08-12  jrandom
2838    * Keep detailed stats on the peer testing, publishing the results in the
2839      netDb.
2840    * Don't overwrite the status with 'unknown' unless we haven't had a valid
2841      status in a while.
2842    * Make sure to avoid shitlisted peers for peer testing.
2843    * When we get an unknown result to a peer test, try again soon afterwards.
2844    * When a peer tells us that our address is different from what we expect,
2845      if we've done a recent peer test with a result of OK, fire off a peer
2846      test to make sure our IP/port is still valid.  If our test is old or the
2847      result was not OK, accept their suggestion, but queue up a peer test for
2848      later.
2849    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
2850      we monitor netDb store progress (to clear up the high netDb.storePeers
2851      stat)
2852
28532005-08-10  jrandom
2854    * Deployed the peer testing implementation to be run every few minutes on
2855      each router, as well as any time the user requests a test manually.  The
2856      tests do not reconfigure the ports at the moment, merely determine under
2857      what conditions the local router is reachable.  The status shown in the
2858      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
2859      differently for different peers, "ERR-Reject" if the router cannot
2860      receive unsolicited packets or the peer helping test could not find a 
2861      collaborator, "Unknown" if the test has not been run or the test
2862      participants were unreachable, or "OK" if the router can receive
2863      unsolicited connections and those connections use the same IP and port.
2864
2865* 2005-08-08  0.6.0.2 released
2866
28672005-08-08  jrandom
2868    * Add a configurable throttle to the number of concurrent outbound SSU
2869      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
2870      may help those with slow connections to get integrated at the start.
2871    * Further fixlets to the streaming lib
2872
28732005-08-07  Complication
2874    * Display the average clock skew for both SSU and TCP connections
2875
28762005-08-07  jrandom
2877    * Fixed the long standing streaming lib bug where we could lose the first
2878      packet on retransmission.
2879    * Avoid an NPE when a message expires on the SSU queue.
2880    * Adjust the streaming lib's window growth factor with an additional
2881      Vegas-esque congestion detection algorithm.
2882    * Removed an unnecessary SSU session drop
2883    * Reduced the MTU (until we get a working PMTU lib)
2884    * Deferr tunnel acceptance until we know how to reach the next hop,
2885      rejecting it if we can't find them in time.
2886    * If our netDb store of our leaseSet fails, give it a few seconds before
2887      republishing.
2888
2889* 2005-08-03  0.6.0.1 released
2890
28912005-08-03  jrandom
2892    * Backed out an inadvertant change to the netDb store redundancy factor.
2893    * Verify tunnel participant caching.
2894    * Logging cleanup
2895
28962005-08-01  duck
2897    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
2898
28992005-08-01  duck
2900    * Fix an addressbook NPE when a new hostname from the master addressbook
2901      didn't exist in the router addressbook.
2902    * Fix an addressbook bug which caused subscriptions not to be parsed at
2903      all. (Oops!)
2904
29052005-07-31  jrandom
2906    * Adjust the netDb search and store per peer timeouts to match the average
2907      measured per peer success times, rather than huge fixed values.
2908    * Optimized and reverified the netDb peer selection / retrieval process
2909      within the kbuckets.
2910    * Drop TCP connections that don't have any useful activity in 10 minutes.
2911    * If i2np.udp.fixedPort=true, never change the externally published port,
2912      even if we are autodetecting the IP address.
2913
2914* 2005-07-27  0.6 released
2915
29162005-07-27  jrandom
2917    * Enabled SSU as the default top priority transport, adjusting the
2918      config.jsp page accordingly.
2919    * Add verification fields to the SSU and TCP connection negotiation (not
2920      compatible with previous builds)
2921    * Enable the backwards incompatible tunnel crypto change as documented in
2922      tunnel-alt.html (have each hop encrypt the received IV before using it,
2923      then encrypt it again before sending it on)
2924    * Disable the I2CP encryption, leaving in place the end to end garlic
2925      encryption (another backwards incompatible change)
2926    * Adjust the protocol versions on the TCP and SSU transports so that they
2927      won't talk to older routers.
2928    * Fix up the config stats handling again
2929    * Fix a rare off-by-one in the SSU fragmentation
2930    * Reduce some unnecessary netDb resending by inluding the peers queried
2931      successfully in the store redundancy count.
2932
29332005-07-22  jrandom
2934    * Use the small thread pool for I2PTunnelHTTPServer (already used for
2935      I2PTunnelServer)
2936    * Minor memory churn reduction in I2CP
2937    * Small stats update
2938
29392005-07-21  jrandom
2940    * Fix in the SDK for a bug which would manifest itself as misrouted
2941      streaming packets when a destination has many concurrent streaming
2942      connections (thanks duck!)
2943    * No more "Graceful shutdown in -18140121441141s"
2944
29452005-07-20  jrandom
2946    * Allow the user to specify an external port # for SSU even if the external
2947      host isn't specified (thanks duck!)
2948
29492005-07-19  jrandom
2950    * Further preparation for removing I2CP crypto
2951    * Added some validation to the DH key agreement (thanks $anon)
2952    * Validate tunnel data message expirations (though not really a problem,
2953      since tunnels expire)
2954    * Minor PRNG threading cleanup
2955
29562005-07-15  cervantes
2957    * Added workaround for an odd win32 bug in the stats configuration console
2958      page which meant only the first checkbox selection was saved.
2959
29602005-07-15  Romster
2961    * Added per group selection toggles in the stats configuration console
2962      page.
2963
29642005-07-13  jrandom
2965    * Fixed a recently injected bug in the multitransport bidding which had
2966      allowed an essentially arbitrary choice of transports, rather than the
2967      properly ordered choice.
2968
29692005-07-13  jrandom
2970    * Fixed a long standing bug where we weren't properly comparing session
2971      tags but instead largely depending upon comparing their hashCode,
2972      causing intermittent decryption errors.
2973
29742005-07-12  jrandom
2975    * Add some data duplication to avoid a recently injected concurrency
2976      problem in the session tag manager (thanks redzara and romster).
2977
29782005-07-11  jrandom
2979    * Reduced the growth factor on the slow start and congestion avoidance for
2980      the streaming lib.
2981    * Adjusted some of the I2PTunnelServer threading to use a small pool of
2982      handlers, rather than launching off new threads which then immediately
2983      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
2984    * Don't persist session keys / session tags (not worth it, for now)
2985    * Added some detection and handling code for duplicate session tags being
2986      delivered (root cause still not addressed)
2987    * Make the PRNG's buffer size configurable (via the config property
2988      "i2p.prng.totalBufferSizeKB=4096")
2989    * Disable SSU flooding by default (duh)
2990    * Updates to the StreamSink apps for better throttling tests.
2991
29922005-07-05  jrandom
2993    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
2994      buffer, rather than the underlying PRNG's (likely small) one, which in
2995      turn reduces the frequency of recalcing.
2996    * More tuning to reduce temporary allocation churn
2997
29982005-07-04  jrandom
2999    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3000      rather than the IV by itself, preventing an attack that would let
3001      colluding internal adversaries tag a message to determine that they are
3002      in the same tunnel.  Thanks dvorak for the catch!
3003    * Drop long inactive profiles on startup and shutdown
3004    * /configstats.jsp: web interface to pick what stats to log
3005    * Deliver more session tags to account for wider window sizes
3006    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3007    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3008    * UrlLauncher: adjust the browser selection order
3009    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3010    * StreamSinkClient: add support for sending an unlimited amount of data
3011    * Migrate the tests out of the default build jars
3012
30132005-06-22  Comwiz
3014    * Migrate the core tests to junit
3015
30162005-05-25  duck
3017    * Fixed PRNG bug (bugzilla #107)
3018
30192005-05-01  jrandom
3020    * Added a substantial optimization to the AES engine by caching the
3021      prepared session keys (duh).
3022
30232005-05-01  jrandom
3024    * Cleaned up the peers page a bit more.
3025
30262005-04-30  jrandom
3027    * Added a small new page to the web console (/peers.jsp) which contains
3028      the peer connection information.  This will be cleaned up a lot more
3029      before 0.6 is out, but its a start.
3030
30312005-04-30  jrandom
3032    * Reduced some SimpleTimer churn
3033
30342005-04-29  jrandom
3035    * Reduce the peer profile stat coallesce overhead by inlining it with the
3036      reorganize.
3037    * Limit each transport to at most one address (any transport that requires
3038      multiple entry points can include those alternatives in the address).
3039
30402005-04-28  jrandom
3041    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3042    * Add back the code to handle bids from multiple transports (though there
3043      is still only one transport enabled by default)
3044    * Adjust the router's queueing of outbound client messages when under
3045      heavy load by running the preparatory job in the client's I2CP handler
3046      thread, thereby blocking additional outbound messages when the router is
3047      hosed.
3048    * No need to validate or persist a netDb entry if we already have it
3049
30502005-04-25  smeghead
3051    * Added button to router console for manual update checks.
3052    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3053      every time the form was submitted even if it hadn't changed.
3054
30552005-04-24  jrandom
3056    * Added a pool of PRNGs using a different synchronization technique,
3057      hopefully sufficient to work around IBM's PRNG bugs until we get our
3058      own Fortuna.
3059    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3060      size bound the not-yet-ready messages to the peer, not the unacked
3061      message count (not sure yet whether this is worthwile).
3062    * Many additions to the messageHistory log.
3063    * Handle out of order tunnel fragment delivery (not an issue on the live
3064      net with TCP, but critical with UDP).
3065
3066* 2005-04-20  0.5.0.7 released
3067
30682005-04-20  jrandom
3069    * In the SDK, we don't actually need to block when we're sending a message
3070      as BestEffort (and these days, we're always sending BestEffort).
3071    * Pass out client messages in fewer (larger) steps.
3072    * Have the InNetMessagePool short circuit dispatch requests.
3073    * Have the message validator take into account expiration to cut down on
3074      false positives at high transfer rates.
3075    * Allow configuration of the probabalistic window size growth rate in the
3076      streaming lib's slow start and congestion avoidance phases, and default
3077      them to a more conservative value (2), rather than the previous value
3078      (1).
3079    * Reduce the ack delay in the streaming lib to 500ms
3080    * Honor choke requests in the streaming lib (only affects those getting
3081      insanely high transfer rates)
3082    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3083      I2PTunnel client page (thanks maestro^!)
3084
30852005-04-17  sirup
3086    * Added the possibility for i2ptunnel client and httpclient instances to
3087      have their own i2p session (and hence, destination and tunnels).  By
3088      default, tunnels are shared, but that can be changed on the web
3089      interface or with the sharedClient config option in i2ptunnel.config.
3090
30912005-04-17  jrandom
3092    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3093      this?  If not, I want to drop it (lots of tiny details with lots of
3094      duplicated semantics).
3095
30962005-04-17  zzz
3097    * Added new user-editable eepproxy error page templates.
3098
30992005-04-17  jrandom
3100    * Revamp the tunnel building throttles, fixing a situation where the
3101      rebuild may not recover, and defaulting it to unthrottled (users with
3102      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3103      advanced router config)
3104
31052005-04-16  jrandom
3106    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3107
31082005-04-12  jrandom
3109    * Make sure we don't get cached updates (thanks smeghead!)
3110    * Clear out the callback for the TestJob after it passes (only affects the
3111      job timing accounting)
3112
31132005-04-08  smeghead
3114    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3115
31162005-04-08  smeghead
3117    * Security improvements to TrustedUpdate: signing and verification of the
3118      version string along with the data payload for signed update files
3119      (consequently the positions of the DSA signature and version string fields
3120      have been swapped in the spec for the update file's header); router will
3121      no longer perform a trusted update if the signed update's version is lower
3122      than or equal to the currently running router's version.
3123    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3124    * Extended TrustedUpdate public API for use by third party applications.
3125
3126* 2005-04-06  0.5.0.6 released
3127
31282005-04-05  jrandom
3129    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3130      client or httpclient tunnel.
3131    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3132
31332005-04-05  jrandom
3134    * After a successfull netDb search for a leaseSet, republish it to all of
3135      the peers we have tried so far who did not give us the key (up to 10),
3136      rather than the old K closest (which may include peers who had given us
3137      the key)
3138    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3139      republish it every 5 minutes, republish it every 3.  In addition, always
3140      republish as soon as the leaseSet changes (duh^2).
3141    * Minor fix for oddball startup race (thanks travis_bickle!)
3142    * Minor AES update to allow in-place decryption.
3143
31442005-04-03  jrandom
3145    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3146      feeding the NewsFetcher)
3147
31482005-04-01  jrandom
3149    * Allow editing I2PTunnel server instances with five digit ports
3150      (thanks nickless_head!)
3151    * More NewsFetcher debugging for reported weirdness
3152
31532005-04-01  jrandom
3154    * Fix to check for missing news file (thanks smeghead!)
3155    * Added destination display CLI:
3156      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3157    * Added destination display to the web interface (thanks pnspns)
3158    * Installed CIA backdoor
3159
3160* 2005-03-29  0.5.0.5 released
3161
31622005-03-29  jrandom
3163    * Decreased the initial RTT estimate to 10s to allow more retries.
3164    * Increased the default netDb store replication factor from 2 to 6 to take
3165      into consideration tunnel failures.
3166    * Address some statistical anonymity attacks against the netDb that could
3167      be mounted by an active internal adversary by only answering lookups for
3168      leaseSets we received through an unsolicited store.
3169    * Don't throttle lookup responses (we throttle enough elsewhere)
3170    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3171      the file (thanks nickster!)
3172    * Updated the I2PTunnel HTML (thanks postman!)
3173    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3174      which, if matched against the router.config "i2ptunnel.passphrase" value,
3175      skips the nonce check.  If the config prop doesn't exist or is blank, no
3176      passphrase is accepted.
3177    * Implemented HMAC-SHA256.
3178    * Enable the tunnel batching with a 500ms delay by default
3179    * Dropped compatability with 0.5.0.3 and earlier releases
3180
31812005-03-26  jrandom
3182    * Added some error handling and fairly safe to cache data to the streaming
3183      lib (good call Tom!)
3184
31852005-03-25  jrandom
3186    * Fixed up building dependencies for the routerconsole on some more
3187      aggressive compilers (thanks polecat!)
3188
3189* 2005-03-24  0.5.0.4 released
3190
31912005-03-23  jrandom
3192    * Added more intelligent version checking in news.xml, in case we have a
3193      version newer than the one specified.
3194
31952005-03-23  jrandom
3196    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3197      cvsweb.cgi doesn't puke on us.
3198
31992005-03-23  Connelly
3200    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3201      stream send data to not be sent if STREAM CLOSE is issued too fast.
3202
32032005-03-23  jrandom
3204    * Implemented the news fetch / update policy code, as configurated on
3205      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3206      doesn't exist yet, on startup).  No action is taken however, though if
3207      the news.xml specifies that a new release is available, an option to
3208      update will be shown on the router console.
3209    * New initialNews.xml delivered with new installs, and moved news.xml out
3210      of the i2pwww module and into the i2p module so that we can bundle it
3211      within each update.
3212
32132005-03-23  jrandom
3214    * New /configupdate.jsp page for controlling the update / notification
3215      process, as well as various minor related updates.  Note that not all
3216      options are exposed yet, and the update detection code isn't in place
3217      in this commit - it currently says there is always an update available.
3218    * New EepGet component for reliable downloading, with a CLI exposed in
3219      java -cp lib/i2p.jar net.i2p.util.EepGet url
3220    * Added a default signing key to the TrustedUpdate component to be used
3221      for verifying updates.  This signing key can be authenticated via
3222      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3223    * New public domain SHA1 implementation for the DSA code so that we can
3224      handle signing streams of arbitrary size without excess memory usage
3225      (thanks P.Verdy!)
3226    * Added some helpers to the TrustedUpdate to work off streams and to offer
3227      a minimal CLI:
3228          TrustedUpdate keygen pubKeyFile privKeyFile
3229          TrustedUpdate sign origFile signedFile privKeyFile
3230          TrustedUpdate verify signedFile
3231
32322005-03-22  smeghead
3233    * New TrustedUpdate component for signing/verifying files with a DSA
3234      signature.
3235
32362005-03-21  jrandom
3237    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3238      in a single message properly (rather than release the buffer into the
3239      cache after processing the first one) (duh!)
3240    * Added the batching preprocessor which will bundle together multiple
3241      small messages inside a single tunnel message by delaying their delivery
3242      up to .5s, or whenever the pending data will fill a full message,
3243      whichever comes first.  This is disabled at the moment, since without the
3244      above bugfix widely deployed, lots and lots of messages would fail.
3245    * Within each tunnel pool, stick with a randomly selected peer for up to
3246      .5s before randomizing and selecting again, instead of randomizing the
3247      pool each time a tunnel is needed. 
3248
3249* 2005-03-18  0.5.0.3 released
3250
32512005-03-18  jrandom
3252    * Minor tweak to the timestamper to help reduce small skews
3253    * Adjust the stats published to include only the relevent ones
3254    * Only show the currently used speed calculation on the profile page
3255    * Allow the full max # resends to be sent, rather than piggybacking the
3256      RESET packet along side the final resend (duh)
3257    * Add irc.postman.i2p to the default list of IRC servers for new installs
3258    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3259      backwards compatability for users running 0.5.0.2.
3260
32612005-03-18  jrandom
3262    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3263    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3264
32652005-03-17  jrandom
3266    * Update the old speed calculator and associated profile data points to
3267      use a non-tiered moving average of the tunnel test time, avoiding the
3268      freshness issues of the old tiered speed stats.
3269    * Explicitly synchronize all of the methods on the PRNG, rather than just
3270      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3271      needs all of them synchronized).
3272    * Properly use the tunnel tests as part of the profile stats.
3273    * Don't flood the jobqueue with sequential persist profile tasks, but
3274      instead, inject a brief scheduling delay between them.
3275    * Reduce the TCP connection establishment timeout to 20s (which is still
3276      absurdly excessive)
3277    * Reduced the max resend delay to 30s so we can get some resends in when
3278      dealing with client apps that hang up early (e.g. wget)
3279    * Added more alternative socketManager factories (good call aum!)
3280
32812005-03-16  jrandom
3282    * Adjust the old speed calculator to include end to end RTT data in its
3283      estimates, and use that as the primary speed calculator again.
3284    * Use the mean of the high capacity speeds to determine the fast
3285      threshold, rather than the median.  Perhaps we should use the mean of
3286      all active non-failing peers?
3287    * Updated the profile page to sort by tier, then alphabetically.
3288    * Added some alternative socketManager factories (good call aum!)
3289
32902005-03-14  jrandom
3291    * New strict speed calculator that goes off the actual number of messages
3292      verifiably sent through the peer by way of tunnels.  Initially, this only
3293      contains the successful message count on inbound tunnels, but may be
3294      augmented later to include verified outbound messages, peers queried in
3295      the netDb, etc.  The speed calculation decays quickly, but should give
3296      a better differential than the previous stat (both values are shown on
3297      the /profiles.jsp page)
3298
32992005-03-11  jrandom
3300    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3301      minimum (increased on resends as before, of course).
3302    * Always prod the clock update listeners, even if just to tell them that
3303      the time hasn't changed much.
3304    * Added support for explicit peer selection for individual tunnel pools,
3305      which will be useful in debugging but not recommended for use by normal
3306      end users.
3307    * More aggressively search for the next hop's routerInfo on tunnel join.
3308    * Give messages received via inbound tunnels that are bound to remote
3309      locations sufficient time (taking into account clock skew).
3310    * Give alternate direct send messages sufficient time (10s min, not 5s)
3311    * Always give the end to end data message the explicit timeout (though the
3312      old default was sufficient before)
3313    * No need to give end to end messages an insane expiration (+2m), as we
3314      are already handling skew on the receiving side.
3315    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3316      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3317    * Properly keep the sendBps stat
3318    * When running the router with router.keepHistory=true, log more data to
3319      messageHistory.txt
3320    * Logging updates
3321    * Minor formatting updates
3322
33232005-03-08  jrandom
3324    * More aggressively adjust the clock
3325
33262005-03-07  jrandom
3327    * Fix the HTTP response header filter to allow multiple headers with the
3328      same name (thanks duck and spotteri!)
3329
3330* 2005-03-06  0.5.0.2 released
3331
33322005-03-06  jrandom
3333    * Allow the I2PTunnel web interface to select streaming lib options for
3334      individual client tunnels, rather than sharing them across all of them,
3335      as we do with the session options.  This way people can (and should) set
3336      the irc proxy to interactive and the eepproxy to bulk.
3337    * Added a startRouter.sh script to new installs which simply calls
3338      "sh i2prouter start".  This should make it clear how people should start
3339      I2P.
3340    * Properly expand the HTTP response header buffer (thanks shendaras!)
3341
33422005-03-04  jrandom
3343    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3344      so that broken (/malicious) webservers can't allow persistent
3345      connections.  All HTTP compliant browsers should now always close the
3346      socket.
3347    * Enabled the GZIPInputStream's cache (they weren't cached before)
3348    * Make sure our first send is always a SYN (duh)
3349    * Workaround for some buggy compilers
3350
33512005-03-03  jrandom
3352    * Loop while starting up the I2PTunnel instances, in case the I2CP
3353      listener isn't up yet (thanks detonate!)
3354    * Implement custom reusable GZIP streams to both reduce memory churn
3355      and prevent the exposure of data in the standard GZIP header (creation
3356      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3357      though has only been tested within the confines of I2P's compression use
3358      (DataHelper.[de]compress).
3359    * Preemptively support the next protocol version, so that after the 0.5.0.2
3360      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3361
33622005-03-02  jrandom
3363    * Fix one substantial OOM cause (session tag manager was only dropping
3364      tags once the critical limit was met, rather than honoring their
3365      expiration) (duh)
3366    * Lots of small memory fixes
3367    * Double the allowable concurrent outstanding tunnel build tasks (20)
3368
33692005-03-01  jrandom
3370    * Really disable the streaming lib packet caching
3371    * Synchronized a message handling point in the SDK (even though its use is
3372      already essentially single threaded, its better to play it safe)
3373    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3374      existing one (duh)
3375    * Throttle the number of concurrent pending tunnel builds across all
3376      pools, in addition to simply throttling the number of new requests per
3377      minute for each pool individually.  This should avoid the cascading
3378      failure when tunnel builds take too long, as no new builds will be
3379      created until the previous ones are handled.
3380    * Factored out and extended the DataHelper's unit tests for dealing with
3381      long and date formatting.
3382    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3383      alone doesn't address the bug where jetty asks for authentication too
3384      much.  (thanks orion!)
3385    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3386      them to the filesystem.
3387
33882005-02-27  jrandom
3389    * Don't rerequest leaseSets if there are already pending requests
3390    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3391      temporary disabled the streaming lib packet caching.
3392    * Reduced the resend RTT penalty to 10s
3393
33942005-02-26  jrandom
3395    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3396
33972005-02-26  jrandom
3398    * Further streaming lib caching improvements
3399    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3400      increase the RTT on resends.
3401    * Lower the default message size to 4KB from 16KB to further reduce the
3402      chance of failed fragmentation.
3403    * Extend tunnel rebuild throttling to include fallback rebuilds
3404    * If there are less than 20 routers known, don't drop the last 20 (to help
3405      avoid dropping all peers under catastrophic failures)
3406    * New stats for end to end messages - "client.leaseSetFoundLocally",
3407      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3408
34092005-02-24  jrandom
3410    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3411      overload under catastrophic failures (thanks Tracker and cervantes!)
3412    * Block the router startup process until we've initialized the clock
3413
34142005-02-24  jrandom
3415    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3416      data in the streaming lib.
3417    * Fixed a streaming lib bug where the connection initiator would fail the
3418      stream if the ACK to their SYN was lost.
3419
34202005-02-23  jrandom
3421    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3422      get stale tunnel pools, don't you think?
3423
3424* 2005-02-23  0.5.0.1 released
3425
34262005-02-22  jrandom
3427    * Reworked the tunnel (re)building process to remove the tokens and
3428      provide cleaner controls on the tunnels built.
3429    * Fixed situations where the timestamper wanted to test more servers than
3430      were provided (thanks Tracker!)
3431    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3432      (thanks Tracker!)
3433
34342005-02-22  jrandom
3435    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3436      try to automatically reconnect on accept()/connect(..)).
3437    * Loop check for expired lease republishing (just in case)
3438
34392005-02-22  jrandom
3440    * Adjusted (and fixed...) the timestamper change detection
3441    * Deal with a rare reordering bug at the beginning of a stream (so we
3442      don't drop it unnecessarily)
3443    * Cleaned up some dropped message handling in the router
3444    * Reduced job queue churn when dealing with a large number of tunnels by
3445      sharing an expiration job
3446    * Keep a separate list of the most recent CRIT messages (shown on the
3447      logs.jsp).  This way they don't get buried among any other messages.
3448    * For clarity, display the tunnel variance config as "Randomization" on
3449      the web console.
3450    * If lease republishing fails (boo! hiss!) try it again
3451    * Actually fix the negative jobLag in the right place (this time)
3452    * Allow reseeding when there are less than 10 known peer references
3453    * Lots of logging updates.
3454
34552005-02-20  jrandom
3456    * Allow the streaming lib resend frequency to drop down to 20s as the
3457      minimum, so that up to 2 retries can get sent on an http request.
3458    * Add further limits to failsafe tunnels.
3459    * Keep exploratory and client tunnel testing and building stats separate.
3460    * Only use the 60s period for throttling tunnel requests due to transient
3461      network overload.
3462    * Rebuild tunnels earlier (1-3m before expiration, by default)
3463    * Cache the next hop's routerInfo for participating tunnels so that the
3464      tunnel participation doesn't depend on the netDb.
3465    * Fixed a long standing bug in the streaming lib where we wouldn't always
3466      unchoke messages when the window size grows.
3467    * Make sure the window size never reaches 0 (duh)
3468
34692005-02-20  jrandom
3470    * Only build failsafe tunnels if we need them
3471    * Properly implement the selectNotFailingPeers so that we get a random
3472      selection of peers, rather than using the strictOrdering (thanks dm!)
3473    * Don't include too many "don't tell me about" peer references in the
3474      lookup message - only send the 10 peer references closest to the target.
3475
34762005-02-19  jrandom
3477    * Only build new extra tunnels on failure if we don't have enough
3478    * Fix a fencepost in the tunnel building so that e.g. a variance of
3479      2 means +/- 2, not +/- 1 (thanks dm!)
3480    * Avoid an NPE on client disconnect
3481    * Never select a shitlisted peer to participate in a tunnel
3482    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3483    * Keep session tags around for a little longer, just in case (grr)
3484    * Cleaned up some closing event issues on the streaming lib
3485    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3486      so that 0.4.* users will need to do a clean install, but we don't need
3487      to shove an additional 2MB in each update to those already on 0.5.
3488    * Imported the susimail css (oops, thanks susi!)
3489
3490* 2005-02-18  0.5 released
3491
34922005-02-17  jrandom
3493    * If the clock is adjusted during a job run, don't act as if the job took
3494      negative time.
3495
34962005-02-17  jrandom
3497    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3498
34992005-02-17  jrandom
3500    * Fixed the braindead tunnel testing logic
3501    * If a large number of tunnels are failing (within the last 5-10 minutes)
3502      and the current tunnel pool's configuration allows it, randomly build a
3503      zero hop tunnel to replace failed tunnels.
3504    * Enable postman's POP3 and SMTP tunnels by default
3505
35062005-02-16  jrandom
3507    * Added some error handling when the number of session tags exceeds the
3508      realistic capacity, dropping a random chunk of received tag sets and
3509      conducting some minor analysis of the remaining ones.  This is a part
3510      of a pretty serious error condition, and logs as CRIT (if/when people
3511      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3512      puts in the wrapper.log or /logs.jsp)
3513    * Update the addressbook to only write to the published hosts location
3514      if the addressbook's config contains "should_publish=true" (by default,
3515      it contains "should_publish=false")
3516
35172005-02-16  jrandom
3518    * (Merged the 0.5-pre branch back into CVS HEAD)
3519    * Replaced the old tunnel routing crypto with the one specified in
3520      router/doc/tunnel-alt.html, including updates to the web console to view
3521      and tweak it. 
3522    * Provide the means for routers to reject tunnel requests with a wider
3523      range of responses:
3524        probabalistic rejection, due to approaching overload
3525        transient rejection, due to temporary overload
3526        bandwidth rejection, due to persistent bandwidth overload
3527        critical rejection, due to general router fault (or imminent shutdown)
3528      The different responses are factored into the profiles accordingly.
3529    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3530      with a series of new properties, relevent to the new tunnel routing code:
3531        inbound.nickname (used on the console)
3532        inbound.quantity (# of tunnels to use in any leaseSets)
3533        inbound.backupQuantity (# of tunnels to keep in the ready)
3534        inbound.length (# of remote peers in the tunnel)
3535        inbound.lengthVariance (if > 0, permute the length by adding a random #
3536                                up to the variance.  if < 0, permute the length
3537                                by adding or subtracting a random # up to the
3538                                variance)
3539        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3540                    in that client's pool)
3541      There are other options, and more will be added later, but the above are
3542      the most relevent ones.
3543    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3544    * Compress all profile data on disk.
3545    * Adjust the reseeding functionality to work even when the JVM's http proxy
3546      is set.
3547    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3548      max window size.
3549    * Reduced the default streaming lib max message size to 16KB (though still
3550      configurable by the user), also doubling the default maximum window
3551      size.
3552    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3553    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3554      the first byte of the SHA256.
3555    * Added a new "netId" flag to let routers drop references to other routers
3556      who we won't be able to talk to.
3557    * Extended the timestamper to get a second (or third) opinion whenever it
3558      wants to actually adjust the clock offset.
3559    * Replaced that kludge of a timestamp I2NP message with a full blown
3560      DateMessage.
3561    * Substantial memory optimizations within the router and the SDK to reduce
3562      GC churn.  Client apps and the streaming libs have not been tuned,
3563      however.
3564    * More bugfixes than you can shake a stick at.
3565
35662005-02-13  jrandom
3567    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3568      only contains 32bit versions, so build your own, placing libjbigi.so in
3569      your install dir if necessary.  (thanks mule!)
3570    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3571      (thanks spaetz!)
3572
35732005-02-10  smeghead
3574    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3575      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3576      Pants are still non-functional at this time so don't mess with it yet
3577      unless you want to potentially mangle your working copy of CVS.
3578
35792005-02-09  duck
3580    * Allow an unneeded newline in the SAM client connection without
3581      disconnecting.
3582
35832005-02-07  jrandom
3584    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3585
35862005-02-06  Sugadude
3587    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3588
35892005-02-03  smeghead
3590    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3591      library from GNU Crypto's CVS HEAD sources.
3592
35932005-01-26  smeghead
3594    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3595      packages and installed to $i2pinstalldir/scripts.
3596    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3597      using gij + libgcj, and --sourcedir to run them from the source tree
3598      instead of the installation directory.
3599    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3600      causing gcj to toss a compilation warning (jrandom++).
3601
36022005-01-26  smeghead
3603    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3604      tests and benchmarks.
3605    * Routerconsole now builds under gcj 3.4.3.
3606    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3607
36082005-01-25  smeghead
3609    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3610      supporting apps (except for the routerconsole which is still being
3611      investigated).
3612
36132005-01-24  smeghead
3614    * C#-ification of sam-sharp: interface greatly simplified using delegates
3615      and events; SamBaseEventHandler provides basic implementation and helper
3616      methods but is now optional.
3617    * NAnt buildfile and README added for sam-sharp.
3618
36192005-01-23  smeghead
3620    * Port the java SAM client library to mono/C# and released into the
3621      public domain.  The 0.1 version of this port is available in CVS as
3622      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3623      library has been removed.
3624
36252005-01-21  Jhor
3626    * Updated jbigi build scripts for OSX.
3627
36282005-01-21  jrandom
3629    * Added support for OSX to the NativeBigInteger code so that it will look
3630      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3631      is not bundled with the shipped jbigi.jar yet though.
3632
36332005-01-18  jrandom
3634    * Increased the max # session tags maintained and decreased slightly the
3635      period over which they are gathered.
3636
36372005-01-17  jrandom
3638    * Added meaningful support for adjusting the preferred message size in the
3639      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3640      whatever).  The other side will mimic a reduction (but never an increase).
3641    * Always make sure to use distinct ConnectionOption objects for each
3642      connection (duh)
3643    * Reduced the default ACK delay to 500ms on in the streaming lib
3644    * Only shrink the streaming window once per window
3645    * Don't bundle a new jetty.xml with updates
3646    * Catch another local routerInfo corruption issue on startup.
3647
36482005-01-15  cervantes
3649    * Added support to the eepproxy for URLs such as
3650      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3651      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3652
36532005-01-15  jrandom
3654    * Caught a series of (previously unhandled) errors caused by requeueing
3655      messages that had timed out on the TCP transport (thanks mae^!)
3656    * Reduce the barrier to dropping session tags on streaming lib resends -
3657      every fourth send should drop the tags, forcing ElGamal encryption.  This
3658      will help speed up the recovery after a disconnect, rather than the drop
3659      every fifth send.
3660
3661* 2005-01-06  0.4.2.6 released
3662
36632005-01-06  jrandom
3664    * Added a startup message to the addressbook, printing its version number
3665      to stdout (which is sent to wrapper.config) when it loads.
3666    * Updated the addressbook to reread the config file periodically
3667    * Added orion.i2p to the list of eepsites on the default homepage
3668
36692005-01-05  jrandom
3670    * Handle unexpected network read errors more carefully (thanks parg!)
3671    * Added more methods to partially compare (DataHelper) and display
3672      arrays (Base64.encode).
3673    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
3674    * Be more generous on the throttle when just starting up the router
3675    * Fix a missing scheduled event in the streaming lib (caused after reset)
3676    * Add a new DisconnectListener on the I2PSocketManager to allow
3677      notification of session destruction.
3678    * Make sure our own router identity is valid, and if it isn't, build a new
3679      one and restart the router.  Alternately, you can run the Router with
3680      the single command line argument "rebuild" and it will do the same.
3681
36822004-12-31  ragnarok
3683    * Integrated latest addressbook changes (2.0.3) which include support for
3684      deploying as a .war file with no existing addressbook configuration.
3685    * Updated main build process to bundle the addressbook.war in the
3686      i2pinstall.jar and i2pupdate.zip.
3687
36882004-12-31  jrandom
3689    * Speling fxi (thanks digum!)
3690    * Bugfix for the I2PTunnel web interface so that it now properly launches
3691      newly added tunnels that are defined to be run on startup (thanks ugha!)
3692
36932004-12-30  jrandom
3694    * Revised the I2PTunnel client and httpclient connection establishment
3695      throttles.  There is now a pool of threads that build the I2PSocket
3696      connections with a default size of 5, configurable via the I2PTunnel
3697      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
3698      not throttle the number of concurrent builders, but will launch a thread
3699      per socket during establishment).  In addition, sockets accepted but
3700      not yet allocated to one of the connection builders will be destroyed
3701      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
3702      0, it will wait indefinitely).
3703
37042004-12-29  jrandom
3705    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
3706      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
3707    * Don't treat connection inactivity closure as a connection error.
3708
37092004-12-29  jrandom
3710    * Add in a new keepalive event on each TCP connection, proactively sending
3711      a (tiny) time message every minute or two, as well as killing the
3712      connection if no message has been fully sent within 5 minutes or so. 
3713      This should help deal with hung connections from IP address changes.
3714
37152004-12-28  jrandom
3716    * Cleaned up the resending and choking algorithm in the streaming lib.
3717    * Removed the read timeout override for I2PTunnel's httpclient, allowing
3718      it to use the default for the streaming lib.
3719    * Revised ack triggers in the streaming lib.
3720    * Logging.
3721
3722* 2004-12-21  0.4.2.5 released
3723
37242004-12-21  jrandom
3725    * Track a new stat for expired client leases (client.leaseSetExpired).
3726
37272004-12-21  jrandom
3728    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
3729      and added windows info to the headless docs. (thanks ardvark!)
3730    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
3731      a stream (thanks frosk!)
3732    * Add a pair of new stats for monitoring tunnel participation -
3733      tunnel.participatingBytesProcessed (total # bytes transferred) and
3734      tunnel.participatingBytesProcessedActive (total # bytes transferred for
3735      tunnels whose byte count exceed the 10m average).  This should help
3736      further monitor congestion issues.
3737    * Made the NamingService factory property public (thanks susi!)
3738
37392004-12-20  jrandom
3740    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
3741    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
3742      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
3743      reasoning is gone.
3744
37452004-12-19  jrandom
3746    * Fix for a race on startup wrt the new stats (thanks susi!)
3747
37482004-12-19  jrandom
3749    * Added three new stats - router.activePeers, router.fastPeers, and
3750      router.highCapacityPeers, updated every minute
3751
37522004-12-19  jrandom
3753    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
3754      hostname should be sent to the webserver.  By default, new installs will
3755      have an httpserver pointing at their jetty instance with the spoofed
3756      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
3757
37582004-12-19  scintilla
3759    * Convert native jcpuid code from C++ to C. This should alleviate build
3760      problems experienced by some users.
3761
3762* 2004-12-18  0.4.2.4 released
3763
37642004-12-16  jrandom
3765    * Catch another oddball case for a reset connection in the streaming lib.
3766    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
3767      dumps the current state of that peer's profile.  Instead of the full
3768      base64, you can pass in however many characters you have and it will
3769      return the first match found.
3770
37712004-12-16  jrandom
3772    * Remove the randomized factor in the tunnel rejection by bandwidth -
3773      we now accept the request if we've allocated less than our limit
3774      and reject it if we've allocated more.
3775    * Stick to the standard capacity scale on tunnel rejection, even for
3776      the 10m period.
3777    * Build the time message at the very last possible moment
3778
37792004-12-15  jrandom
3780    * Handle hard disconnects more gracefully within the streaming lib, and
3781      log unmonitored events more aggressively.
3782    * If we drop a peer after connection due to clock skew, log it to the
3783      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
3784      the stat 'tcp.disconnectAfterSkew'.
3785    * Fixed the formatting in the skew display
3786    * Added an ERROR message that is fired once after we run out of
3787      routerInfo files (thanks susi!)
3788    * Set the connect timeout equal to the streaming lib's disconnect timeout
3789      if not already specified (the I2PTunnel httpclient already enforces a
3790      60s connect timeout)
3791    * Fix for another connection startup problem in the streaming lib.
3792    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
3793    * Adjust the capacity calculations so that tunnel failures alone in the
3794      last 10m will not trigger a 0 capacity rank.
3795
37962004-12-14  jrandom
3797    * Periodically send a message along all I2NP connections with the router's
3798      current time, allowing the receiving peer to determine that the clock
3799      has skewed too much, and hence, disconnect.  For backwards compatability
3800      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
3801      next time we have a backwards compatability break, we can put in a proper
3802      message setup for it.
3803
38042004-12-14  jrandom
3805    * Reenable the probabalistic drop on the TCP queues to deal with good old
3806      fashioned bandwidth limiting.  However, by default the probability is
3807      rigged to reserve 0% of the queue free - meaning we just aggressively
3808      fail messages in the queue if we're transferring too slowly.  That
3809      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
3810      (or whatever) and the drop code can be disabled with the parameter
3811      'tcp.dropProbabalistically=false'.
3812    * Still penalize a peer on tunnel failure, but don't immediately drop
3813      their capacity to 0.
3814    * More aggressively ACK duplicates
3815    * Randomize the timestamper period
3816    * Display the clock skew on the connection logs when a peer sends it.
3817    * Allow the timestamper to fix skews of up to 10 minutes
3818    * Logging
3819
38202004-12-13  jrandom
3821    * Added some error checking on the new client send job (thanks duck!)
3822    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
3823      proportional to the bytes allocated in existing tunnels vs the bytes
3824      allowed through the bandwidth limiter).
3825    * Enable a new configuration parameter for triggering a tunnel rebuild
3826      (tunnel.maxTunnelFailures), where that is the max allowed test failures
3827      before killing the tunnel (default 0).
3828    * Gather more data that we rank capacity by (now we monitor and balance the
3829      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
3830    * Fix a truncation/type conversion problem on the long term capacity
3831      values (we were ignoring the daily stats outright)
3832
38332004-12-11  jrandom
3834    * Fix the missing HTTP timeout, which was caused by the deferred syn used
3835      by default.  This, in turn, meant the I2PSocket creation doesn't fail
3836      on .connect, but is unable to transfer any data in any direction.  We now
3837      detect that condition for the I2PTunnelHTTPClient and throw up the right
3838      error page.
3839    * Logging
3840
38412004-12-11  jrandom
3842    * Use a simpler and less memory intensive job for processing outbound
3843      client messages when the session is in mode=bestEffort.  We can
3844      immediately discard the data as soon as its sent the first time,
3845      rather than wait for an ack, since we will never internally resend.
3846    * Reduce some synchronization to avoid a rare deadlock
3847    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
3848      case it within the tunnel controller.
3849    * Script cleanup for building jbigi/jcpuid
3850    * Logging
3851
3852* 2004-12-08  0.4.2.3 released
3853
38542004-12-08  jrandom
3855    * Revised the buffering when reading from the SAM client and writing
3856      to the stream.  Also added a thread (sigh) so we don't block the
3857      SAM client from giving us more messages for abnormally long periods
3858      of time.
3859    * Display the router version in the logs on startup (oft requested)
3860    * Fix a race during the closing of a messageOutputStream
3861
38622004-12-06  jrandom
3863    * Don't do a 'passive flush' while there are already outbound messages
3864      unacked.
3865    * Show the reseed link if up to 10 peers profiles are active (thanks
3866      dburton!)
3867
38682004-12-06  jrandom
3869    * Don't propogate streaming connection failures out to the SAM bridge as
3870      fatal errors.
3871    * Dont barf on repeated I2CP closure.
3872
38732004-12-05  jrandom
3874    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
3875      getLocalhost call
3876
38772004-12-05  jrandom
3878    * Default the I2CP listener to localhost only, unless overridden by
3879      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
3880    * More SAM fixes for things recently broken (whee)
3881
38822004-12-05  jrandom
3883    * Fix the recently broken SAM bridge (duh)
3884    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
3885      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
3886      StreamSink and StreamSend apps for transferring files.
3887    * Make the passive flush timer fire more frequently.
3888
38892004-12-05  jrandom
3890    * Fixed some links in the console (thanks ugha!) and the javadoc
3891      (thanks dinoman!)
3892    * Fix the stream's passive flush timer (oh, its supposed to work?)
3893
38942004-12-03  jrandom
3895    * Toss in a small pool of threads (3) to execute the events queued up with
3896      the SimpleTimer, as we do currently see the occational event
3897      notification spiking up to a second or so.
3898    * Implement a SAM client API in java, useful for event based streaming (or
3899      for testing the SAM bridge)
3900    * Added support to shut down the SAM bridge on OOM (useful if the SAM
3901      bridge is being run outside of the router).
3902    * Include the SAM test code in the sam.jar
3903    * Remove an irrelevent warning message from SAM, which was caused by
3904      perfectly normal operation due to a session being closed.
3905    * Removed some unnecessary synchronization in the streaming lib's
3906      PacketQueue
3907    * More quickly clean up the memory used by the streaming lib by
3908      immediately killing each packet's resend job as soon as it is ACKed (or
3909      cancelled), so that there are no longer any valid pointers to the
3910      (potentially 32KB) packet.
3911    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
3912    * Drop packets that would expand our inbound window beyond our maximum
3913      buffer size (default 32 messages)
3914    * Always read the ACK/NACK data from the verified packets received, even
3915      if we are going to drop them
3916    * Always adjust the window when there are messages ACKed, though do not
3917      change its size except as before.
3918    * Streamlined some synchronization in the router's I2CP handling
3919    * Streamlined some memory allocation in the SAM bridge
3920    * Default the streaming lib to disconnect on inactivity, rather than send
3921      an empty message.
3922
39232004-12-01  jrandom
3924    * Fix for a race in the streaming lib as caused by some odd SAM activity
3925
3926* 2004-12-01  0.4.2.2 released
3927
39282004-12-01  jrandom
3929    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
3930      connections to work (thanks duck!)
3931    * Make sure we override the inactivity timeout too
3932
3933* 2004-12-01  0.4.2.1 released
3934
39352004-12-01  jrandom
3936    * Strip out any of the Accept-* HTTP header lines, and always make sure to
3937      include the forged User-agent header.
3938    * Adjust the default read timeout on the eepproxy to 60s, unless
3939      overridden.
3940    * Minor tweak on stream shutdown.
3941
39422004-11-30  jrandom
3943    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
3944    * Build in a simple timeout to flush data queued into the I2PSocket but
3945      not yet flushed.
3946    * Don't explicitly flush after each SAM stream write, but leave it up to
3947      the [nonblocking] passive flush.
3948    * Don't whine about 10-99 connection events occurring in a second
3949    * Don't wait for completion of packets that will not be ACKed (duh)
3950    * Adjust the congestion window, even if the packet was resent (duh)
3951    * Make sure to wake up any blocking read()'s when the MessageInputStream
3952      is close()ed (duh)
3953    * Never wait more than the disconnect timeout for a write to complete
3954
39552004-11-29  jrandom
3956    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
3957
39582004-11-29  jrandom
3959    * Reduced contention for local client delivery
3960    * Drop the new code that munges the wrapper.config.  Instead, updates that
3961      need to change it will include their own wrapper.config in the
3962      i2pupdate.zip, overwriting the existing file.  If the file
3963      "wrapper.config.updated" is included, it is deleted at first opportunity
3964      and the router shut down, displaying a notice that the router must be
3965      started again cleanly to allow the changes to the wrapper.config to take
3966      effect.
3967    * Properly stop accept()ing I2PSocket connections if we close down the
3968      session (duh).
3969    * Make sure we cancel any outstanding Packets in flight when a connection
3970      is terminated (thanks susi!)
3971    * Split up the I2PTunnel closing a little further.
3972
39732004-11-28  jrandom
3974    * Accept IP address detection changes with a 2-out-of-3 minimum.
3975    * As long as the router is up, keep retrying to bind the I2CP listener.
3976    * Decrease the java service wrapper ping frequency to once every 10
3977      minutes, rather than once every 5 seconds.
3978
39792004-11-27  jrandom
3980    * Some cleanup and bugfixes for the IP address detection code where we
3981      only consider connections that have actually sent and received messages
3982      recently as active, rather than the mere presence of a TCP socket as
3983      activity.
3984
39852004-11-27  jrandom
3986    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
3987      lib can do that (without an additional per-connection thread).
3988    * Close the I2PTunnel forwarder threads more aggressively
3989
39902004-11-27  jrandom
3991    * Fix for a fast loop caused by a race in the new streaming library (thanks
3992      DrWoo, frontier, pwk_, and thetower!)
3993    * Minor updates to the SimpleTimer and Connection to help track down a
3994      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
3995      many events/tasks fire in a second)
3996    * Minor fixes for races on client disconnects (causing NPEs)
3997
3998* 2004-11-26  0.4.2 released
3999
40002004-11-26  jrandom
4001    * Enable the new streaming lib as the default.  That means, for any
4002      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4003
40042004-11-25  jrandom
4005    * Revised the installer to include start menu and desktop shortcuts for
4006      windows platforms, including pretty icons (thanks DrWoo!)
4007    * Allow clients specified in clients.config to have an explicit startup
4008      delay.
4009    * Update the default install to launch a browser pointing at the console
4010      whenever I2P starts up, rather than only the first time it starts up
4011      (configurable on /configservice.jsp, or in clients.config)
4012    * Bugfix to the clock skew checking code to monitor the delta between
4013      offsets, not the offset itself (duh)
4014    * Router console html update
4015    * New (and uuuuugly) code to verify that the wrapper.config contains
4016      the necessary classpath entries on update.  If it has to update the
4017      wrapper.config, it will stop the JVM and service completely, since the
4018      java service wrapper doesn't reread the wrapper.config on JVM restart -
4019      requiring the user to manually restart the service after an update.
4020    * Increase the TCP connection timeout to 30s (which is obscenely long)
4021
40222004-11-22  jrandom
4023    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4024    * New stat to keep track of slow jobs (ones that take more than a second
4025      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4026
40272004-11-21  jrandom
4028    * Update the I2PTunnel web interface to include an option for the new
4029      streaming lib (which is ignored until the 0.4.2 release).
4030    * Revised the I2PTunnel web interface to keep the I2CP options of client
4031      and httpclient tunnels in sync, as they all share the same I2CP session.
4032
40332004-11-21  jrandom
4034    * Only allow small clock skews after the first 10 minutes of operation
4035      (to prevent later network lag bouncing us way off course - yes, we
4036      really need an NTP impl to balance out the network burps...)
4037    * Revamp the I2PTunnel web interface startup process so that everything
4038      is shown immediately, so that different pieces hanging don't hang
4039      the rest, and other minor bugfixes.
4040    * Take note of SAM startup error (in case you're already running a SAM
4041      bridge...)
4042    * Increase the bandwidth limiter burst values available to 10-60s (or
4043      whatever is placed in /configadvanced.jsp, of course)
4044
40452004-11-21  jrandom
4046    * Allow end of line comments in the hosts.txt and other config files,
4047      using '#' to begin the comments (thanks susi!)
4048    * Add support to I2PTunnel's 'client' feature for picking between multiple
4049      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4050    * Add a quick link on the left hand nav to reseed if there aren't enough
4051      known peers, as well as link to the config page if there are no active
4052      peers.  Revised config page accordingly.
4053
40542004-11-21  jrandom
4055    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4056      rather that every 15 minutes, and increase the warning period in which
4057      we refresh tags from 30s to 2 minutes.
4058    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4059      to close the I2PSocket (leaving it to timeout).
4060
40612004-11-19  jrandom
4062    * Off-by-one fix to the tunnel pool management code, along side some
4063      explicit initialization.  This can affect clients whose lengths are
4064      shorter than the router's default (thanks duck!)
4065
40662004-11-17  jrandom
4067    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4068      Ragnarok!)
4069
40702004-11-17  jrandom
4071    * Minor logging update.
4072
40732004-11-16  jrandom
4074    * Clean up the propogation of i2psocket options so that various streaming
4075      libs can honor them more precisely
4076
40772004-11-16  jrandom
4078    * Minor logging update
4079
40802004-11-14  jrandom
4081    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4082    * Fix a leak injected into the SimpleTimer
4083    * Fix a race condition in the tunnel message handling
4084
40852004-11-13  jrandom
4086    * Added throttles on how many I2PTunnel client connections we open at once
4087    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4088      the streaming library used should take care of any buffering.
4089    * Added a cache for some objects used in I2PTunnel, especially useful when
4090      there are many short lived connections.
4091    * Trimmed the SimpleTimer's processing a bit
4092
40932004-11-10  jrandom
4094    * Allow loading the (mini)streaming connection options from the
4095      environment.
4096    * More defensive programming in the DSA implementation.
4097
40982004-11-08  jrandom
4099    * Remove spurious flush calls from I2PTunnel, and work with the
4100      I2PSocket's output stream directly (as the various implementations
4101      do their own buffering).
4102    * Another pass at a long standing JobQueue bug - dramatically simplify
4103      the job management synchronization since we dont need to deal with
4104      high contention (unlike last year when we had dozens of queue runners
4105      going at once).
4106    * Logging
4107
41082004-11-08  jrandom
4109    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4110
4111* 2004-11-06  0.4.1.4 released
4112
41132004-11-06  jrandom
4114    * Expose a drop down on the /configclients.jsp to enter the outbound
4115      tunnel depth.
4116    * Improved *hosts.txt loading
4117    * Explicitly override the JVM's timezone settings to use GMT so that
4118      any client applications which use timezones won't leak sensitive
4119      data (thanks gott!)
4120    * Bundle sam.jar in the update (thanks duck!)
4121
41222004-11-06  jrandom
4123    * Fix for a long standing synchronization bug in the SDK that in rare
4124      instances can add a few seconds of lag.
4125
41262004-11-05  jrandom
4127    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4128      parameters, verify proper operation after multiple session lifetimes,
4129      as well as some synchronization problems.
4130    * New properties method on the DataHelper class.
4131    * Address a race on fast disconnecting clients
4132
41332004-11-02  jrandom
4134    * Fix for a long standing synchronization bug in the JobQueue (and added
4135      some kooky flags to make sure it stays dead)
4136    * Update the ministreaming lib to force mode=guaranteed if the default
4137      lib is used, and mode=best_effort for all other libs.
4138
41392004-11-02  jrandom
4140    * Fixed up the configuration overrides for the streaming socket lib
4141      integration so that it properly honors env settings.
4142    * More memory usage streamlining (last major revamp for now, i promise)
4143
41442004-11-01  jrandom
4145    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4146    * Honor message expirations for some tunnel jobs that were prematurely
4147      expired.
4148    * Streamline memory usage with temporary object caches and more efficient
4149      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4150      message handling.
4151    * Fix some situations where we forward messages too eagerly.  For a
4152      request at the tunnel endpoint, if the tunnel is inbound and the target
4153      is remote, honor the message by tunnel routing the data rather than
4154      sending it directly to the requested location.
4155
41562004-10-30  jrandom
4157    * Cache the temporary objects used in the AES encryption/decryption
4158      process so that AES doesn't require any memory allocation to process
4159      data.
4160    * Dramatically reduce memory usage within various crypto implementations
4161      by avoiding unnecessary (though simplifying) buffers.
4162    * If we specify some tags to be sent in an I2CP message explicitly, use
4163      only those, not those plus a new set (otherwise we aren't sure on ACK
4164      which set was delivered)
4165    * Allow configuration for the partial send timeout (how long before
4166      resending a message down a different tunnel in a lease).  This can be
4167      updated with the "router.clientPartialSendTimeout" router config prop.
4168    * Logging
4169
41702004-10-29  jrandom
4171    * Strip the Referer, Via, and From headers completely, rather than
4172      inserting a bogus value ("i2p").  This should help with the use of
4173      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4174
41752004-10-27  jrandom
4176    * Fix a strange race condition on i2cp client disconnect.
4177    * win98 startup fixes (thanks tester-1 and ardvark!)
4178    * include build scripts for the new streaming lib (which is NOT ready
4179      for use yet, but you can hack around with it)
4180
41812004-10-24  jrandom
4182    * Allow explicit inclusion of session tags in the SDK, enabling the
4183      resending of tags bundled with messages that would not otherwise
4184      be ACKed.
4185    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4186      no DeliveryStatusMessage will be bundled (and as such, client apps using
4187      it will need to do their own session tag ack/nack).
4188    * Handle client errors when notifying them of message availability.
4189    * New StreamSinkSend which sends a file to a destination and disconnects.
4190    * Update the I2PSocketManagerFactory to build the specific
4191      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4192      containing the class name of the I2PSocketManager to instantiate.
4193
41942004-10-23  jrandom
4195    * Minor ministreaming lib refactoring to simplify integration of the full
4196      streaming lib.
4197    * Minor bugfixes to data structure serialization.
4198
4199* 2004-10-18  0.4.1.3 released
4200
42012004-10-18  jrandom
4202    * Allow sending messages with a section of a byte array.
4203    * Reduced stats published.
4204
42052004-10-17  jrandom
4206    * Don't b0rk on whitespace in the router address.
4207
42082004-10-16  jrandom
4209    * More aggressively reduce the capacity of peers if their tunnels are
4210      failing so that we move off them quicker.
4211    * Simplify some data structure serialization for reuse in the streaming
4212      lib, as well as add support for signing and verifying partial byte
4213      arrays.
4214    * Logging updates
4215
42162004-10-16  jrandom
4217    * Increased the default minimum tunnel test time to 5 seconds, since we
4218      still see the occational message processing time spike to 2 seconds.
4219    * Update the SimpleTimer to allow rescheduling a task thats already
4220      queued (useful for the new streaming lib).
4221
42222004-10-15  jrandom
4223    * Replaced old minimum tunnel test timeout of 1s with a configurable
4224      value (router.config property "router.tunnelTestMinimum", with the
4225      default of 2s).
4226
42272004-10-14  jrandom
4228    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4229      peer, so don't use it as a key point of the IsFailing calculator.
4230      We still use it as a key point of the Capacity calculator, however.
4231
42322004-10-14  jrandom
4233    * Allow for a configurable tunnel "growth factor", rather than trying
4234      to achieve a steady state.  This will let us grow gradually when
4235      the router is needed more, rather than blindly accepting the request
4236      or arbitrarily choking it at an averaged value.  Configure this with
4237      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4238    * Adjust the tunnel test timeouts dynamically - rather than the old
4239      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4240      test time (the deviation factor can be adjusted by setting
4241      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4242      find the 'good' tunnels.
4243    * Added some crazy debugging to try and track down an intermittent hang.
4244
42452004-10-13  jrandom
4246    * Fix the probabalistic tunnel reject (we always accepted everything,
4247      since the docs on java.util.Random.nextDouble() are wrong..)
4248    * Fixed a race on startup (thanks Quadn!)
4249
42502004-10-12  jrandom
4251    * Disable the probabalistic drop by default (enable via the router config
4252      property "tcp.dropProbabalistically=true")
4253    * Disable the actual watchdog shutdown by default, but keep track of more
4254      variables and log a lot more when it occurs (enable via the router
4255      config property "watchdog.haltOnHang=true")
4256    * Implement some tunnel participation smoothing by refusing requests
4257      probabalistically as our participating tunnel count exceeds the previous
4258      hour's, or when the 10 minute average tunnel test time exceeds the 60
4259      minute average tunnel test time.  The probabilities in both cases are
4260      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4261      and you had previously only participated in 50, you'll have a 25% chance
4262      of accepting a subsequent request.
4263
4264* 2004-10-10  0.4.1.2 released
4265
42662004-10-10  cervantes
4267    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4268      the request.
4269
42702004-10-09  jrandom
4271    * Added a watchdog timer to do some baseline liveliness checking to help
4272      debug some odd errors.
4273    * Added a pair of summary stats for bandwidth usage, allowing easy export
4274      with the other stats ("bw.sendBps" and "bw.receiveBps")
4275    * Trimmed another memory allocation on message reception.
4276
42772004-10-08  jrandom
4278    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4279      during its operation.
4280
42812004-10-08  jrandom
4282    * Don't kill the establisher threads during a soft restart.
4283    * Attempt to validate the peer's routerInfo earlier during handshaking.
4284    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4285      during its operation.
4286
42872004-10-07  jrandom
4288    * Reimplement the I2NP reading with less temporary memory allocation.
4289      There is still significant GC churn, especially under load, but this
4290      should help.
4291    * Catch some oddball errors in the transport (message timeout while
4292      establishing).
4293
42942004-10-07  jrandom
4295    * Expire queued messages even when the writer is blocked.
4296    * Reimplement most of the I2NP writing with less temporary memory
4297      allocations (I2NP reading still gobbles memory).
4298
42992004-10-06  jrandom
4300    * Implement an active queue management scheme on the TCP transports,
4301      dropping messages probabalistically as the queue fills up.  The
4302      estimated queue capacity is determined by the rate at which messages
4303      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4304      we exceed 1/2 of the estimated capacity, we drop messages throughout
4305      the queue probabalistically with regards to their size.  This is based
4306      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4307      estimated connection capacity.  We may want to consider using a send
4308      rate and queue size measured across all connections, to deal with our
4309      own local bandwidth saturation, but we'll try the per-con metrics first.
4310
43112004-10-06  jrandom
4312    * Enable explicit disabling of the systray entirely for windows machines
4313      with strange configurations: add -Dsystray.disable=true to the java
4314      command line.  (thanks mihi!)
4315
43162004-10-05  jrandom
4317    * Allow peers on the same LAN to communicate with each other safely even
4318      when they cannot talk to each other through the external address.
4319
43202004-10-05  jrandom
4321    * Display how much time is left before the graceful shutdown is complete.
4322    * Debug some improperly failed messages on timeout or disconnection.
4323
43242004-10-05  jrandom
4325    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4326      (thanks mule!)
4327    * Handle some more error conditions regarding abruptly closing sockets
4328      (thanks Jonva!)
4329
43302004-10-04  jrandom
4331    * Update the shitlist to reject a peer for an exponentially increasing
4332      period of time (with an upper bounds of an hour). 
4333    * Various minor stat and debugging fixes
4334
43352004-10-03  jrandom
4336    * Add a new stat logging component to optionally dump the raw stats to
4337      disk as they are generated, rather than rely upon the summarized data.
4338      By default, this is off, but the router property "stat.logFilters" can
4339      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4340      which will be written to the file "stats.log" (or whatever the property
4341      "stat.logFile" is set to).  This can also log profile related stats,
4342      such as "dbResponseTime" or "tunnelTestResponseTime".
4343
43442004-10-02  jrandom
4345    * Assure that we quickly fail messages bound for shitlisted peers.
4346    * Address a race on startup where the first peer contacted could hang the
4347      router (thanks Romster!)
4348    * Only whine about an intermittent inability to query the time server once
4349
43502004-10-02  jrandom
4351    * Command line utility to verify a peer's reachability - simply run
4352      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4353      will print out whether that peer is reachable or not (using a simple
4354      verification handshake).
4355
4356* 2004-10-01  0.4.1.1 released
4357
43582004-10-01  jrandom
4359    * Handle partial reseeds, caused by seeds going away before the download
4360      completes (thanks Sugadude!)
4361
43622004-10-01  jrandom
4363    * Explicitly refuse IPv6 addresses, since only some peers support
4364      them and we want fully reachable peers.
4365
43662004-10-01  jrandom
4367    * Additional error handling for a variety of transport layer errors.
4368
4369* 2004-09-30  0.4.1 released (not backwards compatible)
4370
43712004-09-30  jrandom
4372    * Bundle the configuration necessary to run an eepsite out of the box
4373      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4374      the key listed on the I2PTunnel configuration page, and its up.
4375    * Router console cleanup, and some (off by default) tunnels -
4376      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4377      irc.baffled.i2p (port 7661)
4378
43792004-09-29  jrandom
4380    * Always wipe the Jetty work directory on startup, so that web updates
4381      are reflected immediately (Jetty does not honor the cache across
4382      multiple executions)
4383
43842004-09-27  jrandom
4385    * Limit the number of connection tags saved to 10,000.  This is a huge
4386      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4387      randomly after reaching that size, forcing those dropped peers to use
4388      a full DH negotiation.
4389    * HTML cleanup in the console.
4390
43912004-09-26  jrandom
4392    * Complete rewrite of the TCP transport with IP autodetection and
4393      low CPU overhead reconnections.  More concise connectivity errors
4394      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4395      by listening to the first person who tells you what your IP address is
4396      when you have not defined one yourself and you have no other TCP
4397      connections.
4398    * Update to the I2NP message format to add transparent verification at
4399      the I2NP level (beyond standard TCP verification).
4400    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4401      implementation (rather than verifying with E(H(key)), we now verify with
4402      E(H(iv))).
4403    * The above changes are NOT BACKWARDS COMPATIBLE.
4404    * Removed all of the old unused PHTTP code.
4405    * Refactor various methods and clean up some javadoc.
4406
44072004-09-21  jrandom
4408    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4409      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4410      but values stored in the later take precedence.  Both are queried on
4411      lookup.
4412
44132004-09-16  jrandom
4414    * Refactor the TCP transport to deal with changing identities gracefully,
4415      and to prevent some wasted effort by keeping track of what host+port
4416      combinations we are connected to (rather than just the identities).  Also
4417      catch a few configuration errors earlier.
4418    * Removed no longer relevent methods from the Transport API that were
4419      exposing ideas that probably shouldn't be exposed.
4420    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4421      updates)
4422
44232004-09-13  jrandom
4424    * Update for the SDK reconnection to deal with overflow.
4425    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4426      rounding on lifetime bandwidth used [thanks gott!]).
4427
4428* 2004-09-08  0.4.0.1 released
4429
44302004-09-08  jrandom
4431    * Updated the "Active:" peer count to display the # of connections as well
4432      as the number of recently active router identities.
4433    * Implement some basic updating code - on startup, if there is a file named
4434      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4435      then restart.
4436    * Added an ugly little script to allow launching the router on win9x
4437      machines without a dos box (using javaw to run a .bat file).
4438    * Logging updates.
4439    * Updated VERSION constants to 0.4.0.1
4440
44412004-09-08  hypercubus
4442    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4443      hopefully any other affected *nix systems) now properly discards non-
4444      essential directories after installation.
4445    * Support for Win9x in the installer and postinstall.bat.
4446    * Changed the name of the default installation directory on all platforms
4447      from "I2P" to "i2p" in the installer.
4448    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4449      other configuration files.
4450
44512004-09-07  cervantes:
4452    * Proxy recursion disabled by default (strict)
4453    * Password Authentication for session commands
4454    * Support for http://path?i2paddresshelper=BASE64
4455    * Support for http://i2p/BASE64/path syntax
4456
44572004-09-07  jrandom
4458    * Make sure that peers placed in the 'fast' group are ones we both know
4459      how to reach and have been able to reach recently.  These peers may
4460      still be placed in the 'high capacity' group however (though that group
4461      is only queried if the 'fast' group is too small)
4462    * Include some updates to the ProgileOrganizer's CLI.
4463
44642004-09-07  jrandom
4465    * Disable the timestamper by default for all applications except the router
4466      (enable via -Dtime.disabled=false)
4467    * Simplify the retrieval of the full destination with text based browsers.
4468    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4469
44702004-09-07  jrandom
4471    * Write the native libraries to the current directory when they are loaded
4472      from a resource, and load them from that file on subsequent runs (in
4473      turn, we no longer *cough* delete the running libraries...)
4474    * Added support for a graceful restart.
4475    * Added new pseudo-shutdown hook specific to the router, allowing
4476      applications to request tasks to be run when the router shuts down.  We
4477      use this for integration with the service manager, since otherwise a
4478      graceful shutdown would cause a timeout, followed by a forced hard
4479      shutdown.
4480    * Made the capacity calculator a bit more dynamic by not outright ignoring
4481      the otherwise valid capacity data for a period with a single rejected
4482      tunnel (except for the 10 minute period).  In addition, peers with an
4483      equal capacity are ordered by speed rather than by their hashes.
4484    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4485      issues.
4486    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4487      associated session (unless there are other clients using it), and deal
4488      with a closed session when starting a new I2PTunnel instance.
4489    * Refactoring and logging.
4490
44912004-09-06  jrandom
4492    * Address a race condition in the key management code that would manifest
4493      itself as a corrupt router identity.
4494    * Properly clear old transport addresses from being displayed on the old
4495      console after soft restarts.
4496    * Properly refuse to load the client applications more than once in the
4497      same JVM.
4498    * Added support for a graceful restart (a graceful shutdown followed by a
4499      full JVM restart - useful for restarting client apps).
4500    * More defensive programming, HTML cleanup, logging
4501    * wrapper.config cleanup of duplicate lines
4502
45032004-09-04  jrandom
4504    * Added some basic guards to prevent multiple instances from running.
4505      Specifically, a file "router.ping" in the install directory which is
4506      written to once a minute - if that file exists and has been modified
4507      within the last minute, refuse to start up.  In turn, adjust the
4508      service wrapper to wait a minute before restarting a crashed JVM.
4509    * Create a "work" directory in the I2P install dir which Jetty will
4510      use for all of its temporary files.
4511    * Tell the browser not to cache most of the router console's pages.
4512
45132004-09-04  jrandom
4514    * Update the SDK to automatically reconnect indefinitely with an
4515      exponential delay on retries (capped at 5 minutes).
4516
4517* 2004-09-03  0.4 released
4518
45192004-09-03  jrandom
4520    * Updated default wrapper.config to deal with the hard restart option
4521    * Include the history.txt in the /help.jsp page
4522    * HTML updates (wrapper.log, and no more unix scripts)
4523    * Updated VERSION constants to 0.4
4524
45252004-09-03  hypercubus
4526    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4527    * Temporarily removed install_i2p_service_unix and
4528      uninstall_i2p_service_unix from distribution packages.
4529    * postinstall.bat/postinstall.sh cleans installation directory of all files
4530      not applicable to the host OS.
4531
45322004-09-03  oOo
4533    * Added some filters to the HTTP request, replacing the User-Agent,
4534      Referrer, Via, and From headers, which helps until we have a more
4535      comprehensive filtering system.
4536
45372004-09-03  jrandom
4538    * Disabled the old listener on port 7655.
4539
45402004-09-02  jrandom
4541    * Cleaned up the base build.xml, adding a new target ("updater") which
4542      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4543      existing installs.
4544
45452004-xx-xx  jrandom
4546    * Implemented the new web architecture and router console
4547    * Implemented I2PTunnel web interface, and revamped startup process.
4548    * Revamped peer selection code to address skew.
4549    * Removed all temporary threads from the router and the SDK.
4550    * Bugfix dealing with timeouts and resends.
4551    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4552
45532004-xx-xx  hypercubus
4554    * Implemented the new installation process.
4555    * Integrated systray
4556    * Integrated service manager
4557
45582004-xx-xx  oOo
4559    * Implemented ?i2paddresshelper= hook
4560    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4561
45622004-xx-xx  Nightblade
4563    * libSAM updates.
4564
45652004-xx-xx  cervantes
4566    * Imported i2pProxy.pac proxy script in with the build.
4567
4568* 2004-08-20  0.3.4.3 released
4569* 2004-08-12  0.3.4.2 released
4570* 2004-08-08  0.3.4.1 released
4571* 2004-07-29  0.3.4 released
4572* 2004-07-23  0.3.3 released
4573* 2004-07-16  0.3.2.3 released
4574* 2004-07-14  0.3.2.2 released
4575* 2004-07-11  0.3.2.1 released
4576* 2004-07-07  0.3.2 released
4577* 2004-06-25  0.3.1.5 released
4578* 2004-05-23  0.3.1.4 released
4579* 2004-05-20  0.3.1.3 released
4580* 2004-05-13  0.3.1.2 released
4581* 2004-05-07  0.3.1.1 released
4582* 2004-04-30  0.3.1 released
4583* 2004-04-20  0.3.0.4 released
4584* 2004-04-04  0.3.0.3 released
4585* 2004-03-30  0.3.0.2 released
4586* 2004-03-25  0.3.0.1 released
4587* 2004-03-21  0.3.0 released
4588* 2004-03-10  0.2.5.4 released
4589* 2004-03-04  0.2.5.3 released
4590* 2004-02-28  0.2.5.2 released
4591* 2004-02-27  0.2.5.1 released
4592* 2004-02-25  0.2.5 released
4593* 2004-02-19  0.2.4.2 released
4594* 2004-02-15  0.2.4.1 released
4595* 2004-02-14  0.2.4 released
4596* 2004-01-27  0.2.3.6 released
4597* 2004-01-21  0.2.3.5 released
4598* 2004-01-14  0.2.3.4 released
4599* 2003-12-29  0.2.3.3 released
4600* 2003-12-27  0.2.3.2 released
4601* 2003-12-25  0.2.3.1 released
4602* 2003-12-13  0.2.3 released
4603* 2003-12-01  0.2.2 released
4604* 2003-11-18  0.2.1.1 released
4605* 2003-11-12  0.2.1 released
4606* 2003-11-09  0.2.0.3 released
4607* 2003-11-08  0.2.0.2 released
4608* 2003-11-03  0.2.0.1 released
4609* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.