source: history.txt @ 2f72f5c

Last change on this file since 2f72f5c was 2f72f5c, checked in by zzz <zzz@…>, 12 years ago
  • Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
  • Stats: Add a fake uptime if not publishing stats, to get participating tunnels
  • build.xml:
    • Add an updateSmall target which includes only the essentials
    • Clean up the build file some
    • Remove empty eepsite/ and subdirs from i2pupdate.zip
  • configtunnels.jsp: Add warning
  • i2psnark: Catch a bencode exception (bad peer from tracker) earlier
  • i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
  • Property mode set to 100644
File size: 201.2 KB
Line 
12008-05-26 zzz
2    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
3    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
4    * build.xml:
5      - Add an updateSmall target which includes only the essentials
6      - Clean up the build file some
7      - Remove empty eepsite/ and subdirs from i2pupdate.zip
8    * configtunnels.jsp: Add warning
9    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
10    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
11
122008-05-22 welterde
13    * Change jetty download location in build script
14
152008-05-20 zzz
16    * Reachability:
17      - Call the previously unused profile.tunnelTestFailed()
18        (redefined to include a probability argument)
19        and severely downgrade a peer's capacity upon failures,
20        depending on tunnel length and direction.
21        This will help push unreachable and malicious peers
22        out of the High Capacity tier.
23      - Put recent fail rate on profiles.jsp
24    * ProfileOrganizer: Logging cleanup
25    * eepsite_index.html: Update add-host and jump links
26    * HTTP Proxy: Remove trevorreznik jump server from list
27
282008-05-20 welterde
29    * implemented PrivateKeyFile
30
312008-05-18 zzz
32    * Throttle: Reject tunnels for first 20m uptime (was 10m)
33    * TunnelPeerSelectors:
34       - Re-enable strict ordering of peers,
35         based on XOR distance from a random hash
36       - Restrict peers with uptime < 90m from tunnels (was 2h),
37         which is really 60m due to rounding in netDb publishing.
38    * i2psnark:
39       - Limit max pipelined requests from a single peer to 128KB
40         (was unlimited; i2p-bt default is 5 * 64KB)
41       - Increase max uploaders per torrent to 6 (was 4)
42       - Reduce max connections per torrent to 16 (was 24) to increase
43         unchoke time and reduce memory consumption
44       - Strictly enforce max connections per torrent
45       - Choke more gradually when over BW limit
46    * help.jsp: Add a link to the FAQ
47    * peers.jsp: Fix UDP direction indicators
48    * hosts.txt: Add update.postman.i2p
49
502008-05-12 zzz
51    * Outbound message:
52      - Tweak the cache key for efficiency
53    * Stats:
54      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
55    * Summary bar:
56      - Add messages when dropping tunnel requests due to load
57    * Update Handler:
58      - Add postman to the list
59    * i2psnark:
60      - Randomize the PeerCheckerTask start times to make global limiting
61        work better
62      - Calculate bw limits using 40s rather than 4m averages to make
63        bw limiting work better
64      - Change default bw limit from uplimit/3 to uplimit/2 due to
65        overhead reduction from the leaseset bundling change
66    * libjbigi:
67      - Add documentation on dynamic build option
68      - Add two speed tests to the build script
69      - Clean up the build script, make it easier to build dynamic
70
712008-05-10 zzz
72    * NetDb: Don't write the my.info file to disk, it isn't used for anything
73    * Stats:
74      - Simplify oldstats.jsp if no events in a stat
75      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
76        (caused by an SSU hack)
77    * Update Handler:
78      - Add option to download and verify only
79      - Add distinct error message if version check fails
80
812008-05-09 welterde
82    * Add an update URL to the list
83
842008-05-07 zzz
85    * Reachability:
86      - Restrict peers requiring introducers from inbound tunnels,
87        since it's slow and unreliable... and many of them advertise
88        NTCP, which seems unlikely to work
89      - Provide warning on summary bar if firewalled with inbound NTCP enabled
90    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
91      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
92      at startup (you didn't get any data unless you set the log level anyway)
93    * oldstats.jsp: Don't put 2 decimal places on integer event counts
94    * Remove the Internals link from the menu bar
95    * i2psnark: Extend startup delay from 1 to 3 minutes
96
972008-05-06 welterde
98    * HTTP Proxy: Add i2jump.i2p jump service
99
1002008-05-05 zzz
101    * NetDb Stats: Cleanup of commented out stats
102    * Outbound message:
103      - Fix a couple of tunnel cache cleaning bugs
104      - Cache based on source+dest pairs rather than just dest
105      - Send the reply leaseSet only when necessary,
106        rather than all the time (big savings in overhead)
107      - Enable persistent lease selection again
108      - Logging tweaks
109    * Reachability:
110      - Restrict <= .32 SSU-only peers from inbound tunnels,
111        since they don't know if they are unreachable
112      - Have SSU bid aggressively when it has less than 3 peers, so
113        we can determine our IP address and do peer testing.
114        Otherwise a router may never determine its IP address or reachability status.
115    * Summary bar:
116      - Add reachability status
117      - Add participating tunnel acceptance status
118    * Throttle: Reject tunnels for first 10m uptime
119    * I2PTunnel: Change default outproxy to false.i2p
120    * profiles.jsp: Add router version
121
122* 2008-04-26  0.6.1.33 released
123
1242008-04-20 zzz
125    * Outbound message/Reachability:
126      - Fix a bug from -19 causing the persistent lease selection
127        removed in -17 to be back again
128      - Use netDb-listed-unreachable instead of detected-unreachable
129        for exclusion of unreachable peers from selected leases,
130        as there are potential anonymity problems with using
131        detected-unreachable
132      - Tweak logging some more
133    * NetDb stats: Remove a couple more including the inefficient stat_identities
134
1352008-04-17 zzz
136    * Reachability:
137      - Track unreachable peers persistently
138        (i.e. separately from shitlist, and not cleared when they contact us)
139      - Exclude detected unreachable peers from inbound tunnels
140      - Exclude detected unreachable peers from selected leases
141      - Exclude detected unreachable floodfill peers from lookups
142      - Show unreachable status on profiles.jsp
143
1442008-04-16 zzz
145    * SSU/Reachability:
146      - Extend shitlist time from 4-8m to 40-60m
147      - Add some shitlist logging
148      - Don't shitlist twice when unreachable on all transports
149      - Exclude netDb-listed unreachable peers from inbound tunnels;
150        this won't help much since there are very few of these now
151      - Remove 10s delay on inbound UDP connections used for the
152        0.6.1.10 transition
153      - Track and display UDP connection direction on peers.jsp
154      - Show shitlist status in-line on profiles.jsp
155
1562008-04-15 zzz
157    * SSU Reachability/PeerTestManager:
158      - Back out strict peer ordering until we fix SSU
159      - Back out persistent lease selection until we fix SSU
160      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
161      - Increase known Charlie time to 10m; 3m wasn't enough
162      - Don't continue retransmitting peer test if we know Charlie
163      - Don't run multiple peer tests at once
164      - Tighten test frequency range to 6.5-19.5m, was 0-26m
165
1662008-04-12 zzz
167    * Addressbook: Disallow '.-' and '-.' in host names
168    * NTCP: Don't drop a connection unless both directions are idle;
169            Fix idle time for outbound connections
170    * Outbound message: Make sure cached lease is in current leaseSet
171    * Stats: Put all NetworkDatabase stats in same group
172    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
173    * i2psnark: Add locking to prevent two I2CP connections
174
1752008-04-07 zzz
176    * i2psnark:
177      - Implement upstream bandwidth limiting
178      - Fix a rare NPE at startup/shutdown
179      - Really increase retries for .torrent fetch
180    * profiles.jsp: Minor cleanup
181    * DataHelper: Only format < 5s as ms
182    * Eepget: Fix percentage output on command line eepget retries
183    * Lower partipating message priority from 400 to 200
184    * NTCP: Add a debug message
185    * Outbound message: Minor cleanup
186
1872008-03-30 zzz
188    * ExploratoryPeerSelector: Try NonFailing even more
189    * HostsTxtNamingService: Add reverse lookup support
190    * Outbound message: Minor cleanup
191    * i2psnark TrackerClient: Minor cleanup
192    * checklist.txt: Minor edit
193    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
194    * i2ptunnel.config: Change CVS client to mtn
195    * netdb.jsp: Show leaseSet destinations using reverse lookup
196    * profiles.jsp: First cut at showing floodfill data
197
1982008-03-27 zzz
199    * Send messages for the same destination to the same inbound
200      lease to reduce out-of-order delivery.
201    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
202      for now, as it prevents speed rating of those peers
203
2042008-03-26 zzz
205    * ReseedHandler: Support multiple urls,
206      add netdb.i2p2.de as a 2nd default
207
2082008-03-25 zzz
209    * i2psnark:
210      - Add support for secondary open trackers
211      - Refactor and simplify the TrackerClient code
212      - Add welterde's tracker to the default list
213      - Don't have eepget retry announces
214      - Slow down tracker contacts if they've failed for a while
215      - Add some debug support showing connections (?p=2)
216    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
217
2182008-03-22 zzz
219    * NewsFetcher: Fix bug causing fetch every 10m
220
2212008-03-22 zzz
222    * Tunnel Testing:
223      - Fix counting so it really takes 4 consecutive failures
224        rather than 4 total to remove a tunnel
225      - Credit or blame goes to the exploratory tunnel as well
226        as the tunnel being tested
227      - Adjust tunnel test timeout based on tunnel length
228    * ExploratoryPeerSelector: Tweak logging
229    * ProfileOrganizer: Adjust integration calculation again
230    * build.xml: Add to help
231    * checklist.txt: Tweak
232    * readme.html: Fix forum links
233    * netDb: Remove tunnel.testFailedTime
234
2352008-03-19 zzz
236    * ExploratoryPeerSelector:
237      - Exclude floodfill peers
238      - Tweak the HighCap vs. NonFailing decision; try NonFailing
239        at least a minimum % of the time
240    * i2psnark: Increase retries for .torrent fetch
241    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
242      containing an IP
243    * readme.html: Reorder some items
244    * Stats: Add some more required stats
245    * Streaming lib: Fix slow start to be exponential growth,
246      fix congestion avoidance to be linear growth.
247      Should speed up local connections a lot, and remote
248      connections a little.
249
2502008-03-14 zzz
251    * Floodfill Search:
252       - Prefer heard-from, unfailing, unshitlisted floodfill peers
253
2542008-03-14 zzz
255    * ProfileOrganizer:
256       - Use more recent stats to calculate integration
257       - Show that fast peers are also high-capacity on profiles.jsp
258    * readme.html: Update Syndie link
259    * TunnelPool: Update comments
260    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
261      get rid of the 60s tunnel stats
262      (effective as of .33 to provide cover)
263
2642008-03-13 zzz
265    * Floodfill Search:
266       - Fix a bug that caused a single FloodfillOnlySearchJob
267         instance to be run multiple times, with unpredictable
268         results
269       - Select ff peers randomly to improve reliability
270       - Add some bulletproofing
271
2722008-03-11 zzz
273    * ProfileOrganizer:
274       - Don't require a peer to be high-capacity to be
275         well-integrated (not used for anything right now,
276         but want to get it right for possible floodfill verification)
277       - Don't fall back to median for high-capacity threshold
278         if the mean is higher than the median, this prevents
279         frequent large high-capacity counts
280       - Fix high-capacity selector that picked one too many
281    * Console: put well-integrated count back in the summary
282
2832008-03-10 zzz
284    * EepGet: Fix byte count for bytesTransferred status listeners
285      (fixes command line status)
286    * UpdateHandler:
287       - Fix byte count display
288       - Display final status on router console
289       - Don't allow multiple update jobs to queue up
290       - Increase max retries
291       - Code cleanup
292       - Don't show 'check for update' button when update in progress
293       - Enhance error messages
294    * NetDb: Comment out published netDb stats disabled for .32
295
2962008-03-08 zzz
297    * TunnelPeerSelectors: Implement strict ordering of peers,
298      based on XOR distance from a random hash
299      separately generated for each tunnel pool
300
3012008-03-07 zzz
302    * Naming: Optimize lookups for a destkey
303    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
304      - Prevent peers with matching IPs from joining same tunnel.
305        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
306        Default is 2 (disallow routers in same /16).
307        Set with router.defaultPool.IPRestriction=x
308      - Comment out unused RebuildPeriod pool setting
309      - Add random key to pool in preparation for XOR peer ordering
310    * SusiMail: Add 'Create Account' link
311    * TunnelDispatcher: Change a common wtf error to a warn
312
3132008-03-05 zzz
314    * Naming: Make HostsTxt the sole default NamingService
315      (was Meta = PetName + HostsTxt)
316    * Naming: Add two new experimental NamingServices, EepGet and Exec,
317      not enabled by default -
318      see source comments in core/java/src/net/i2p/client/naming
319      for configuration instructions
320    * i2psnark: Don't do a naming lookup for Base64 destkeys
321    * i2psnark: Add a StartAll button
322    * Stats: Add code to disable most stats to save memory.
323      Set on configstats.jsp or set stat.full=false to disable the stats.
324      (true by default for now)
325
3262008-03-09 Complication
327    * Give the Jetty build file ability to ask permission
328      before downloading the Jetty archive from the web,
329      and to verify its SHA1 + MD5 hashes. Adjust the main build file
330      in accordance with this change.
331    * Improve the release checklist.
332
333* 2008-03-09  0.6.1.32 released
334
3352008-03-07 zzz
336    * Update news and version numbers
337
3382008-03-01 zzz
339    * Fix netdb.knownLeaseSets count reported by floodfill routers
340      (was broken by -3)
341
3422008-02-27 zzz
343    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
344    * i2psnark: Remove orion and gaytorrents from default tracker list
345    * Remove orion from jump list and from eepsite_index.html
346    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
347    * Capitalize OutboundMessageDistributor job name
348    * TunnelPool: Add a warning if all tunnels are backlogged
349
3502008-02-26 zzz
351    * Reintroduce NTCP backlog pushback, with switch back to
352      previous tunnel when no longer backlogged
353    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
354    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
355
3562008-02-21 zzz
357    * Raise inbound default bandwidth to 32KBps
358    * Fix config.jsp that showed 0KBps share bandwidth by default
359
3602008-02-19 zzz
361    * Addressbook: Disallow '--' in host names except in IDN,
362      add some reserved host names
363    * I2PTunnel: Clarify edit form
364    * NetDb: Remove many stats from netDb, effective as of .32
365    * profiles.jsp: Display capabilities
366    * Tunnels: Enforce max tunnel length of 8, catch an index error
367      http://forum.i2p/viewtopic.php?t=2561
368
3692008-02-16 zzz
370    * Fix race in TunnelDispatcher which caused
371      participating tunnel count to seesaw -
372      should increase network capacity
373    * Leave participating tunnels in 10s batches for efficiency
374    * Update participating tunnel ratestat when leaving a tunnel too,
375      to generate a smoother graph
376    * Fix tunnel.participatingMessageCount stat to include all
377      participating tunnels, not just outbound endpoints
378    * Simplify Expire Tunnel job name
379
3802008-02-13 zzz
381    * PersistentDataStore: Write out 300 records every 10 min
382      rather than 1 every 10 sec;
383      Don't store leasesets to disk or read them in
384    * Combine rates for pools with the same length setting
385      in the new tunnel build algorithm
386    * Clarify a log message in the UpdateHandler
387
3882008-02-13 zzz
389    * Make graphs clickable to get larger graphs
390    * Change SimpleTimer CRIT to a WARN, increase threshold
391    * Checklist update
392
3932008-02-11 welterde
394    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
395
3962008-02-10 zzz
397    * Add new tunnel build algorithm (preliminary)
398    * Change NTCP backlogged message from error to warning
399    * Checklist updates
400
401* 2008-02-10  0.6.1.31 released
402
4032008-02-10 Complication
404    * Update news and version numbers
405
4062008-02-06 zzz
407    * build.xml: Add some apps to javadoc
408    * checklist.txt: Add some things
409    * news.xml: make links relative
410    * runplain.sh: Add some comments
411    * wrapper.config: Add some comments
412
4132008-02-05 Complication
414    * Change the dates too (sorry for such forgetfulness!)
415
4162008-02-04 Complication
417    * Also use the new key for checking, and add it into news.xml
418
4192008-02-04 Complication
420    * Added my release signing key into TrustedUpdate.java
421
4222008-01-31 zzz
423    * NewsFetcher: Change fetch failed from error to warning
424    * installer: Fix URL and "email"
425    * checklist.txt: New release checklist
426
4272008-01-29 zzz
428    * Addressbook: Change default subscription
429    * ConfigUpdateHandler: Change default news URL
430    * initialNews.xml: Update version to .31
431    * news.xml: More updates
432    * hosts.txt: Add i2p-projekt.i2p
433    * readme.html: More URL updates
434    * SusiDNS: Change references to default subscription
435
4362008-01-28 zzz
437    * news.xml: Updates, still preliminary
438    * ReseedHandler: Change default URL
439    * i2ptunnel.config: Change default outproxies
440    * readme.html: Change *.i2p.net URLs
441    * help.jsp: Change *.i2p.net URLs
442    * eepsite_index.html: Change stats.i2p addressbook subscription URL
443    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
444
445* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
446
4472008-01-08 zzz
448    * addressbook: Limit size of subscribed hosts.txt,
449        don't save old etag or last-modified data
450    * EepGet: Add some logging,
451        enforce size limits even when size not in returned header,
452        don't return old etag or last-modified data,
453        don't call transferFailed listener more than once
454    * Sign my update signing key
455    * NewsFetcher: add last-modified support, reduce number of retries
456    * Error pages: add icon and logo,
457        clarify 'destination not found' and 'proxy not found' pages
458
4592008-01-07 zzz
460    * profiles.jsp formatting cleanup
461    * NTCP: Reduce max idle time from 60m to 20m
462    * NTCP: Fix idle time on connections with zero messages,
463      correctly drop these connections
464
4652008-01-03 zzz
466    * addressbook: Do basic validation of hostnames and destkeys
467    * susidns: Add support for the private addressbook,
468      update the text and links somewhat
469
4702008-01-02 zzz
471    * Add stats.i2p to the jump list
472    * Impose 20MB limit on POSTs and catch OOMs in POST
473    * eepsite_index.html: add stats.i2p services
474    * addressbook: log source of new keys; disallow dests > 516 bytes
475    * addressbook: convert hostnames to lower case to prevent duplicates
476    * susidns: generalize references to orion
477
4782007-12-29 zzz
479    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
480    * Allow commas in router.trustedUpdateKeys and router.updateURL again
481    * Change default news host from dev.i2p.net to dev.i2p
482    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
483
4842007-12-28 zzz
485    * Add zzz's update signing key
486
4872007-12-26 Complication
488    * Improve reseed handler (less repetitive code,
489      avoid reporting errors when less than 10% of fetches fail)
490
4912007-12-26 Complication
492    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
493      and unescape them in DataHelper.loadProps() to support
494      saving and loading config properties with line breaks
495    * Change the update URLs textbox into a textarea like keys have,
496      so different URLs go on different lines
497    * Modify TrustedUpdate to provide a method which supplies a key list
498      delimited with CR LF line breaks
499    * Modify DEFAULT_UPDATE_URL to supply a default URL list
500      delimited with CR LF line breaks
501    * Modify selectUpdateURL() to handle URL lists
502      delimited by any kind of line breaks
503    * Start saving trusted update keys
504    * Improve formatting on configupdate.jsp
505
5062007-12-22 zzz
507    * Add support for multiple update URLs
508    * Change default for update to use i2p proxy,
509      add several URLs as defaults
510    * Enable trusted key form on configupdate.jsp
511    * Clarify the 'destination not found' error page
512
5132007-12-16 zzz
514    * i2psnark: remove anonymitytracker from default list
515
5162007-12-10 zzz
517    * Fix NPE in CLI TrustedUpdate keygen
518
5192007-12-02 Complication
520    * Commit SAM v2 patch from mkvore (thank you!)
521    * Minor reformatting to preserve consistent whitespace
522      in old SAM classes (new classes unaltered)
523
5242007-12-01 Complication
525    * Separate the checks "does Jetty .zip file need downloading"
526      and "does Jetty .zip file need extracting" in the Jetty buildfile.
527      First download (unless already done), then extract (unless done).
528
5292007-11-26 zzz
530    * i2psnark: add timeout for receive inactivity
531
5322007-11-24 zzz
533    * i2psnark: increase streaming lib write timeout to 240 sec and change
534      timeout action from "ping" to "disconect", as the fix in .30 to
535      honor options on outbound connections led to hung outbound connections
536      (bitfield never transmitted, connection never dropped)
537
5382007-11-06 jrandom
539    * add i2host.i2p to the jump list
540
5412007-10-11 zzz
542    * IRC Proxy: Fix several possible anonymity holes:
543      - Block CTCP in NOTICE messages
544      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
545      - Check for lower case commands
546    (Thanks sponge!)
547
5482007-10-07  jrandom
549    * back out the NTCP backlog pushback, as it could be used to mount an
550      active anonymity attack.
551
552* 2007-10-07  0.6.1.30 released
553
5542007-10-07  Complication
555    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
556      broke retrying.
557
5582007-09-27  zzz
559    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
560    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
561      fix some of the sorting
562
5632007-09-22  zzz
564    * Send messages for the same destination out the same outbound
565      tunnel to reduce out-of-order delivery.
566
5672007-09-19  zzz
568    * i2psnark: Fix broken multifile torrent Delete;
569        cleanup Storage resources in AddTorrent;
570        don't autostart torrent after Create
571
5722007-09-18  zzz
573    * eepsite_index.html: Add links to trevorreznik address book
574    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
575    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
576    * i2psnark: Don't make outbound connections to already-connected peers
577    * i2psnark: Debug logging cleanup
578
5792007-09-14  zzz
580    * eepget: Increase header timeout to 45s
581    * HTTP proxy: Return a better error message for localhost requests
582    * tunnels: Fix PooledTunnelCreatorConfig memory leak
583
5842007-09-09  zzz
585    * eepget: Add support for Last-Modified and If-Modified-Since
586    * addressbook: Finish incomplete support for Last-Modified
587
5882007-09-08  zzz
589    * eepget: Copy over SocketTimeout.java file from syndie
590
5912007-09-07  jrandom
592    * eepget: Merge timeout support from syndie
593
594* 2007-08-23  0.6.1.29 released
595
5962007-08-12  zzz
597    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
598      tweak the eepsite and troubleshooting sections
599
6002007-08-11  zzz
601    * Add stats for individual tunnel rates (nice when graphed)
602    * i2psnark: Fix outbound tunnel nickname
603
6042007-08-05  Complication
605    * Update the sharing calculator on config.jsp
606      and explain the trade-off even more thoroughly.
607
6082007-08-04  Complication
609    * Lower the threshold between the K and L bandwidth class,
610      so that K is now < 12 KB/s, instead of <= 16 KB/s.
611      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
612      participate in routing, if they keep the default share percentage.
613
6142007-07-16  zzz
615    * i2psnark: Add tooltip info for choked/uninterested
616
6172007-07-16  zzz
618    * Make selection of graphed data configurable via configstats.jsp,
619      remove most of the default graphs to save some memory
620
6212007-07-15  zzz
622    * Add current values to graph legends
623    * Fix up previous Rate fix to check for divide by zero
624
6252007-07-14  Complication
626    * Take the post-download routerInfo size check back out of ReseedHandler,
627      since it wasn't helpful, and a lower limit caused false warnings.
628    * Give EepGet ability to enforce a min/max HTTP response size.
629    * Enforce a maximum response size of 8 MB when ReseedHandler
630      downloads into a ByteArrayOutputStream.
631    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
632      change invocation from RouterConsoleRunner accordingly.
633    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
634      provide status reports to indicate the progress of reseeding.
635    * Enable icon for default eepsite, and the index page
636      of the router console (more later).
637
6382007-07-14  zzz
639    * Clean up graphs.jsp - set K=1024 where appropriate,
640      output image sizes in html, catch ooms, other minor tweaks
641    * Fix current event count truncation which fixes graphs with low
642      60-sec event counts displaying high values
643      (bw.* and router.* graphs for example were 1.5x too high)
644      Affects all "events per period" (non-lifetime) counts.
645
6462007-07-09  zzz
647    * i2psnark: give a better error message for a non-i2p torrent
648
6492007-07-07  zzz
650    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
651      SSU will notify/restart NTCP when the external address changes.
652      Now you can enable inbound TCP without a static IP or dyndns service.
653
6542007-07-04  zzz
655    * Display calculated share bandwidth and remove load testing
656      on config.jsp
657
6582007-07-01  zzz
659    * Replace broken option i2np.udp.alwaysPreferred with
660      i2np.udp.preferred and adjust UDP bids; possible settings are
661      "false" (default), "true", and "always".
662      Default setting results in same behavior as before
663      (NTCP is preferred unless it isn't established and UDP is established).
664      Use to compare NTCP and UDP transports.
665
6662007-06-27  jrandom
667    * fix for a streaming lib bug that could leave a thread waiting
668      indefinitely (thanks Complication!)
669
6702007-06-16  Complication
671    * First pass on EepGet and ReseedHandler improvements,
672      please avoid use on routers which matter!
673    * Give EepGet ability of downloading into an OutputStream,
674      such as the ByteArrayOutputStream of ReseedHandler.
675    * Detect failure to reseed better, report it persistently
676      and more verbosely, provide a link to logs
677      and suggest manual reseed.
678
6792007-05-06  Complication
680    * Fix the build.xml file, so the preppkg build target won't try copying files
681      which became deprecated with the old Syndie (thanks for alerting, itsu!)
682
6832007-03-31  zzz
684    * Add trevorreznik jump server to the http proxy error page
685    * Add anonymity to the trackers supporting details links in i2psnark
686
6872007-03-24  zzz
688    * Remove Syndie from build targets and navbar
689
6902007-03-22  zzz
691    * i2psnark tracker handling tweaks:
692    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
693    -   Add Base URL to tracker list configuration
694    -   Web page links built from tracker list Base URLs
695    -   Only build and sort tracker list once
696    -   Add anonymityWeb tracker to default list
697    -   Add tooltip info for TrackerErrs
698    -   Stop torrent if not registered with tracker
699    -   Mark temp files as delete on exit
700
7012007-03-18  zzz
702    * i2psnark: Cleanup some handling of saved partial pieces
703    * i2psnark: Put bit counting in Bitfield.java for efficiency
704    * i2psnark: Save torrent completion state in i2psnark.config
705
706* 2007-03-17  0.6.1.28 released
707
7082007-03-13  zzz
709    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
710
7112007-03-12  jrandom
712    * dodge a race on startup (thanks zzz!)
713
7142007-03-10  zzz
715    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
716      (RFC 2988) to reduce early RTO values
717
7182007-03-08  zzz
719    * i2psnark changes to improve upload performance:
720    *  Implement total uploader limit (10)
721    *  Don't timeout non-piece messages out
722    *  Change chunk size to 32K (was 64K)
723    *  Change request limit to 64K (was 256K)
724    * i2psnark: Disconnect from seeds when complete
725
7262007-03-07  zzz
727    * Remove dynamic router keys from config.jsp
728
7292007-03-07  zzz
730    * Streaming lib changes to improve upstream performance during congestion:
731    *   Change min window size from 12 to 1
732    *   Change max timeout from 10 to 45 sec
733    *   Change initial timeout from 10 to 15 sec
734    *   Change intial window size for i2psnark from 12 to 1
735    *   Change slow start growth rate for i2psnark from 1/2 to 1
736
7372007-03-04  zzz
738    * Update eepsite_index.html
739
7402007-03-03  zzz
741    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
742    * Add a updaterWithJetty build target
743
7442007-03-03  zzz
745    * Implement priority sending for NTCP
746    * Disable trimForOverload() in tunnel BuildExecutor which
747      was preventing tunnel builds when outbound traffic was high
748      (i.e. most of the time when running i2psnark)
749
7502007-02-28  zzz
751    * i2psnark: File reopen cleanup
752
7532007-02-28  zzz
754    * i2psnark: Add peer details to web page
755
756* 2007-02-15  0.6.1.27 released
757
7582007-02-15  jrandom
759    * Limit the whispering floodfill sends to at most 3 randomly
760      chosen from the known floodfill peers
761
7622007-02-14  jrandom
763    * Don't filter out KICK and H(ide oper status) IRC messages
764      (thanks Takk and postman!)
765
7662007-02-13  jrandom
767    * Tell our peers about who we know in the floodfill netDb every
768      6 hours or so, mitigating the situation where peers lose track
769      of floodfill routers.
770    * Disable the Syndie updater (people should use the new Syndie,
771      not this one)
772    * Disable the eepsite tunnel by default
773
7742007-01-30  zzz
775    * i2psnark: Don't hold _snarks lock while checking a snark,
776      so web page is responsive at startup
777
7782007-01-29  zzz
779    * i2psnark: Add NickyB tracker
780
7812007-01-28  zzz
782    * i2psnark: Don't hold sendQueue lock while flushing output,
783      to make everything run smoother
784
7852007-01-27  zzz
786    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
787
7882007-01-20  Complication
789    * Drop overlooked comment
790
7912007-01-20  Complication
792    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
793      instead of System, so setting a reseed URL in advanced configuration has effect.
794    * Clean out obsolete reseed code from ConfigNetHandler.
795
7962007-01-20  zzz
797    * i2psnark: More choking rotation tweaks
798    * Improve performance by not reading in the whole
799      piece from disk for each request. A huge memory savings
800      on 1MB torrents with many peers.
801
8022007-01-17  zzz
803    * Add new HTTP Proxy error message for non-http protocols
804
8052007-01-17  zzz
806    * Add note on Syndie index.html steering people to new Syndie
807
8082007-01-16  zzz
809    * i2psnark: Fix crash when autostart off and
810      tcrrent started manually
811
8122007-01-16  zzz
813    * i2psnark: Fix bug caused by last i2psnark checkin
814      (ConnectionAcceptor not started)
815    * Don't start PeerCoordinator, ConnectionAcceptor,
816      and TrackerClient unless starting torrent
817
8182007-01-15  jrandom
819    * small guard against unnecessary streaming lib reset packets
820      (thanks Complication!)
821
8222007-01-15  zzz
823    * i2psnark: Add 'Stop All' link on web page
824    * Add some links to trackers and forum on web page
825    * Don't start tunnel if 'Autostart' unchecked
826    * Fix torrent restart bug by reopening file descriptors
827
8282007-01-14  zzz
829    * i2psnark: Improvements for torrents with > 4 leechers:
830      choke based on upload rate when seeding, and
831      be smarter and fairer about rotating choked peers.
832    * Handle two common i2psnark OOM situations rather
833      than shutting down the whole thing.
834    * Fix reporting to tracker of remaining bytes for
835      torrents > 4GB (but ByteMonsoon still has a bug)
836
8372006-10-29  zzz
838    * i2psnark: Fix and enable generation of multifile torrents,
839      print error if no tracker selected at create-torrent,
840      fix stopping a torrent that hasn't started successfully,
841      add eBook and GayTorrents trackers to form,
842      web page formatting tweaks
843
844* 2006-10-10  0.6.1.26 released
845
8462006-10-29  Complication
847    * Ensure we get NTP samples from more diverse sources
848      (0.pool.ntp.org, 1.pool.ntp.org, etc)
849    * Discard median-based peer skew calculator as framed average works,
850      and adjusting its percentage can make it behave median-like
851    * Require more data points (from at least 20 peers)
852      before considering a peer skew measurement reliable
853
8542006-10-10  jrandom
855    * Removed the status display from the console, as its more confusing
856      than informative (though the content is still displayed in the HTML)
857
8582006-10-08  Complication
859    * Add a framed average peer clock skew calculator
860    * Add config property "router.clockOffsetSanityCheck" to determine
861      if NTP-suggested clock offsets get sanity checked (default "true")
862    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
863      by more than 5 seconds, or make it more than 20 seconds total
864    * Decrease log level in getMedianPeerClockSkew()
865
8662006-09-29  zzz
867    * i2psnark: Second try at synchronization fix - synch addRequest()
868      completely rather than just portions of it and requestNextPiece()
869
8702006-09-27  jrandom
871    * added HMAC-SHA256
872    * properly use CRLF with EepPost
873    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
874    * PBE session key generation (with 1000 rounds of SHA256)
875    * misc SDK helper functions
876
8772006-09-26  Complication
878    * Take back another inadverent logging change in NTCPConnection
879
8802006-09-26  Complication
881    * Take back an accidental log level change
882
8832006-09-26  Complication
884    * Subclass from Clock a RouterClock which can access router transports,
885      with the goal of developing it to second-guess NTP results
886    * Make transports report clock skew in seconds
887    * Adjust renderStatusHTML() methods accordingly
888    * Show average for NTCP clock skews too
889    * Give transports a getClockSkews() method to report clock skews
890    * Give transport manager a getClockSkews() method to aggregate results
891    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
892      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
893    * Extra explicitness in NTCP classes to denote unit of time.
894    * Fix some places in NTCPConnection where milliseconds and seconds were confused
895
8962006-09-25  zzz
897    * i2psnark: Paranoid copy before writing pieces,
898      recheck files on completion, redownload bad pieces
899    * i2psnark: Don't contact tracker as often when seeding
900
9012006-09-24  zzz
902    * i2psnark: Add some synchronization to prevent rare problem
903      after restoring orphan piece
904
9052006-09-20  zzz
906    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
907      rapid choke/unchokes
908    * i2psnark: Truncate long TrackerErr messages on web page
909
9102006-09-16  zzz
911    * i2psnark: Implement retransmission of requests. This
912      eliminates one cause of complete stalls with a peer.
913      This problem is common on torrents with a small number of
914      active peers where there are no choke/unchokes to kickstart things.
915
9162006-09-13  zzz
917    * i2psnark: Fix restoral of partial pieces broken by last patch
918
9192006-09-13  zzz
920    * i2psnark: Mark a peer's requests as unrequested on disconnect,
921      preventing premature end game
922    * i2psnark: Randomize selection of next piece during end game
923    * i2psnark: Don't restore a partial piece to a peer that is already working on it
924    * i2psnark: strip ".torrent" on web page
925    * i2psnark: Limit piece size in generated torrent to 1MB max
926
9272006-09-09  zzz
928    * i2psnark: Add "Stalled" indication and stat totals on web page
929
9302006-09-09  zzz
931    * i2psnark: Fix bug where new peers would always be sent an "interested"
932      regardless of actual interest
933    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
934      memory and efficiency problems
935
936* 2006-09-09  0.6.1.25 released
937
9382006-09-08  jrandom
939    * Tweak the PRNG logging so it only displays error messages if there are
940      problems
941    * Disable dynamic router keys for the time being, as they don't offer
942      meaningful security, may hurt the router, and makes it harder to
943      determine the network health.  The code to restart on SSU IP change is
944      still enabled however.
945    * Disable tunnel load testing, leaning back on the tiered selection for
946      the time being.
947    * Spattering of bugfixes
948
9492006-09-07  zzz
950    * i2psnark: Increase output timeout from 2 min to 4 min
951    * i2psnark: Orphan debug msg cleanup
952    * i2psnark: More web rate report cleanup
953
9542006-09-05  zzz
955    * i2psnark: Implement basic partial-piece saves across connections
956    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
957      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
958      code in i2psnark ineffective. Will have to research why there is transmit but
959      not receive inactivity code. With the current connection limit of 24 peers
960      we aren't in any danger of keeping out new peers by keeping inactive ones.
961    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
962    * i2psnark: Fix dropped chunk handling
963    * i2psnark: Web rate report cleanup
964
9652006-09-04  zzz
966    * i2psnark: Report cleared trackerErr immediately
967    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
968    * i2psnark: Set up new connections more quickly
969    * i2psnark: Don't delay tracker fetch when setting up lots of connections
970    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
971
9722006-09-04  zzz
973    * Enable pipelining in i2psnark
974    * Make i2psnark tunnel default be 1 + 0-1
975
9762006-09-03  zzz
977    * Add rate reporting to i2psnark
978
9792006-09-03  Complication
980    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
981    * Print messages about addressbook size to give better overview
982    * Enable delete function in published addressbook
983
9842006-08-21  Complication
985    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
986
9872006-08-03  jrandom
988    * Decrease the recently modified tunnel building timeout, though keep
989      the scaling on their processing
990
9912006-07-31  jrandom
992    * Increase the tunnel building timeout
993    * Avoid a rare race (thanks bar!)
994    * Fix the bandwidth capacity publishing code to factor in share percentage
995      and outbound throttling (oops)
996
9972006-07-29  Complication
998    * Treat NTP responses from unexpected stratums like failures
999
1000* 2006-07-28  0.6.1.24 released
1001
10022006-07-28  jrandom
1003    * Don't try to reverify too many netDb entries at once (thanks
1004      cervantes and Complication!)
1005
10062006-07-28  jrandom
1007    * Actually fix the threading deadlock issue in the netDb (removing
1008      the synchronized access to individual kbuckets while validating
1009      individual entries) (thanks cervantes, postman, frosk, et al!)
1010
1011* 2006-07-27  0.6.1.23 released
1012
10132006-07-27  jrandom
1014    * Cut down NTCP connection establishments once we know the peer is skewed
1015      (rather than wait for full establishment before verifying)
1016    * Removed a lock on the stats framework when accessing rates, which
1017      shouldn't be a problem, assuming rates are created (pretty much) all at
1018      once and merely updated during the lifetime of the jvm.
1019
10202006-07-27  jrandom
1021    * Further NTCP write status cleanup
1022    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1023
10242006-07-26  jrandom
1025    * When dropping a netDb router reference, only accept newer
1026      references as part of the update check
1027    * If we have been up for a while, don't accept really old
1028      router references (published 2 or more days ago)
1029    * Drop router references once they are no longer valid, even if
1030      they were allowed in due to the lax restrictions on startup
1031
10322006-07-26  jrandom
1033    * Every time we create a new router identity, add an entry to the
1034      new "identlog.txt" text file in the I2P install directory.  For
1035      debugging purposes, publish the count of how many identities the
1036      router has cycled through, though not the identities itself.
1037    * Cleaned up the way the multitransport shitlisting worked, and
1038      added per-transport shitlists
1039    * When dropping a router reference locally, first fire a netDb
1040      lookup for the entry
1041    * Take the peer selection filters into account when organizing the
1042      profiles (thanks Complication!)
1043    * Avoid some obvious configuration errors for the NTCP transport
1044      (invalid ports, "null" ip, etc)
1045    * Deal with some small NTCP bugs found in the wild (unresolveable
1046      hosts, strange network discons, etc)
1047    * Send our netDb info to peers we have direct NTCP connections to
1048      after each 6-12 hours of connection uptime
1049    * Clean up the NTCP reading and writing queue logic to avoid some
1050      potential delays
1051    * Allow people to specify the IP that the SSU transport binds on
1052      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1053
1054* 2006-07-18  0.6.1.22 released
1055
10562006-07-18  jrandom
1057    * Add a failsafe to the NTCP transport to make sure we keep
1058      pumping writes when we should.
1059    * Properly reallow 16-32KBps routers in the default config
1060      (thanks Complication!)
1061
10622006-07-16  Complication
1063    * Collect tunnel build agree/reject/expire statistics
1064      for each bandwidth tier of peers (and peers of unknown tiers,
1065      even if those shouldn't exist)
1066
10672006-07-14  jrandom
1068    * Improve the multitransport shitlisting (thanks Complication!)
1069    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1070      the default configuration (thanks for the stats Complication!)
1071    * Properly allow older router references to load on startup
1072      (thanks bar, Complication, et al!)
1073    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1074      hopefully today's changes should make this unnecessary (thanks void!)
1075    * Improved NTCP buffering
1076    * Close NTCP connections if we are too backlogged when writing to them
1077
10782006-07-04  jrandom
1079    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1080      connections only.  Those who configure their NAT/firewall to allow
1081      inbound connections and specify the external host and port
1082      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1083      SSU is still enabled for use by default for all users as a fallback.
1084    * Substantial bugfix to the tunnel gateway processing to transfer
1085      messages sequentially instead of interleaved
1086    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1087      GNU/Classpath based JVMs
1088    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1089      refill with a background thread to refill the output buffer
1090    * Add per-transport support for the shitlist
1091    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1092      contention
1093
10942006-07-01  Complication
1095    * Ensure that the I2PTunnel web interface won't update tunnel settings
1096      for shared clients when a non-shared client is modified
1097      (thanks for spotting, BarkerJr!)
1098
10992006-06-14  cervantes
1100    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1101      that use Bitstream Vera fonts @ 96 dpi
1102
1103* 2006-06-14  0.6.1.21 released
1104
11052006-06-13  jrandom
1106    * Use a minimum uptime of 2 hours, not 4 (oops)
1107
11082006-06-13  jrandom
1109    * Cut down the proactive rejections due to queue size - if we are
1110      at the point of having decrypted the request off the queue, might
1111      as well let it through, rather than waste that decryption
1112
11132006-06-11  Kloug
1114    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1115      outstanding pings/pongs
1116
11172006-06-10  jrandom
1118    * Further reduction in proactive rejections
1119
11202006-06-09  jrandom
1121    * Don't let the pending tunnel request queue grow beyond reason
1122      (letting things sit for up to 30s when they fail after 10s
1123      seems a bit... off)
1124
11252006-06-08  jrandom
1126    * Be more conservative in the proactive rejections
1127
11282006-06-04  Complication
1129    * Trim out sending a blank line before USER in susimail.
1130      Seemed to break in rare cases, thanks for reporting, Brachtus!
1131
1132* 2006-06-04  0.6.1.20 released
1133
11342006-06-04  jrandom
1135    * Reduce the SSU ack frequency
1136    * Tweaked the tunnel rejection settings to reject less aggressively
1137
11382006-05-31  jrandom
1139    * Only send netDb searches to the floodfill peers for the time being
1140    * Add some proof of concept filters for tunnel participation.  By default,
1141      it will skip peers with an advertised bandwith of less than 32KBps or
1142      an advertised uptime of less than 2 hours.  If this is sufficient, a
1143      safer implementation of these filters will be implemented.
1144
1145* 2006-05-18  0.6.1.19 released
1146
11472006-05-18  jrandom
1148    * Made the SSU ACKs less frequent when possible
1149
11502006-05-17  Complication
1151    * Fix some oversights in my previous changes:
1152      adjust some loglevels, make a few statements less wasteful,
1153      make one comparison less confusing and more likely to log unexpected values
1154
11552006-05-17  jrandom
1156    * Make the peer page sortable
1157    * SSU modifications to cut down on unnecessary connection failures
1158
11592006-05-16  jrandom
1160    * Further shitlist randomizations
1161    * Adjust the stats monitored for detecting cpu overload when dropping new
1162      tunnel requests
1163
11642006-05-15  jrandom
1165    * Add a load dependent throttle on the pending inbound tunnel request
1166      backlog
1167    * Increased the tunnel test failure slack before killing a tunnel
1168
11692006-05-13  Complication
1170    * Separate growth factors for tunnel count and tunnel test time
1171    * Reduce growth factors, so probabalistic throttle would activate
1172    * Square probAccept values to decelerate stronger when far from average
1173    * Create a bandwidth stat with approximately 15-second half life
1174    * Make allowTunnel() check the 1-second bandwidth for overload
1175      before doing allowance calculations using 15-second bandwidth
1176    * Tweak the overload detector in BuildExecutor to be more sensitive
1177      for rising edges, add ability to initiate tunnel drops
1178    * Add a function to seek and drop the highest-rate participating tunnel,
1179      keeping a fixed+random grace period between such drops.
1180      It doesn't seem very effective, so disabled by default
1181      ("router.dropTunnelsOnOverload=true" to enable)
1182
11832006-05-11  jrandom
1184    * PRNG bugfix (thanks cervantes and Complication!)
1185
1186* 2006-05-09  0.6.1.18 released
1187
11882006-05-09  jrandom
1189    * Further tunnel creation timeout revamp
1190
11912006-05-07  Complication
1192    * Fix problem whereby repeated calls to allowed() would make
1193      the 1-tunnel exception permit more than one concurrent build
1194
11952006-05-06  jrandom
1196    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1197      while tracking the extended timeout events.
1198
11992006-05-04  jrandom
1200    * Short circuit a highly congested part of the stat logging unless its
1201      required (may or may not help with a synchronization issue reported by
1202      andreas)
1203
12042006-05-03  Complication
1205    * Allow a single build attempt to proceed despite 1-minute overload
1206      only if the 1-second rate shows enough spare bandwidth
1207      (e.g. overload has already eased)
1208
12092006-05-02  Complication
1210    * Correct a misnamed property in SummaryHelper.java
1211      to avoid confusion
1212    * Make the maximum allowance of our own concurrent
1213      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1214      within the fixed range 2..10
1215    * While overloaded, try to avoid completely choking our own build attempts,
1216      instead prefer limiting them to 1
1217
12182006-05-01  jrandom
1219    * Adjust the tunnel build timeouts to cut down on expirations, and
1220      increased the SSU connection establishment retransmission rate to
1221      something less glacial.
1222    * For the first 5 minutes of uptime, be less aggressive with tunnel
1223      exploration, opting for more reliable peers to start with.
1224
12252006-05-01  jrandom
1226    * Fix for a netDb lookup race (thanks cervantes!)
1227
12282006-04-27  jrandom
1229    * Avoid a race in the message reply registry (thanks cervantes!)
1230
12312006-04-27  jrandom
1232    * Fixed the tunnel expiration desync code (thanks Complication!)
1233
1234* 2006-04-23  0.6.1.17 released
1235
12362006-04-19  jrandom
1237    * Adjust how we pick high capacity peers to allow the inclusion of fast
1238      peers (the previous filter assumed an old usage pattern)
1239    * New set of stats to help track per-packet-type bandwidth usage better
1240    * Cut out the proactive tail drop from the SSU transport, for now
1241    * Reduce the frequency of tunnel build attempts while we're saturated
1242    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1243
1244* 2006-04-15  0.6.1.16 released
1245
12462006-04-15  jrandom
1247    * Adjust the proactive tunnel request dropping so we will reject what we
1248      can instead of dropping so much (but still dropping if we get too far
1249      overloaded)
1250
12512006-04-14  jrandom
1252    * 0 isn't very random
1253    * Adjust the tunnel drop to be more reasonable
1254
12552006-04-14  jrandom
1256    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1257    * Made the bw-related tunnel join throttle much simpler
1258
12592006-04-14  jrandom
1260    * Make some more stats graphable, and allow some internal tweaking on the
1261      tunnel pairing for creation and testing.
1262
1263* 2006-04-13  0.6.1.15 released
1264
12652006-04-12  jrandom
1266    * Added a further failsafe against trying to queue up too many messages to
1267      a peer.
1268
12692006-04-12  jrandom
1270    * Watch out for failed syndie index fetches (thanks bar!)
1271
12722006-04-11  jrandom
1273    * Throttling improvements on SSU - throttle all transmissions to a peer
1274      when we are retransmitting, not just retransmissions.  Also, if
1275      we're already retransmitting to a peer, probabalistically tail drop new
1276      messages targetting that peer, based on the estimated wait time before
1277      transmission.
1278    * Fixed the rounding error in the inbound tunnel drop probability.
1279
12802006-04-10  jrandom
1281    * Include a combined send/receive graph (good idea cervantes!)
1282    * Proactively drop inbound tunnel requests probabalistically as the
1283      estimated queue time approaches our limit, rather than letting them all
1284      through up to that limit.
1285
12862006-04-08  jrandom
1287    * Stat summarization fix (removing the occational holes in the jrobin
1288      graphs)
1289
12902006-04-08  jrandom
1291    * Process inbound tunnel requests more efficiently
1292    * Proactively drop inbound tunnel requests if the queue before we'd
1293      process it in is too long (dynamically adjusted by cpu load)
1294    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1295      proactively drop too many requests.
1296    * Display the number of pending inbound tunnel join requests on the router
1297      console (as the "handle backlog")
1298    * Include a few more stats in the default set of graphs
1299
13002006-04-06  jrandom
1301    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1302
13032006-04-06  jrandom
1304    * Fixed a typo in the reply cleanup code
1305
1306* 2006-04-05  0.6.1.14 released
1307
13082006-04-05  jrandom
1309    * Cut down on the time that we allow a tunnel creation request to sit by
1310      without response, and reject tunnel creation requests that are lagged
1311      locally.  Also switch to a bounded FIFO instead of a LIFO
1312    * Threading tweaks for the message handling (thanks bar!)
1313    * Don't add addresses to syndie with blank names (thanks Complication!)
1314    * Further ban clearance
1315
13162006-04-05  jrandom
1317    * Fix during the ssu handshake to avoid an unnecessary failure on
1318      packet retransmission (thanks ripple!)
1319    * Fix during the SSU handshake to use the negotiated session key asap,
1320      rather than using the intro key for more than we should (thanks ripple!)
1321    * Fixes to the message reply registry (thanks Complication!)
1322    * More comprehensive syndie banning (for repeated pushes)
1323    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1324      testing purposes
1325    * Put a floor back on the capacity threshold, so too many failing peers
1326      won't cause us to pick very bad peers (unless we have very few good
1327      ones)
1328    * Bugfix to cut down on peers using introducers unneessarily (thanks
1329      Complication!)
1330    * Reduced the default streaming lib message size to fit into a single
1331      tunnel message, rather than require 5 tunnel messages to be transferred
1332      without loss before recomposition.  This reduces throughput, but should
1333      increase reliability, at least for the time being.
1334    * Misc small bugfixes in the router (thanks all!)
1335    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1336
13372006-04-01  jrandom
1338    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1339    * Filter the IRC ping/pong messages, as some clients send unsafe
1340      information in them (thanks aardvax and dust!)
1341
13422006-03-30  jrandom
1343    * Substantially reduced the lock contention in the message registry (a
1344      major hotspot that can choke most threads).  Also reworked the locking
1345      so we don't need per-message timer events
1346    * No need to have additional per-peer message clearing, as they are
1347      either unregistered individually or expired.
1348    * Include some of the more transient tunnel throttling
1349
1350* 2006-03-26  0.6.1.13 released
1351
13522006-03-25  jrandom
1353    * Added a simple purge and ban of syndie authors, shown as the
1354      "Purge and ban" button on the addressbook for authors that are already
1355      on the ignore list.  All of their entries and metadata are deleted from
1356      the archive, and the are transparently filtered from any remote
1357      syndication (so no user on the syndie instance will pull any new posts
1358      from them)
1359    * More strict tunnel join throtting when congested
1360
13612006-03-24  jrandom
1362    * Try to desync tunnel building near startup (thanks Complication!)
1363    * If we are highly congested, fall back on only querying the floodfill
1364      netDb peers, and only storing to those peers too
1365    * Cleaned up the floodfill-only queries
1366
13672006-03-21  jrandom
1368    * Avoid a very strange (unconfirmed) bug that people using the systray's
1369      browser picker dialog could cause by disabling the GUI-based browser
1370      picker.
1371    * Cut down on subsequent streaming lib reset packets transmitted
1372    * Use a larger MTU more often
1373    * Allow netDb searches to query shitlisted peers, as the queries are
1374      indirect.
1375    * Add an option to disable non-floodfill netDb searches (non-floodfill
1376      searches are used by default, but can be disabled by adding
1377      netDb.floodfillOnly=true to the advanced config)
1378
13792006-03-20  jrandom
1380    * Fix to allow for some slack when coalescing stats
1381    * Workaround some oddball errors
1382
13832006-03-18  jrandom
1384    * Added a new graphs.jsp page to show all of the stats being harvested
1385
13862006-03-18  jrandom
1387    * Made the netDb search load limitations a little less stringent
1388    * Add support for specifying the number of periods to be plotted on the
1389      graphs - e.g. to plot only the last hour of a stat that is averaged at
1390      the 60 second period, add &periodCount=60
1391
13922006-03-17  jrandom
1393    * Add support for graphing the event count as well as the average stat
1394      value (done by adding &showEvents=true to the URL).  Also supports
1395      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1396      the title (&hideTitle=true).
1397    * Removed an unnecessary arbitrary filter on the profile organizer so we
1398      can pick high capacity and fast peers more appropriately
1399
14002006-03-16  jrandom
1401    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1402      console.  Selected stats can be harvested automatically and fed into
1403      in-memory RRD databases, and those databases can be served up either as
1404      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1405      details).  A base set of stats are harvested by default, but an
1406      alternate list can be specified by setting the 'stat.summaries' list on
1407      the advanced config.  For instance:
1408      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1409    * HTML tweaking for the general config page (thanks void!)
1410    * Odd NPE fix (thanks Complication!)
1411
14122006-03-15  Complication
1413    * Trim out an old, inactive IP second-guessing method
1414      (thanks for spotting, Anonymous!)
1415
14162006-03-15  jrandom
1417    * Further stat cleanup
1418    * Keep track of how many peers we are actively trying to communicate with,
1419      beyond those who are just trying to communicate with us.
1420    * Further router tunnel participation throttle revisions to avoid spurious
1421      rejections
1422    * Rate stat display cleanup (thanks ripple!)
1423    * Don't even try to send messages that have been queued too long
1424
14252006-03-05  zzz
1426    * Remove the +++--- from the logs on i2psnark startup
1427
14282006-03-05  jrandom
1429    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1430    * Give netDb lookups to floodfill peers more time, as they are much more
1431      likely to succeed (thereby cutting down on the unnecessary netDb
1432      searches outside the floodfill set)
1433    * Fix to the SSU IP detection code so we won't use introducers when we
1434      don't need them (thanks Complication!)
1435    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1436      peers given to it
1437    * Don't let netDb searches wander across too many peers
1438    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1439      as its too volatile to have much meaning.
1440    * Don't bork if a Syndie post is missing an entry.sml
1441
14422006-03-05  Complication
1443    * Reduce exposed statistical information,
1444      to make build and uptime tracking more expensive
1445
14462006-03-04  Complication
1447    * Fix the announce URL of orion's tracker in Snark sources
1448
14492006-03-03  Complication
1450    * Explicit check for an index out of bounds exception while parsing
1451      an inbound IRC command (implicit check was there already)
1452
14532006-03-01  jrandom
1454    * More aggressive tunnel throttling as we approach our bandwidth limit,
1455      and throttle based off periods wider than 1 second.
1456    * Included Doubtful Salmon's syndie stylings (thanks!)
1457
14582006-02-27  zzz
1459    * Update error page templates to add \r, Connection: close, and
1460      Proxy-connection: close to headers.
1461
1462* 2006-02-27  0.6.1.12 released
1463
14642006-02-27  jrandom
1465    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1466      machines, rather than the generic jbigi (until we have an athlon64
1467      optimized version)
1468
14692006-02-26  jrandom
1470    * Switch from the bouncycastle to the gnu-crypto implementation for
1471      SHA256, as benchmarks show a 10-30% speedup.
1472    * Removed some unnecessary object caches
1473    * Don't close i2psnark streams prematurely
1474
14752006-02-25  jrandom
1476    * Made the Syndie permalinks in the thread view point to the blog view
1477    * Disabled TCP again (since the live net seems to be doing well w/out it)
1478    * Fix the message time on inbound SSU establishment (thanks zzz!)
1479    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1480      just starts up
1481
14822006-02-24  jrandom
1483    * Rounding calculation cleanup in the stats, and avoid an uncontested
1484      mutex (thanks ripple!)
1485    * SSU handshake cleanup to help force incompatible peers to stop nagging
1486      us by both not giving them an updated reference to us and by dropping
1487      future handshake packets from them.
1488
14892006-02-23  jrandom
1490    * Increase the SSU retransmit ceiling (for slow links)
1491    * Estimate the sender's SSU MTU (to help see if we agree)
1492
14932006-02-22  jrandom
1494    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1495    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1496      links
1497    * Further class validator refactorings
1498
14992006-02-22  jrandom
1500    * Handle a rare race under high bandwidth situations in the SSU transport
1501    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1502
15032006-02-21  Complication
1504    * Reactivate TCP tranport by default, in addition to re-allowing
1505
1506* 2006-02-21  0.6.1.11 released
1507
15082006-02-21  jrandom
1509    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1510      heap when backlogged (and so that the messages queued up on it don't sit
1511      there forever)
1512    * Further SSU memory cleanup
1513    * Clean up the address regeneration code so it knows when to rebuild the
1514      local info more precisely.
1515
15162006-02-20  jrandom
1517    * Properly enable TCP this time (oops)
1518    * Deal with multiple form handlers on the same page in the console without
1519      being too annoying (thanks blubb and bd_!)
1520
15212006-02-20  jrandom
1522    * Reenable the TCP transport as a fallback (we'll continue to muck with
1523      debugging SSU-only elsewhere)
1524
15252006-02-20  jrandom
1526    * Major SSU and router tuning to reduce contention, memory usage, and GC
1527      churn.  There are still issues to be worked out, but this should be a
1528      substantial improvement.
1529    * Modified the optional netDb harvester task to support choosing whether
1530      to use (non-anonymous) direct connections or (anonymous) exploratory
1531      tunnels to do the harvesting.  Harvesting itself is enabled via the
1532      advanced config "netDb.shouldHarvest=true" (default is false) and the
1533      connection type can be chosen via "netDb.harvestDirectly=false" (default
1534      is false).
1535
15362006-02-19  dust
1537    * Added pruning of suckers history (it used to grow indefinitely).
1538
15392006-02-19  jrandom
1540    * Moved the current net's reseed URL to a different location than where
1541      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1542    * More aggressively expire inbound messages (on receive, not just on send)
1543    * Add in a hook for breaking backwards compatibility in the SSU wire
1544      protocol directly by including a version as part of the handshake.  The
1545      version is currently set to 0, however, so the wire protocol from this
1546      build is compatible with all earlier SSU implementations.
1547    * Increased the number of complete message readers, cutting down
1548      substantially on the delay processing inbound messages.
1549    * Delete the message history file on startup
1550    * Reworked the restart/shutdown display on the console (thanks bd_!)
1551
15522006-02-18  jrandom
1553    * Migrate the outbound packets from a central component to the individual
1554      per-peer components, substantially cutting down on lock contention when
1555      dealing with higher degrees.
1556    * Load balance the outbound SSU transfers evenly across peers, rather than
1557      across messages (so peers with few messages won't be starved by peers
1558      with many).
1559    * Reduce the frequency of router info rebuilds (thanks bar!)
1560
15612006-02-18  jrandom
1562    * Add a new AIMD throttle in SSU to control the number of concurrent
1563      messages being sent to a given peer, in addition to the throttle on the
1564      number of concurrent bytes to that peer.
1565    * Adjust the existing SSU outbound queue to throttle based on the queue's
1566      lag, not an arbitrary number of packets.
1567
15682006-02-17  jrandom
1569    * Properly fix the build request queue throttling, using queue age to
1570      detect congestion, rather than queue size.
1571
15722006-02-17  jrandom
1573    * Disable the message history log file by default (duh - feel free to
1574      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1575    * Limit the size of the inbound tunnel build request queue so we don't
1576      get an insane backlog of requests that we're bound to reject, and adjust
1577      the queue processing so we keep on churning through them when we've got
1578      a backlog.
1579    * Small fixes for the multiuser syndie operation (thanks Complication!)
1580    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1581      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1582
1583* 2006-02-16  0.6.1.10 released
1584
15852006-02-16  jrandom
1586    * Add a new toggle to the web config to enable/disable the load testing
1587
15882006-02-16  jrandom
1589    * Dropped much of the abandonware from the apps/ directory
1590
15912006-02-16  jrandom
1592    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1593    * Initial sucker refactoring to simplify reuse of the html parsing
1594    * Beginnings of hooks to push imported rss/atom out to remote syndie
1595      archives automatically (though not enabled currently)
1596    * Further SSU peer test cleanup
1597
15982006-02-15  jrandom
1599    * Add in per-blog RSS feeds to Syndie
1600    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1601      with the posts, marking additional attachments as Media RSS enclosures
1602      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1603      per item.
1604    * Don't allow the default syndie user to be set to something invalid if
1605      its in single user mode.
1606
16072006-02-15  jrandom
1608    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1609      longer backwards compatible (and should not be used until 0.6.1.1 is
1610      out)
1611
16122006-02-14  jrandom
1613    * Syndie ui bugfixes (thanks all!)
1614
16152006-02-13  jrandom
1616    * Use the current directory for some temporary I2PSnark files, rather than
1617      the OS default temp dir (thanks anon!)
1618    * Increase the base streaming lib window size (still shrinks to 1 on
1619      retransmission though, of course)
1620    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1621    * Implement fast retransmit in the streaming lib (fires at most once per
1622      packet), and increased the default ack delay to 2 seconds (from .5s)
1623    * Don't ask for garlic level message acks for end to end messages unless
1624      they're useful (e.g. to ack session tags)
1625
16262006-02-12  cervantes
1627    * Use a different santisation method for some SML attributes
1628    * Make router console update config save button actually save.
1629    * Fix console bandwidth limiter burst rate dropdowns, so the display
1630      relates to what is saved in the config.
1631   
16322006-02-12  cervantes
1633    * SML is now stricter in it's formatting (attributes should only use
1634      double quotes instead of being allowed to mix with singles).
1635    * Using apostrophes in SML attributes will no longer invalidate the tag.
1636    * Some instances of [blog] tag description were not being displayed
1637      correctly.
1638
16392006-02-12  jrandom
1640    * Further SSU peer test throttling
1641    * Put the most common router console features on the main index page too
1642
16432006-02-11  jrandom
1644    * Be more careful about SSU peer test floods
1645
16462006-02-09  jrandom
1647    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1648
16492006-02-08  jrandom
1650    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1651      bundled a precompiled libjbigi.so in the jbigi.jar
1652    * Cleaned up the synchronization for some SSU packet handling code
1653    * Allow explicit rejection of more lagged tunnel build requests, rather
1654      than dropping them outright
1655    * Use lighter load testing
1656
16572006-02-07  jrandom
1658    * Handle HTTP headers without any values (thanks Sugadude!)
1659    * Don't show the option to make Syndie multiuser, since very few people
1660      need it, and multiuser mode is a lot more complex to use.  Geeks can
1661      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1662      (or in the router's advanced config, for the embedded Syndie)
1663    * When a peer rejects participation in a tunnel, they mean it (duh)
1664    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1665    * Remove a throttle on the size of the SSU active outbound pool, since
1666      it was essentially arbitrary
1667    * Use a more appropriate SSU bloom filter size
1668    * Don't "proactively" drop SSU connections if we have partially received
1669      inbound messages (duh)
1670    * Migrate most of the message state across SSU connection reestablishment
1671
16722006-02-06  jrandom
1673    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
1674      piggybacked
1675
16762006-02-05  jrandom
1677    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
1678      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
1679      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
1680    * Enable the messageHistory.txt by default, for debugging
1681
16822006-02-05  jrandom
1683    * Substantial bugfix for the duplicate message detection in the transport
1684      layer
1685    * Handle tunnel build responses ASAP, rather than queueing them up to wait
1686      in line (processing them is really fast - just a few AES loops)
1687    * Don't bother handling build requests that we have queued up for a while
1688      locally, as the requestor will have timed it out anyway (perhaps we
1689      should reply regardless, but with a backoff instead?)
1690
16912006-02-04  jrandom
1692    * Further tunnel test cleanup and disabling of the old tunnel creation
1693      code
1694
16952006-02-04  jrandom
1696    * Clean up and reenable the tunnel testing for the new tunnel system.
1697
16982006-02-04  jrandom
1699    * Don't cache the archive.txt in syndie when fetching it through the web
1700      interface.
1701    * Logging updates
1702
17032006-02-03  jrandom
1704    * Added further replay prevention on the tunnel build requests
1705    * More aggressive streaming lib closing on reset
1706
17072006-02-03  jrandom
1708    * More aggressive refusal of peers from the wrong network (oops)
1709
17102006-02-01  jrandom
1711    * Instruct the router to reseed against a new URL, for migration purposes:
1712      http://dev.i2p.net/i2pdb2/
1713    * Aggressive error handling during UDP packet creation (thanks cervantes)
1714
17152006-02-01  jrandom
1716    * Fix the new tunnel creation crypto, including the addition of a 4 byte
1717      "next message ID" to the encrypted request structure in the spec.
1718    * Backwards incompatible change, using the new tunnel creation crypto, the
1719      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
1720      with the old incompatible network).
1721    * Reworked the leaseSet request process to handle a race condition
1722    * Disable the TCP transport
1723    * Run four separate threads on the job queue to cut down on job lag
1724
17252006-01-28  jrandom
1726    * Removed a race that could show up in leaseSet requesting with the new
1727      tunnel building process
1728
17292006-01-25  jrandom
1730    * Run the peer profile coalescing/reorganization outside the job queue
1731      (on one of the timers), to cut down on some job queue congestion.  Also,
1732      trim old profiles while running, not just when starting up.
1733    * Slightly more sane intra-floodfill-node netDb activity (only flood new
1734      entries)
1735    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
1736      source of the bug is not yet addressed)
1737    * Better I2PSnark reconnection handling
1738    * Further cleanup in the new tunnel build process
1739    * Make sure we expire old participants properly
1740    * Remove much of the transient overload throttling (it wasn't using a good
1741      metric)
1742
17432006-01-25  dust
1744    * Fix IRC client proxy to use ISO-8859-1.
1745
17462006-01-22  jrandom
1747    * New tunnel build process - does not use the new crypto or new peer
1748      selection strategies.  However, it does drop the fallback tunnel
1749      procedure, except for tunnels who are configured to allow them, or for
1750      the exploratory pool during bootstrapping or after a catastrophic
1751      failure.  This new process prefers to fail rather than use too-short
1752      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
1753      it may expose more tunnel failures to the user.
1754    * Always prefer normal tunnels to fallback tunnels.
1755    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
1756      bar!)
1757    * Do all of the netDb entry writing in a separate thread, avoiding
1758      duplicates and batching them up.
1759
17602006-01-19  Complication
1761    * Explain better where eepsite's destkey can be found
1762
17632006-01-18  cervantes
1764    * Add title attributes to all external links in Syndie, so we can rollover
1765      and quickly see if it's worth clicking on.
1766    * Fixed a minor compiler warning.
1767
17682006-01-17  jrandom
1769    * First pass of the new tunnel creation crypto, specified in the new
1770      router/doc/tunnel-alt-creation.html (referenced in the current
1771      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
1772      than in the test code, but the code verifies the technical viability, so
1773      further scrutiny would be warranted.
1774
17752006-01-16  cervantes
1776    * Dragged I2P kicking and screaming into 2006 (Oops)
1777
17782006-01-14  cervantes
1779    * Removed entirely misleading memory status from the console summary.
1780       
17812006-01-13  cervantes
1782    * Further Syndie layout hardening and typeface balancing.
1783
1784* 2006-01-12  0.6.1.9 released
1785
17862006-01-12  jrandom
1787    * Only create the loadtest.log if requested to do so (thanks zzz!)
1788    * Make sure we cleanly take into consideration the appropriate data
1789      points when filtering out duplicate messages in the message validator,
1790      and report the right bloom filter false positives rate (not used for
1791      anything except debugging)
1792
17932006-01-12  cervantes
1794    * Syndie CSS tweaks to removed some redundant declarations, improve font
1795      scaling and layout robustness. Improved cross browser compatibility
1796      (in other words "kicked IE"). Tightened the look of the blog template
1797      a little.
1798
17992006-01-11  Complication
1800    * CSS comment fixes
1801
18022006-01-11  jrandom
1803    * Include the attachments/blogs/etc for comments on the blog view
1804    * Syndie HTML fixes (thanks cervantes!)
1805    * Make sure we fully reset the objects going into our cache before we
1806      reuse them (thanks zzz!)
1807
18082006-01-10  jrandom
1809    * Added the per-post list of attachments/blogs/etc to the blog view in
1810      Syndie (though this does not yet include comments or some further
1811      refinements)
1812    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
1813      removing the dox box (though also removes the restart functionality...)
1814    * Give the i2p.exe the correct java.library.path to support the systray
1815      dll (thanks Bobcat, Sugadude, anon!)
1816
18172006-01-09  jrandom
1818    * Removed a longstanding bug that had caused unnecessary router identity
1819      churn due to clock skew
1820    * Temporarily sanity check within the streaming lib for long pending
1821      writes
1822    * Added support for a blog-wide logo to Syndie, and automated the pushing
1823      of updated extended blog info data along side the metadata.
1824
18252006-01-09  jrandom
1826    * Bugfix for a rare SSU error (thanks cervantes!)
1827    * More progress on the blog interface, allowing customizable blog-wide
1828      links.
1829
18302006-01-08  jrandom
1831    * First pass of the new blog interface, though without much of the useful
1832      customization features (coming soon)
1833
18342006-01-04  jrandom
1835    * Rather than profile individual tunnels for throughput over their
1836      lifetime, do so at 1 minute intervals (allowing less frequently active
1837      tunnels to be more fairly measured).
1838    * Run the live tunnel load test across two tunnels at a time, by default.
1839      The load test runs for a random period from 90s to the tunnel lifetime,
1840      self paced.  This should help gathering data for profiling peers that
1841      are in exploratory tunnels.
1842
18432006-01-03  jrandom
1844    * Calculate the overall peer throughput across the 3 fastest one minute
1845      tunnel throughput values, rather than the single fastest throughput.
1846    * Degrade the profiled throughput data over time (cutting the profiled
1847      peaks in half once a day, on average)
1848    * Enable yet another new speed calculation for profiling peers, using the
1849      peak throughput from individual tunnels that a peer is participating in,
1850      rather than across all tunnels they are participating in.  This helps
1851      gather a fairer peer throughput measurement, since it won't allow a slow
1852      high capacity peer seem to have a higher throughput (pushing a little
1853      data across many tunnels at once, as opposed to lots of data across a
1854      single tunnel).  This degrades over time like the other.
1855    * Add basic OS/2 support to the jbigi code (though we do not bundle a
1856      precompiled OS/2 library)
1857
18582006-01-01  jrandom
1859    * Disable multifile torrent creation in I2PSnark's web UI for the moment
1860      (though it can still seed and participate in multifile swarms)
1861    * Enable a new speed calculation for profiling peers, using their peak
1862      1 minute average tunnel throughput as their speed.
1863
18642005-12-31  jrandom
1865    * Include a simple torrent creator in the I2PSnark web UI
1866    * Further streaming lib closing improvements
1867    * Refactored the load test components to run off live tunnels (though,
1868      still not safe for normal/anonymous load testing)
1869
18702005-12-30  jrandom
1871    * Close streams more gracefully
1872
18732005-12-30  jrandom
1874    * Small streaming lib bugfixes for the modified timeouts
1875    * Minor Syndie/Sucker RSS html fix
1876    * Small synchronization fix in I2PSnark (thanks fsm!)
1877
18782005-12-30  jrandom
1879    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
1880      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
1881      some distros (e.g. mandriva)
1882
18832005-12-29  jrandom
1884    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
1885      actually correct
1886
18872005-12-27  jrandom
1888    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
1889      the clock is too skewed to do anything useful (check the year and month,
1890      not just the hour and minute).
1891    * Fixed the read/write timeouts in the streaming lib (so that it actually
1892      honors them now)
1893    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
1894      torrent closing)
1895    * Handle an oddball tunnel creation failure (thanks Xunk)
1896
18972005-12-26  Complication
1898    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
1899    * HTML readability cosmetics on "Peers" page
1900
1901* 2005-12-22  0.6.1.8 released
1902
19032005-12-22  jrandom
1904    * Bundle the standalone I2PSnark launcher in the installer and update
1905      process (launch as "java -jar launch-i2psnark.jar", viewing the
1906      interface on http://localhost:8002/)
1907    * Don't autostart swarming torrents by default so that you can run a
1908      standalone I2PSnark from the I2P install dir and not have the embedded
1909      I2PSnark autolaunch the torrents that the standalone instance is running
1910    * Fixed a rare streaming lib bug that could let a blocking call wait
1911      forever.
1912
19132005-12-22  jrandom
1914    * Cleaned up some buffer synchronization issues in I2PSnark that could
1915      cause blockage.
1916
19172005-12-21  jrandom
1918    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
1919      behavior)
1920    * Fixed the I2PSnark bug that would lose track of live peers
1921
19222005-12-20  jrandom
1923    * Enabled the control in I2PSnark to toggle whether torrents should be
1924      started automatically or not
1925    * Hopefully finished the last hook to close down torrents completely when
1926      they're stopped.
1927
19282005-12-19  jrandom
1929    * Fix for old Syndie blog bookmarks (thanks Complication!)
1930    * Fix for I2PSnark to accept incoming connections again (oops)
1931    * Randomize the order that peers from the tracker are contacted
1932
19332005-12-19  jrandom
1934    * I2PSnark logging, disconnect old inactive peers rather than new ones,
1935      memory usage reduction, better OOM handling, and a shared connection
1936      acceptor.
1937    * Cleaned up the Syndie blog page and the resulting filters (viewing a
1938      blog from the blog page shows threads started by the selected author,
1939      not those that they merely participate in)
1940
19412005-12-18  jrandom
1942    * Added a standalone runner for the I2PSnark web ui (build with the
1943      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
1944      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
1945    * Further I2PSnark error handling
1946
19472005-12-17  jrandom
1948    * Let multiuser accounts authorize themselves to access the remote
1949      functionality again (thanks Ch0Hag!)
1950    * Adjust the JVM heap size to 128MB for new installs (existing users can
1951      accomplish this by editing wrapper.config, adding the line
1952      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
1953      of the router).  This is relevent for heavy usage of I2PSnark in the
1954      router console.
1955
19562005-12-17  jrandom
1957    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
1958      'piece' sizes grow larger than before.
1959
19602005-12-16  jrandom
1961    * Added some I2PSnark sanity checks, an OOMListener when running
1962      standalone, and a guard against keeping memory tied up indefinitely.
1963    * Sanity check on the watchdog (thanks zzz!)
1964    * Handle invalid HTTP requests in I2PTunnel a little better
1965
19662005-12-16  jrandom
1967    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
1968      properly (thanks Complication!)
1969    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
1970      b0rking in the DirMonitor, etc)
1971
19722005-12-16  jrandom
1973    * Try to run a torrent in readonly mode if we can't write to the file, and
1974      handle failures a little more gracefully (thanks polecat!)
1975
19762005-12-16  jrandom
1977    * Refuse torrents with too many files (128), avoiding ulimit errors.
1978    * Remove an fd leak in I2PSnark
1979    * Further I2PSnark web UI cleanup
1980
19812005-12-15  jrandom
1982    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
1983
19842005-12-15  jrandom
1985    * Added multitorrent support to I2PSnark, accessible currently by running
1986      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
1987      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
1988      their data in that directory as well.  Removing the .torrent file stops
1989      participation, and it is currently set to seed indefinitely.  Completion
1990      is logged to the logger and standard output, with further UI interaction
1991      left to the (work in progress) web UI.
1992
19932005-12-14  jrandom
1994    * Fix to drop peer references when we shitlist people again (thanks zzz!)
1995    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
1996      (thanks Complication!)
1997
19982005-12-13  zzz
1999    * Don't test tunnels expiring within 90 seconds
2000    * Defer Test Tunnel jobs if job lag too large
2001    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2002      job lag for tunnel build backoff, allowing for more agile handling
2003      (since the stat is only updated once a minute)
2004    * Use tunnel length override if all tunnels are expiring within one
2005      minute.
2006
20072005-12-13  jrandom
2008    * Fixed I2PSnark's handling of some torrent files to deal with those
2009      created by Azureus and I2PRufus (it didn't know how to deal with
2010      additional meta info, such as path.utf-8 or name.utf-8).
2011
20122005-12-09  zzz
2013    * Create different strategies for exploratory tunnels (which are difficult
2014      to create) and client tunnels (which are much easier)
2015    * Gradually increase number of parallel build attempts as tunnel expiry
2016      nears.
2017    * Temporarily shorten attempted build tunnel length if builds using
2018      configured tunnel length are unsuccessful
2019    * React more aggressively to tunnel failure than routine tunnel
2020      replacement
2021    * Make tunnel creation times randomized - there is existing code to
2022      randomize the tunnels but it isn't effective due to the tunnel creation
2023      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2024      to 3 minutes before expiration. The patch fixes this by fixing the
2025      randomization, and by changing the overlap time (with old tunnels) to a
2026      range of 2 to 4 minutes.
2027    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2028      to overlapping calls. Just about anything generated a call which could
2029      build many tunnels all at once, even if tunnel building was already in
2030      process.
2031    * Miscellaneous router console enhancements
2032
20332005-12-08  jrandom
2034    * Minor bugfix in SSU for dealing with corrupt packets
2035    * Added some hooks for load testing
2036
20372005-12-07  jrandom
2038    * Added a first pass at a blog view in Syndie
2039
20402005-12-07  jrandom
2041    * Expand the thread we're viewing to its leaf
2042    * Bugfix on intraday ordering (children are always newer than parents)
2043
20442005-12-05  jrandom
2045    * Added an RDF and XML thread export to Syndie, reachable at
2046      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2047      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2048      displays all threads.
2049
20502005-12-04  TLorD
2051    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2052
20532005-12-04  jrandom
2054    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2055    * Always include ourselves in the favorite authors (since we don't
2056      bookmark ourselves)
2057
20582005-12-03  jrandom
2059    * Use newgroup-like tags by default in Syndie's interface
2060
20612005-12-03  jrandom
2062    * Added support for a 'most recent posts' view that CofE requested, which
2063      includes the ability to filter by age (e.g. posts by your favorite
2064      authors in the last 5 days).
2065
20662005-12-03  jrandom
2067    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2068      displays a a single thread path at a time - from root to leaf - rather
2069      than a depth first traversal.
2070
20712005-12-03  jrandom
2072    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2073      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2074      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2075      running a single user Syndie instance (by default).  It also creates a
2076      default subscription to syndiemedia without any anonymity (using no
2077      proxy).  Upgrades can be done by just replacing the syndie.war with the
2078      one from I2P.
2079
2080* 2005-12-01  0.6.1.7 released
2081
20822005-12-01  jrandom
2083    * Add a new criteria to the tunnel join throttle, backing off people if we
2084      are failing to talk to our peers more than usual.
2085
20862005-11-30  jrandom
2087    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2088      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2089      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2090      separate jdom or rome, as they're inside syndie.war.
2091
20922005-11-30  jrandom
2093    * Don't let the TCP transport alone shitlist a peer, since other
2094      transports may be working.  Also display whether TCP connections are
2095      inbound or outbound on the peers page.
2096    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2097      talk to anyone who didn't expose an IP (even if they had introducers),
2098      among other goofy things.
2099    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2100      rather than sending one a packet at 3s, then another a packet at 6s,
2101      and a third a packet at 9s.
2102    * Fixed Syndie attachments (oops)
2103
21042005-11-29  zzz
2105    * Added a link to orion's jump page on the 'key not found' error page.
2106
21072005-11-29  jrandom
2108    * Further Syndie UI cleanup
2109    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2110      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2111      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2112      will be removed as soon as its integrated into Jetty.  This patch allows
2113      posting content in various character sets.
2114      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2115    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2116      isn't pushed as part of the update yet, as there aren't any critical
2117      bugs.
2118
21192005-11-29  jrandom
2120    * Added back in the OSX jbigi, which was accidentally removed a few revs
2121      back (thanks for the bug report stoerte!)  New installs will get the
2122      full jbigi, or you can pull the jbigi.jar from CVS by going to
2123      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2124      and clicking on the first "download" link, saving that jbigi.jar to
2125      lib/jbigi.jar in your I2P installation directory.  After restarting your
2126      router, it should load up fine.
2127
21282005-11-27  jrandom
2129    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2130      because firefox [and others?] delay rendering until they fetch the css).
2131    * Make sure we fire the shutdown tasks when regenerating a new identity
2132      (thanks picsou!)
2133    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2134    * Don't drop SSU sessions if they're still transmitting data successfully,
2135      even if there are transmission failures
2136    * Adjusted the time summarization to display hours after 119m, not 90m
2137    * Further EepGet cleanup (grr)
2138
2139* 2005-11-26 0.6.1.6 released
2140
21412005-11-26  jrandom
2142    * Update the sorting in Syndie to consider children 'newer' than parents,
2143      even if they have the same message ID (duh)
2144    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2145    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2146    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2147      better)
2148
21492005-11-26  jrandom
2150    * Be more explicit about what messages we will handle through a client
2151      tunnel, and how we will handle them.  This cuts off a set of attacks
2152      that an active adversary could mount, though they're probably nonobvious
2153      and would require at least some sophistication.
2154
21552005-11-26  Raccoon23
2156    * Added support for 'dynamic keys' mode, where the router creates a new
2157      router identity whenever it detects a substantial change in its public
2158      address (read: SSU IP or port).  This only offers minimal additional
2159      protection against trivial attackers, but should provide functional
2160      improvement for people who have periodic IP changes, since their new
2161      router address would not be shitlisted while their old one would be.
2162    * Added further infrastructure for restricted route operation, but its use
2163      is not recommended.
2164
21652005-11-25  jrandom
2166    * Further Syndie UI cleanups
2167    * Logging cleanup
2168    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2169
21702005-11-25  jrandom
2171    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2172    * Cleaned up the syndie threaded display to show the last updated date for
2173      a subthread, and to highlight threads updated in the last two days.
2174
21752005-11-24  jrandom
2176    * Fix to save syndication settings in Syndie (thanks spaetz!)
2177
21782005-11-23  jrandom
2179    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2180    * Streamlined the tunnel batching to schedule batch transmissions more
2181      appropriately.
2182    * Default tunnel pool variance to 2 +0-1 hops
2183
21842005-11-21  jrandom
2185    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2186      within I2PTunnel.
2187    * Increase the maximum SSU retransmission timeout to accomodate slower or
2188      more congested links (though SSU's RTO calculation will usually use a
2189      much lower timeout)
2190    * Moved the streaming lib timed events off the main timer queues and onto
2191      a streaming lib specific set of timer queues.  Streaming lib timed
2192      events are more likely to have lock contention on the I2CP socket while
2193      other timed events in the router are (largely) independent.
2194    * Fixed a case sensitive lookup bug (thanks tino!)
2195    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2196      links (thanks tino!)
2197
21982005-11-19  jrandom
2199    * Implemented a trivial pure java PMTU backoff strategy, switching between
2200      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2201    * Fixed new user registration in Syndie (thanks Complication!)
2202
22032005-11-17  jrandom
2204    * More cautious file handling in Syndie
2205
22062005-11-16  jrandom
2207    * More aggressive I2PTunnel content encoding munging to work around some
2208      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2209      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2210      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2211      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2212      or X-Accept-encoding headers.  Eepsite operators who do not know to
2213      check for X-Accept-encoding will simply use the identity encoding.
2214
2215* 2005-11-15  0.6.1.5 released
2216
22172005-11-14  jrandom
2218    * Migrate to the new Syndie interface
2219
22202005-11-11  jrandom
2221    * Add filtering threads by author to Syndie, populated with authors in the
2222      user's addressbook
2223    * When creating the default user, add
2224      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2225      configured to automatically pull updates.  (what other archives should
2226      be included?)
2227    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2228      the installer/resources/themes/** into ./docs/themes/** on both install
2229      and update.
2230
22312005-11-11  cervantes
2232    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2233      being progressively rolled out to other sections at later dates.
2234      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2235      layout and styling.
2236    * Implemented console themes. Users can create their own themes by
2237      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2238      and activating it using the routerconsole.theme={themename} advanced
2239      config property. Look at the example incomplete "defCon1" theme.
2240      Note: This is very much a work in progress. Folks might want to hold-off
2241      creating their own skins until the markup has solidified.
2242    * Added "routerconsole.javascript.disabled=true" to disable console
2243      client-side scripting and "routerconsole.css.disabled=true" to remove
2244      css styling (only rolled out in the i2ptunnel interface currently)
2245    * Fixed long standing bug with i2ptunnel client and server edit screens
2246      where tunnel count and depth properties would fail to save. Added
2247      backup quantity and variance configuration options.
2248    * Added basic accessibility support (key shortcuts, linear markup, alt and
2249      title information and form labels).
2250    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2251
22522005-11-11  jrandom
2253    * Default Syndie to single user mode, and automatically log into a default
2254      user account (additional accounts can be logged into with the 'switch'
2255      or login pages, and new accounts can be created with the register page).
2256    * Disable the 'automated' column on the Syndie addressbook unless the user
2257      is appropriately authorized (good idea Polecat!)
2258
22592005-11-10  jrandom
2260    * First pass to a new threaded Syndie interface, which isn't enabled by
2261      default, as its not done yet.
2262
22632005-11-06  jrandom
2264    * Include SSU establishment failure in the peer profile as a commError,
2265      as we do for TCP establishment failures.
2266    * Don't throttle the initial transmission of a message because of ongoing
2267      retransmissions to a peer, since the initial transmission of a message
2268      is more valuable than a retransmission (since it has less latency).
2269    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2270
22712005-11-05  jrandom
2272    * Include the most recent ACKs with packets, rather than only sending an
2273      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2274      increasing sequence numbers, while each message ID in SSU is random, so
2275      we don't get the benefit of later ACKs implicitly ACKing earlier
2276      messages.
2277    * Reduced the max retransmission timeout for SSU
2278    * Don't try to send messages queued up for a long time waiting for
2279      establishment.
2280
22812005-11-05  dust
2282    * Fix sucker to delete its temporary files.
2283    * Improve sucker's sml output some.
2284    * Fix Exception in SMLParser for weird sml.
2285
22862005-11-03  zzz
2287    * Added a new error page to the eepproxy to differentiate the full 60
2288      second timeout from the immediate "I don't know this base64" failure.
2289
22902005-11-01  jrandom
2291    * Added a few more css elements (thanks identiguy!)
2292
22932005-10-31  jrandom
2294    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2295    * Removed a potentially infinitely recursive call (oops)
2296
22972005-10-30  dust
2298    * Merge sucker into syndie with a rssimport.jsp page.
2299    * Add getContentType() to EepGet.
2300    * Make chunked transfer work (better) with EepGet.
2301    * Do replaceAll("<","&lt;") for logs.
2302
2303* 2005-10-29  0.6.1.4 released
2304
23052005-10-29  jrandom
2306    * Improved the bandwidth throtting on tunnel participation, especially for
2307      low bandwidth peers.
2308    * Improved failure handling in SSU with proactive reestablishment of
2309      failing idle peers, and rather than shitlisting a peer who failed too
2310      much, drop the SSU session and allow a new attempt (which, if it fails,
2311      will cause a shitlisting)
2312    * Clarify the cause of the shitlist on the profiles page, and include
2313      bandwidth limiter info at the bottom of the peers page.
2314
23152005-10-26  jrandom
2316    * In Syndie, propogate the subject and tags in a reply, and show the parent
2317      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2318    * Streamline some netDb query handling to run outside the jobqueue -
2319      which means they'll run on the particular SSU thread that handles the
2320      message.  This should help out heavily loaded netDb peers.
2321
23222005-10-25  jrandom
2323    * Defer netDb searches for newly referenced peers until we actually want
2324      them
2325    * Ignore netDb references to peers on our shitlist
2326    * Set the timeout for end to end client messages to the max delay after
2327      finding the leaseSet, so we don't have as many expired messages floating
2328      around.
2329    * Add a floor to the streaming lib window size
2330    * When we need to send a streaming lib ACK, try to retransmit one of the
2331      unacked packets instead (with updated ACK/NACK fields, of course).  The
2332      bandwidth cost of an unnecessary retransmission should be minor as
2333      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2334      the probability of a necessary retransmission.
2335    * Adjust the streaming lib cwin algorithm to allow growth after a full
2336      cwin messages if the rtt is trending downwards.  If it is not, use the
2337      existing algorithm.
2338    * Increased the maximum rto size in the streaming lib.
2339    * Load balancing bugfix on end to end messages to distribute across
2340      tunnels more evenly.
2341
23422005-10-22  jrandom
2343    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2344      ./prngseed.rnd (if they exist), and reseeding it with data out of
2345      various crypto operations (unused bits in a DH exchange, intermediary
2346      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2347      The Fortuna implementation under gnu.crypto.prng has been modified to
2348      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2349      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2350      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2351      wrapper around it is, of course, public domain.
2352
23532005-10-20  dust
2354    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2355      always shared. (thx for info Ragnarok)
2356    * Fix crash in Sucker with some bad html.
2357
23582005-10-20  jrandom
2359    * Workaround a bug in GCJ's Calendar implementation
2360    * Propery throw an exception in the streaming lib if we try to write to a
2361      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2362      GregorK!)
2363
23642005-10-19  jrandom
2365    * Ported the snark bittorrent client to I2P such that it is compatible
2366      with i2p-bt and azneti2p.  For usage information, grab an update and run
2367      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2368      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2369    * Don't allow leaseSets expiring too far in the future (thanks postman)
2370
23712005-10-19  jrandom
2372    * Bugfix for the auto-update code to handle different usage patterns
2373    * Decreased the addressbook recheck frequency to once every 12 hours
2374      instead of hourly.
2375    * Handle dynamically changing the HMAC size (again, unless your nym is
2376      toad or jrandom, ignore this ;)
2377    * Cleaned up some synchronization/locking code
2378
23792005-10-17  dust
2380    * Exchange the remaining URL with EepGet in Sucker.
2381    * Allow /TOPIC irc command.
2382
23832005-10-17  jrandom
2384    * Allow an env prop to configure whether we want to use the backwards
2385      compatible (but not standards compliant) HMAC-MD5, or whether we want
2386      to use the not-backwards compatible (but standards compliant) one.  No
2387      one should touch this setting, unless your name is toad or jrandom ;)
2388    * Added some new dummy facades
2389    * Be more aggressive on loading up the router.config before building the
2390      router context
2391    * Added new hooks for apps to deal with previously undefined I2NP message
2392      types without having to modify any code.
2393    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2394
23952005-10-14  jrandom
2396    * More explicit filter for linux/PPC building (thanks anon!)
2397    * Fixed Syndie's Sucker to not explicitly reference something only found
2398      in sun's JVM (thanks cervantes!)
2399    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2400
2401* 2005-10-14  0.6.1.3 released
2402
24032005-10-14  jrandom
2404    * Added a key explaining peers.jsp a bit (thanks tethra!)
2405
24062005-10-13  dust
2407    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2408      then be injected into Syndie with the Syndie CLI.
2409    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2410      RSS/Atom parsing.
2411
24122005-10-13  jrandom
2413    * SSU retransmission choke bugfix (== != !=)
2414    * Include initial transmissions in the retransmission choke, so that
2415      if we are already retransmitting a message, we won't send anything
2416      to that peer other than that message (or ACKs, if necessary)
2417
24182005-10-12  jrandom
2419    * Choke SSU retransmissions to a peer while there is already a
2420      retransmission in flight to them.  This currently lets other initial
2421      transmissions through, since packet loss is often sporadic, but maybe
2422      this should block initial transmissions as well?
2423    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2424    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2425
24262005-10-11  jrandom
2427    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2428      compatible.
2429    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2430      just the blurb before the cut.
2431
24322005-10-11  jrandom
2433    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2434      yet piggybacked).  This is backwards compatible.
2435    * SML parser cleanup in Syndie
2436
24372005-10-10  dust
2438    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2439      outbound IRC commands for anonymity and security purposes, removing all
2440      CTCP messages except ACTION, as well as stripping the hostname from the
2441      USER message (while leaving the nick and 'full name').  The IRC proxy
2442      doesn't use this by default, but you can enable it by creating a new
2443      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2444      to "ircclient" in i2ptunnel.config.
2445
24462005-10-10  jrandom
2447    * I2PTunnel http client config cleanup and stats
2448    * Minor SSU congestion tweaks and stats
2449    * Reduced netDb exploration period
2450
24512005-10-09  jrandom
2452    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2453      java -jar lib/syndie.jar
2454    * Beginnings of the Syndie logging cleanup
2455    * Delete corrupt Syndie posts
2456
24572005-10-09  jrandom
2458    * Now that the streaming lib works reasonably, set the default inactivity
2459      event to send a 0 byte keepalive payload, rather than disconnecting the
2460      stream.  This should cut the irc netsplits and help out with other long
2461      lived streams.  The default timeout is now less than the old timeout as
2462      well, so the keepalive will be sent before earlier builds fire their
2463      fatal timeouts.
2464
24652005-10-08  jrandom
2466    * Use the OS clock for stat timing, since it doesn't jump around (though
2467      still use the NTP'ed clock for display)
2468    * Added new DH stats
2469
2470* 2005-10-07  0.6.1.2 released
2471
24722005-10-07  jrandom
2473    * Include the 1 second bandwidth usage on the console rather than the
2474      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2475      issues.
2476
24772005-10-07  jrandom
2478    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2479      HTTP response quicker, and initialize the streaming lib's cwin more
2480      carefully.
2481    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2482      as a user authorized to use the remote archive funtionality, you can
2483      request remote archives in your address book to be automatically pulled
2484      down by checking the "scheduled?" checkbox.
2485
24862005-10-05  jrandom
2487    * Allow the first few packets in the stream to fill in their IDs during
2488      handshake (thanks cervantes, Complication, et al!)  This should fix at
2489      least some of the intermittent HTTP POST issues.
2490
24912005-10-04  jrandom
2492    * Syndie patch for single user remote archives (thanks nickless_head!)
2493    * Handle an invalid netDb store (thanks Complication!)
2494
24952005-10-04  jrandom
2496    * Further reduction in unnecessary streaming packets.
2497
24982005-10-03  jrandom
2499    * Properly reject unroutable IP addresses *cough*
2500
25012005-10-03  rangarok
2502    * Changed default update delay to twelve hours, and enforced a minimum
2503      delay of one hour.
2504
25052005-10-03  ragnarok
2506    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2507      from selected syndie archives.  To try it out, add
2508      syndie.updateArchives=<comma seperated list of syndie archives> to your
2509      syndie.config.  Archives must be specified as the full url to archive.txt
2510      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2511      for new posts every hour.  This can be modified by setting
2512      syndie.updateDelay=<delay in hours> also in syndie.config.
2513
2514* 2005-10-01  0.6.1.1 released
2515
25162005-09-30  ragnarok
2517    * Implemented conditional get for syndie remote archive imports.
2518
25192005-09-30  jrandom
2520    * Killed three more streaming lib bugs, one of which caused excess packets
2521      to be transmitted (dupacking dupacks), one that was the root of many of
2522      the old hung streams (shrinking highest received), and another that was
2523      releasing data too soon.
2524
25252005-09-30  jrandom
2526    * Only allow autodetection of our IP address if we haven't received an
2527      inbound connection in the last two minutes.
2528    * Increase the default max streaming resends to 8 from 5 (and down from
2529      the earlier 10)
2530
25312005-09-29  ragnarok
2532    * Export petnames from syndie to the router's petname db instead of
2533      userhosts.txt.
2534
25352005-09-29  jrandom
2536    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2537      reseeding - useful on OSes that make it hard to create dot files. 
2538      Thanks Complication (and anon)!
2539    * Fixed the installer version string (thanks Frontier!)
2540    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2541      us invalid IP addresses, verify again that we are not sending invalid IP
2542      addresses, and log an error if it happens. (Thanks Complication, ptm,
2543      and adab!)
2544
2545* 2005-09-29  0.6.1 released
2546
25472005-09-29  jrandom
2548    * Let syndie users modify their metadata.
2549    * Reseed the router on startup if there aren't enough peer references
2550      known locally.  This can be disabled by creating the file .i2pnoreseed
2551      in your home directory, and the existing detection and reseed handling
2552      on the web interface is unchanged.
2553
25542005-09-28  jrandom
2555    * Fix for at least some (all?) of the wrong stream errors in the streaming
2556      lib
2557
25582005-09-27  jrandom
2559    * Properly suggest filenames for attachments in Syndie (thanks all!)
2560    * Fixed the Syndie authorization scheme for single user vs. multiuser
2561
25622005-09-27  jrandom
2563    * I2PTunnel bugfix (thanks Complication!)
2564    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2565      instead of k/cwin)
2566    * Limit the number of inbound SSU sessions being built at once (using
2567      half of the i2np.udp.maxConcurrentEstablish config prop)
2568    * Don't shitlist on a message send failure alone (unless there aren't any
2569      common transports).
2570    * More careful bandwidth bursting
2571
25722005-09-26  jrandom
2573    * Reworded the SSU introductions config section (thanks duck!)
2574    * Force identity content encoding for I2PTunnel httpserver requests
2575      (thanks redzara!)
2576    * Further x-i2p-gzip bugfixes for the end of streams
2577    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2578      I2P's performance at 3KBps is another issue)
2579    * Cleaned up some streaming lib structures
2580
25812005-09-25  jrandom
2582    * Allow reseeding on the console if the netDb knows less than 30 peers,
2583      rather than less than 10 (without internet connectivity, we keep the
2584      last 15 router references)
2585    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2586      more aggressively.
2587    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2588    * Reduced the default maximum number of streaming lib resends of a packet
2589      (10 retransmits is a bit much with a reasonable RTO)
2590
25912005-09-25  Complication
2592    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2593      conflict resolution page if the i2paddresshelper parameter differs from
2594      an existing name to destination mapping.
2595
25962005-09-25  jrandom
2597    * Fix a long standing streaming lib bug (in the inactivity detection code)
2598    * Improved handling of initial streaming lib packet retransmissions to
2599      kill the "lost first packet" bug (where a page shows up with the first
2600      few KB missing)
2601    * Add support for initial window sizes greater than 1 - useful for
2602      eepsites to transmit e.g. 4 packets full of data along with the initial
2603      ACK, thereby cutting down on the rtt latency.  The congestion window
2604      size can and does still shrink down to 1 packet though.
2605    * Adjusted the streaming lib retransmission calculation algorithm to be
2606      more TCP-like.
2607
26082005-09-21  redzara
2609    * Use ISO-8859-1 for the susidns xml
2610
26112005-09-21  susi
2612    * Bugfix in susidns for deleting entries
2613
26142005-09-21  jrandom
2615    * Add support for HTTP POST to EepGet
2616    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2617      put in that URL.
2618
26192005-09-18  jrandom
2620    * Added support for pure 64bit linux with jbigi and the java service
2621      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2622      et al for help testing!
2623    * UI cleanup in Syndie (thanks gloin and bar!)
2624
26252005-09-18  Ragnarok
2626    * Made MetaNamingService the default naming service.
2627
26282005-09-17  Ragnarok
2629    * Implemented a naming service using Syndie's petname db.  It's not enabled
2630      by default, but you can try it out by setting
2631      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2632      router.config.
2633    * Implemented a meta naming service that will first lookup names in the
2634      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2635      naming services are checked and in which order is specified by
2636      i2p.nameservicelist.  This will probably become the default naming service
2637      so please help test it out by setting
2638      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2639     
2640* 2005-09-17  0.6.0.6 released
2641
26422005-09-17  jrandom
2643    * Clean up syndie a bit more and bundle a default introductory post with
2644      both new installs and updates.
2645    * Typo fixes on the console (thanks bar!)
2646
26472005-09-17  jrandom
2648    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2649      steady state rate, plus a new limit on how fast we transfer when
2650      bursting.  This is different from the old "burst as fast as possible
2651      until we're out of tokens" policy, and should help those with congested
2652      networks.  See /config.jsp to manage this rate.
2653    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2654      old posts just didn't show up).
2655    * Log properly in EepPost
2656
26572005-09-17  jrandom
2658    * Added the natively compiled jbigi and patched java service wrapper for
2659      OS X.  Thanks Bill Dorsey for letting me use your machine!
2660    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2661      don't bundle the binutils necessary (and there'd be a naming conflict
2662      if we did).
2663    * Added 'single user' functionality to syndie - if the single user
2664      checkbox on the admin page is checked, all users are allowed to control
2665      the instance and sync up with remote syndie nodes.
2666    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2667      debugged.
2668
26692005-09-16  jrandom
2670    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
2671      you have i2np.udp.allowLocal=true defined - useful for private nets)
2672
26732005-09-16  jrandom
2674    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
2675      (just specify the spoofed host as an empty string), allowing them to
2676      honor x-i2p-gzip encoding.
2677    * Let windows users build the exes too (thanks bar and redzara!)
2678    * Allow I2PTunnel httpserver operators to disable gzip compression on
2679      individual tunnels with the i2ptunnel.gzip=false client option
2680      (good idea susi!)
2681
26822005-09-16  jrandom
2683    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
2684    * Added runplain.sh for *nix/osx users having problems using the java
2685      service wrapper (called from the install dir as: sh runplain.sh)
2686    * Bundle susidns and syndie, with links on the top nav
2687    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
2688      content-encoding (if offered), reducing the payload size before it
2689      reaches the streaming lib.  The existing compression is at the i2cp
2690      level, so we've been packetizing 4KB of uncompressed data and then
2691      compressing those messages, rather than compressing and then packetizing
2692      4KB of compressed data.  This should reduce the number of round trips
2693      to fetch web pages substantially.
2694    * Adjust the startup and timing of the addressbook so that susidns always
2695      has config to work off, and expose a method for susidns to tell it to
2696      reload its config and rerun.
2697
26982005-09-15  jrandom
2699    * Error handling for failed intro packets (thanks red.hand!)
2700    * More carefully verify intro addresses
2701
27022005-09-13  jrandom
2703    * More careful error handling with introductions (thanks dust!)
2704    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
2705    * Hide the shitlist on the summary so it doesn't confuse new users.
2706
27072005-09-12  comwiz
2708    * Migrated the router tests to junit
2709
27102005-09-12  jrandom
2711    * Removed guaranteed delivery mode entirely (so existing i2phex clients
2712      using it can get the benefits of mode=best_effort).  Guaranteed delivery
2713      is offered at the streaming lib level.
2714    * Improve the peer selection code for peer testing, as everyone now
2715      supports tests.
2716    * Give the watchdog its fangs - if it detects obscene job lag or if
2717      clients have been unable to get a leaseSet for more than 5 minutes,
2718      restart the router.  This was disabled a year ago due to spurious
2719      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
2720      cause of the spurious restarts should be gone.
2721
27222005-09-12  jrandom
2723    * Bugfix for skewed store which could kill a UDP thread (causing complete
2724      comm failure and eventual OOM)
2725
27262005-09-12  jrandom
2727    * More aggressively publish updated routerInfo.
2728    * Expose the flag to force SSU introductions on the router console
2729    * Don't give people the option to disable SNTP time sync, at least not
2730      through the router console, because there is no reason to disable it.
2731      No, not even if your OS is "ntp synced", because chances are, its not.
2732
27332005-09-10  jrandom
2734    * Test the router's reachability earlier and more aggressively
2735    * Use the low level bandwidth limiter's rates for the router console, and
2736      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
2737      the logger config, keep track of the 1 second transfer rates as the stat
2738      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
2739      behavior.
2740
27412005-09-09  jrandom
2742    * Added preliminary support for NAT hole punching through SSU introducers
2743    * Honor peer test results from peers that we have an SSU session with if
2744      those sessions are idle for 3 minutes or more.
2745
27462005-09-09  cervantes
2747    * New build due to change in build number :P (thanks ugha!)
2748
27492005-09-07  BarkerJr
2750    * HTML cleanup for the router console (thanks!)
2751
27522005-09-07  jrandom
2753    * Lay the foundation for 'client routers' - the ability for peers to opt
2754      out of participating in tunnels entirely due to firewall/NAT issues. 
2755      Individual routers have control over where those peers are used in
2756      tunnels - in outbound or inbound, exploratory or client tunnels, or
2757      none at all.  The defaults with this build are to simply act as before -
2758      placing everyone as potential participants in any tunnel.
2759    * Another part of the foundation includes the option for netDb
2760      participants to refuse to answer queries regarding peers who are marked
2761      as unreachable, though this too is disabled by default (meaning the
2762      routerInfo is retrievable from the netDb).
2763
27642005-09-05  jrandom
2765    * Expose the HTTP headers to EepGet status listeners
2766    * Handle DSA key failures properly (if the signature is not invertable, it
2767      is obviously invalid)
2768
27692005-09-04  jrandom
2770    * Don't persist peer profiles until we are shutting down, as the
2771      persistence process gobbles RAM and wall time.
2772    * Bugfix to allow you to check/uncheck the sharedClient setting on the
2773      I2PTunnel web interface (thanks BarkerJr!)
2774    * Be more careful when expiring a failed tunnel message fragment so we
2775      don't drop the data while attempting to read it.
2776
2777* 2005-09-02  0.6.0.5 released
2778
27792005-09-02  jrandom
2780    * Don't refuse to send a netDb store if the targetted peer has failed a
2781      bit (the value was an arbitrary amount).
2782    * Logging changes
2783
2784* 2005-09-01  0.6.0.4 released
2785
27862005-09-01  jrandom
2787    * Don't send out a netDb store of a router if it is more than a few hours
2788      old, even if someone asked us for it.
2789
27902005-08-31  jrandom
2791    * Don't publish leaseSets to the netDb if they will never be looked for -
2792      namely, if they are for destinations that only establish outbound
2793      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
2794      modified to tell the router that it doesn't need to publish their
2795      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
2796      to 'true').
2797    * Don't publish the top 10 peer rankings of each router in the netdb, as
2798      it isn't being watched right now.
2799
28002005-08-29  jrandom
2801    * Added the new test Floodfill netDb
2802
28032005-08-27  jrandom
2804    * Minor logging and optimization tweaks in the router and SDK
2805    * Use ISO-8859-1 in the XML files (thanks redzara!)
2806    * The consolePassword config property can now be used to bypass the router
2807      console's nonce checking, allowing CLI restarts
2808
28092005-08-24  jrandom
2810    * Catch errors with corrupt tunnel messages more gracefully (no need to
2811      kill the thread and cause an OOM...)
2812    * Don't skip shitlisted peers for netDb store messages, as they aren't
2813      necessarily shitlisted by other people (though they probably are).
2814    * Adjust the netDb store per-peer timeout based on each particular peer's
2815      profile (timeout = 4x their average netDb store response time)   
2816    * Don't republish leaseSets to *failed* peers - send them to peers who
2817      replied but just didn't know the value.
2818    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
2819      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
2820      sent entirely within the first streaming packet anyway, so this won't be
2821      a problem.
2822    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
2823      prevent any clients from accessing the server if the handlers get
2824      blocked by the streaming lib or other issues.
2825    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
2826      Unknown.
2827
28282005-08-23  jrandom
2829    * Removed the concept of "no bandwidth limit" - if none is specified, its
2830      16KBps in/out.
2831    * Include ack packets in the per-peer cwin throttle (they were part of the
2832      bandwidth limit though).
2833    * Tweak the SSU cwin operation to get more accurrate estimates under
2834      congestions.
2835    * SSU improvements to resend more efficiently.
2836    * Added a basic scheduler to eepget to fetch multiple files sequentially.
2837
2838* 2005-08-21  0.6.0.3 released
2839
28402005-08-21  jrandom
2841    * If we already have an established SSU session with the Charlie helping
2842      test us, cancel the test with the status of "unknown".
2843
28442005-08-17  jrandom
2845    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
2846      viability before agreeing to Alice's request.  This doesn't work with
2847      older SSU peer test builds, but is backwards compatible (older nodes
2848      won't ask newer nodes to participate in tests, and newer nodes won't
2849      ask older nodes to either).
2850
28512005-08-12  jrandom
2852    * Keep detailed stats on the peer testing, publishing the results in the
2853      netDb.
2854    * Don't overwrite the status with 'unknown' unless we haven't had a valid
2855      status in a while.
2856    * Make sure to avoid shitlisted peers for peer testing.
2857    * When we get an unknown result to a peer test, try again soon afterwards.
2858    * When a peer tells us that our address is different from what we expect,
2859      if we've done a recent peer test with a result of OK, fire off a peer
2860      test to make sure our IP/port is still valid.  If our test is old or the
2861      result was not OK, accept their suggestion, but queue up a peer test for
2862      later.
2863    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
2864      we monitor netDb store progress (to clear up the high netDb.storePeers
2865      stat)
2866
28672005-08-10  jrandom
2868    * Deployed the peer testing implementation to be run every few minutes on
2869      each router, as well as any time the user requests a test manually.  The
2870      tests do not reconfigure the ports at the moment, merely determine under
2871      what conditions the local router is reachable.  The status shown in the
2872      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
2873      differently for different peers, "ERR-Reject" if the router cannot
2874      receive unsolicited packets or the peer helping test could not find a 
2875      collaborator, "Unknown" if the test has not been run or the test
2876      participants were unreachable, or "OK" if the router can receive
2877      unsolicited connections and those connections use the same IP and port.
2878
2879* 2005-08-08  0.6.0.2 released
2880
28812005-08-08  jrandom
2882    * Add a configurable throttle to the number of concurrent outbound SSU
2883      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
2884      may help those with slow connections to get integrated at the start.
2885    * Further fixlets to the streaming lib
2886
28872005-08-07  Complication
2888    * Display the average clock skew for both SSU and TCP connections
2889
28902005-08-07  jrandom
2891    * Fixed the long standing streaming lib bug where we could lose the first
2892      packet on retransmission.
2893    * Avoid an NPE when a message expires on the SSU queue.
2894    * Adjust the streaming lib's window growth factor with an additional
2895      Vegas-esque congestion detection algorithm.
2896    * Removed an unnecessary SSU session drop
2897    * Reduced the MTU (until we get a working PMTU lib)
2898    * Deferr tunnel acceptance until we know how to reach the next hop,
2899      rejecting it if we can't find them in time.
2900    * If our netDb store of our leaseSet fails, give it a few seconds before
2901      republishing.
2902
2903* 2005-08-03  0.6.0.1 released
2904
29052005-08-03  jrandom
2906    * Backed out an inadvertant change to the netDb store redundancy factor.
2907    * Verify tunnel participant caching.
2908    * Logging cleanup
2909
29102005-08-01  duck
2911    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
2912
29132005-08-01  duck
2914    * Fix an addressbook NPE when a new hostname from the master addressbook
2915      didn't exist in the router addressbook.
2916    * Fix an addressbook bug which caused subscriptions not to be parsed at
2917      all. (Oops!)
2918
29192005-07-31  jrandom
2920    * Adjust the netDb search and store per peer timeouts to match the average
2921      measured per peer success times, rather than huge fixed values.
2922    * Optimized and reverified the netDb peer selection / retrieval process
2923      within the kbuckets.
2924    * Drop TCP connections that don't have any useful activity in 10 minutes.
2925    * If i2np.udp.fixedPort=true, never change the externally published port,
2926      even if we are autodetecting the IP address.
2927
2928* 2005-07-27  0.6 released
2929
29302005-07-27  jrandom
2931    * Enabled SSU as the default top priority transport, adjusting the
2932      config.jsp page accordingly.
2933    * Add verification fields to the SSU and TCP connection negotiation (not
2934      compatible with previous builds)
2935    * Enable the backwards incompatible tunnel crypto change as documented in
2936      tunnel-alt.html (have each hop encrypt the received IV before using it,
2937      then encrypt it again before sending it on)
2938    * Disable the I2CP encryption, leaving in place the end to end garlic
2939      encryption (another backwards incompatible change)
2940    * Adjust the protocol versions on the TCP and SSU transports so that they
2941      won't talk to older routers.
2942    * Fix up the config stats handling again
2943    * Fix a rare off-by-one in the SSU fragmentation
2944    * Reduce some unnecessary netDb resending by inluding the peers queried
2945      successfully in the store redundancy count.
2946
29472005-07-22  jrandom
2948    * Use the small thread pool for I2PTunnelHTTPServer (already used for
2949      I2PTunnelServer)
2950    * Minor memory churn reduction in I2CP
2951    * Small stats update
2952
29532005-07-21  jrandom
2954    * Fix in the SDK for a bug which would manifest itself as misrouted
2955      streaming packets when a destination has many concurrent streaming
2956      connections (thanks duck!)
2957    * No more "Graceful shutdown in -18140121441141s"
2958
29592005-07-20  jrandom
2960    * Allow the user to specify an external port # for SSU even if the external
2961      host isn't specified (thanks duck!)
2962
29632005-07-19  jrandom
2964    * Further preparation for removing I2CP crypto
2965    * Added some validation to the DH key agreement (thanks $anon)
2966    * Validate tunnel data message expirations (though not really a problem,
2967      since tunnels expire)
2968    * Minor PRNG threading cleanup
2969
29702005-07-15  cervantes
2971    * Added workaround for an odd win32 bug in the stats configuration console
2972      page which meant only the first checkbox selection was saved.
2973
29742005-07-15  Romster
2975    * Added per group selection toggles in the stats configuration console
2976      page.
2977
29782005-07-13  jrandom
2979    * Fixed a recently injected bug in the multitransport bidding which had
2980      allowed an essentially arbitrary choice of transports, rather than the
2981      properly ordered choice.
2982
29832005-07-13  jrandom
2984    * Fixed a long standing bug where we weren't properly comparing session
2985      tags but instead largely depending upon comparing their hashCode,
2986      causing intermittent decryption errors.
2987
29882005-07-12  jrandom
2989    * Add some data duplication to avoid a recently injected concurrency
2990      problem in the session tag manager (thanks redzara and romster).
2991
29922005-07-11  jrandom
2993    * Reduced the growth factor on the slow start and congestion avoidance for
2994      the streaming lib.
2995    * Adjusted some of the I2PTunnelServer threading to use a small pool of
2996      handlers, rather than launching off new threads which then immediately
2997      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
2998    * Don't persist session keys / session tags (not worth it, for now)
2999    * Added some detection and handling code for duplicate session tags being
3000      delivered (root cause still not addressed)
3001    * Make the PRNG's buffer size configurable (via the config property
3002      "i2p.prng.totalBufferSizeKB=4096")
3003    * Disable SSU flooding by default (duh)
3004    * Updates to the StreamSink apps for better throttling tests.
3005
30062005-07-05  jrandom
3007    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3008      buffer, rather than the underlying PRNG's (likely small) one, which in
3009      turn reduces the frequency of recalcing.
3010    * More tuning to reduce temporary allocation churn
3011
30122005-07-04  jrandom
3013    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3014      rather than the IV by itself, preventing an attack that would let
3015      colluding internal adversaries tag a message to determine that they are
3016      in the same tunnel.  Thanks dvorak for the catch!
3017    * Drop long inactive profiles on startup and shutdown
3018    * /configstats.jsp: web interface to pick what stats to log
3019    * Deliver more session tags to account for wider window sizes
3020    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3021    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3022    * UrlLauncher: adjust the browser selection order
3023    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3024    * StreamSinkClient: add support for sending an unlimited amount of data
3025    * Migrate the tests out of the default build jars
3026
30272005-06-22  Comwiz
3028    * Migrate the core tests to junit
3029
30302005-05-25  duck
3031    * Fixed PRNG bug (bugzilla #107)
3032
30332005-05-01  jrandom
3034    * Added a substantial optimization to the AES engine by caching the
3035      prepared session keys (duh).
3036
30372005-05-01  jrandom
3038    * Cleaned up the peers page a bit more.
3039
30402005-04-30  jrandom
3041    * Added a small new page to the web console (/peers.jsp) which contains
3042      the peer connection information.  This will be cleaned up a lot more
3043      before 0.6 is out, but its a start.
3044
30452005-04-30  jrandom
3046    * Reduced some SimpleTimer churn
3047
30482005-04-29  jrandom
3049    * Reduce the peer profile stat coallesce overhead by inlining it with the
3050      reorganize.
3051    * Limit each transport to at most one address (any transport that requires
3052      multiple entry points can include those alternatives in the address).
3053
30542005-04-28  jrandom
3055    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3056    * Add back the code to handle bids from multiple transports (though there
3057      is still only one transport enabled by default)
3058    * Adjust the router's queueing of outbound client messages when under
3059      heavy load by running the preparatory job in the client's I2CP handler
3060      thread, thereby blocking additional outbound messages when the router is
3061      hosed.
3062    * No need to validate or persist a netDb entry if we already have it
3063
30642005-04-25  smeghead
3065    * Added button to router console for manual update checks.
3066    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3067      every time the form was submitted even if it hadn't changed.
3068
30692005-04-24  jrandom
3070    * Added a pool of PRNGs using a different synchronization technique,
3071      hopefully sufficient to work around IBM's PRNG bugs until we get our
3072      own Fortuna.
3073    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3074      size bound the not-yet-ready messages to the peer, not the unacked
3075      message count (not sure yet whether this is worthwile).
3076    * Many additions to the messageHistory log.
3077    * Handle out of order tunnel fragment delivery (not an issue on the live
3078      net with TCP, but critical with UDP).
3079
3080* 2005-04-20  0.5.0.7 released
3081
30822005-04-20  jrandom
3083    * In the SDK, we don't actually need to block when we're sending a message
3084      as BestEffort (and these days, we're always sending BestEffort).
3085    * Pass out client messages in fewer (larger) steps.
3086    * Have the InNetMessagePool short circuit dispatch requests.
3087    * Have the message validator take into account expiration to cut down on
3088      false positives at high transfer rates.
3089    * Allow configuration of the probabalistic window size growth rate in the
3090      streaming lib's slow start and congestion avoidance phases, and default
3091      them to a more conservative value (2), rather than the previous value
3092      (1).
3093    * Reduce the ack delay in the streaming lib to 500ms
3094    * Honor choke requests in the streaming lib (only affects those getting
3095      insanely high transfer rates)
3096    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3097      I2PTunnel client page (thanks maestro^!)
3098
30992005-04-17  sirup
3100    * Added the possibility for i2ptunnel client and httpclient instances to
3101      have their own i2p session (and hence, destination and tunnels).  By
3102      default, tunnels are shared, but that can be changed on the web
3103      interface or with the sharedClient config option in i2ptunnel.config.
3104
31052005-04-17  jrandom
3106    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3107      this?  If not, I want to drop it (lots of tiny details with lots of
3108      duplicated semantics).
3109
31102005-04-17  zzz
3111    * Added new user-editable eepproxy error page templates.
3112
31132005-04-17  jrandom
3114    * Revamp the tunnel building throttles, fixing a situation where the
3115      rebuild may not recover, and defaulting it to unthrottled (users with
3116      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3117      advanced router config)
3118
31192005-04-16  jrandom
3120    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3121
31222005-04-12  jrandom
3123    * Make sure we don't get cached updates (thanks smeghead!)
3124    * Clear out the callback for the TestJob after it passes (only affects the
3125      job timing accounting)
3126
31272005-04-08  smeghead
3128    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3129
31302005-04-08  smeghead
3131    * Security improvements to TrustedUpdate: signing and verification of the
3132      version string along with the data payload for signed update files
3133      (consequently the positions of the DSA signature and version string fields
3134      have been swapped in the spec for the update file's header); router will
3135      no longer perform a trusted update if the signed update's version is lower
3136      than or equal to the currently running router's version.
3137    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3138    * Extended TrustedUpdate public API for use by third party applications.
3139
3140* 2005-04-06  0.5.0.6 released
3141
31422005-04-05  jrandom
3143    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3144      client or httpclient tunnel.
3145    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3146
31472005-04-05  jrandom
3148    * After a successfull netDb search for a leaseSet, republish it to all of
3149      the peers we have tried so far who did not give us the key (up to 10),
3150      rather than the old K closest (which may include peers who had given us
3151      the key)
3152    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3153      republish it every 5 minutes, republish it every 3.  In addition, always
3154      republish as soon as the leaseSet changes (duh^2).
3155    * Minor fix for oddball startup race (thanks travis_bickle!)
3156    * Minor AES update to allow in-place decryption.
3157
31582005-04-03  jrandom
3159    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3160      feeding the NewsFetcher)
3161
31622005-04-01  jrandom
3163    * Allow editing I2PTunnel server instances with five digit ports
3164      (thanks nickless_head!)
3165    * More NewsFetcher debugging for reported weirdness
3166
31672005-04-01  jrandom
3168    * Fix to check for missing news file (thanks smeghead!)
3169    * Added destination display CLI:
3170      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3171    * Added destination display to the web interface (thanks pnspns)
3172    * Installed CIA backdoor
3173
3174* 2005-03-29  0.5.0.5 released
3175
31762005-03-29  jrandom
3177    * Decreased the initial RTT estimate to 10s to allow more retries.
3178    * Increased the default netDb store replication factor from 2 to 6 to take
3179      into consideration tunnel failures.
3180    * Address some statistical anonymity attacks against the netDb that could
3181      be mounted by an active internal adversary by only answering lookups for
3182      leaseSets we received through an unsolicited store.
3183    * Don't throttle lookup responses (we throttle enough elsewhere)
3184    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3185      the file (thanks nickster!)
3186    * Updated the I2PTunnel HTML (thanks postman!)
3187    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3188      which, if matched against the router.config "i2ptunnel.passphrase" value,
3189      skips the nonce check.  If the config prop doesn't exist or is blank, no
3190      passphrase is accepted.
3191    * Implemented HMAC-SHA256.
3192    * Enable the tunnel batching with a 500ms delay by default
3193    * Dropped compatability with 0.5.0.3 and earlier releases
3194
31952005-03-26  jrandom
3196    * Added some error handling and fairly safe to cache data to the streaming
3197      lib (good call Tom!)
3198
31992005-03-25  jrandom
3200    * Fixed up building dependencies for the routerconsole on some more
3201      aggressive compilers (thanks polecat!)
3202
3203* 2005-03-24  0.5.0.4 released
3204
32052005-03-23  jrandom
3206    * Added more intelligent version checking in news.xml, in case we have a
3207      version newer than the one specified.
3208
32092005-03-23  jrandom
3210    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3211      cvsweb.cgi doesn't puke on us.
3212
32132005-03-23  Connelly
3214    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3215      stream send data to not be sent if STREAM CLOSE is issued too fast.
3216
32172005-03-23  jrandom
3218    * Implemented the news fetch / update policy code, as configurated on
3219      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3220      doesn't exist yet, on startup).  No action is taken however, though if
3221      the news.xml specifies that a new release is available, an option to
3222      update will be shown on the router console.
3223    * New initialNews.xml delivered with new installs, and moved news.xml out
3224      of the i2pwww module and into the i2p module so that we can bundle it
3225      within each update.
3226
32272005-03-23  jrandom
3228    * New /configupdate.jsp page for controlling the update / notification
3229      process, as well as various minor related updates.  Note that not all
3230      options are exposed yet, and the update detection code isn't in place
3231      in this commit - it currently says there is always an update available.
3232    * New EepGet component for reliable downloading, with a CLI exposed in
3233      java -cp lib/i2p.jar net.i2p.util.EepGet url
3234    * Added a default signing key to the TrustedUpdate component to be used
3235      for verifying updates.  This signing key can be authenticated via
3236      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3237    * New public domain SHA1 implementation for the DSA code so that we can
3238      handle signing streams of arbitrary size without excess memory usage
3239      (thanks P.Verdy!)
3240    * Added some helpers to the TrustedUpdate to work off streams and to offer
3241      a minimal CLI:
3242          TrustedUpdate keygen pubKeyFile privKeyFile
3243          TrustedUpdate sign origFile signedFile privKeyFile
3244          TrustedUpdate verify signedFile
3245
32462005-03-22  smeghead
3247    * New TrustedUpdate component for signing/verifying files with a DSA
3248      signature.
3249
32502005-03-21  jrandom
3251    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3252      in a single message properly (rather than release the buffer into the
3253      cache after processing the first one) (duh!)
3254    * Added the batching preprocessor which will bundle together multiple
3255      small messages inside a single tunnel message by delaying their delivery
3256      up to .5s, or whenever the pending data will fill a full message,
3257      whichever comes first.  This is disabled at the moment, since without the
3258      above bugfix widely deployed, lots and lots of messages would fail.
3259    * Within each tunnel pool, stick with a randomly selected peer for up to
3260      .5s before randomizing and selecting again, instead of randomizing the
3261      pool each time a tunnel is needed. 
3262
3263* 2005-03-18  0.5.0.3 released
3264
32652005-03-18  jrandom
3266    * Minor tweak to the timestamper to help reduce small skews
3267    * Adjust the stats published to include only the relevent ones
3268    * Only show the currently used speed calculation on the profile page
3269    * Allow the full max # resends to be sent, rather than piggybacking the
3270      RESET packet along side the final resend (duh)
3271    * Add irc.postman.i2p to the default list of IRC servers for new installs
3272    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3273      backwards compatability for users running 0.5.0.2.
3274
32752005-03-18  jrandom
3276    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3277    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3278
32792005-03-17  jrandom
3280    * Update the old speed calculator and associated profile data points to
3281      use a non-tiered moving average of the tunnel test time, avoiding the
3282      freshness issues of the old tiered speed stats.
3283    * Explicitly synchronize all of the methods on the PRNG, rather than just
3284      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3285      needs all of them synchronized).
3286    * Properly use the tunnel tests as part of the profile stats.
3287    * Don't flood the jobqueue with sequential persist profile tasks, but
3288      instead, inject a brief scheduling delay between them.
3289    * Reduce the TCP connection establishment timeout to 20s (which is still
3290      absurdly excessive)
3291    * Reduced the max resend delay to 30s so we can get some resends in when
3292      dealing with client apps that hang up early (e.g. wget)
3293    * Added more alternative socketManager factories (good call aum!)
3294
32952005-03-16  jrandom
3296    * Adjust the old speed calculator to include end to end RTT data in its
3297      estimates, and use that as the primary speed calculator again.
3298    * Use the mean of the high capacity speeds to determine the fast
3299      threshold, rather than the median.  Perhaps we should use the mean of
3300      all active non-failing peers?
3301    * Updated the profile page to sort by tier, then alphabetically.
3302    * Added some alternative socketManager factories (good call aum!)
3303
33042005-03-14  jrandom
3305    * New strict speed calculator that goes off the actual number of messages
3306      verifiably sent through the peer by way of tunnels.  Initially, this only
3307      contains the successful message count on inbound tunnels, but may be
3308      augmented later to include verified outbound messages, peers queried in
3309      the netDb, etc.  The speed calculation decays quickly, but should give
3310      a better differential than the previous stat (both values are shown on
3311      the /profiles.jsp page)
3312
33132005-03-11  jrandom
3314    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3315      minimum (increased on resends as before, of course).
3316    * Always prod the clock update listeners, even if just to tell them that
3317      the time hasn't changed much.
3318    * Added support for explicit peer selection for individual tunnel pools,
3319      which will be useful in debugging but not recommended for use by normal
3320      end users.
3321    * More aggressively search for the next hop's routerInfo on tunnel join.
3322    * Give messages received via inbound tunnels that are bound to remote
3323      locations sufficient time (taking into account clock skew).
3324    * Give alternate direct send messages sufficient time (10s min, not 5s)
3325    * Always give the end to end data message the explicit timeout (though the
3326      old default was sufficient before)
3327    * No need to give end to end messages an insane expiration (+2m), as we
3328      are already handling skew on the receiving side.
3329    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3330      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3331    * Properly keep the sendBps stat
3332    * When running the router with router.keepHistory=true, log more data to
3333      messageHistory.txt
3334    * Logging updates
3335    * Minor formatting updates
3336
33372005-03-08  jrandom
3338    * More aggressively adjust the clock
3339
33402005-03-07  jrandom
3341    * Fix the HTTP response header filter to allow multiple headers with the
3342      same name (thanks duck and spotteri!)
3343
3344* 2005-03-06  0.5.0.2 released
3345
33462005-03-06  jrandom
3347    * Allow the I2PTunnel web interface to select streaming lib options for
3348      individual client tunnels, rather than sharing them across all of them,
3349      as we do with the session options.  This way people can (and should) set
3350      the irc proxy to interactive and the eepproxy to bulk.
3351    * Added a startRouter.sh script to new installs which simply calls
3352      "sh i2prouter start".  This should make it clear how people should start
3353      I2P.
3354    * Properly expand the HTTP response header buffer (thanks shendaras!)
3355
33562005-03-04  jrandom
3357    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3358      so that broken (/malicious) webservers can't allow persistent
3359      connections.  All HTTP compliant browsers should now always close the
3360      socket.
3361    * Enabled the GZIPInputStream's cache (they weren't cached before)
3362    * Make sure our first send is always a SYN (duh)
3363    * Workaround for some buggy compilers
3364
33652005-03-03  jrandom
3366    * Loop while starting up the I2PTunnel instances, in case the I2CP
3367      listener isn't up yet (thanks detonate!)
3368    * Implement custom reusable GZIP streams to both reduce memory churn
3369      and prevent the exposure of data in the standard GZIP header (creation
3370      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3371      though has only been tested within the confines of I2P's compression use
3372      (DataHelper.[de]compress).
3373    * Preemptively support the next protocol version, so that after the 0.5.0.2
3374      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3375
33762005-03-02  jrandom
3377    * Fix one substantial OOM cause (session tag manager was only dropping
3378      tags once the critical limit was met, rather than honoring their
3379      expiration) (duh)
3380    * Lots of small memory fixes
3381    * Double the allowable concurrent outstanding tunnel build tasks (20)
3382
33832005-03-01  jrandom
3384    * Really disable the streaming lib packet caching
3385    * Synchronized a message handling point in the SDK (even though its use is
3386      already essentially single threaded, its better to play it safe)
3387    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3388      existing one (duh)
3389    * Throttle the number of concurrent pending tunnel builds across all
3390      pools, in addition to simply throttling the number of new requests per
3391      minute for each pool individually.  This should avoid the cascading
3392      failure when tunnel builds take too long, as no new builds will be
3393      created until the previous ones are handled.
3394    * Factored out and extended the DataHelper's unit tests for dealing with
3395      long and date formatting.
3396    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3397      alone doesn't address the bug where jetty asks for authentication too
3398      much.  (thanks orion!)
3399    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3400      them to the filesystem.
3401
34022005-02-27  jrandom
3403    * Don't rerequest leaseSets if there are already pending requests
3404    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3405      temporary disabled the streaming lib packet caching.
3406    * Reduced the resend RTT penalty to 10s
3407
34082005-02-26  jrandom
3409    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3410
34112005-02-26  jrandom
3412    * Further streaming lib caching improvements
3413    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3414      increase the RTT on resends.
3415    * Lower the default message size to 4KB from 16KB to further reduce the
3416      chance of failed fragmentation.
3417    * Extend tunnel rebuild throttling to include fallback rebuilds
3418    * If there are less than 20 routers known, don't drop the last 20 (to help
3419      avoid dropping all peers under catastrophic failures)
3420    * New stats for end to end messages - "client.leaseSetFoundLocally",
3421      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3422
34232005-02-24  jrandom
3424    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3425      overload under catastrophic failures (thanks Tracker and cervantes!)
3426    * Block the router startup process until we've initialized the clock
3427
34282005-02-24  jrandom
3429    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3430      data in the streaming lib.
3431    * Fixed a streaming lib bug where the connection initiator would fail the
3432      stream if the ACK to their SYN was lost.
3433
34342005-02-23  jrandom
3435    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3436      get stale tunnel pools, don't you think?
3437
3438* 2005-02-23  0.5.0.1 released
3439
34402005-02-22  jrandom
3441    * Reworked the tunnel (re)building process to remove the tokens and
3442      provide cleaner controls on the tunnels built.
3443    * Fixed situations where the timestamper wanted to test more servers than
3444      were provided (thanks Tracker!)
3445    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3446      (thanks Tracker!)
3447
34482005-02-22  jrandom
3449    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3450      try to automatically reconnect on accept()/connect(..)).
3451    * Loop check for expired lease republishing (just in case)
3452
34532005-02-22  jrandom
3454    * Adjusted (and fixed...) the timestamper change detection
3455    * Deal with a rare reordering bug at the beginning of a stream (so we
3456      don't drop it unnecessarily)
3457    * Cleaned up some dropped message handling in the router
3458    * Reduced job queue churn when dealing with a large number of tunnels by
3459      sharing an expiration job
3460    * Keep a separate list of the most recent CRIT messages (shown on the
3461      logs.jsp).  This way they don't get buried among any other messages.
3462    * For clarity, display the tunnel variance config as "Randomization" on
3463      the web console.
3464    * If lease republishing fails (boo! hiss!) try it again
3465    * Actually fix the negative jobLag in the right place (this time)
3466    * Allow reseeding when there are less than 10 known peer references
3467    * Lots of logging updates.
3468
34692005-02-20  jrandom
3470    * Allow the streaming lib resend frequency to drop down to 20s as the
3471      minimum, so that up to 2 retries can get sent on an http request.
3472    * Add further limits to failsafe tunnels.
3473    * Keep exploratory and client tunnel testing and building stats separate.
3474    * Only use the 60s period for throttling tunnel requests due to transient
3475      network overload.
3476    * Rebuild tunnels earlier (1-3m before expiration, by default)
3477    * Cache the next hop's routerInfo for participating tunnels so that the
3478      tunnel participation doesn't depend on the netDb.
3479    * Fixed a long standing bug in the streaming lib where we wouldn't always
3480      unchoke messages when the window size grows.
3481    * Make sure the window size never reaches 0 (duh)
3482
34832005-02-20  jrandom
3484    * Only build failsafe tunnels if we need them
3485    * Properly implement the selectNotFailingPeers so that we get a random
3486      selection of peers, rather than using the strictOrdering (thanks dm!)
3487    * Don't include too many "don't tell me about" peer references in the
3488      lookup message - only send the 10 peer references closest to the target.
3489
34902005-02-19  jrandom
3491    * Only build new extra tunnels on failure if we don't have enough
3492    * Fix a fencepost in the tunnel building so that e.g. a variance of
3493      2 means +/- 2, not +/- 1 (thanks dm!)
3494    * Avoid an NPE on client disconnect
3495    * Never select a shitlisted peer to participate in a tunnel
3496    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3497    * Keep session tags around for a little longer, just in case (grr)
3498    * Cleaned up some closing event issues on the streaming lib
3499    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3500      so that 0.4.* users will need to do a clean install, but we don't need
3501      to shove an additional 2MB in each update to those already on 0.5.
3502    * Imported the susimail css (oops, thanks susi!)
3503
3504* 2005-02-18  0.5 released
3505
35062005-02-17  jrandom
3507    * If the clock is adjusted during a job run, don't act as if the job took
3508      negative time.
3509
35102005-02-17  jrandom
3511    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3512
35132005-02-17  jrandom
3514    * Fixed the braindead tunnel testing logic
3515    * If a large number of tunnels are failing (within the last 5-10 minutes)
3516      and the current tunnel pool's configuration allows it, randomly build a
3517      zero hop tunnel to replace failed tunnels.
3518    * Enable postman's POP3 and SMTP tunnels by default
3519
35202005-02-16  jrandom
3521    * Added some error handling when the number of session tags exceeds the
3522      realistic capacity, dropping a random chunk of received tag sets and
3523      conducting some minor analysis of the remaining ones.  This is a part
3524      of a pretty serious error condition, and logs as CRIT (if/when people
3525      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3526      puts in the wrapper.log or /logs.jsp)
3527    * Update the addressbook to only write to the published hosts location
3528      if the addressbook's config contains "should_publish=true" (by default,
3529      it contains "should_publish=false")
3530
35312005-02-16  jrandom
3532    * (Merged the 0.5-pre branch back into CVS HEAD)
3533    * Replaced the old tunnel routing crypto with the one specified in
3534      router/doc/tunnel-alt.html, including updates to the web console to view
3535      and tweak it. 
3536    * Provide the means for routers to reject tunnel requests with a wider
3537      range of responses:
3538        probabalistic rejection, due to approaching overload
3539        transient rejection, due to temporary overload
3540        bandwidth rejection, due to persistent bandwidth overload
3541        critical rejection, due to general router fault (or imminent shutdown)
3542      The different responses are factored into the profiles accordingly.
3543    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3544      with a series of new properties, relevent to the new tunnel routing code:
3545        inbound.nickname (used on the console)
3546        inbound.quantity (# of tunnels to use in any leaseSets)
3547        inbound.backupQuantity (# of tunnels to keep in the ready)
3548        inbound.length (# of remote peers in the tunnel)
3549        inbound.lengthVariance (if > 0, permute the length by adding a random #
3550                                up to the variance.  if < 0, permute the length
3551                                by adding or subtracting a random # up to the
3552                                variance)
3553        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3554                    in that client's pool)
3555      There are other options, and more will be added later, but the above are
3556      the most relevent ones.
3557    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3558    * Compress all profile data on disk.
3559    * Adjust the reseeding functionality to work even when the JVM's http proxy
3560      is set.
3561    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3562      max window size.
3563    * Reduced the default streaming lib max message size to 16KB (though still
3564      configurable by the user), also doubling the default maximum window
3565      size.
3566    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3567    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3568      the first byte of the SHA256.
3569    * Added a new "netId" flag to let routers drop references to other routers
3570      who we won't be able to talk to.
3571    * Extended the timestamper to get a second (or third) opinion whenever it
3572      wants to actually adjust the clock offset.
3573    * Replaced that kludge of a timestamp I2NP message with a full blown
3574      DateMessage.
3575    * Substantial memory optimizations within the router and the SDK to reduce
3576      GC churn.  Client apps and the streaming libs have not been tuned,
3577      however.
3578    * More bugfixes than you can shake a stick at.
3579
35802005-02-13  jrandom
3581    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3582      only contains 32bit versions, so build your own, placing libjbigi.so in
3583      your install dir if necessary.  (thanks mule!)
3584    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3585      (thanks spaetz!)
3586
35872005-02-10  smeghead
3588    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3589      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3590      Pants are still non-functional at this time so don't mess with it yet
3591      unless you want to potentially mangle your working copy of CVS.
3592
35932005-02-09  duck
3594    * Allow an unneeded newline in the SAM client connection without
3595      disconnecting.
3596
35972005-02-07  jrandom
3598    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3599
36002005-02-06  Sugadude
3601    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3602
36032005-02-03  smeghead
3604    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3605      library from GNU Crypto's CVS HEAD sources.
3606
36072005-01-26  smeghead
3608    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3609      packages and installed to $i2pinstalldir/scripts.
3610    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3611      using gij + libgcj, and --sourcedir to run them from the source tree
3612      instead of the installation directory.
3613    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3614      causing gcj to toss a compilation warning (jrandom++).
3615
36162005-01-26  smeghead
3617    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3618      tests and benchmarks.
3619    * Routerconsole now builds under gcj 3.4.3.
3620    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3621
36222005-01-25  smeghead
3623    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3624      supporting apps (except for the routerconsole which is still being
3625      investigated).
3626
36272005-01-24  smeghead
3628    * C#-ification of sam-sharp: interface greatly simplified using delegates
3629      and events; SamBaseEventHandler provides basic implementation and helper
3630      methods but is now optional.
3631    * NAnt buildfile and README added for sam-sharp.
3632
36332005-01-23  smeghead
3634    * Port the java SAM client library to mono/C# and released into the
3635      public domain.  The 0.1 version of this port is available in CVS as
3636      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3637      library has been removed.
3638
36392005-01-21  Jhor
3640    * Updated jbigi build scripts for OSX.
3641
36422005-01-21  jrandom
3643    * Added support for OSX to the NativeBigInteger code so that it will look
3644      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3645      is not bundled with the shipped jbigi.jar yet though.
3646
36472005-01-18  jrandom
3648    * Increased the max # session tags maintained and decreased slightly the
3649      period over which they are gathered.
3650
36512005-01-17  jrandom
3652    * Added meaningful support for adjusting the preferred message size in the
3653      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3654      whatever).  The other side will mimic a reduction (but never an increase).
3655    * Always make sure to use distinct ConnectionOption objects for each
3656      connection (duh)
3657    * Reduced the default ACK delay to 500ms on in the streaming lib
3658    * Only shrink the streaming window once per window
3659    * Don't bundle a new jetty.xml with updates
3660    * Catch another local routerInfo corruption issue on startup.
3661
36622005-01-15  cervantes
3663    * Added support to the eepproxy for URLs such as
3664      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3665      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3666
36672005-01-15  jrandom
3668    * Caught a series of (previously unhandled) errors caused by requeueing
3669      messages that had timed out on the TCP transport (thanks mae^!)
3670    * Reduce the barrier to dropping session tags on streaming lib resends -
3671      every fourth send should drop the tags, forcing ElGamal encryption.  This
3672      will help speed up the recovery after a disconnect, rather than the drop
3673      every fifth send.
3674
3675* 2005-01-06  0.4.2.6 released
3676
36772005-01-06  jrandom
3678    * Added a startup message to the addressbook, printing its version number
3679      to stdout (which is sent to wrapper.config) when it loads.
3680    * Updated the addressbook to reread the config file periodically
3681    * Added orion.i2p to the list of eepsites on the default homepage
3682
36832005-01-05  jrandom
3684    * Handle unexpected network read errors more carefully (thanks parg!)
3685    * Added more methods to partially compare (DataHelper) and display
3686      arrays (Base64.encode).
3687    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
3688    * Be more generous on the throttle when just starting up the router
3689    * Fix a missing scheduled event in the streaming lib (caused after reset)
3690    * Add a new DisconnectListener on the I2PSocketManager to allow
3691      notification of session destruction.
3692    * Make sure our own router identity is valid, and if it isn't, build a new
3693      one and restart the router.  Alternately, you can run the Router with
3694      the single command line argument "rebuild" and it will do the same.
3695
36962004-12-31  ragnarok
3697    * Integrated latest addressbook changes (2.0.3) which include support for
3698      deploying as a .war file with no existing addressbook configuration.
3699    * Updated main build process to bundle the addressbook.war in the
3700      i2pinstall.jar and i2pupdate.zip.
3701
37022004-12-31  jrandom
3703    * Speling fxi (thanks digum!)
3704    * Bugfix for the I2PTunnel web interface so that it now properly launches
3705      newly added tunnels that are defined to be run on startup (thanks ugha!)
3706
37072004-12-30  jrandom
3708    * Revised the I2PTunnel client and httpclient connection establishment
3709      throttles.  There is now a pool of threads that build the I2PSocket
3710      connections with a default size of 5, configurable via the I2PTunnel
3711      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
3712      not throttle the number of concurrent builders, but will launch a thread
3713      per socket during establishment).  In addition, sockets accepted but
3714      not yet allocated to one of the connection builders will be destroyed
3715      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
3716      0, it will wait indefinitely).
3717
37182004-12-29  jrandom
3719    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
3720      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
3721    * Don't treat connection inactivity closure as a connection error.
3722
37232004-12-29  jrandom
3724    * Add in a new keepalive event on each TCP connection, proactively sending
3725      a (tiny) time message every minute or two, as well as killing the
3726      connection if no message has been fully sent within 5 minutes or so. 
3727      This should help deal with hung connections from IP address changes.
3728
37292004-12-28  jrandom
3730    * Cleaned up the resending and choking algorithm in the streaming lib.
3731    * Removed the read timeout override for I2PTunnel's httpclient, allowing
3732      it to use the default for the streaming lib.
3733    * Revised ack triggers in the streaming lib.
3734    * Logging.
3735
3736* 2004-12-21  0.4.2.5 released
3737
37382004-12-21  jrandom
3739    * Track a new stat for expired client leases (client.leaseSetExpired).
3740
37412004-12-21  jrandom
3742    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
3743      and added windows info to the headless docs. (thanks ardvark!)
3744    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
3745      a stream (thanks frosk!)
3746    * Add a pair of new stats for monitoring tunnel participation -
3747      tunnel.participatingBytesProcessed (total # bytes transferred) and
3748      tunnel.participatingBytesProcessedActive (total # bytes transferred for
3749      tunnels whose byte count exceed the 10m average).  This should help
3750      further monitor congestion issues.
3751    * Made the NamingService factory property public (thanks susi!)
3752
37532004-12-20  jrandom
3754    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
3755    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
3756      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
3757      reasoning is gone.
3758
37592004-12-19  jrandom
3760    * Fix for a race on startup wrt the new stats (thanks susi!)
3761
37622004-12-19  jrandom
3763    * Added three new stats - router.activePeers, router.fastPeers, and
3764      router.highCapacityPeers, updated every minute
3765
37662004-12-19  jrandom
3767    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
3768      hostname should be sent to the webserver.  By default, new installs will
3769      have an httpserver pointing at their jetty instance with the spoofed
3770      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
3771
37722004-12-19  scintilla
3773    * Convert native jcpuid code from C++ to C. This should alleviate build
3774      problems experienced by some users.
3775
3776* 2004-12-18  0.4.2.4 released
3777
37782004-12-16  jrandom
3779    * Catch another oddball case for a reset connection in the streaming lib.
3780    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
3781      dumps the current state of that peer's profile.  Instead of the full
3782      base64, you can pass in however many characters you have and it will
3783      return the first match found.
3784
37852004-12-16  jrandom
3786    * Remove the randomized factor in the tunnel rejection by bandwidth -
3787      we now accept the request if we've allocated less than our limit
3788      and reject it if we've allocated more.
3789    * Stick to the standard capacity scale on tunnel rejection, even for
3790      the 10m period.
3791    * Build the time message at the very last possible moment
3792
37932004-12-15  jrandom
3794    * Handle hard disconnects more gracefully within the streaming lib, and
3795      log unmonitored events more aggressively.
3796    * If we drop a peer after connection due to clock skew, log it to the
3797      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
3798      the stat 'tcp.disconnectAfterSkew'.
3799    * Fixed the formatting in the skew display
3800    * Added an ERROR message that is fired once after we run out of
3801      routerInfo files (thanks susi!)
3802    * Set the connect timeout equal to the streaming lib's disconnect timeout
3803      if not already specified (the I2PTunnel httpclient already enforces a
3804      60s connect timeout)
3805    * Fix for another connection startup problem in the streaming lib.
3806    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
3807    * Adjust the capacity calculations so that tunnel failures alone in the
3808      last 10m will not trigger a 0 capacity rank.
3809
38102004-12-14  jrandom
3811    * Periodically send a message along all I2NP connections with the router's
3812      current time, allowing the receiving peer to determine that the clock
3813      has skewed too much, and hence, disconnect.  For backwards compatability
3814      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
3815      next time we have a backwards compatability break, we can put in a proper
3816      message setup for it.
3817
38182004-12-14  jrandom
3819    * Reenable the probabalistic drop on the TCP queues to deal with good old
3820      fashioned bandwidth limiting.  However, by default the probability is
3821      rigged to reserve 0% of the queue free - meaning we just aggressively
3822      fail messages in the queue if we're transferring too slowly.  That
3823      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
3824      (or whatever) and the drop code can be disabled with the parameter
3825      'tcp.dropProbabalistically=false'.
3826    * Still penalize a peer on tunnel failure, but don't immediately drop
3827      their capacity to 0.
3828    * More aggressively ACK duplicates
3829    * Randomize the timestamper period
3830    * Display the clock skew on the connection logs when a peer sends it.
3831    * Allow the timestamper to fix skews of up to 10 minutes
3832    * Logging
3833
38342004-12-13  jrandom
3835    * Added some error checking on the new client send job (thanks duck!)
3836    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
3837      proportional to the bytes allocated in existing tunnels vs the bytes
3838      allowed through the bandwidth limiter).
3839    * Enable a new configuration parameter for triggering a tunnel rebuild
3840      (tunnel.maxTunnelFailures), where that is the max allowed test failures
3841      before killing the tunnel (default 0).
3842    * Gather more data that we rank capacity by (now we monitor and balance the
3843      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
3844    * Fix a truncation/type conversion problem on the long term capacity
3845      values (we were ignoring the daily stats outright)
3846
38472004-12-11  jrandom
3848    * Fix the missing HTTP timeout, which was caused by the deferred syn used
3849      by default.  This, in turn, meant the I2PSocket creation doesn't fail
3850      on .connect, but is unable to transfer any data in any direction.  We now
3851      detect that condition for the I2PTunnelHTTPClient and throw up the right
3852      error page.
3853    * Logging
3854
38552004-12-11  jrandom
3856    * Use a simpler and less memory intensive job for processing outbound
3857      client messages when the session is in mode=bestEffort.  We can
3858      immediately discard the data as soon as its sent the first time,
3859      rather than wait for an ack, since we will never internally resend.
3860    * Reduce some synchronization to avoid a rare deadlock
3861    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
3862      case it within the tunnel controller.
3863    * Script cleanup for building jbigi/jcpuid
3864    * Logging
3865
3866* 2004-12-08  0.4.2.3 released
3867
38682004-12-08  jrandom
3869    * Revised the buffering when reading from the SAM client and writing
3870      to the stream.  Also added a thread (sigh) so we don't block the
3871      SAM client from giving us more messages for abnormally long periods
3872      of time.
3873    * Display the router version in the logs on startup (oft requested)
3874    * Fix a race during the closing of a messageOutputStream
3875
38762004-12-06  jrandom
3877    * Don't do a 'passive flush' while there are already outbound messages
3878      unacked.
3879    * Show the reseed link if up to 10 peers profiles are active (thanks
3880      dburton!)
3881
38822004-12-06  jrandom
3883    * Don't propogate streaming connection failures out to the SAM bridge as
3884      fatal errors.
3885    * Dont barf on repeated I2CP closure.
3886
38872004-12-05  jrandom
3888    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
3889      getLocalhost call
3890
38912004-12-05  jrandom
3892    * Default the I2CP listener to localhost only, unless overridden by
3893      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
3894    * More SAM fixes for things recently broken (whee)
3895
38962004-12-05  jrandom
3897    * Fix the recently broken SAM bridge (duh)
3898    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
3899      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
3900      StreamSink and StreamSend apps for transferring files.
3901    * Make the passive flush timer fire more frequently.
3902
39032004-12-05  jrandom
3904    * Fixed some links in the console (thanks ugha!) and the javadoc
3905      (thanks dinoman!)
3906    * Fix the stream's passive flush timer (oh, its supposed to work?)
3907
39082004-12-03  jrandom
3909    * Toss in a small pool of threads (3) to execute the events queued up with
3910      the SimpleTimer, as we do currently see the occational event
3911      notification spiking up to a second or so.
3912    * Implement a SAM client API in java, useful for event based streaming (or
3913      for testing the SAM bridge)
3914    * Added support to shut down the SAM bridge on OOM (useful if the SAM
3915      bridge is being run outside of the router).
3916    * Include the SAM test code in the sam.jar
3917    * Remove an irrelevent warning message from SAM, which was caused by
3918      perfectly normal operation due to a session being closed.
3919    * Removed some unnecessary synchronization in the streaming lib's
3920      PacketQueue
3921    * More quickly clean up the memory used by the streaming lib by
3922      immediately killing each packet's resend job as soon as it is ACKed (or
3923      cancelled), so that there are no longer any valid pointers to the
3924      (potentially 32KB) packet.
3925    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
3926    * Drop packets that would expand our inbound window beyond our maximum
3927      buffer size (default 32 messages)
3928    * Always read the ACK/NACK data from the verified packets received, even
3929      if we are going to drop them
3930    * Always adjust the window when there are messages ACKed, though do not
3931      change its size except as before.
3932    * Streamlined some synchronization in the router's I2CP handling
3933    * Streamlined some memory allocation in the SAM bridge
3934    * Default the streaming lib to disconnect on inactivity, rather than send
3935      an empty message.
3936
39372004-12-01  jrandom
3938    * Fix for a race in the streaming lib as caused by some odd SAM activity
3939
3940* 2004-12-01  0.4.2.2 released
3941
39422004-12-01  jrandom
3943    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
3944      connections to work (thanks duck!)
3945    * Make sure we override the inactivity timeout too
3946
3947* 2004-12-01  0.4.2.1 released
3948
39492004-12-01  jrandom
3950    * Strip out any of the Accept-* HTTP header lines, and always make sure to
3951      include the forged User-agent header.
3952    * Adjust the default read timeout on the eepproxy to 60s, unless
3953      overridden.
3954    * Minor tweak on stream shutdown.
3955
39562004-11-30  jrandom
3957    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
3958    * Build in a simple timeout to flush data queued into the I2PSocket but
3959      not yet flushed.
3960    * Don't explicitly flush after each SAM stream write, but leave it up to
3961      the [nonblocking] passive flush.
3962    * Don't whine about 10-99 connection events occurring in a second
3963    * Don't wait for completion of packets that will not be ACKed (duh)
3964    * Adjust the congestion window, even if the packet was resent (duh)
3965    * Make sure to wake up any blocking read()'s when the MessageInputStream
3966      is close()ed (duh)
3967    * Never wait more than the disconnect timeout for a write to complete
3968
39692004-11-29  jrandom
3970    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
3971
39722004-11-29  jrandom
3973    * Reduced contention for local client delivery
3974    * Drop the new code that munges the wrapper.config.  Instead, updates that
3975      need to change it will include their own wrapper.config in the
3976      i2pupdate.zip, overwriting the existing file.  If the file
3977      "wrapper.config.updated" is included, it is deleted at first opportunity
3978      and the router shut down, displaying a notice that the router must be
3979      started again cleanly to allow the changes to the wrapper.config to take
3980      effect.
3981    * Properly stop accept()ing I2PSocket connections if we close down the
3982      session (duh).
3983    * Make sure we cancel any outstanding Packets in flight when a connection
3984      is terminated (thanks susi!)
3985    * Split up the I2PTunnel closing a little further.
3986
39872004-11-28  jrandom
3988    * Accept IP address detection changes with a 2-out-of-3 minimum.
3989    * As long as the router is up, keep retrying to bind the I2CP listener.
3990    * Decrease the java service wrapper ping frequency to once every 10
3991      minutes, rather than once every 5 seconds.
3992
39932004-11-27  jrandom
3994    * Some cleanup and bugfixes for the IP address detection code where we
3995      only consider connections that have actually sent and received messages
3996      recently as active, rather than the mere presence of a TCP socket as
3997      activity.
3998
39992004-11-27  jrandom
4000    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4001      lib can do that (without an additional per-connection thread).
4002    * Close the I2PTunnel forwarder threads more aggressively
4003
40042004-11-27  jrandom
4005    * Fix for a fast loop caused by a race in the new streaming library (thanks
4006      DrWoo, frontier, pwk_, and thetower!)
4007    * Minor updates to the SimpleTimer and Connection to help track down a
4008      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4009      many events/tasks fire in a second)
4010    * Minor fixes for races on client disconnects (causing NPEs)
4011
4012* 2004-11-26  0.4.2 released
4013
40142004-11-26  jrandom
4015    * Enable the new streaming lib as the default.  That means, for any
4016      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4017
40182004-11-25  jrandom
4019    * Revised the installer to include start menu and desktop shortcuts for
4020      windows platforms, including pretty icons (thanks DrWoo!)
4021    * Allow clients specified in clients.config to have an explicit startup
4022      delay.
4023    * Update the default install to launch a browser pointing at the console
4024      whenever I2P starts up, rather than only the first time it starts up
4025      (configurable on /configservice.jsp, or in clients.config)
4026    * Bugfix to the clock skew checking code to monitor the delta between
4027      offsets, not the offset itself (duh)
4028    * Router console html update
4029    * New (and uuuuugly) code to verify that the wrapper.config contains
4030      the necessary classpath entries on update.  If it has to update the
4031      wrapper.config, it will stop the JVM and service completely, since the
4032      java service wrapper doesn't reread the wrapper.config on JVM restart -
4033      requiring the user to manually restart the service after an update.
4034    * Increase the TCP connection timeout to 30s (which is obscenely long)
4035
40362004-11-22  jrandom
4037    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4038    * New stat to keep track of slow jobs (ones that take more than a second
4039      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4040
40412004-11-21  jrandom
4042    * Update the I2PTunnel web interface to include an option for the new
4043      streaming lib (which is ignored until the 0.4.2 release).
4044    * Revised the I2PTunnel web interface to keep the I2CP options of client
4045      and httpclient tunnels in sync, as they all share the same I2CP session.
4046
40472004-11-21  jrandom
4048    * Only allow small clock skews after the first 10 minutes of operation
4049      (to prevent later network lag bouncing us way off course - yes, we
4050      really need an NTP impl to balance out the network burps...)
4051    * Revamp the I2PTunnel web interface startup process so that everything
4052      is shown immediately, so that different pieces hanging don't hang
4053      the rest, and other minor bugfixes.
4054    * Take note of SAM startup error (in case you're already running a SAM
4055      bridge...)
4056    * Increase the bandwidth limiter burst values available to 10-60s (or
4057      whatever is placed in /configadvanced.jsp, of course)
4058
40592004-11-21  jrandom
4060    * Allow end of line comments in the hosts.txt and other config files,
4061      using '#' to begin the comments (thanks susi!)
4062    * Add support to I2PTunnel's 'client' feature for picking between multiple
4063      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4064    * Add a quick link on the left hand nav to reseed if there aren't enough
4065      known peers, as well as link to the config page if there are no active
4066      peers.  Revised config page accordingly.
4067
40682004-11-21  jrandom
4069    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4070      rather that every 15 minutes, and increase the warning period in which
4071      we refresh tags from 30s to 2 minutes.
4072    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4073      to close the I2PSocket (leaving it to timeout).
4074
40752004-11-19  jrandom
4076    * Off-by-one fix to the tunnel pool management code, along side some
4077      explicit initialization.  This can affect clients whose lengths are
4078      shorter than the router's default (thanks duck!)
4079
40802004-11-17  jrandom
4081    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4082      Ragnarok!)
4083
40842004-11-17  jrandom
4085    * Minor logging update.
4086
40872004-11-16  jrandom
4088    * Clean up the propogation of i2psocket options so that various streaming
4089      libs can honor them more precisely
4090
40912004-11-16  jrandom
4092    * Minor logging update
4093
40942004-11-14  jrandom
4095    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4096    * Fix a leak injected into the SimpleTimer
4097    * Fix a race condition in the tunnel message handling
4098
40992004-11-13  jrandom
4100    * Added throttles on how many I2PTunnel client connections we open at once
4101    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4102      the streaming library used should take care of any buffering.
4103    * Added a cache for some objects used in I2PTunnel, especially useful when
4104      there are many short lived connections.
4105    * Trimmed the SimpleTimer's processing a bit
4106
41072004-11-10  jrandom
4108    * Allow loading the (mini)streaming connection options from the
4109      environment.
4110    * More defensive programming in the DSA implementation.
4111
41122004-11-08  jrandom
4113    * Remove spurious flush calls from I2PTunnel, and work with the
4114      I2PSocket's output stream directly (as the various implementations
4115      do their own buffering).
4116    * Another pass at a long standing JobQueue bug - dramatically simplify
4117      the job management synchronization since we dont need to deal with
4118      high contention (unlike last year when we had dozens of queue runners
4119      going at once).
4120    * Logging
4121
41222004-11-08  jrandom
4123    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4124
4125* 2004-11-06  0.4.1.4 released
4126
41272004-11-06  jrandom
4128    * Expose a drop down on the /configclients.jsp to enter the outbound
4129      tunnel depth.
4130    * Improved *hosts.txt loading
4131    * Explicitly override the JVM's timezone settings to use GMT so that
4132      any client applications which use timezones won't leak sensitive
4133      data (thanks gott!)
4134    * Bundle sam.jar in the update (thanks duck!)
4135
41362004-11-06  jrandom
4137    * Fix for a long standing synchronization bug in the SDK that in rare
4138      instances can add a few seconds of lag.
4139
41402004-11-05  jrandom
4141    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4142      parameters, verify proper operation after multiple session lifetimes,
4143      as well as some synchronization problems.
4144    * New properties method on the DataHelper class.
4145    * Address a race on fast disconnecting clients
4146
41472004-11-02  jrandom
4148    * Fix for a long standing synchronization bug in the JobQueue (and added
4149      some kooky flags to make sure it stays dead)
4150    * Update the ministreaming lib to force mode=guaranteed if the default
4151      lib is used, and mode=best_effort for all other libs.
4152
41532004-11-02  jrandom
4154    * Fixed up the configuration overrides for the streaming socket lib
4155      integration so that it properly honors env settings.
4156    * More memory usage streamlining (last major revamp for now, i promise)
4157
41582004-11-01  jrandom
4159    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4160    * Honor message expirations for some tunnel jobs that were prematurely
4161      expired.
4162    * Streamline memory usage with temporary object caches and more efficient
4163      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4164      message handling.
4165    * Fix some situations where we forward messages too eagerly.  For a
4166      request at the tunnel endpoint, if the tunnel is inbound and the target
4167      is remote, honor the message by tunnel routing the data rather than
4168      sending it directly to the requested location.
4169
41702004-10-30  jrandom
4171    * Cache the temporary objects used in the AES encryption/decryption
4172      process so that AES doesn't require any memory allocation to process
4173      data.
4174    * Dramatically reduce memory usage within various crypto implementations
4175      by avoiding unnecessary (though simplifying) buffers.
4176    * If we specify some tags to be sent in an I2CP message explicitly, use
4177      only those, not those plus a new set (otherwise we aren't sure on ACK
4178      which set was delivered)
4179    * Allow configuration for the partial send timeout (how long before
4180      resending a message down a different tunnel in a lease).  This can be
4181      updated with the "router.clientPartialSendTimeout" router config prop.
4182    * Logging
4183
41842004-10-29  jrandom
4185    * Strip the Referer, Via, and From headers completely, rather than
4186      inserting a bogus value ("i2p").  This should help with the use of
4187      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4188
41892004-10-27  jrandom
4190    * Fix a strange race condition on i2cp client disconnect.
4191    * win98 startup fixes (thanks tester-1 and ardvark!)
4192    * include build scripts for the new streaming lib (which is NOT ready
4193      for use yet, but you can hack around with it)
4194
41952004-10-24  jrandom
4196    * Allow explicit inclusion of session tags in the SDK, enabling the
4197      resending of tags bundled with messages that would not otherwise
4198      be ACKed.
4199    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4200      no DeliveryStatusMessage will be bundled (and as such, client apps using
4201      it will need to do their own session tag ack/nack).
4202    * Handle client errors when notifying them of message availability.
4203    * New StreamSinkSend which sends a file to a destination and disconnects.
4204    * Update the I2PSocketManagerFactory to build the specific
4205      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4206      containing the class name of the I2PSocketManager to instantiate.
4207
42082004-10-23  jrandom
4209    * Minor ministreaming lib refactoring to simplify integration of the full
4210      streaming lib.
4211    * Minor bugfixes to data structure serialization.
4212
4213* 2004-10-18  0.4.1.3 released
4214
42152004-10-18  jrandom
4216    * Allow sending messages with a section of a byte array.
4217    * Reduced stats published.
4218
42192004-10-17  jrandom
4220    * Don't b0rk on whitespace in the router address.
4221
42222004-10-16  jrandom
4223    * More aggressively reduce the capacity of peers if their tunnels are
4224      failing so that we move off them quicker.
4225    * Simplify some data structure serialization for reuse in the streaming
4226      lib, as well as add support for signing and verifying partial byte
4227      arrays.
4228    * Logging updates
4229
42302004-10-16  jrandom
4231    * Increased the default minimum tunnel test time to 5 seconds, since we
4232      still see the occational message processing time spike to 2 seconds.
4233    * Update the SimpleTimer to allow rescheduling a task thats already
4234      queued (useful for the new streaming lib).
4235
42362004-10-15  jrandom
4237    * Replaced old minimum tunnel test timeout of 1s with a configurable
4238      value (router.config property "router.tunnelTestMinimum", with the
4239      default of 2s).
4240
42412004-10-14  jrandom
4242    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4243      peer, so don't use it as a key point of the IsFailing calculator.
4244      We still use it as a key point of the Capacity calculator, however.
4245
42462004-10-14  jrandom
4247    * Allow for a configurable tunnel "growth factor", rather than trying
4248      to achieve a steady state.  This will let us grow gradually when
4249      the router is needed more, rather than blindly accepting the request
4250      or arbitrarily choking it at an averaged value.  Configure this with
4251      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4252    * Adjust the tunnel test timeouts dynamically - rather than the old
4253      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4254      test time (the deviation factor can be adjusted by setting
4255      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4256      find the 'good' tunnels.
4257    * Added some crazy debugging to try and track down an intermittent hang.
4258
42592004-10-13  jrandom
4260    * Fix the probabalistic tunnel reject (we always accepted everything,
4261      since the docs on java.util.Random.nextDouble() are wrong..)
4262    * Fixed a race on startup (thanks Quadn!)
4263
42642004-10-12  jrandom
4265    * Disable the probabalistic drop by default (enable via the router config
4266      property "tcp.dropProbabalistically=true")
4267    * Disable the actual watchdog shutdown by default, but keep track of more
4268      variables and log a lot more when it occurs (enable via the router
4269      config property "watchdog.haltOnHang=true")
4270    * Implement some tunnel participation smoothing by refusing requests
4271      probabalistically as our participating tunnel count exceeds the previous
4272      hour's, or when the 10 minute average tunnel test time exceeds the 60
4273      minute average tunnel test time.  The probabilities in both cases are
4274      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4275      and you had previously only participated in 50, you'll have a 25% chance
4276      of accepting a subsequent request.
4277
4278* 2004-10-10  0.4.1.2 released
4279
42802004-10-10  cervantes
4281    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4282      the request.
4283
42842004-10-09  jrandom
4285    * Added a watchdog timer to do some baseline liveliness checking to help
4286      debug some odd errors.
4287    * Added a pair of summary stats for bandwidth usage, allowing easy export
4288      with the other stats ("bw.sendBps" and "bw.receiveBps")
4289    * Trimmed another memory allocation on message reception.
4290
42912004-10-08  jrandom
4292    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4293      during its operation.
4294
42952004-10-08  jrandom
4296    * Don't kill the establisher threads during a soft restart.
4297    * Attempt to validate the peer's routerInfo earlier during handshaking.
4298    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4299      during its operation.
4300
43012004-10-07  jrandom
4302    * Reimplement the I2NP reading with less temporary memory allocation.
4303      There is still significant GC churn, especially under load, but this
4304      should help.
4305    * Catch some oddball errors in the transport (message timeout while
4306      establishing).
4307
43082004-10-07  jrandom
4309    * Expire queued messages even when the writer is blocked.
4310    * Reimplement most of the I2NP writing with less temporary memory
4311      allocations (I2NP reading still gobbles memory).
4312
43132004-10-06  jrandom
4314    * Implement an active queue management scheme on the TCP transports,
4315      dropping messages probabalistically as the queue fills up.  The
4316      estimated queue capacity is determined by the rate at which messages
4317      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4318      we exceed 1/2 of the estimated capacity, we drop messages throughout
4319      the queue probabalistically with regards to their size.  This is based
4320      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4321      estimated connection capacity.  We may want to consider using a send
4322      rate and queue size measured across all connections, to deal with our
4323      own local bandwidth saturation, but we'll try the per-con metrics first.
4324
43252004-10-06  jrandom
4326    * Enable explicit disabling of the systray entirely for windows machines
4327      with strange configurations: add -Dsystray.disable=true to the java
4328      command line.  (thanks mihi!)
4329
43302004-10-05  jrandom
4331    * Allow peers on the same LAN to communicate with each other safely even
4332      when they cannot talk to each other through the external address.
4333
43342004-10-05  jrandom
4335    * Display how much time is left before the graceful shutdown is complete.
4336    * Debug some improperly failed messages on timeout or disconnection.
4337
43382004-10-05  jrandom
4339    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4340      (thanks mule!)
4341    * Handle some more error conditions regarding abruptly closing sockets
4342      (thanks Jonva!)
4343
43442004-10-04  jrandom
4345    * Update the shitlist to reject a peer for an exponentially increasing
4346      period of time (with an upper bounds of an hour). 
4347    * Various minor stat and debugging fixes
4348
43492004-10-03  jrandom
4350    * Add a new stat logging component to optionally dump the raw stats to
4351      disk as they are generated, rather than rely upon the summarized data.
4352      By default, this is off, but the router property "stat.logFilters" can
4353      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4354      which will be written to the file "stats.log" (or whatever the property
4355      "stat.logFile" is set to).  This can also log profile related stats,
4356      such as "dbResponseTime" or "tunnelTestResponseTime".
4357
43582004-10-02  jrandom
4359    * Assure that we quickly fail messages bound for shitlisted peers.
4360    * Address a race on startup where the first peer contacted could hang the
4361      router (thanks Romster!)
4362    * Only whine about an intermittent inability to query the time server once
4363
43642004-10-02  jrandom
4365    * Command line utility to verify a peer's reachability - simply run
4366      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4367      will print out whether that peer is reachable or not (using a simple
4368      verification handshake).
4369
4370* 2004-10-01  0.4.1.1 released
4371
43722004-10-01  jrandom
4373    * Handle partial reseeds, caused by seeds going away before the download
4374      completes (thanks Sugadude!)
4375
43762004-10-01  jrandom
4377    * Explicitly refuse IPv6 addresses, since only some peers support
4378      them and we want fully reachable peers.
4379
43802004-10-01  jrandom
4381    * Additional error handling for a variety of transport layer errors.
4382
4383* 2004-09-30  0.4.1 released (not backwards compatible)
4384
43852004-09-30  jrandom
4386    * Bundle the configuration necessary to run an eepsite out of the box
4387      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4388      the key listed on the I2PTunnel configuration page, and its up.
4389    * Router console cleanup, and some (off by default) tunnels -
4390      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4391      irc.baffled.i2p (port 7661)
4392
43932004-09-29  jrandom
4394    * Always wipe the Jetty work directory on startup, so that web updates
4395      are reflected immediately (Jetty does not honor the cache across
4396      multiple executions)
4397
43982004-09-27  jrandom
4399    * Limit the number of connection tags saved to 10,000.  This is a huge
4400      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4401      randomly after reaching that size, forcing those dropped peers to use
4402      a full DH negotiation.
4403    * HTML cleanup in the console.
4404
44052004-09-26  jrandom
4406    * Complete rewrite of the TCP transport with IP autodetection and
4407      low CPU overhead reconnections.  More concise connectivity errors
4408      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4409      by listening to the first person who tells you what your IP address is
4410      when you have not defined one yourself and you have no other TCP
4411      connections.
4412    * Update to the I2NP message format to add transparent verification at
4413      the I2NP level (beyond standard TCP verification).
4414    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4415      implementation (rather than verifying with E(H(key)), we now verify with
4416      E(H(iv))).
4417    * The above changes are NOT BACKWARDS COMPATIBLE.
4418    * Removed all of the old unused PHTTP code.
4419    * Refactor various methods and clean up some javadoc.
4420
44212004-09-21  jrandom
4422    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4423      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4424      but values stored in the later take precedence.  Both are queried on
4425      lookup.
4426
44272004-09-16  jrandom
4428    * Refactor the TCP transport to deal with changing identities gracefully,
4429      and to prevent some wasted effort by keeping track of what host+port
4430      combinations we are connected to (rather than just the identities).  Also
4431      catch a few configuration errors earlier.
4432    * Removed no longer relevent methods from the Transport API that were
4433      exposing ideas that probably shouldn't be exposed.
4434    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4435      updates)
4436
44372004-09-13  jrandom
4438    * Update for the SDK reconnection to deal with overflow.
4439    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4440      rounding on lifetime bandwidth used [thanks gott!]).
4441
4442* 2004-09-08  0.4.0.1 released
4443
44442004-09-08  jrandom
4445    * Updated the "Active:" peer count to display the # of connections as well
4446      as the number of recently active router identities.
4447    * Implement some basic updating code - on startup, if there is a file named
4448      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4449      then restart.
4450    * Added an ugly little script to allow launching the router on win9x
4451      machines without a dos box (using javaw to run a .bat file).
4452    * Logging updates.
4453    * Updated VERSION constants to 0.4.0.1
4454
44552004-09-08  hypercubus
4456    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4457      hopefully any other affected *nix systems) now properly discards non-
4458      essential directories after installation.
4459    * Support for Win9x in the installer and postinstall.bat.
4460    * Changed the name of the default installation directory on all platforms
4461      from "I2P" to "i2p" in the installer.
4462    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4463      other configuration files.
4464
44652004-09-07  cervantes:
4466    * Proxy recursion disabled by default (strict)
4467    * Password Authentication for session commands
4468    * Support for http://path?i2paddresshelper=BASE64
4469    * Support for http://i2p/BASE64/path syntax
4470
44712004-09-07  jrandom
4472    * Make sure that peers placed in the 'fast' group are ones we both know
4473      how to reach and have been able to reach recently.  These peers may
4474      still be placed in the 'high capacity' group however (though that group
4475      is only queried if the 'fast' group is too small)
4476    * Include some updates to the ProgileOrganizer's CLI.
4477
44782004-09-07  jrandom
4479    * Disable the timestamper by default for all applications except the router
4480      (enable via -Dtime.disabled=false)
4481    * Simplify the retrieval of the full destination with text based browsers.
4482    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4483
44842004-09-07  jrandom
4485    * Write the native libraries to the current directory when they are loaded
4486      from a resource, and load them from that file on subsequent runs (in
4487      turn, we no longer *cough* delete the running libraries...)
4488    * Added support for a graceful restart.
4489    * Added new pseudo-shutdown hook specific to the router, allowing
4490      applications to request tasks to be run when the router shuts down.  We
4491      use this for integration with the service manager, since otherwise a
4492      graceful shutdown would cause a timeout, followed by a forced hard
4493      shutdown.
4494    * Made the capacity calculator a bit more dynamic by not outright ignoring
4495      the otherwise valid capacity data for a period with a single rejected
4496      tunnel (except for the 10 minute period).  In addition, peers with an
4497      equal capacity are ordered by speed rather than by their hashes.
4498    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4499      issues.
4500    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4501      associated session (unless there are other clients using it), and deal
4502      with a closed session when starting a new I2PTunnel instance.
4503    * Refactoring and logging.
4504
45052004-09-06  jrandom
4506    * Address a race condition in the key management code that would manifest
4507      itself as a corrupt router identity.
4508    * Properly clear old transport addresses from being displayed on the old
4509      console after soft restarts.
4510    * Properly refuse to load the client applications more than once in the
4511      same JVM.
4512    * Added support for a graceful restart (a graceful shutdown followed by a
4513      full JVM restart - useful for restarting client apps).
4514    * More defensive programming, HTML cleanup, logging
4515    * wrapper.config cleanup of duplicate lines
4516
45172004-09-04  jrandom
4518    * Added some basic guards to prevent multiple instances from running.
4519      Specifically, a file "router.ping" in the install directory which is
4520      written to once a minute - if that file exists and has been modified
4521      within the last minute, refuse to start up.  In turn, adjust the
4522      service wrapper to wait a minute before restarting a crashed JVM.
4523    * Create a "work" directory in the I2P install dir which Jetty will
4524      use for all of its temporary files.
4525    * Tell the browser not to cache most of the router console's pages.
4526
45272004-09-04  jrandom
4528    * Update the SDK to automatically reconnect indefinitely with an
4529      exponential delay on retries (capped at 5 minutes).
4530
4531* 2004-09-03  0.4 released
4532
45332004-09-03  jrandom
4534    * Updated default wrapper.config to deal with the hard restart option
4535    * Include the history.txt in the /help.jsp page
4536    * HTML updates (wrapper.log, and no more unix scripts)
4537    * Updated VERSION constants to 0.4
4538
45392004-09-03  hypercubus
4540    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4541    * Temporarily removed install_i2p_service_unix and
4542      uninstall_i2p_service_unix from distribution packages.
4543    * postinstall.bat/postinstall.sh cleans installation directory of all files
4544      not applicable to the host OS.
4545
45462004-09-03  oOo
4547    * Added some filters to the HTTP request, replacing the User-Agent,
4548      Referrer, Via, and From headers, which helps until we have a more
4549      comprehensive filtering system.
4550
45512004-09-03  jrandom
4552    * Disabled the old listener on port 7655.
4553
45542004-09-02  jrandom
4555    * Cleaned up the base build.xml, adding a new target ("updater") which
4556      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4557      existing installs.
4558
45592004-xx-xx  jrandom
4560    * Implemented the new web architecture and router console
4561    * Implemented I2PTunnel web interface, and revamped startup process.
4562    * Revamped peer selection code to address skew.
4563    * Removed all temporary threads from the router and the SDK.
4564    * Bugfix dealing with timeouts and resends.
4565    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4566
45672004-xx-xx  hypercubus
4568    * Implemented the new installation process.
4569    * Integrated systray
4570    * Integrated service manager
4571
45722004-xx-xx  oOo
4573    * Implemented ?i2paddresshelper= hook
4574    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4575
45762004-xx-xx  Nightblade
4577    * libSAM updates.
4578
45792004-xx-xx  cervantes
4580    * Imported i2pProxy.pac proxy script in with the build.
4581
4582* 2004-08-20  0.3.4.3 released
4583* 2004-08-12  0.3.4.2 released
4584* 2004-08-08  0.3.4.1 released
4585* 2004-07-29  0.3.4 released
4586* 2004-07-23  0.3.3 released
4587* 2004-07-16  0.3.2.3 released
4588* 2004-07-14  0.3.2.2 released
4589* 2004-07-11  0.3.2.1 released
4590* 2004-07-07  0.3.2 released
4591* 2004-06-25  0.3.1.5 released
4592* 2004-05-23  0.3.1.4 released
4593* 2004-05-20  0.3.1.3 released
4594* 2004-05-13  0.3.1.2 released
4595* 2004-05-07  0.3.1.1 released
4596* 2004-04-30  0.3.1 released
4597* 2004-04-20  0.3.0.4 released
4598* 2004-04-04  0.3.0.3 released
4599* 2004-03-30  0.3.0.2 released
4600* 2004-03-25  0.3.0.1 released
4601* 2004-03-21  0.3.0 released
4602* 2004-03-10  0.2.5.4 released
4603* 2004-03-04  0.2.5.3 released
4604* 2004-02-28  0.2.5.2 released
4605* 2004-02-27  0.2.5.1 released
4606* 2004-02-25  0.2.5 released
4607* 2004-02-19  0.2.4.2 released
4608* 2004-02-15  0.2.4.1 released
4609* 2004-02-14  0.2.4 released
4610* 2004-01-27  0.2.3.6 released
4611* 2004-01-21  0.2.3.5 released
4612* 2004-01-14  0.2.3.4 released
4613* 2003-12-29  0.2.3.3 released
4614* 2003-12-27  0.2.3.2 released
4615* 2003-12-25  0.2.3.1 released
4616* 2003-12-13  0.2.3 released
4617* 2003-12-01  0.2.2 released
4618* 2003-11-18  0.2.1.1 released
4619* 2003-11-12  0.2.1 released
4620* 2003-11-09  0.2.0.3 released
4621* 2003-11-08  0.2.0.2 released
4622* 2003-11-03  0.2.0.1 released
4623* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.