source: history.txt @ 719ba3f

Last change on this file since 719ba3f was 719ba3f, checked in by zzz <zzz@…>, 13 years ago
  • Floodfill Peer Selector:
    • Avoid peers whose netdb is old, or have a recent failed store, or are forever-shitlisted
  • Property mode set to 100644
File size: 209.7 KB
Line 
12008-08-04 zzz
2    * Floodfill Peer Selector:
3      - Avoid peers whose netdb is old, or have a recent failed store,
4        or are forever-shitlisted
5
62008-07-30 zzz
7    * Blocklists:
8      - New, disabled by default, except for blocking of
9        forever-shitlisted peers. See source for instructions
10        and file format.
11    * Transport - Reject peers from inbound connections:
12      - Check IP against blocklist
13      - Check router hash against forever-shitlist, then block IP
14
152008-07-16 zzz
16    * configpeer.jsp: New
17    * i2psnark: Open completed files read-only the first time
18    * profiles.jsp: Show bonuses, link to configpeer.jsp
19    * PRNG: Move logging from wrapper to router log
20    * SSU:
21        Don't proactively reconnect until 30m idle, so
22        we don't lose introducer tags prematurely
23
242008-07-16 Oldaris
25    * Imports cleanup
26
272008-07-07 zzz
28    * i2psnark:
29      - Repair corrupted files with wrong length rather than die
30      - Register shutdown hook to properly shutdown torrents when
31        the router shuts down, hopefully will reduce corruption
32      - Add Galen tracker
33      - Add a note about how to change directory
34    * HTTP Proxy: Don't show jump links for unknown jump hosts
35    * KeyManager:
36      - Don't write router key backup when leaseSet keys are updated
37      - Synchronize to prevent concurrent writes (thanks Galen!)
38      - Backup keys every 7 days instead of every 5 minutes
39    * LoadTestManager: Don't instantiate, it's disabled
40    * Router console: Flag placeholder pages as noncacheable
41    * Streaming lib:
42      - Change some logging from WARN to INFO
43      - Clean up toString()
44    * SSU:
45      - Try to pick better introducers by checking shitlist,
46        wasUnreachable list, failing list, and idle times
47      - To keep introducer connections up and valid,
48        periodically send a "ping" (a data packet with no data and no acks)
49        to everybody that has been an introducer in the last two hours
50      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
51      - Remove some 60s and 5m stats, leave only the 10m ones
52      - Narrow the range for the retransmit time after an allocation fail
53      - Adjust some logging
54
552008-06-30 zzz
56    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
57    * i2psnark:
58      - Fix NPE caused by race (thanks echelon!)
59      - Add mastertracker, remove de-ebook
60    * NTCP:
61      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
62      - Fix failsafe stats
63    * PersistentDataStore: More leaseSet code cleanup
64    * SimpleTimer: Change congestion message from error to warn
65
662008-06-24 zzz
67    * FloodfillMonitorJob: Change range from 5-7 to 4-6
68    * NTCP: Remove getIsInbound(), duplicate of isInbound()
69    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
70    * Router console: add placeholder pages for i2psnark, i2ptunnel,
71      susidns, and susimail for use when the .wars are not running
72    * Streaming lib: Increase max window size to 128
73
742008-06-22 welterde
75    * Optimize I2PDatagramDissector
76
772008-06-20 zzz
78    * configclients.jsp: Add start button for clients and webapps.
79    * PRNG: Add two stats
80    * Summary bar:
81      - Display Warning for TCP private IP address
82      - Display PRNG stats
83    * OutNetMessage: Change cache logging from WARN to INFO
84
852008-06-17 zzz
86    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
87    * Summary bar: Display helpful errror message when UDP bind fails
88    * UDP: Don't bid when UDP bind fails
89    * configclients.jsp: Implement saves for clients and webapps.
90
912008-06-16 zzz
92    * UDP: Prevent 100% CPU when UDP bind fails;
93      change bind fail message from ERROR to CRIT
94    * Refactor LoadClientAppsJob.java, move some functions to new
95      ClientAppConfig.java, to make them easily available to
96      new configclients.jsp
97    * RouterConsoleRunner: Use a new config file, webapps.config,
98      to control which .wars in webapps/ get run. Apps are enabled
99      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
100      Config file is written if it does not exist.
101      Implement methods for use by new configclients.jsp.
102    * configclients.jsp: New. For both clients and webapps.
103      Saves are not yet implemented.
104
1052008-06-10 zzz
106    * Floodfill: Add new FloodfillMonitorJob, which tracks active
107      floodfills, and automatically enables/disables floodfill on
108      Class O routers to maintain 5-7 total active floodfills
109    * NetDb Stats:
110      - Remove several more stats
111      - Don't publish bw stats in first hour of uptime
112      - Publish floodfill stats even if other stats are disabled
113      - Changes not effective until 0.6.2.1 to provide cover.
114    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
115      startup, so peers don't list us as failing.
116    * graphs.jsp: Fix a bug where it tries to display the combined
117      bandwidth graph when it isn't available
118
1192008-06-09 zzz
120    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
121
1222008-06-09 zzz
123    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
124    * News:
125      - Add display of last updated and last checked time
126        on index.jsp and configupdate.jsp
127      - Add a function to get update version (unused for now)
128    * config.jsp: Add another warning
129
1302008-06-07 zzz
131    * NetDb: Tweak some logging on lease problems
132    * Shitlist:
133      - Add shitlistForever() and isShitlistedForever(), unused for now
134      - Sort the HTML output by router hash
135    * netdb.jsp:
136      - Sort the lease HTML output by dest hash, local first
137      - Sort the router HTML output by router hash
138
1392008-06-06 zzz
140    * LeaseSet:
141      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
142        to make later LeaseSet comparisons reliable. This cleans up the code too.
143      - Fix broken old vs. new LeaseSet comparison
144        in ClientConnectionRunner.requestLeaseSet(),
145        so that we only sign and publish a new LeaseSet when it's really new.
146        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
147        and floodfill router load, since locked_buildNewLeaseSet() generates
148        the same LeaseSet as before quite frequently, often just seconds apart.
149
1502008-06-05 zzz
151    * LeaseSet - code cleanup:
152      - Add exception to enforce max # of leases = 6, should be plenty
153      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
154        leases and then immediately remove them again, triggering
155        the new leaseSet size exception
156      - Remove the now unused LeaseSet.removeLease(lease) and
157        LeaseSet.removeLease(index)
158      - Store first and last expiration for efficiency
159    * Peer Profiles - Preparation for using bonuses:
160      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
161      - Persist CapacityBonus rather than ReachabilityBonus
162      - Include SpeedBonus in the Speed calculation
163      - Prevent negative values in Speed and Capacity when using bonuses
164      - Clean up SpeedCalculator.java
165    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
166    * Add some config files for a future small distribution
167    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
168
1692008-06-01 zzz
170    * Client Apps: Add new parameter for clients.config,
171        clientApp.x.startOnLoad=false, to disable loading
172        (for SAM for example). Defaults to true of course.
173    * Logging: Move common WARN output to DEBUG so we can ask users to
174        set the default log level to WARN without massive spewage
175    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
176      not just the Fast tier, since we don't use them for tunnels anyway
177    * SAM: Add some compiler flexibility to two obscure makefiles
178    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
179      (sponge's suggestion)
180    * summary bar:
181      - Hide ident, provide a tooltip and a link
182      - Add a warning if you are firewalled and class O
183
1842008-06-07 Complication
185    * Fix version in news.xml so it could be published
186
187* 2008-06-07  0.6.2 released
188
1892008-06-07 Complication
190    * Write announcement and prepare for release
191
1922008-05-29 zzz
193    * Fix up initialNews.xml
194
1952008-05-27 zzz
196    * Transport:
197      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
198      - UDP: Don't bid when IP address missing, mark unreachable
199
2002008-05-26 zzz
201    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
202    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
203    * build.xml:
204      - Add an updaterSmall target which includes only the essentials
205      - Add an updaterRouter target which includes only i2p.jar and router.jar
206      - Clean up the build file some
207      - Remove empty eepsite/ and subdirs from i2pupdate.zip
208    * configtunnels.jsp: Add warning
209    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
210    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
211
2122008-05-22 welterde
213    * Change jetty download location in build script
214
2152008-05-20 zzz
216    * Reachability:
217      - Call the previously unused profile.tunnelTestFailed()
218        (redefined to include a probability argument)
219        and severely downgrade a peer's capacity upon failures,
220        depending on tunnel length and direction.
221        This will help push unreachable and malicious peers
222        out of the High Capacity tier.
223      - Put recent fail rate on profiles.jsp
224    * ProfileOrganizer: Logging cleanup
225    * eepsite_index.html: Update add-host and jump links
226    * HTTP Proxy: Remove trevorreznik jump server from list
227
2282008-05-20 welterde
229    * implemented PrivateKeyFile
230
2312008-05-18 zzz
232    * Throttle: Reject tunnels for first 20m uptime (was 10m)
233    * TunnelPeerSelectors:
234       - Re-enable strict ordering of peers,
235         based on XOR distance from a random hash
236       - Restrict peers with uptime < 90m from tunnels (was 2h),
237         which is really 60m due to rounding in netDb publishing.
238    * i2psnark:
239       - Limit max pipelined requests from a single peer to 128KB
240         (was unlimited; i2p-bt default is 5 * 64KB)
241       - Increase max uploaders per torrent to 6 (was 4)
242       - Reduce max connections per torrent to 16 (was 24) to increase
243         unchoke time and reduce memory consumption
244       - Strictly enforce max connections per torrent
245       - Choke more gradually when over BW limit
246    * help.jsp: Add a link to the FAQ
247    * peers.jsp: Fix UDP direction indicators
248    * hosts.txt: Add update.postman.i2p
249
2502008-05-12 zzz
251    * Outbound message:
252      - Tweak the cache key for efficiency
253    * Stats:
254      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
255    * Summary bar:
256      - Add messages when dropping tunnel requests due to load
257    * Update Handler:
258      - Add postman to the list
259    * i2psnark:
260      - Randomize the PeerCheckerTask start times to make global limiting
261        work better
262      - Calculate bw limits using 40s rather than 4m averages to make
263        bw limiting work better
264      - Change default bw limit from uplimit/3 to uplimit/2 due to
265        overhead reduction from the leaseset bundling change
266    * libjbigi:
267      - Add documentation on dynamic build option
268      - Add two speed tests to the build script
269      - Clean up the build script, make it easier to build dynamic
270
2712008-05-10 zzz
272    * NetDb: Don't write the my.info file to disk, it isn't used for anything
273    * Stats:
274      - Simplify oldstats.jsp if no events in a stat
275      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
276        (caused by an SSU hack)
277    * Update Handler:
278      - Add option to download and verify only
279      - Add distinct error message if version check fails
280
2812008-05-09 welterde
282    * Add an update URL to the list
283
2842008-05-07 zzz
285    * Reachability:
286      - Restrict peers requiring introducers from inbound tunnels,
287        since it's slow and unreliable... and many of them advertise
288        NTCP, which seems unlikely to work
289      - Provide warning on summary bar if firewalled with inbound NTCP enabled
290    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
291      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
292      at startup (you didn't get any data unless you set the log level anyway)
293    * oldstats.jsp: Don't put 2 decimal places on integer event counts
294    * Remove the Internals link from the menu bar
295    * i2psnark: Extend startup delay from 1 to 3 minutes
296
2972008-05-06 welterde
298    * HTTP Proxy: Add i2jump.i2p jump service
299
3002008-05-05 zzz
301    * NetDb Stats: Cleanup of commented out stats
302    * Outbound message:
303      - Fix a couple of tunnel cache cleaning bugs
304      - Cache based on source+dest pairs rather than just dest
305      - Send the reply leaseSet only when necessary,
306        rather than all the time (big savings in overhead)
307      - Enable persistent lease selection again
308      - Logging tweaks
309    * Reachability:
310      - Restrict <= .32 SSU-only peers from inbound tunnels,
311        since they don't know if they are unreachable
312      - Have SSU bid aggressively when it has less than 3 peers, so
313        we can determine our IP address and do peer testing.
314        Otherwise a router may never determine its IP address or reachability status.
315    * Summary bar:
316      - Add reachability status
317      - Add participating tunnel acceptance status
318    * Throttle: Reject tunnels for first 10m uptime
319    * I2PTunnel: Change default outproxy to false.i2p
320    * profiles.jsp: Add router version
321
322* 2008-04-26  0.6.1.33 released
323
3242008-04-20 zzz
325    * Outbound message/Reachability:
326      - Fix a bug from -19 causing the persistent lease selection
327        removed in -17 to be back again
328      - Use netDb-listed-unreachable instead of detected-unreachable
329        for exclusion of unreachable peers from selected leases,
330        as there are potential anonymity problems with using
331        detected-unreachable
332      - Tweak logging some more
333    * NetDb stats: Remove a couple more including the inefficient stat_identities
334
3352008-04-17 zzz
336    * Reachability:
337      - Track unreachable peers persistently
338        (i.e. separately from shitlist, and not cleared when they contact us)
339      - Exclude detected unreachable peers from inbound tunnels
340      - Exclude detected unreachable peers from selected leases
341      - Exclude detected unreachable floodfill peers from lookups
342      - Show unreachable status on profiles.jsp
343
3442008-04-16 zzz
345    * SSU/Reachability:
346      - Extend shitlist time from 4-8m to 40-60m
347      - Add some shitlist logging
348      - Don't shitlist twice when unreachable on all transports
349      - Exclude netDb-listed unreachable peers from inbound tunnels;
350        this won't help much since there are very few of these now
351      - Remove 10s delay on inbound UDP connections used for the
352        0.6.1.10 transition
353      - Track and display UDP connection direction on peers.jsp
354      - Show shitlist status in-line on profiles.jsp
355
3562008-04-15 zzz
357    * SSU Reachability/PeerTestManager:
358      - Back out strict peer ordering until we fix SSU
359      - Back out persistent lease selection until we fix SSU
360      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
361      - Increase known Charlie time to 10m; 3m wasn't enough
362      - Don't continue retransmitting peer test if we know Charlie
363      - Don't run multiple peer tests at once
364      - Tighten test frequency range to 6.5-19.5m, was 0-26m
365
3662008-04-12 zzz
367    * Addressbook: Disallow '.-' and '-.' in host names
368    * NTCP: Don't drop a connection unless both directions are idle;
369            Fix idle time for outbound connections
370    * Outbound message: Make sure cached lease is in current leaseSet
371    * Stats: Put all NetworkDatabase stats in same group
372    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
373    * i2psnark: Add locking to prevent two I2CP connections
374
3752008-04-07 zzz
376    * i2psnark:
377      - Implement upstream bandwidth limiting
378      - Fix a rare NPE at startup/shutdown
379      - Really increase retries for .torrent fetch
380    * profiles.jsp: Minor cleanup
381    * DataHelper: Only format < 5s as ms
382    * Eepget: Fix percentage output on command line eepget retries
383    * Lower partipating message priority from 400 to 200
384    * NTCP: Add a debug message
385    * Outbound message: Minor cleanup
386
3872008-03-30 zzz
388    * ExploratoryPeerSelector: Try NonFailing even more
389    * HostsTxtNamingService: Add reverse lookup support
390    * Outbound message: Minor cleanup
391    * i2psnark TrackerClient: Minor cleanup
392    * checklist.txt: Minor edit
393    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
394    * i2ptunnel.config: Change CVS client to mtn
395    * netdb.jsp: Show leaseSet destinations using reverse lookup
396    * profiles.jsp: First cut at showing floodfill data
397
3982008-03-27 zzz
399    * Send messages for the same destination to the same inbound
400      lease to reduce out-of-order delivery.
401    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
402      for now, as it prevents speed rating of those peers
403
4042008-03-26 zzz
405    * ReseedHandler: Support multiple urls,
406      add netdb.i2p2.de as a 2nd default
407
4082008-03-25 zzz
409    * i2psnark:
410      - Add support for secondary open trackers
411      - Refactor and simplify the TrackerClient code
412      - Add welterde's tracker to the default list
413      - Don't have eepget retry announces
414      - Slow down tracker contacts if they've failed for a while
415      - Add some debug support showing connections (?p=2)
416    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
417
4182008-03-22 zzz
419    * NewsFetcher: Fix bug causing fetch every 10m
420
4212008-03-22 zzz
422    * Tunnel Testing:
423      - Fix counting so it really takes 4 consecutive failures
424        rather than 4 total to remove a tunnel
425      - Credit or blame goes to the exploratory tunnel as well
426        as the tunnel being tested
427      - Adjust tunnel test timeout based on tunnel length
428    * ExploratoryPeerSelector: Tweak logging
429    * ProfileOrganizer: Adjust integration calculation again
430    * build.xml: Add to help
431    * checklist.txt: Tweak
432    * readme.html: Fix forum links
433    * netDb: Remove tunnel.testFailedTime
434
4352008-03-19 zzz
436    * ExploratoryPeerSelector:
437      - Exclude floodfill peers
438      - Tweak the HighCap vs. NonFailing decision; try NonFailing
439        at least a minimum % of the time
440    * i2psnark: Increase retries for .torrent fetch
441    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
442      containing an IP
443    * readme.html: Reorder some items
444    * Stats: Add some more required stats
445    * Streaming lib: Fix slow start to be exponential growth,
446      fix congestion avoidance to be linear growth.
447      Should speed up local connections a lot, and remote
448      connections a little.
449
4502008-03-14 zzz
451    * Floodfill Search:
452       - Prefer heard-from, unfailing, unshitlisted floodfill peers
453
4542008-03-14 zzz
455    * ProfileOrganizer:
456       - Use more recent stats to calculate integration
457       - Show that fast peers are also high-capacity on profiles.jsp
458    * readme.html: Update Syndie link
459    * TunnelPool: Update comments
460    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
461      get rid of the 60s tunnel stats
462      (effective as of .33 to provide cover)
463
4642008-03-13 zzz
465    * Floodfill Search:
466       - Fix a bug that caused a single FloodfillOnlySearchJob
467         instance to be run multiple times, with unpredictable
468         results
469       - Select ff peers randomly to improve reliability
470       - Add some bulletproofing
471
4722008-03-11 zzz
473    * ProfileOrganizer:
474       - Don't require a peer to be high-capacity to be
475         well-integrated (not used for anything right now,
476         but want to get it right for possible floodfill verification)
477       - Don't fall back to median for high-capacity threshold
478         if the mean is higher than the median, this prevents
479         frequent large high-capacity counts
480       - Fix high-capacity selector that picked one too many
481    * Console: put well-integrated count back in the summary
482
4832008-03-10 zzz
484    * EepGet: Fix byte count for bytesTransferred status listeners
485      (fixes command line status)
486    * UpdateHandler:
487       - Fix byte count display
488       - Display final status on router console
489       - Don't allow multiple update jobs to queue up
490       - Increase max retries
491       - Code cleanup
492       - Don't show 'check for update' button when update in progress
493       - Enhance error messages
494    * NetDb: Comment out published netDb stats disabled for .32
495
4962008-03-08 zzz
497    * TunnelPeerSelectors: Implement strict ordering of peers,
498      based on XOR distance from a random hash
499      separately generated for each tunnel pool
500
5012008-03-07 zzz
502    * Naming: Optimize lookups for a destkey
503    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
504      - Prevent peers with matching IPs from joining same tunnel.
505        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
506        Default is 2 (disallow routers in same /16).
507        Set with router.defaultPool.IPRestriction=x
508      - Comment out unused RebuildPeriod pool setting
509      - Add random key to pool in preparation for XOR peer ordering
510    * SusiMail: Add 'Create Account' link
511    * TunnelDispatcher: Change a common wtf error to a warn
512
5132008-03-05 zzz
514    * Naming: Make HostsTxt the sole default NamingService
515      (was Meta = PetName + HostsTxt)
516    * Naming: Add two new experimental NamingServices, EepGet and Exec,
517      not enabled by default -
518      see source comments in core/java/src/net/i2p/client/naming
519      for configuration instructions
520    * i2psnark: Don't do a naming lookup for Base64 destkeys
521    * i2psnark: Add a StartAll button
522    * Stats: Add code to disable most stats to save memory.
523      Set on configstats.jsp or set stat.full=false to disable the stats.
524      (true by default for now)
525
5262008-03-09 Complication
527    * Give the Jetty build file ability to ask permission
528      before downloading the Jetty archive from the web,
529      and to verify its SHA1 + MD5 hashes. Adjust the main build file
530      in accordance with this change.
531    * Improve the release checklist.
532
533* 2008-03-09  0.6.1.32 released
534
5352008-03-07 zzz
536    * Update news and version numbers
537
5382008-03-01 zzz
539    * Fix netdb.knownLeaseSets count reported by floodfill routers
540      (was broken by -3)
541
5422008-02-27 zzz
543    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
544    * i2psnark: Remove orion and gaytorrents from default tracker list
545    * Remove orion from jump list and from eepsite_index.html
546    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
547    * Capitalize OutboundMessageDistributor job name
548    * TunnelPool: Add a warning if all tunnels are backlogged
549
5502008-02-26 zzz
551    * Reintroduce NTCP backlog pushback, with switch back to
552      previous tunnel when no longer backlogged
553    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
554    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
555
5562008-02-21 zzz
557    * Raise inbound default bandwidth to 32KBps
558    * Fix config.jsp that showed 0KBps share bandwidth by default
559
5602008-02-19 zzz
561    * Addressbook: Disallow '--' in host names except in IDN,
562      add some reserved host names
563    * I2PTunnel: Clarify edit form
564    * NetDb: Remove many stats from netDb, effective as of .32
565    * profiles.jsp: Display capabilities
566    * Tunnels: Enforce max tunnel length of 8, catch an index error
567      http://forum.i2p/viewtopic.php?t=2561
568
5692008-02-16 zzz
570    * Fix race in TunnelDispatcher which caused
571      participating tunnel count to seesaw -
572      should increase network capacity
573    * Leave participating tunnels in 10s batches for efficiency
574    * Update participating tunnel ratestat when leaving a tunnel too,
575      to generate a smoother graph
576    * Fix tunnel.participatingMessageCount stat to include all
577      participating tunnels, not just outbound endpoints
578    * Simplify Expire Tunnel job name
579
5802008-02-13 zzz
581    * PersistentDataStore: Write out 300 records every 10 min
582      rather than 1 every 10 sec;
583      Don't store leasesets to disk or read them in
584    * Combine rates for pools with the same length setting
585      in the new tunnel build algorithm
586    * Clarify a log message in the UpdateHandler
587
5882008-02-13 zzz
589    * Make graphs clickable to get larger graphs
590    * Change SimpleTimer CRIT to a WARN, increase threshold
591    * Checklist update
592
5932008-02-11 welterde
594    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
595
5962008-02-10 zzz
597    * Add new tunnel build algorithm (preliminary)
598    * Change NTCP backlogged message from error to warning
599    * Checklist updates
600
601* 2008-02-10  0.6.1.31 released
602
6032008-02-10 Complication
604    * Update news and version numbers
605
6062008-02-06 zzz
607    * build.xml: Add some apps to javadoc
608    * checklist.txt: Add some things
609    * news.xml: make links relative
610    * runplain.sh: Add some comments
611    * wrapper.config: Add some comments
612
6132008-02-05 Complication
614    * Change the dates too (sorry for such forgetfulness!)
615
6162008-02-04 Complication
617    * Also use the new key for checking, and add it into news.xml
618
6192008-02-04 Complication
620    * Added my release signing key into TrustedUpdate.java
621
6222008-01-31 zzz
623    * NewsFetcher: Change fetch failed from error to warning
624    * installer: Fix URL and "email"
625    * checklist.txt: New release checklist
626
6272008-01-29 zzz
628    * Addressbook: Change default subscription
629    * ConfigUpdateHandler: Change default news URL
630    * initialNews.xml: Update version to .31
631    * news.xml: More updates
632    * hosts.txt: Add i2p-projekt.i2p
633    * readme.html: More URL updates
634    * SusiDNS: Change references to default subscription
635
6362008-01-28 zzz
637    * news.xml: Updates, still preliminary
638    * ReseedHandler: Change default URL
639    * i2ptunnel.config: Change default outproxies
640    * readme.html: Change *.i2p.net URLs
641    * help.jsp: Change *.i2p.net URLs
642    * eepsite_index.html: Change stats.i2p addressbook subscription URL
643    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
644
645* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
646
6472008-01-08 zzz
648    * addressbook: Limit size of subscribed hosts.txt,
649        don't save old etag or last-modified data
650    * EepGet: Add some logging,
651        enforce size limits even when size not in returned header,
652        don't return old etag or last-modified data,
653        don't call transferFailed listener more than once
654    * Sign my update signing key
655    * NewsFetcher: add last-modified support, reduce number of retries
656    * Error pages: add icon and logo,
657        clarify 'destination not found' and 'proxy not found' pages
658
6592008-01-07 zzz
660    * profiles.jsp formatting cleanup
661    * NTCP: Reduce max idle time from 60m to 20m
662    * NTCP: Fix idle time on connections with zero messages,
663      correctly drop these connections
664
6652008-01-03 zzz
666    * addressbook: Do basic validation of hostnames and destkeys
667    * susidns: Add support for the private addressbook,
668      update the text and links somewhat
669
6702008-01-02 zzz
671    * Add stats.i2p to the jump list
672    * Impose 20MB limit on POSTs and catch OOMs in POST
673    * eepsite_index.html: add stats.i2p services
674    * addressbook: log source of new keys; disallow dests > 516 bytes
675    * addressbook: convert hostnames to lower case to prevent duplicates
676    * susidns: generalize references to orion
677
6782007-12-29 zzz
679    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
680    * Allow commas in router.trustedUpdateKeys and router.updateURL again
681    * Change default news host from dev.i2p.net to dev.i2p
682    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
683
6842007-12-28 zzz
685    * Add zzz's update signing key
686
6872007-12-26 Complication
688    * Improve reseed handler (less repetitive code,
689      avoid reporting errors when less than 10% of fetches fail)
690
6912007-12-26 Complication
692    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
693      and unescape them in DataHelper.loadProps() to support
694      saving and loading config properties with line breaks
695    * Change the update URLs textbox into a textarea like keys have,
696      so different URLs go on different lines
697    * Modify TrustedUpdate to provide a method which supplies a key list
698      delimited with CR LF line breaks
699    * Modify DEFAULT_UPDATE_URL to supply a default URL list
700      delimited with CR LF line breaks
701    * Modify selectUpdateURL() to handle URL lists
702      delimited by any kind of line breaks
703    * Start saving trusted update keys
704    * Improve formatting on configupdate.jsp
705
7062007-12-22 zzz
707    * Add support for multiple update URLs
708    * Change default for update to use i2p proxy,
709      add several URLs as defaults
710    * Enable trusted key form on configupdate.jsp
711    * Clarify the 'destination not found' error page
712
7132007-12-16 zzz
714    * i2psnark: remove anonymitytracker from default list
715
7162007-12-10 zzz
717    * Fix NPE in CLI TrustedUpdate keygen
718
7192007-12-02 Complication
720    * Commit SAM v2 patch from mkvore (thank you!)
721    * Minor reformatting to preserve consistent whitespace
722      in old SAM classes (new classes unaltered)
723
7242007-12-01 Complication
725    * Separate the checks "does Jetty .zip file need downloading"
726      and "does Jetty .zip file need extracting" in the Jetty buildfile.
727      First download (unless already done), then extract (unless done).
728
7292007-11-26 zzz
730    * i2psnark: add timeout for receive inactivity
731
7322007-11-24 zzz
733    * i2psnark: increase streaming lib write timeout to 240 sec and change
734      timeout action from "ping" to "disconect", as the fix in .30 to
735      honor options on outbound connections led to hung outbound connections
736      (bitfield never transmitted, connection never dropped)
737
7382007-11-06 jrandom
739    * add i2host.i2p to the jump list
740
7412007-10-11 zzz
742    * IRC Proxy: Fix several possible anonymity holes:
743      - Block CTCP in NOTICE messages
744      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
745      - Check for lower case commands
746    (Thanks sponge!)
747
7482007-10-07  jrandom
749    * back out the NTCP backlog pushback, as it could be used to mount an
750      active anonymity attack.
751
752* 2007-10-07  0.6.1.30 released
753
7542007-10-07  Complication
755    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
756      broke retrying.
757
7582007-09-27  zzz
759    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
760    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
761      fix some of the sorting
762
7632007-09-22  zzz
764    * Send messages for the same destination out the same outbound
765      tunnel to reduce out-of-order delivery.
766
7672007-09-19  zzz
768    * i2psnark: Fix broken multifile torrent Delete;
769        cleanup Storage resources in AddTorrent;
770        don't autostart torrent after Create
771
7722007-09-18  zzz
773    * eepsite_index.html: Add links to trevorreznik address book
774    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
775    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
776    * i2psnark: Don't make outbound connections to already-connected peers
777    * i2psnark: Debug logging cleanup
778
7792007-09-14  zzz
780    * eepget: Increase header timeout to 45s
781    * HTTP proxy: Return a better error message for localhost requests
782    * tunnels: Fix PooledTunnelCreatorConfig memory leak
783
7842007-09-09  zzz
785    * eepget: Add support for Last-Modified and If-Modified-Since
786    * addressbook: Finish incomplete support for Last-Modified
787
7882007-09-08  zzz
789    * eepget: Copy over SocketTimeout.java file from syndie
790
7912007-09-07  jrandom
792    * eepget: Merge timeout support from syndie
793
794* 2007-08-23  0.6.1.29 released
795
7962007-08-12  zzz
797    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
798      tweak the eepsite and troubleshooting sections
799
8002007-08-11  zzz
801    * Add stats for individual tunnel rates (nice when graphed)
802    * i2psnark: Fix outbound tunnel nickname
803
8042007-08-05  Complication
805    * Update the sharing calculator on config.jsp
806      and explain the trade-off even more thoroughly.
807
8082007-08-04  Complication
809    * Lower the threshold between the K and L bandwidth class,
810      so that K is now < 12 KB/s, instead of <= 16 KB/s.
811      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
812      participate in routing, if they keep the default share percentage.
813
8142007-07-16  zzz
815    * i2psnark: Add tooltip info for choked/uninterested
816
8172007-07-16  zzz
818    * Make selection of graphed data configurable via configstats.jsp,
819      remove most of the default graphs to save some memory
820
8212007-07-15  zzz
822    * Add current values to graph legends
823    * Fix up previous Rate fix to check for divide by zero
824
8252007-07-14  Complication
826    * Take the post-download routerInfo size check back out of ReseedHandler,
827      since it wasn't helpful, and a lower limit caused false warnings.
828    * Give EepGet ability to enforce a min/max HTTP response size.
829    * Enforce a maximum response size of 8 MB when ReseedHandler
830      downloads into a ByteArrayOutputStream.
831    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
832      change invocation from RouterConsoleRunner accordingly.
833    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
834      provide status reports to indicate the progress of reseeding.
835    * Enable icon for default eepsite, and the index page
836      of the router console (more later).
837
8382007-07-14  zzz
839    * Clean up graphs.jsp - set K=1024 where appropriate,
840      output image sizes in html, catch ooms, other minor tweaks
841    * Fix current event count truncation which fixes graphs with low
842      60-sec event counts displaying high values
843      (bw.* and router.* graphs for example were 1.5x too high)
844      Affects all "events per period" (non-lifetime) counts.
845
8462007-07-09  zzz
847    * i2psnark: give a better error message for a non-i2p torrent
848
8492007-07-07  zzz
850    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
851      SSU will notify/restart NTCP when the external address changes.
852      Now you can enable inbound TCP without a static IP or dyndns service.
853
8542007-07-04  zzz
855    * Display calculated share bandwidth and remove load testing
856      on config.jsp
857
8582007-07-01  zzz
859    * Replace broken option i2np.udp.alwaysPreferred with
860      i2np.udp.preferred and adjust UDP bids; possible settings are
861      "false" (default), "true", and "always".
862      Default setting results in same behavior as before
863      (NTCP is preferred unless it isn't established and UDP is established).
864      Use to compare NTCP and UDP transports.
865
8662007-06-27  jrandom
867    * fix for a streaming lib bug that could leave a thread waiting
868      indefinitely (thanks Complication!)
869
8702007-06-16  Complication
871    * First pass on EepGet and ReseedHandler improvements,
872      please avoid use on routers which matter!
873    * Give EepGet ability of downloading into an OutputStream,
874      such as the ByteArrayOutputStream of ReseedHandler.
875    * Detect failure to reseed better, report it persistently
876      and more verbosely, provide a link to logs
877      and suggest manual reseed.
878
8792007-05-06  Complication
880    * Fix the build.xml file, so the preppkg build target won't try copying files
881      which became deprecated with the old Syndie (thanks for alerting, itsu!)
882
8832007-03-31  zzz
884    * Add trevorreznik jump server to the http proxy error page
885    * Add anonymity to the trackers supporting details links in i2psnark
886
8872007-03-24  zzz
888    * Remove Syndie from build targets and navbar
889
8902007-03-22  zzz
891    * i2psnark tracker handling tweaks:
892    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
893    -   Add Base URL to tracker list configuration
894    -   Web page links built from tracker list Base URLs
895    -   Only build and sort tracker list once
896    -   Add anonymityWeb tracker to default list
897    -   Add tooltip info for TrackerErrs
898    -   Stop torrent if not registered with tracker
899    -   Mark temp files as delete on exit
900
9012007-03-18  zzz
902    * i2psnark: Cleanup some handling of saved partial pieces
903    * i2psnark: Put bit counting in Bitfield.java for efficiency
904    * i2psnark: Save torrent completion state in i2psnark.config
905
906* 2007-03-17  0.6.1.28 released
907
9082007-03-13  zzz
909    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
910
9112007-03-12  jrandom
912    * dodge a race on startup (thanks zzz!)
913
9142007-03-10  zzz
915    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
916      (RFC 2988) to reduce early RTO values
917
9182007-03-08  zzz
919    * i2psnark changes to improve upload performance:
920    *  Implement total uploader limit (10)
921    *  Don't timeout non-piece messages out
922    *  Change chunk size to 32K (was 64K)
923    *  Change request limit to 64K (was 256K)
924    * i2psnark: Disconnect from seeds when complete
925
9262007-03-07  zzz
927    * Remove dynamic router keys from config.jsp
928
9292007-03-07  zzz
930    * Streaming lib changes to improve upstream performance during congestion:
931    *   Change min window size from 12 to 1
932    *   Change max timeout from 10 to 45 sec
933    *   Change initial timeout from 10 to 15 sec
934    *   Change intial window size for i2psnark from 12 to 1
935    *   Change slow start growth rate for i2psnark from 1/2 to 1
936
9372007-03-04  zzz
938    * Update eepsite_index.html
939
9402007-03-03  zzz
941    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
942    * Add a updaterWithJetty build target
943
9442007-03-03  zzz
945    * Implement priority sending for NTCP
946    * Disable trimForOverload() in tunnel BuildExecutor which
947      was preventing tunnel builds when outbound traffic was high
948      (i.e. most of the time when running i2psnark)
949
9502007-02-28  zzz
951    * i2psnark: File reopen cleanup
952
9532007-02-28  zzz
954    * i2psnark: Add peer details to web page
955
956* 2007-02-15  0.6.1.27 released
957
9582007-02-15  jrandom
959    * Limit the whispering floodfill sends to at most 3 randomly
960      chosen from the known floodfill peers
961
9622007-02-14  jrandom
963    * Don't filter out KICK and H(ide oper status) IRC messages
964      (thanks Takk and postman!)
965
9662007-02-13  jrandom
967    * Tell our peers about who we know in the floodfill netDb every
968      6 hours or so, mitigating the situation where peers lose track
969      of floodfill routers.
970    * Disable the Syndie updater (people should use the new Syndie,
971      not this one)
972    * Disable the eepsite tunnel by default
973
9742007-01-30  zzz
975    * i2psnark: Don't hold _snarks lock while checking a snark,
976      so web page is responsive at startup
977
9782007-01-29  zzz
979    * i2psnark: Add NickyB tracker
980
9812007-01-28  zzz
982    * i2psnark: Don't hold sendQueue lock while flushing output,
983      to make everything run smoother
984
9852007-01-27  zzz
986    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
987
9882007-01-20  Complication
989    * Drop overlooked comment
990
9912007-01-20  Complication
992    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
993      instead of System, so setting a reseed URL in advanced configuration has effect.
994    * Clean out obsolete reseed code from ConfigNetHandler.
995
9962007-01-20  zzz
997    * i2psnark: More choking rotation tweaks
998    * Improve performance by not reading in the whole
999      piece from disk for each request. A huge memory savings
1000      on 1MB torrents with many peers.
1001
10022007-01-17  zzz
1003    * Add new HTTP Proxy error message for non-http protocols
1004
10052007-01-17  zzz
1006    * Add note on Syndie index.html steering people to new Syndie
1007
10082007-01-16  zzz
1009    * i2psnark: Fix crash when autostart off and
1010      tcrrent started manually
1011
10122007-01-16  zzz
1013    * i2psnark: Fix bug caused by last i2psnark checkin
1014      (ConnectionAcceptor not started)
1015    * Don't start PeerCoordinator, ConnectionAcceptor,
1016      and TrackerClient unless starting torrent
1017
10182007-01-15  jrandom
1019    * small guard against unnecessary streaming lib reset packets
1020      (thanks Complication!)
1021
10222007-01-15  zzz
1023    * i2psnark: Add 'Stop All' link on web page
1024    * Add some links to trackers and forum on web page
1025    * Don't start tunnel if 'Autostart' unchecked
1026    * Fix torrent restart bug by reopening file descriptors
1027
10282007-01-14  zzz
1029    * i2psnark: Improvements for torrents with > 4 leechers:
1030      choke based on upload rate when seeding, and
1031      be smarter and fairer about rotating choked peers.
1032    * Handle two common i2psnark OOM situations rather
1033      than shutting down the whole thing.
1034    * Fix reporting to tracker of remaining bytes for
1035      torrents > 4GB (but ByteMonsoon still has a bug)
1036
10372006-10-29  zzz
1038    * i2psnark: Fix and enable generation of multifile torrents,
1039      print error if no tracker selected at create-torrent,
1040      fix stopping a torrent that hasn't started successfully,
1041      add eBook and GayTorrents trackers to form,
1042      web page formatting tweaks
1043
1044* 2006-10-10  0.6.1.26 released
1045
10462006-10-29  Complication
1047    * Ensure we get NTP samples from more diverse sources
1048      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1049    * Discard median-based peer skew calculator as framed average works,
1050      and adjusting its percentage can make it behave median-like
1051    * Require more data points (from at least 20 peers)
1052      before considering a peer skew measurement reliable
1053
10542006-10-10  jrandom
1055    * Removed the status display from the console, as its more confusing
1056      than informative (though the content is still displayed in the HTML)
1057
10582006-10-08  Complication
1059    * Add a framed average peer clock skew calculator
1060    * Add config property "router.clockOffsetSanityCheck" to determine
1061      if NTP-suggested clock offsets get sanity checked (default "true")
1062    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1063      by more than 5 seconds, or make it more than 20 seconds total
1064    * Decrease log level in getMedianPeerClockSkew()
1065
10662006-09-29  zzz
1067    * i2psnark: Second try at synchronization fix - synch addRequest()
1068      completely rather than just portions of it and requestNextPiece()
1069
10702006-09-27  jrandom
1071    * added HMAC-SHA256
1072    * properly use CRLF with EepPost
1073    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1074    * PBE session key generation (with 1000 rounds of SHA256)
1075    * misc SDK helper functions
1076
10772006-09-26  Complication
1078    * Take back another inadverent logging change in NTCPConnection
1079
10802006-09-26  Complication
1081    * Take back an accidental log level change
1082
10832006-09-26  Complication
1084    * Subclass from Clock a RouterClock which can access router transports,
1085      with the goal of developing it to second-guess NTP results
1086    * Make transports report clock skew in seconds
1087    * Adjust renderStatusHTML() methods accordingly
1088    * Show average for NTCP clock skews too
1089    * Give transports a getClockSkews() method to report clock skews
1090    * Give transport manager a getClockSkews() method to aggregate results
1091    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1092      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1093    * Extra explicitness in NTCP classes to denote unit of time.
1094    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1095
10962006-09-25  zzz
1097    * i2psnark: Paranoid copy before writing pieces,
1098      recheck files on completion, redownload bad pieces
1099    * i2psnark: Don't contact tracker as often when seeding
1100
11012006-09-24  zzz
1102    * i2psnark: Add some synchronization to prevent rare problem
1103      after restoring orphan piece
1104
11052006-09-20  zzz
1106    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1107      rapid choke/unchokes
1108    * i2psnark: Truncate long TrackerErr messages on web page
1109
11102006-09-16  zzz
1111    * i2psnark: Implement retransmission of requests. This
1112      eliminates one cause of complete stalls with a peer.
1113      This problem is common on torrents with a small number of
1114      active peers where there are no choke/unchokes to kickstart things.
1115
11162006-09-13  zzz
1117    * i2psnark: Fix restoral of partial pieces broken by last patch
1118
11192006-09-13  zzz
1120    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1121      preventing premature end game
1122    * i2psnark: Randomize selection of next piece during end game
1123    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1124    * i2psnark: strip ".torrent" on web page
1125    * i2psnark: Limit piece size in generated torrent to 1MB max
1126
11272006-09-09  zzz
1128    * i2psnark: Add "Stalled" indication and stat totals on web page
1129
11302006-09-09  zzz
1131    * i2psnark: Fix bug where new peers would always be sent an "interested"
1132      regardless of actual interest
1133    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1134      memory and efficiency problems
1135
1136* 2006-09-09  0.6.1.25 released
1137
11382006-09-08  jrandom
1139    * Tweak the PRNG logging so it only displays error messages if there are
1140      problems
1141    * Disable dynamic router keys for the time being, as they don't offer
1142      meaningful security, may hurt the router, and makes it harder to
1143      determine the network health.  The code to restart on SSU IP change is
1144      still enabled however.
1145    * Disable tunnel load testing, leaning back on the tiered selection for
1146      the time being.
1147    * Spattering of bugfixes
1148
11492006-09-07  zzz
1150    * i2psnark: Increase output timeout from 2 min to 4 min
1151    * i2psnark: Orphan debug msg cleanup
1152    * i2psnark: More web rate report cleanup
1153
11542006-09-05  zzz
1155    * i2psnark: Implement basic partial-piece saves across connections
1156    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1157      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1158      code in i2psnark ineffective. Will have to research why there is transmit but
1159      not receive inactivity code. With the current connection limit of 24 peers
1160      we aren't in any danger of keeping out new peers by keeping inactive ones.
1161    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1162    * i2psnark: Fix dropped chunk handling
1163    * i2psnark: Web rate report cleanup
1164
11652006-09-04  zzz
1166    * i2psnark: Report cleared trackerErr immediately
1167    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1168    * i2psnark: Set up new connections more quickly
1169    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1170    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1171
11722006-09-04  zzz
1173    * Enable pipelining in i2psnark
1174    * Make i2psnark tunnel default be 1 + 0-1
1175
11762006-09-03  zzz
1177    * Add rate reporting to i2psnark
1178
11792006-09-03  Complication
1180    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1181    * Print messages about addressbook size to give better overview
1182    * Enable delete function in published addressbook
1183
11842006-08-21  Complication
1185    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1186
11872006-08-03  jrandom
1188    * Decrease the recently modified tunnel building timeout, though keep
1189      the scaling on their processing
1190
11912006-07-31  jrandom
1192    * Increase the tunnel building timeout
1193    * Avoid a rare race (thanks bar!)
1194    * Fix the bandwidth capacity publishing code to factor in share percentage
1195      and outbound throttling (oops)
1196
11972006-07-29  Complication
1198    * Treat NTP responses from unexpected stratums like failures
1199
1200* 2006-07-28  0.6.1.24 released
1201
12022006-07-28  jrandom
1203    * Don't try to reverify too many netDb entries at once (thanks
1204      cervantes and Complication!)
1205
12062006-07-28  jrandom
1207    * Actually fix the threading deadlock issue in the netDb (removing
1208      the synchronized access to individual kbuckets while validating
1209      individual entries) (thanks cervantes, postman, frosk, et al!)
1210
1211* 2006-07-27  0.6.1.23 released
1212
12132006-07-27  jrandom
1214    * Cut down NTCP connection establishments once we know the peer is skewed
1215      (rather than wait for full establishment before verifying)
1216    * Removed a lock on the stats framework when accessing rates, which
1217      shouldn't be a problem, assuming rates are created (pretty much) all at
1218      once and merely updated during the lifetime of the jvm.
1219
12202006-07-27  jrandom
1221    * Further NTCP write status cleanup
1222    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1223
12242006-07-26  jrandom
1225    * When dropping a netDb router reference, only accept newer
1226      references as part of the update check
1227    * If we have been up for a while, don't accept really old
1228      router references (published 2 or more days ago)
1229    * Drop router references once they are no longer valid, even if
1230      they were allowed in due to the lax restrictions on startup
1231
12322006-07-26  jrandom
1233    * Every time we create a new router identity, add an entry to the
1234      new "identlog.txt" text file in the I2P install directory.  For
1235      debugging purposes, publish the count of how many identities the
1236      router has cycled through, though not the identities itself.
1237    * Cleaned up the way the multitransport shitlisting worked, and
1238      added per-transport shitlists
1239    * When dropping a router reference locally, first fire a netDb
1240      lookup for the entry
1241    * Take the peer selection filters into account when organizing the
1242      profiles (thanks Complication!)
1243    * Avoid some obvious configuration errors for the NTCP transport
1244      (invalid ports, "null" ip, etc)
1245    * Deal with some small NTCP bugs found in the wild (unresolveable
1246      hosts, strange network discons, etc)
1247    * Send our netDb info to peers we have direct NTCP connections to
1248      after each 6-12 hours of connection uptime
1249    * Clean up the NTCP reading and writing queue logic to avoid some
1250      potential delays
1251    * Allow people to specify the IP that the SSU transport binds on
1252      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1253
1254* 2006-07-18  0.6.1.22 released
1255
12562006-07-18  jrandom
1257    * Add a failsafe to the NTCP transport to make sure we keep
1258      pumping writes when we should.
1259    * Properly reallow 16-32KBps routers in the default config
1260      (thanks Complication!)
1261
12622006-07-16  Complication
1263    * Collect tunnel build agree/reject/expire statistics
1264      for each bandwidth tier of peers (and peers of unknown tiers,
1265      even if those shouldn't exist)
1266
12672006-07-14  jrandom
1268    * Improve the multitransport shitlisting (thanks Complication!)
1269    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1270      the default configuration (thanks for the stats Complication!)
1271    * Properly allow older router references to load on startup
1272      (thanks bar, Complication, et al!)
1273    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1274      hopefully today's changes should make this unnecessary (thanks void!)
1275    * Improved NTCP buffering
1276    * Close NTCP connections if we are too backlogged when writing to them
1277
12782006-07-04  jrandom
1279    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1280      connections only.  Those who configure their NAT/firewall to allow
1281      inbound connections and specify the external host and port
1282      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1283      SSU is still enabled for use by default for all users as a fallback.
1284    * Substantial bugfix to the tunnel gateway processing to transfer
1285      messages sequentially instead of interleaved
1286    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1287      GNU/Classpath based JVMs
1288    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1289      refill with a background thread to refill the output buffer
1290    * Add per-transport support for the shitlist
1291    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1292      contention
1293
12942006-07-01  Complication
1295    * Ensure that the I2PTunnel web interface won't update tunnel settings
1296      for shared clients when a non-shared client is modified
1297      (thanks for spotting, BarkerJr!)
1298
12992006-06-14  cervantes
1300    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1301      that use Bitstream Vera fonts @ 96 dpi
1302
1303* 2006-06-14  0.6.1.21 released
1304
13052006-06-13  jrandom
1306    * Use a minimum uptime of 2 hours, not 4 (oops)
1307
13082006-06-13  jrandom
1309    * Cut down the proactive rejections due to queue size - if we are
1310      at the point of having decrypted the request off the queue, might
1311      as well let it through, rather than waste that decryption
1312
13132006-06-11  Kloug
1314    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1315      outstanding pings/pongs
1316
13172006-06-10  jrandom
1318    * Further reduction in proactive rejections
1319
13202006-06-09  jrandom
1321    * Don't let the pending tunnel request queue grow beyond reason
1322      (letting things sit for up to 30s when they fail after 10s
1323      seems a bit... off)
1324
13252006-06-08  jrandom
1326    * Be more conservative in the proactive rejections
1327
13282006-06-04  Complication
1329    * Trim out sending a blank line before USER in susimail.
1330      Seemed to break in rare cases, thanks for reporting, Brachtus!
1331
1332* 2006-06-04  0.6.1.20 released
1333
13342006-06-04  jrandom
1335    * Reduce the SSU ack frequency
1336    * Tweaked the tunnel rejection settings to reject less aggressively
1337
13382006-05-31  jrandom
1339    * Only send netDb searches to the floodfill peers for the time being
1340    * Add some proof of concept filters for tunnel participation.  By default,
1341      it will skip peers with an advertised bandwith of less than 32KBps or
1342      an advertised uptime of less than 2 hours.  If this is sufficient, a
1343      safer implementation of these filters will be implemented.
1344
1345* 2006-05-18  0.6.1.19 released
1346
13472006-05-18  jrandom
1348    * Made the SSU ACKs less frequent when possible
1349
13502006-05-17  Complication
1351    * Fix some oversights in my previous changes:
1352      adjust some loglevels, make a few statements less wasteful,
1353      make one comparison less confusing and more likely to log unexpected values
1354
13552006-05-17  jrandom
1356    * Make the peer page sortable
1357    * SSU modifications to cut down on unnecessary connection failures
1358
13592006-05-16  jrandom
1360    * Further shitlist randomizations
1361    * Adjust the stats monitored for detecting cpu overload when dropping new
1362      tunnel requests
1363
13642006-05-15  jrandom
1365    * Add a load dependent throttle on the pending inbound tunnel request
1366      backlog
1367    * Increased the tunnel test failure slack before killing a tunnel
1368
13692006-05-13  Complication
1370    * Separate growth factors for tunnel count and tunnel test time
1371    * Reduce growth factors, so probabalistic throttle would activate
1372    * Square probAccept values to decelerate stronger when far from average
1373    * Create a bandwidth stat with approximately 15-second half life
1374    * Make allowTunnel() check the 1-second bandwidth for overload
1375      before doing allowance calculations using 15-second bandwidth
1376    * Tweak the overload detector in BuildExecutor to be more sensitive
1377      for rising edges, add ability to initiate tunnel drops
1378    * Add a function to seek and drop the highest-rate participating tunnel,
1379      keeping a fixed+random grace period between such drops.
1380      It doesn't seem very effective, so disabled by default
1381      ("router.dropTunnelsOnOverload=true" to enable)
1382
13832006-05-11  jrandom
1384    * PRNG bugfix (thanks cervantes and Complication!)
1385
1386* 2006-05-09  0.6.1.18 released
1387
13882006-05-09  jrandom
1389    * Further tunnel creation timeout revamp
1390
13912006-05-07  Complication
1392    * Fix problem whereby repeated calls to allowed() would make
1393      the 1-tunnel exception permit more than one concurrent build
1394
13952006-05-06  jrandom
1396    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1397      while tracking the extended timeout events.
1398
13992006-05-04  jrandom
1400    * Short circuit a highly congested part of the stat logging unless its
1401      required (may or may not help with a synchronization issue reported by
1402      andreas)
1403
14042006-05-03  Complication
1405    * Allow a single build attempt to proceed despite 1-minute overload
1406      only if the 1-second rate shows enough spare bandwidth
1407      (e.g. overload has already eased)
1408
14092006-05-02  Complication
1410    * Correct a misnamed property in SummaryHelper.java
1411      to avoid confusion
1412    * Make the maximum allowance of our own concurrent
1413      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1414      within the fixed range 2..10
1415    * While overloaded, try to avoid completely choking our own build attempts,
1416      instead prefer limiting them to 1
1417
14182006-05-01  jrandom
1419    * Adjust the tunnel build timeouts to cut down on expirations, and
1420      increased the SSU connection establishment retransmission rate to
1421      something less glacial.
1422    * For the first 5 minutes of uptime, be less aggressive with tunnel
1423      exploration, opting for more reliable peers to start with.
1424
14252006-05-01  jrandom
1426    * Fix for a netDb lookup race (thanks cervantes!)
1427
14282006-04-27  jrandom
1429    * Avoid a race in the message reply registry (thanks cervantes!)
1430
14312006-04-27  jrandom
1432    * Fixed the tunnel expiration desync code (thanks Complication!)
1433
1434* 2006-04-23  0.6.1.17 released
1435
14362006-04-19  jrandom
1437    * Adjust how we pick high capacity peers to allow the inclusion of fast
1438      peers (the previous filter assumed an old usage pattern)
1439    * New set of stats to help track per-packet-type bandwidth usage better
1440    * Cut out the proactive tail drop from the SSU transport, for now
1441    * Reduce the frequency of tunnel build attempts while we're saturated
1442    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1443
1444* 2006-04-15  0.6.1.16 released
1445
14462006-04-15  jrandom
1447    * Adjust the proactive tunnel request dropping so we will reject what we
1448      can instead of dropping so much (but still dropping if we get too far
1449      overloaded)
1450
14512006-04-14  jrandom
1452    * 0 isn't very random
1453    * Adjust the tunnel drop to be more reasonable
1454
14552006-04-14  jrandom
1456    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1457    * Made the bw-related tunnel join throttle much simpler
1458
14592006-04-14  jrandom
1460    * Make some more stats graphable, and allow some internal tweaking on the
1461      tunnel pairing for creation and testing.
1462
1463* 2006-04-13  0.6.1.15 released
1464
14652006-04-12  jrandom
1466    * Added a further failsafe against trying to queue up too many messages to
1467      a peer.
1468
14692006-04-12  jrandom
1470    * Watch out for failed syndie index fetches (thanks bar!)
1471
14722006-04-11  jrandom
1473    * Throttling improvements on SSU - throttle all transmissions to a peer
1474      when we are retransmitting, not just retransmissions.  Also, if
1475      we're already retransmitting to a peer, probabalistically tail drop new
1476      messages targetting that peer, based on the estimated wait time before
1477      transmission.
1478    * Fixed the rounding error in the inbound tunnel drop probability.
1479
14802006-04-10  jrandom
1481    * Include a combined send/receive graph (good idea cervantes!)
1482    * Proactively drop inbound tunnel requests probabalistically as the
1483      estimated queue time approaches our limit, rather than letting them all
1484      through up to that limit.
1485
14862006-04-08  jrandom
1487    * Stat summarization fix (removing the occational holes in the jrobin
1488      graphs)
1489
14902006-04-08  jrandom
1491    * Process inbound tunnel requests more efficiently
1492    * Proactively drop inbound tunnel requests if the queue before we'd
1493      process it in is too long (dynamically adjusted by cpu load)
1494    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1495      proactively drop too many requests.
1496    * Display the number of pending inbound tunnel join requests on the router
1497      console (as the "handle backlog")
1498    * Include a few more stats in the default set of graphs
1499
15002006-04-06  jrandom
1501    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1502
15032006-04-06  jrandom
1504    * Fixed a typo in the reply cleanup code
1505
1506* 2006-04-05  0.6.1.14 released
1507
15082006-04-05  jrandom
1509    * Cut down on the time that we allow a tunnel creation request to sit by
1510      without response, and reject tunnel creation requests that are lagged
1511      locally.  Also switch to a bounded FIFO instead of a LIFO
1512    * Threading tweaks for the message handling (thanks bar!)
1513    * Don't add addresses to syndie with blank names (thanks Complication!)
1514    * Further ban clearance
1515
15162006-04-05  jrandom
1517    * Fix during the ssu handshake to avoid an unnecessary failure on
1518      packet retransmission (thanks ripple!)
1519    * Fix during the SSU handshake to use the negotiated session key asap,
1520      rather than using the intro key for more than we should (thanks ripple!)
1521    * Fixes to the message reply registry (thanks Complication!)
1522    * More comprehensive syndie banning (for repeated pushes)
1523    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1524      testing purposes
1525    * Put a floor back on the capacity threshold, so too many failing peers
1526      won't cause us to pick very bad peers (unless we have very few good
1527      ones)
1528    * Bugfix to cut down on peers using introducers unneessarily (thanks
1529      Complication!)
1530    * Reduced the default streaming lib message size to fit into a single
1531      tunnel message, rather than require 5 tunnel messages to be transferred
1532      without loss before recomposition.  This reduces throughput, but should
1533      increase reliability, at least for the time being.
1534    * Misc small bugfixes in the router (thanks all!)
1535    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1536
15372006-04-01  jrandom
1538    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1539    * Filter the IRC ping/pong messages, as some clients send unsafe
1540      information in them (thanks aardvax and dust!)
1541
15422006-03-30  jrandom
1543    * Substantially reduced the lock contention in the message registry (a
1544      major hotspot that can choke most threads).  Also reworked the locking
1545      so we don't need per-message timer events
1546    * No need to have additional per-peer message clearing, as they are
1547      either unregistered individually or expired.
1548    * Include some of the more transient tunnel throttling
1549
1550* 2006-03-26  0.6.1.13 released
1551
15522006-03-25  jrandom
1553    * Added a simple purge and ban of syndie authors, shown as the
1554      "Purge and ban" button on the addressbook for authors that are already
1555      on the ignore list.  All of their entries and metadata are deleted from
1556      the archive, and the are transparently filtered from any remote
1557      syndication (so no user on the syndie instance will pull any new posts
1558      from them)
1559    * More strict tunnel join throtting when congested
1560
15612006-03-24  jrandom
1562    * Try to desync tunnel building near startup (thanks Complication!)
1563    * If we are highly congested, fall back on only querying the floodfill
1564      netDb peers, and only storing to those peers too
1565    * Cleaned up the floodfill-only queries
1566
15672006-03-21  jrandom
1568    * Avoid a very strange (unconfirmed) bug that people using the systray's
1569      browser picker dialog could cause by disabling the GUI-based browser
1570      picker.
1571    * Cut down on subsequent streaming lib reset packets transmitted
1572    * Use a larger MTU more often
1573    * Allow netDb searches to query shitlisted peers, as the queries are
1574      indirect.
1575    * Add an option to disable non-floodfill netDb searches (non-floodfill
1576      searches are used by default, but can be disabled by adding
1577      netDb.floodfillOnly=true to the advanced config)
1578
15792006-03-20  jrandom
1580    * Fix to allow for some slack when coalescing stats
1581    * Workaround some oddball errors
1582
15832006-03-18  jrandom
1584    * Added a new graphs.jsp page to show all of the stats being harvested
1585
15862006-03-18  jrandom
1587    * Made the netDb search load limitations a little less stringent
1588    * Add support for specifying the number of periods to be plotted on the
1589      graphs - e.g. to plot only the last hour of a stat that is averaged at
1590      the 60 second period, add &periodCount=60
1591
15922006-03-17  jrandom
1593    * Add support for graphing the event count as well as the average stat
1594      value (done by adding &showEvents=true to the URL).  Also supports
1595      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1596      the title (&hideTitle=true).
1597    * Removed an unnecessary arbitrary filter on the profile organizer so we
1598      can pick high capacity and fast peers more appropriately
1599
16002006-03-16  jrandom
1601    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1602      console.  Selected stats can be harvested automatically and fed into
1603      in-memory RRD databases, and those databases can be served up either as
1604      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1605      details).  A base set of stats are harvested by default, but an
1606      alternate list can be specified by setting the 'stat.summaries' list on
1607      the advanced config.  For instance:
1608      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1609    * HTML tweaking for the general config page (thanks void!)
1610    * Odd NPE fix (thanks Complication!)
1611
16122006-03-15  Complication
1613    * Trim out an old, inactive IP second-guessing method
1614      (thanks for spotting, Anonymous!)
1615
16162006-03-15  jrandom
1617    * Further stat cleanup
1618    * Keep track of how many peers we are actively trying to communicate with,
1619      beyond those who are just trying to communicate with us.
1620    * Further router tunnel participation throttle revisions to avoid spurious
1621      rejections
1622    * Rate stat display cleanup (thanks ripple!)
1623    * Don't even try to send messages that have been queued too long
1624
16252006-03-05  zzz
1626    * Remove the +++--- from the logs on i2psnark startup
1627
16282006-03-05  jrandom
1629    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1630    * Give netDb lookups to floodfill peers more time, as they are much more
1631      likely to succeed (thereby cutting down on the unnecessary netDb
1632      searches outside the floodfill set)
1633    * Fix to the SSU IP detection code so we won't use introducers when we
1634      don't need them (thanks Complication!)
1635    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1636      peers given to it
1637    * Don't let netDb searches wander across too many peers
1638    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1639      as its too volatile to have much meaning.
1640    * Don't bork if a Syndie post is missing an entry.sml
1641
16422006-03-05  Complication
1643    * Reduce exposed statistical information,
1644      to make build and uptime tracking more expensive
1645
16462006-03-04  Complication
1647    * Fix the announce URL of orion's tracker in Snark sources
1648
16492006-03-03  Complication
1650    * Explicit check for an index out of bounds exception while parsing
1651      an inbound IRC command (implicit check was there already)
1652
16532006-03-01  jrandom
1654    * More aggressive tunnel throttling as we approach our bandwidth limit,
1655      and throttle based off periods wider than 1 second.
1656    * Included Doubtful Salmon's syndie stylings (thanks!)
1657
16582006-02-27  zzz
1659    * Update error page templates to add \r, Connection: close, and
1660      Proxy-connection: close to headers.
1661
1662* 2006-02-27  0.6.1.12 released
1663
16642006-02-27  jrandom
1665    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1666      machines, rather than the generic jbigi (until we have an athlon64
1667      optimized version)
1668
16692006-02-26  jrandom
1670    * Switch from the bouncycastle to the gnu-crypto implementation for
1671      SHA256, as benchmarks show a 10-30% speedup.
1672    * Removed some unnecessary object caches
1673    * Don't close i2psnark streams prematurely
1674
16752006-02-25  jrandom
1676    * Made the Syndie permalinks in the thread view point to the blog view
1677    * Disabled TCP again (since the live net seems to be doing well w/out it)
1678    * Fix the message time on inbound SSU establishment (thanks zzz!)
1679    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1680      just starts up
1681
16822006-02-24  jrandom
1683    * Rounding calculation cleanup in the stats, and avoid an uncontested
1684      mutex (thanks ripple!)
1685    * SSU handshake cleanup to help force incompatible peers to stop nagging
1686      us by both not giving them an updated reference to us and by dropping
1687      future handshake packets from them.
1688
16892006-02-23  jrandom
1690    * Increase the SSU retransmit ceiling (for slow links)
1691    * Estimate the sender's SSU MTU (to help see if we agree)
1692
16932006-02-22  jrandom
1694    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1695    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1696      links
1697    * Further class validator refactorings
1698
16992006-02-22  jrandom
1700    * Handle a rare race under high bandwidth situations in the SSU transport
1701    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1702
17032006-02-21  Complication
1704    * Reactivate TCP tranport by default, in addition to re-allowing
1705
1706* 2006-02-21  0.6.1.11 released
1707
17082006-02-21  jrandom
1709    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1710      heap when backlogged (and so that the messages queued up on it don't sit
1711      there forever)
1712    * Further SSU memory cleanup
1713    * Clean up the address regeneration code so it knows when to rebuild the
1714      local info more precisely.
1715
17162006-02-20  jrandom
1717    * Properly enable TCP this time (oops)
1718    * Deal with multiple form handlers on the same page in the console without
1719      being too annoying (thanks blubb and bd_!)
1720
17212006-02-20  jrandom
1722    * Reenable the TCP transport as a fallback (we'll continue to muck with
1723      debugging SSU-only elsewhere)
1724
17252006-02-20  jrandom
1726    * Major SSU and router tuning to reduce contention, memory usage, and GC
1727      churn.  There are still issues to be worked out, but this should be a
1728      substantial improvement.
1729    * Modified the optional netDb harvester task to support choosing whether
1730      to use (non-anonymous) direct connections or (anonymous) exploratory
1731      tunnels to do the harvesting.  Harvesting itself is enabled via the
1732      advanced config "netDb.shouldHarvest=true" (default is false) and the
1733      connection type can be chosen via "netDb.harvestDirectly=false" (default
1734      is false).
1735
17362006-02-19  dust
1737    * Added pruning of suckers history (it used to grow indefinitely).
1738
17392006-02-19  jrandom
1740    * Moved the current net's reseed URL to a different location than where
1741      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1742    * More aggressively expire inbound messages (on receive, not just on send)
1743    * Add in a hook for breaking backwards compatibility in the SSU wire
1744      protocol directly by including a version as part of the handshake.  The
1745      version is currently set to 0, however, so the wire protocol from this
1746      build is compatible with all earlier SSU implementations.
1747    * Increased the number of complete message readers, cutting down
1748      substantially on the delay processing inbound messages.
1749    * Delete the message history file on startup
1750    * Reworked the restart/shutdown display on the console (thanks bd_!)
1751
17522006-02-18  jrandom
1753    * Migrate the outbound packets from a central component to the individual
1754      per-peer components, substantially cutting down on lock contention when
1755      dealing with higher degrees.
1756    * Load balance the outbound SSU transfers evenly across peers, rather than
1757      across messages (so peers with few messages won't be starved by peers
1758      with many).
1759    * Reduce the frequency of router info rebuilds (thanks bar!)
1760
17612006-02-18  jrandom
1762    * Add a new AIMD throttle in SSU to control the number of concurrent
1763      messages being sent to a given peer, in addition to the throttle on the
1764      number of concurrent bytes to that peer.
1765    * Adjust the existing SSU outbound queue to throttle based on the queue's
1766      lag, not an arbitrary number of packets.
1767
17682006-02-17  jrandom
1769    * Properly fix the build request queue throttling, using queue age to
1770      detect congestion, rather than queue size.
1771
17722006-02-17  jrandom
1773    * Disable the message history log file by default (duh - feel free to
1774      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1775    * Limit the size of the inbound tunnel build request queue so we don't
1776      get an insane backlog of requests that we're bound to reject, and adjust
1777      the queue processing so we keep on churning through them when we've got
1778      a backlog.
1779    * Small fixes for the multiuser syndie operation (thanks Complication!)
1780    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1781      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1782
1783* 2006-02-16  0.6.1.10 released
1784
17852006-02-16  jrandom
1786    * Add a new toggle to the web config to enable/disable the load testing
1787
17882006-02-16  jrandom
1789    * Dropped much of the abandonware from the apps/ directory
1790
17912006-02-16  jrandom
1792    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1793    * Initial sucker refactoring to simplify reuse of the html parsing
1794    * Beginnings of hooks to push imported rss/atom out to remote syndie
1795      archives automatically (though not enabled currently)
1796    * Further SSU peer test cleanup
1797
17982006-02-15  jrandom
1799    * Add in per-blog RSS feeds to Syndie
1800    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1801      with the posts, marking additional attachments as Media RSS enclosures
1802      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1803      per item.
1804    * Don't allow the default syndie user to be set to something invalid if
1805      its in single user mode.
1806
18072006-02-15  jrandom
1808    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1809      longer backwards compatible (and should not be used until 0.6.1.1 is
1810      out)
1811
18122006-02-14  jrandom
1813    * Syndie ui bugfixes (thanks all!)
1814
18152006-02-13  jrandom
1816    * Use the current directory for some temporary I2PSnark files, rather than
1817      the OS default temp dir (thanks anon!)
1818    * Increase the base streaming lib window size (still shrinks to 1 on
1819      retransmission though, of course)
1820    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1821    * Implement fast retransmit in the streaming lib (fires at most once per
1822      packet), and increased the default ack delay to 2 seconds (from .5s)
1823    * Don't ask for garlic level message acks for end to end messages unless
1824      they're useful (e.g. to ack session tags)
1825
18262006-02-12  cervantes
1827    * Use a different santisation method for some SML attributes
1828    * Make router console update config save button actually save.
1829    * Fix console bandwidth limiter burst rate dropdowns, so the display
1830      relates to what is saved in the config.
1831   
18322006-02-12  cervantes
1833    * SML is now stricter in it's formatting (attributes should only use
1834      double quotes instead of being allowed to mix with singles).
1835    * Using apostrophes in SML attributes will no longer invalidate the tag.
1836    * Some instances of [blog] tag description were not being displayed
1837      correctly.
1838
18392006-02-12  jrandom
1840    * Further SSU peer test throttling
1841    * Put the most common router console features on the main index page too
1842
18432006-02-11  jrandom
1844    * Be more careful about SSU peer test floods
1845
18462006-02-09  jrandom
1847    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1848
18492006-02-08  jrandom
1850    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1851      bundled a precompiled libjbigi.so in the jbigi.jar
1852    * Cleaned up the synchronization for some SSU packet handling code
1853    * Allow explicit rejection of more lagged tunnel build requests, rather
1854      than dropping them outright
1855    * Use lighter load testing
1856
18572006-02-07  jrandom
1858    * Handle HTTP headers without any values (thanks Sugadude!)
1859    * Don't show the option to make Syndie multiuser, since very few people
1860      need it, and multiuser mode is a lot more complex to use.  Geeks can
1861      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1862      (or in the router's advanced config, for the embedded Syndie)
1863    * When a peer rejects participation in a tunnel, they mean it (duh)
1864    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1865    * Remove a throttle on the size of the SSU active outbound pool, since
1866      it was essentially arbitrary
1867    * Use a more appropriate SSU bloom filter size
1868    * Don't "proactively" drop SSU connections if we have partially received
1869      inbound messages (duh)
1870    * Migrate most of the message state across SSU connection reestablishment
1871
18722006-02-06  jrandom
1873    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
1874      piggybacked
1875
18762006-02-05  jrandom
1877    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
1878      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
1879      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
1880    * Enable the messageHistory.txt by default, for debugging
1881
18822006-02-05  jrandom
1883    * Substantial bugfix for the duplicate message detection in the transport
1884      layer
1885    * Handle tunnel build responses ASAP, rather than queueing them up to wait
1886      in line (processing them is really fast - just a few AES loops)
1887    * Don't bother handling build requests that we have queued up for a while
1888      locally, as the requestor will have timed it out anyway (perhaps we
1889      should reply regardless, but with a backoff instead?)
1890
18912006-02-04  jrandom
1892    * Further tunnel test cleanup and disabling of the old tunnel creation
1893      code
1894
18952006-02-04  jrandom
1896    * Clean up and reenable the tunnel testing for the new tunnel system.
1897
18982006-02-04  jrandom
1899    * Don't cache the archive.txt in syndie when fetching it through the web
1900      interface.
1901    * Logging updates
1902
19032006-02-03  jrandom
1904    * Added further replay prevention on the tunnel build requests
1905    * More aggressive streaming lib closing on reset
1906
19072006-02-03  jrandom
1908    * More aggressive refusal of peers from the wrong network (oops)
1909
19102006-02-01  jrandom
1911    * Instruct the router to reseed against a new URL, for migration purposes:
1912      http://dev.i2p.net/i2pdb2/
1913    * Aggressive error handling during UDP packet creation (thanks cervantes)
1914
19152006-02-01  jrandom
1916    * Fix the new tunnel creation crypto, including the addition of a 4 byte
1917      "next message ID" to the encrypted request structure in the spec.
1918    * Backwards incompatible change, using the new tunnel creation crypto, the
1919      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
1920      with the old incompatible network).
1921    * Reworked the leaseSet request process to handle a race condition
1922    * Disable the TCP transport
1923    * Run four separate threads on the job queue to cut down on job lag
1924
19252006-01-28  jrandom
1926    * Removed a race that could show up in leaseSet requesting with the new
1927      tunnel building process
1928
19292006-01-25  jrandom
1930    * Run the peer profile coalescing/reorganization outside the job queue
1931      (on one of the timers), to cut down on some job queue congestion.  Also,
1932      trim old profiles while running, not just when starting up.
1933    * Slightly more sane intra-floodfill-node netDb activity (only flood new
1934      entries)
1935    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
1936      source of the bug is not yet addressed)
1937    * Better I2PSnark reconnection handling
1938    * Further cleanup in the new tunnel build process
1939    * Make sure we expire old participants properly
1940    * Remove much of the transient overload throttling (it wasn't using a good
1941      metric)
1942
19432006-01-25  dust
1944    * Fix IRC client proxy to use ISO-8859-1.
1945
19462006-01-22  jrandom
1947    * New tunnel build process - does not use the new crypto or new peer
1948      selection strategies.  However, it does drop the fallback tunnel
1949      procedure, except for tunnels who are configured to allow them, or for
1950      the exploratory pool during bootstrapping or after a catastrophic
1951      failure.  This new process prefers to fail rather than use too-short
1952      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
1953      it may expose more tunnel failures to the user.
1954    * Always prefer normal tunnels to fallback tunnels.
1955    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
1956      bar!)
1957    * Do all of the netDb entry writing in a separate thread, avoiding
1958      duplicates and batching them up.
1959
19602006-01-19  Complication
1961    * Explain better where eepsite's destkey can be found
1962
19632006-01-18  cervantes
1964    * Add title attributes to all external links in Syndie, so we can rollover
1965      and quickly see if it's worth clicking on.
1966    * Fixed a minor compiler warning.
1967
19682006-01-17  jrandom
1969    * First pass of the new tunnel creation crypto, specified in the new
1970      router/doc/tunnel-alt-creation.html (referenced in the current
1971      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
1972      than in the test code, but the code verifies the technical viability, so
1973      further scrutiny would be warranted.
1974
19752006-01-16  cervantes
1976    * Dragged I2P kicking and screaming into 2006 (Oops)
1977
19782006-01-14  cervantes
1979    * Removed entirely misleading memory status from the console summary.
1980       
19812006-01-13  cervantes
1982    * Further Syndie layout hardening and typeface balancing.
1983
1984* 2006-01-12  0.6.1.9 released
1985
19862006-01-12  jrandom
1987    * Only create the loadtest.log if requested to do so (thanks zzz!)
1988    * Make sure we cleanly take into consideration the appropriate data
1989      points when filtering out duplicate messages in the message validator,
1990      and report the right bloom filter false positives rate (not used for
1991      anything except debugging)
1992
19932006-01-12  cervantes
1994    * Syndie CSS tweaks to removed some redundant declarations, improve font
1995      scaling and layout robustness. Improved cross browser compatibility
1996      (in other words "kicked IE"). Tightened the look of the blog template
1997      a little.
1998
19992006-01-11  Complication
2000    * CSS comment fixes
2001
20022006-01-11  jrandom
2003    * Include the attachments/blogs/etc for comments on the blog view
2004    * Syndie HTML fixes (thanks cervantes!)
2005    * Make sure we fully reset the objects going into our cache before we
2006      reuse them (thanks zzz!)
2007
20082006-01-10  jrandom
2009    * Added the per-post list of attachments/blogs/etc to the blog view in
2010      Syndie (though this does not yet include comments or some further
2011      refinements)
2012    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2013      removing the dox box (though also removes the restart functionality...)
2014    * Give the i2p.exe the correct java.library.path to support the systray
2015      dll (thanks Bobcat, Sugadude, anon!)
2016
20172006-01-09  jrandom
2018    * Removed a longstanding bug that had caused unnecessary router identity
2019      churn due to clock skew
2020    * Temporarily sanity check within the streaming lib for long pending
2021      writes
2022    * Added support for a blog-wide logo to Syndie, and automated the pushing
2023      of updated extended blog info data along side the metadata.
2024
20252006-01-09  jrandom
2026    * Bugfix for a rare SSU error (thanks cervantes!)
2027    * More progress on the blog interface, allowing customizable blog-wide
2028      links.
2029
20302006-01-08  jrandom
2031    * First pass of the new blog interface, though without much of the useful
2032      customization features (coming soon)
2033
20342006-01-04  jrandom
2035    * Rather than profile individual tunnels for throughput over their
2036      lifetime, do so at 1 minute intervals (allowing less frequently active
2037      tunnels to be more fairly measured).
2038    * Run the live tunnel load test across two tunnels at a time, by default.
2039      The load test runs for a random period from 90s to the tunnel lifetime,
2040      self paced.  This should help gathering data for profiling peers that
2041      are in exploratory tunnels.
2042
20432006-01-03  jrandom
2044    * Calculate the overall peer throughput across the 3 fastest one minute
2045      tunnel throughput values, rather than the single fastest throughput.
2046    * Degrade the profiled throughput data over time (cutting the profiled
2047      peaks in half once a day, on average)
2048    * Enable yet another new speed calculation for profiling peers, using the
2049      peak throughput from individual tunnels that a peer is participating in,
2050      rather than across all tunnels they are participating in.  This helps
2051      gather a fairer peer throughput measurement, since it won't allow a slow
2052      high capacity peer seem to have a higher throughput (pushing a little
2053      data across many tunnels at once, as opposed to lots of data across a
2054      single tunnel).  This degrades over time like the other.
2055    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2056      precompiled OS/2 library)
2057
20582006-01-01  jrandom
2059    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2060      (though it can still seed and participate in multifile swarms)
2061    * Enable a new speed calculation for profiling peers, using their peak
2062      1 minute average tunnel throughput as their speed.
2063
20642005-12-31  jrandom
2065    * Include a simple torrent creator in the I2PSnark web UI
2066    * Further streaming lib closing improvements
2067    * Refactored the load test components to run off live tunnels (though,
2068      still not safe for normal/anonymous load testing)
2069
20702005-12-30  jrandom
2071    * Close streams more gracefully
2072
20732005-12-30  jrandom
2074    * Small streaming lib bugfixes for the modified timeouts
2075    * Minor Syndie/Sucker RSS html fix
2076    * Small synchronization fix in I2PSnark (thanks fsm!)
2077
20782005-12-30  jrandom
2079    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2080      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2081      some distros (e.g. mandriva)
2082
20832005-12-29  jrandom
2084    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2085      actually correct
2086
20872005-12-27  jrandom
2088    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2089      the clock is too skewed to do anything useful (check the year and month,
2090      not just the hour and minute).
2091    * Fixed the read/write timeouts in the streaming lib (so that it actually
2092      honors them now)
2093    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2094      torrent closing)
2095    * Handle an oddball tunnel creation failure (thanks Xunk)
2096
20972005-12-26  Complication
2098    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2099    * HTML readability cosmetics on "Peers" page
2100
2101* 2005-12-22  0.6.1.8 released
2102
21032005-12-22  jrandom
2104    * Bundle the standalone I2PSnark launcher in the installer and update
2105      process (launch as "java -jar launch-i2psnark.jar", viewing the
2106      interface on http://localhost:8002/)
2107    * Don't autostart swarming torrents by default so that you can run a
2108      standalone I2PSnark from the I2P install dir and not have the embedded
2109      I2PSnark autolaunch the torrents that the standalone instance is running
2110    * Fixed a rare streaming lib bug that could let a blocking call wait
2111      forever.
2112
21132005-12-22  jrandom
2114    * Cleaned up some buffer synchronization issues in I2PSnark that could
2115      cause blockage.
2116
21172005-12-21  jrandom
2118    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2119      behavior)
2120    * Fixed the I2PSnark bug that would lose track of live peers
2121
21222005-12-20  jrandom
2123    * Enabled the control in I2PSnark to toggle whether torrents should be
2124      started automatically or not
2125    * Hopefully finished the last hook to close down torrents completely when
2126      they're stopped.
2127
21282005-12-19  jrandom
2129    * Fix for old Syndie blog bookmarks (thanks Complication!)
2130    * Fix for I2PSnark to accept incoming connections again (oops)
2131    * Randomize the order that peers from the tracker are contacted
2132
21332005-12-19  jrandom
2134    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2135      memory usage reduction, better OOM handling, and a shared connection
2136      acceptor.
2137    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2138      blog from the blog page shows threads started by the selected author,
2139      not those that they merely participate in)
2140
21412005-12-18  jrandom
2142    * Added a standalone runner for the I2PSnark web ui (build with the
2143      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2144      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2145    * Further I2PSnark error handling
2146
21472005-12-17  jrandom
2148    * Let multiuser accounts authorize themselves to access the remote
2149      functionality again (thanks Ch0Hag!)
2150    * Adjust the JVM heap size to 128MB for new installs (existing users can
2151      accomplish this by editing wrapper.config, adding the line
2152      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2153      of the router).  This is relevent for heavy usage of I2PSnark in the
2154      router console.
2155
21562005-12-17  jrandom
2157    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2158      'piece' sizes grow larger than before.
2159
21602005-12-16  jrandom
2161    * Added some I2PSnark sanity checks, an OOMListener when running
2162      standalone, and a guard against keeping memory tied up indefinitely.
2163    * Sanity check on the watchdog (thanks zzz!)
2164    * Handle invalid HTTP requests in I2PTunnel a little better
2165
21662005-12-16  jrandom
2167    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2168      properly (thanks Complication!)
2169    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2170      b0rking in the DirMonitor, etc)
2171
21722005-12-16  jrandom
2173    * Try to run a torrent in readonly mode if we can't write to the file, and
2174      handle failures a little more gracefully (thanks polecat!)
2175
21762005-12-16  jrandom
2177    * Refuse torrents with too many files (128), avoiding ulimit errors.
2178    * Remove an fd leak in I2PSnark
2179    * Further I2PSnark web UI cleanup
2180
21812005-12-15  jrandom
2182    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2183
21842005-12-15  jrandom
2185    * Added multitorrent support to I2PSnark, accessible currently by running
2186      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2187      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2188      their data in that directory as well.  Removing the .torrent file stops
2189      participation, and it is currently set to seed indefinitely.  Completion
2190      is logged to the logger and standard output, with further UI interaction
2191      left to the (work in progress) web UI.
2192
21932005-12-14  jrandom
2194    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2195    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2196      (thanks Complication!)
2197
21982005-12-13  zzz
2199    * Don't test tunnels expiring within 90 seconds
2200    * Defer Test Tunnel jobs if job lag too large
2201    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2202      job lag for tunnel build backoff, allowing for more agile handling
2203      (since the stat is only updated once a minute)
2204    * Use tunnel length override if all tunnels are expiring within one
2205      minute.
2206
22072005-12-13  jrandom
2208    * Fixed I2PSnark's handling of some torrent files to deal with those
2209      created by Azureus and I2PRufus (it didn't know how to deal with
2210      additional meta info, such as path.utf-8 or name.utf-8).
2211
22122005-12-09  zzz
2213    * Create different strategies for exploratory tunnels (which are difficult
2214      to create) and client tunnels (which are much easier)
2215    * Gradually increase number of parallel build attempts as tunnel expiry
2216      nears.
2217    * Temporarily shorten attempted build tunnel length if builds using
2218      configured tunnel length are unsuccessful
2219    * React more aggressively to tunnel failure than routine tunnel
2220      replacement
2221    * Make tunnel creation times randomized - there is existing code to
2222      randomize the tunnels but it isn't effective due to the tunnel creation
2223      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2224      to 3 minutes before expiration. The patch fixes this by fixing the
2225      randomization, and by changing the overlap time (with old tunnels) to a
2226      range of 2 to 4 minutes.
2227    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2228      to overlapping calls. Just about anything generated a call which could
2229      build many tunnels all at once, even if tunnel building was already in
2230      process.
2231    * Miscellaneous router console enhancements
2232
22332005-12-08  jrandom
2234    * Minor bugfix in SSU for dealing with corrupt packets
2235    * Added some hooks for load testing
2236
22372005-12-07  jrandom
2238    * Added a first pass at a blog view in Syndie
2239
22402005-12-07  jrandom
2241    * Expand the thread we're viewing to its leaf
2242    * Bugfix on intraday ordering (children are always newer than parents)
2243
22442005-12-05  jrandom
2245    * Added an RDF and XML thread export to Syndie, reachable at
2246      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2247      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2248      displays all threads.
2249
22502005-12-04  TLorD
2251    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2252
22532005-12-04  jrandom
2254    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2255    * Always include ourselves in the favorite authors (since we don't
2256      bookmark ourselves)
2257
22582005-12-03  jrandom
2259    * Use newgroup-like tags by default in Syndie's interface
2260
22612005-12-03  jrandom
2262    * Added support for a 'most recent posts' view that CofE requested, which
2263      includes the ability to filter by age (e.g. posts by your favorite
2264      authors in the last 5 days).
2265
22662005-12-03  jrandom
2267    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2268      displays a a single thread path at a time - from root to leaf - rather
2269      than a depth first traversal.
2270
22712005-12-03  jrandom
2272    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2273      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2274      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2275      running a single user Syndie instance (by default).  It also creates a
2276      default subscription to syndiemedia without any anonymity (using no
2277      proxy).  Upgrades can be done by just replacing the syndie.war with the
2278      one from I2P.
2279
2280* 2005-12-01  0.6.1.7 released
2281
22822005-12-01  jrandom
2283    * Add a new criteria to the tunnel join throttle, backing off people if we
2284      are failing to talk to our peers more than usual.
2285
22862005-11-30  jrandom
2287    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2288      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2289      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2290      separate jdom or rome, as they're inside syndie.war.
2291
22922005-11-30  jrandom
2293    * Don't let the TCP transport alone shitlist a peer, since other
2294      transports may be working.  Also display whether TCP connections are
2295      inbound or outbound on the peers page.
2296    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2297      talk to anyone who didn't expose an IP (even if they had introducers),
2298      among other goofy things.
2299    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2300      rather than sending one a packet at 3s, then another a packet at 6s,
2301      and a third a packet at 9s.
2302    * Fixed Syndie attachments (oops)
2303
23042005-11-29  zzz
2305    * Added a link to orion's jump page on the 'key not found' error page.
2306
23072005-11-29  jrandom
2308    * Further Syndie UI cleanup
2309    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2310      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2311      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2312      will be removed as soon as its integrated into Jetty.  This patch allows
2313      posting content in various character sets.
2314      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2315    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2316      isn't pushed as part of the update yet, as there aren't any critical
2317      bugs.
2318
23192005-11-29  jrandom
2320    * Added back in the OSX jbigi, which was accidentally removed a few revs
2321      back (thanks for the bug report stoerte!)  New installs will get the
2322      full jbigi, or you can pull the jbigi.jar from CVS by going to
2323      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2324      and clicking on the first "download" link, saving that jbigi.jar to
2325      lib/jbigi.jar in your I2P installation directory.  After restarting your
2326      router, it should load up fine.
2327
23282005-11-27  jrandom
2329    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2330      because firefox [and others?] delay rendering until they fetch the css).
2331    * Make sure we fire the shutdown tasks when regenerating a new identity
2332      (thanks picsou!)
2333    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2334    * Don't drop SSU sessions if they're still transmitting data successfully,
2335      even if there are transmission failures
2336    * Adjusted the time summarization to display hours after 119m, not 90m
2337    * Further EepGet cleanup (grr)
2338
2339* 2005-11-26 0.6.1.6 released
2340
23412005-11-26  jrandom
2342    * Update the sorting in Syndie to consider children 'newer' than parents,
2343      even if they have the same message ID (duh)
2344    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2345    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2346    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2347      better)
2348
23492005-11-26  jrandom
2350    * Be more explicit about what messages we will handle through a client
2351      tunnel, and how we will handle them.  This cuts off a set of attacks
2352      that an active adversary could mount, though they're probably nonobvious
2353      and would require at least some sophistication.
2354
23552005-11-26  Raccoon23
2356    * Added support for 'dynamic keys' mode, where the router creates a new
2357      router identity whenever it detects a substantial change in its public
2358      address (read: SSU IP or port).  This only offers minimal additional
2359      protection against trivial attackers, but should provide functional
2360      improvement for people who have periodic IP changes, since their new
2361      router address would not be shitlisted while their old one would be.
2362    * Added further infrastructure for restricted route operation, but its use
2363      is not recommended.
2364
23652005-11-25  jrandom
2366    * Further Syndie UI cleanups
2367    * Logging cleanup
2368    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2369
23702005-11-25  jrandom
2371    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2372    * Cleaned up the syndie threaded display to show the last updated date for
2373      a subthread, and to highlight threads updated in the last two days.
2374
23752005-11-24  jrandom
2376    * Fix to save syndication settings in Syndie (thanks spaetz!)
2377
23782005-11-23  jrandom
2379    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2380    * Streamlined the tunnel batching to schedule batch transmissions more
2381      appropriately.
2382    * Default tunnel pool variance to 2 +0-1 hops
2383
23842005-11-21  jrandom
2385    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2386      within I2PTunnel.
2387    * Increase the maximum SSU retransmission timeout to accomodate slower or
2388      more congested links (though SSU's RTO calculation will usually use a
2389      much lower timeout)
2390    * Moved the streaming lib timed events off the main timer queues and onto
2391      a streaming lib specific set of timer queues.  Streaming lib timed
2392      events are more likely to have lock contention on the I2CP socket while
2393      other timed events in the router are (largely) independent.
2394    * Fixed a case sensitive lookup bug (thanks tino!)
2395    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2396      links (thanks tino!)
2397
23982005-11-19  jrandom
2399    * Implemented a trivial pure java PMTU backoff strategy, switching between
2400      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2401    * Fixed new user registration in Syndie (thanks Complication!)
2402
24032005-11-17  jrandom
2404    * More cautious file handling in Syndie
2405
24062005-11-16  jrandom
2407    * More aggressive I2PTunnel content encoding munging to work around some
2408      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2409      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2410      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2411      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2412      or X-Accept-encoding headers.  Eepsite operators who do not know to
2413      check for X-Accept-encoding will simply use the identity encoding.
2414
2415* 2005-11-15  0.6.1.5 released
2416
24172005-11-14  jrandom
2418    * Migrate to the new Syndie interface
2419
24202005-11-11  jrandom
2421    * Add filtering threads by author to Syndie, populated with authors in the
2422      user's addressbook
2423    * When creating the default user, add
2424      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2425      configured to automatically pull updates.  (what other archives should
2426      be included?)
2427    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2428      the installer/resources/themes/** into ./docs/themes/** on both install
2429      and update.
2430
24312005-11-11  cervantes
2432    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2433      being progressively rolled out to other sections at later dates.
2434      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2435      layout and styling.
2436    * Implemented console themes. Users can create their own themes by
2437      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2438      and activating it using the routerconsole.theme={themename} advanced
2439      config property. Look at the example incomplete "defCon1" theme.
2440      Note: This is very much a work in progress. Folks might want to hold-off
2441      creating their own skins until the markup has solidified.
2442    * Added "routerconsole.javascript.disabled=true" to disable console
2443      client-side scripting and "routerconsole.css.disabled=true" to remove
2444      css styling (only rolled out in the i2ptunnel interface currently)
2445    * Fixed long standing bug with i2ptunnel client and server edit screens
2446      where tunnel count and depth properties would fail to save. Added
2447      backup quantity and variance configuration options.
2448    * Added basic accessibility support (key shortcuts, linear markup, alt and
2449      title information and form labels).
2450    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2451
24522005-11-11  jrandom
2453    * Default Syndie to single user mode, and automatically log into a default
2454      user account (additional accounts can be logged into with the 'switch'
2455      or login pages, and new accounts can be created with the register page).
2456    * Disable the 'automated' column on the Syndie addressbook unless the user
2457      is appropriately authorized (good idea Polecat!)
2458
24592005-11-10  jrandom
2460    * First pass to a new threaded Syndie interface, which isn't enabled by
2461      default, as its not done yet.
2462
24632005-11-06  jrandom
2464    * Include SSU establishment failure in the peer profile as a commError,
2465      as we do for TCP establishment failures.
2466    * Don't throttle the initial transmission of a message because of ongoing
2467      retransmissions to a peer, since the initial transmission of a message
2468      is more valuable than a retransmission (since it has less latency).
2469    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2470
24712005-11-05  jrandom
2472    * Include the most recent ACKs with packets, rather than only sending an
2473      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2474      increasing sequence numbers, while each message ID in SSU is random, so
2475      we don't get the benefit of later ACKs implicitly ACKing earlier
2476      messages.
2477    * Reduced the max retransmission timeout for SSU
2478    * Don't try to send messages queued up for a long time waiting for
2479      establishment.
2480
24812005-11-05  dust
2482    * Fix sucker to delete its temporary files.
2483    * Improve sucker's sml output some.
2484    * Fix Exception in SMLParser for weird sml.
2485
24862005-11-03  zzz
2487    * Added a new error page to the eepproxy to differentiate the full 60
2488      second timeout from the immediate "I don't know this base64" failure.
2489
24902005-11-01  jrandom
2491    * Added a few more css elements (thanks identiguy!)
2492
24932005-10-31  jrandom
2494    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2495    * Removed a potentially infinitely recursive call (oops)
2496
24972005-10-30  dust
2498    * Merge sucker into syndie with a rssimport.jsp page.
2499    * Add getContentType() to EepGet.
2500    * Make chunked transfer work (better) with EepGet.
2501    * Do replaceAll("<","&lt;") for logs.
2502
2503* 2005-10-29  0.6.1.4 released
2504
25052005-10-29  jrandom
2506    * Improved the bandwidth throtting on tunnel participation, especially for
2507      low bandwidth peers.
2508    * Improved failure handling in SSU with proactive reestablishment of
2509      failing idle peers, and rather than shitlisting a peer who failed too
2510      much, drop the SSU session and allow a new attempt (which, if it fails,
2511      will cause a shitlisting)
2512    * Clarify the cause of the shitlist on the profiles page, and include
2513      bandwidth limiter info at the bottom of the peers page.
2514
25152005-10-26  jrandom
2516    * In Syndie, propogate the subject and tags in a reply, and show the parent
2517      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2518    * Streamline some netDb query handling to run outside the jobqueue -
2519      which means they'll run on the particular SSU thread that handles the
2520      message.  This should help out heavily loaded netDb peers.
2521
25222005-10-25  jrandom
2523    * Defer netDb searches for newly referenced peers until we actually want
2524      them
2525    * Ignore netDb references to peers on our shitlist
2526    * Set the timeout for end to end client messages to the max delay after
2527      finding the leaseSet, so we don't have as many expired messages floating
2528      around.
2529    * Add a floor to the streaming lib window size
2530    * When we need to send a streaming lib ACK, try to retransmit one of the
2531      unacked packets instead (with updated ACK/NACK fields, of course).  The
2532      bandwidth cost of an unnecessary retransmission should be minor as
2533      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2534      the probability of a necessary retransmission.
2535    * Adjust the streaming lib cwin algorithm to allow growth after a full
2536      cwin messages if the rtt is trending downwards.  If it is not, use the
2537      existing algorithm.
2538    * Increased the maximum rto size in the streaming lib.
2539    * Load balancing bugfix on end to end messages to distribute across
2540      tunnels more evenly.
2541
25422005-10-22  jrandom
2543    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2544      ./prngseed.rnd (if they exist), and reseeding it with data out of
2545      various crypto operations (unused bits in a DH exchange, intermediary
2546      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2547      The Fortuna implementation under gnu.crypto.prng has been modified to
2548      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2549      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2550      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2551      wrapper around it is, of course, public domain.
2552
25532005-10-20  dust
2554    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2555      always shared. (thx for info Ragnarok)
2556    * Fix crash in Sucker with some bad html.
2557
25582005-10-20  jrandom
2559    * Workaround a bug in GCJ's Calendar implementation
2560    * Propery throw an exception in the streaming lib if we try to write to a
2561      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2562      GregorK!)
2563
25642005-10-19  jrandom
2565    * Ported the snark bittorrent client to I2P such that it is compatible
2566      with i2p-bt and azneti2p.  For usage information, grab an update and run
2567      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2568      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2569    * Don't allow leaseSets expiring too far in the future (thanks postman)
2570
25712005-10-19  jrandom
2572    * Bugfix for the auto-update code to handle different usage patterns
2573    * Decreased the addressbook recheck frequency to once every 12 hours
2574      instead of hourly.
2575    * Handle dynamically changing the HMAC size (again, unless your nym is
2576      toad or jrandom, ignore this ;)
2577    * Cleaned up some synchronization/locking code
2578
25792005-10-17  dust
2580    * Exchange the remaining URL with EepGet in Sucker.
2581    * Allow /TOPIC irc command.
2582
25832005-10-17  jrandom
2584    * Allow an env prop to configure whether we want to use the backwards
2585      compatible (but not standards compliant) HMAC-MD5, or whether we want
2586      to use the not-backwards compatible (but standards compliant) one.  No
2587      one should touch this setting, unless your name is toad or jrandom ;)
2588    * Added some new dummy facades
2589    * Be more aggressive on loading up the router.config before building the
2590      router context
2591    * Added new hooks for apps to deal with previously undefined I2NP message
2592      types without having to modify any code.
2593    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2594
25952005-10-14  jrandom
2596    * More explicit filter for linux/PPC building (thanks anon!)
2597    * Fixed Syndie's Sucker to not explicitly reference something only found
2598      in sun's JVM (thanks cervantes!)
2599    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2600
2601* 2005-10-14  0.6.1.3 released
2602
26032005-10-14  jrandom
2604    * Added a key explaining peers.jsp a bit (thanks tethra!)
2605
26062005-10-13  dust
2607    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2608      then be injected into Syndie with the Syndie CLI.
2609    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2610      RSS/Atom parsing.
2611
26122005-10-13  jrandom
2613    * SSU retransmission choke bugfix (== != !=)
2614    * Include initial transmissions in the retransmission choke, so that
2615      if we are already retransmitting a message, we won't send anything
2616      to that peer other than that message (or ACKs, if necessary)
2617
26182005-10-12  jrandom
2619    * Choke SSU retransmissions to a peer while there is already a
2620      retransmission in flight to them.  This currently lets other initial
2621      transmissions through, since packet loss is often sporadic, but maybe
2622      this should block initial transmissions as well?
2623    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2624    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2625
26262005-10-11  jrandom
2627    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2628      compatible.
2629    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2630      just the blurb before the cut.
2631
26322005-10-11  jrandom
2633    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2634      yet piggybacked).  This is backwards compatible.
2635    * SML parser cleanup in Syndie
2636
26372005-10-10  dust
2638    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2639      outbound IRC commands for anonymity and security purposes, removing all
2640      CTCP messages except ACTION, as well as stripping the hostname from the
2641      USER message (while leaving the nick and 'full name').  The IRC proxy
2642      doesn't use this by default, but you can enable it by creating a new
2643      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2644      to "ircclient" in i2ptunnel.config.
2645
26462005-10-10  jrandom
2647    * I2PTunnel http client config cleanup and stats
2648    * Minor SSU congestion tweaks and stats
2649    * Reduced netDb exploration period
2650
26512005-10-09  jrandom
2652    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2653      java -jar lib/syndie.jar
2654    * Beginnings of the Syndie logging cleanup
2655    * Delete corrupt Syndie posts
2656
26572005-10-09  jrandom
2658    * Now that the streaming lib works reasonably, set the default inactivity
2659      event to send a 0 byte keepalive payload, rather than disconnecting the
2660      stream.  This should cut the irc netsplits and help out with other long
2661      lived streams.  The default timeout is now less than the old timeout as
2662      well, so the keepalive will be sent before earlier builds fire their
2663      fatal timeouts.
2664
26652005-10-08  jrandom
2666    * Use the OS clock for stat timing, since it doesn't jump around (though
2667      still use the NTP'ed clock for display)
2668    * Added new DH stats
2669
2670* 2005-10-07  0.6.1.2 released
2671
26722005-10-07  jrandom
2673    * Include the 1 second bandwidth usage on the console rather than the
2674      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2675      issues.
2676
26772005-10-07  jrandom
2678    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2679      HTTP response quicker, and initialize the streaming lib's cwin more
2680      carefully.
2681    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2682      as a user authorized to use the remote archive funtionality, you can
2683      request remote archives in your address book to be automatically pulled
2684      down by checking the "scheduled?" checkbox.
2685
26862005-10-05  jrandom
2687    * Allow the first few packets in the stream to fill in their IDs during
2688      handshake (thanks cervantes, Complication, et al!)  This should fix at
2689      least some of the intermittent HTTP POST issues.
2690
26912005-10-04  jrandom
2692    * Syndie patch for single user remote archives (thanks nickless_head!)
2693    * Handle an invalid netDb store (thanks Complication!)
2694
26952005-10-04  jrandom
2696    * Further reduction in unnecessary streaming packets.
2697
26982005-10-03  jrandom
2699    * Properly reject unroutable IP addresses *cough*
2700
27012005-10-03  rangarok
2702    * Changed default update delay to twelve hours, and enforced a minimum
2703      delay of one hour.
2704
27052005-10-03  ragnarok
2706    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2707      from selected syndie archives.  To try it out, add
2708      syndie.updateArchives=<comma seperated list of syndie archives> to your
2709      syndie.config.  Archives must be specified as the full url to archive.txt
2710      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2711      for new posts every hour.  This can be modified by setting
2712      syndie.updateDelay=<delay in hours> also in syndie.config.
2713
2714* 2005-10-01  0.6.1.1 released
2715
27162005-09-30  ragnarok
2717    * Implemented conditional get for syndie remote archive imports.
2718
27192005-09-30  jrandom
2720    * Killed three more streaming lib bugs, one of which caused excess packets
2721      to be transmitted (dupacking dupacks), one that was the root of many of
2722      the old hung streams (shrinking highest received), and another that was
2723      releasing data too soon.
2724
27252005-09-30  jrandom
2726    * Only allow autodetection of our IP address if we haven't received an
2727      inbound connection in the last two minutes.
2728    * Increase the default max streaming resends to 8 from 5 (and down from
2729      the earlier 10)
2730
27312005-09-29  ragnarok
2732    * Export petnames from syndie to the router's petname db instead of
2733      userhosts.txt.
2734
27352005-09-29  jrandom
2736    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2737      reseeding - useful on OSes that make it hard to create dot files. 
2738      Thanks Complication (and anon)!
2739    * Fixed the installer version string (thanks Frontier!)
2740    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2741      us invalid IP addresses, verify again that we are not sending invalid IP
2742      addresses, and log an error if it happens. (Thanks Complication, ptm,
2743      and adab!)
2744
2745* 2005-09-29  0.6.1 released
2746
27472005-09-29  jrandom
2748    * Let syndie users modify their metadata.
2749    * Reseed the router on startup if there aren't enough peer references
2750      known locally.  This can be disabled by creating the file .i2pnoreseed
2751      in your home directory, and the existing detection and reseed handling
2752      on the web interface is unchanged.
2753
27542005-09-28  jrandom
2755    * Fix for at least some (all?) of the wrong stream errors in the streaming
2756      lib
2757
27582005-09-27  jrandom
2759    * Properly suggest filenames for attachments in Syndie (thanks all!)
2760    * Fixed the Syndie authorization scheme for single user vs. multiuser
2761
27622005-09-27  jrandom
2763    * I2PTunnel bugfix (thanks Complication!)
2764    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2765      instead of k/cwin)
2766    * Limit the number of inbound SSU sessions being built at once (using
2767      half of the i2np.udp.maxConcurrentEstablish config prop)
2768    * Don't shitlist on a message send failure alone (unless there aren't any
2769      common transports).
2770    * More careful bandwidth bursting
2771
27722005-09-26  jrandom
2773    * Reworded the SSU introductions config section (thanks duck!)
2774    * Force identity content encoding for I2PTunnel httpserver requests
2775      (thanks redzara!)
2776    * Further x-i2p-gzip bugfixes for the end of streams
2777    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2778      I2P's performance at 3KBps is another issue)
2779    * Cleaned up some streaming lib structures
2780
27812005-09-25  jrandom
2782    * Allow reseeding on the console if the netDb knows less than 30 peers,
2783      rather than less than 10 (without internet connectivity, we keep the
2784      last 15 router references)
2785    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2786      more aggressively.
2787    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2788    * Reduced the default maximum number of streaming lib resends of a packet
2789      (10 retransmits is a bit much with a reasonable RTO)
2790
27912005-09-25  Complication
2792    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2793      conflict resolution page if the i2paddresshelper parameter differs from
2794      an existing name to destination mapping.
2795
27962005-09-25  jrandom
2797    * Fix a long standing streaming lib bug (in the inactivity detection code)
2798    * Improved handling of initial streaming lib packet retransmissions to
2799      kill the "lost first packet" bug (where a page shows up with the first
2800      few KB missing)
2801    * Add support for initial window sizes greater than 1 - useful for
2802      eepsites to transmit e.g. 4 packets full of data along with the initial
2803      ACK, thereby cutting down on the rtt latency.  The congestion window
2804      size can and does still shrink down to 1 packet though.
2805    * Adjusted the streaming lib retransmission calculation algorithm to be
2806      more TCP-like.
2807
28082005-09-21  redzara
2809    * Use ISO-8859-1 for the susidns xml
2810
28112005-09-21  susi
2812    * Bugfix in susidns for deleting entries
2813
28142005-09-21  jrandom
2815    * Add support for HTTP POST to EepGet
2816    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2817      put in that URL.
2818
28192005-09-18  jrandom
2820    * Added support for pure 64bit linux with jbigi and the java service
2821      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2822      et al for help testing!
2823    * UI cleanup in Syndie (thanks gloin and bar!)
2824
28252005-09-18  Ragnarok
2826    * Made MetaNamingService the default naming service.
2827
28282005-09-17  Ragnarok
2829    * Implemented a naming service using Syndie's petname db.  It's not enabled
2830      by default, but you can try it out by setting
2831      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2832      router.config.
2833    * Implemented a meta naming service that will first lookup names in the
2834      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2835      naming services are checked and in which order is specified by
2836      i2p.nameservicelist.  This will probably become the default naming service
2837      so please help test it out by setting
2838      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2839     
2840* 2005-09-17  0.6.0.6 released
2841
28422005-09-17  jrandom
2843    * Clean up syndie a bit more and bundle a default introductory post with
2844      both new installs and updates.
2845    * Typo fixes on the console (thanks bar!)
2846
28472005-09-17  jrandom
2848    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2849      steady state rate, plus a new limit on how fast we transfer when
2850      bursting.  This is different from the old "burst as fast as possible
2851      until we're out of tokens" policy, and should help those with congested
2852      networks.  See /config.jsp to manage this rate.
2853    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2854      old posts just didn't show up).
2855    * Log properly in EepPost
2856
28572005-09-17  jrandom
2858    * Added the natively compiled jbigi and patched java service wrapper for
2859      OS X.  Thanks Bill Dorsey for letting me use your machine!
2860    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2861      don't bundle the binutils necessary (and there'd be a naming conflict
2862      if we did).
2863    * Added 'single user' functionality to syndie - if the single user
2864      checkbox on the admin page is checked, all users are allowed to control
2865      the instance and sync up with remote syndie nodes.
2866    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2867      debugged.
2868
28692005-09-16  jrandom
2870    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
2871      you have i2np.udp.allowLocal=true defined - useful for private nets)
2872
28732005-09-16  jrandom
2874    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
2875      (just specify the spoofed host as an empty string), allowing them to
2876      honor x-i2p-gzip encoding.
2877    * Let windows users build the exes too (thanks bar and redzara!)
2878    * Allow I2PTunnel httpserver operators to disable gzip compression on
2879      individual tunnels with the i2ptunnel.gzip=false client option
2880      (good idea susi!)
2881
28822005-09-16  jrandom
2883    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
2884    * Added runplain.sh for *nix/osx users having problems using the java
2885      service wrapper (called from the install dir as: sh runplain.sh)
2886    * Bundle susidns and syndie, with links on the top nav
2887    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
2888      content-encoding (if offered), reducing the payload size before it
2889      reaches the streaming lib.  The existing compression is at the i2cp
2890      level, so we've been packetizing 4KB of uncompressed data and then
2891      compressing those messages, rather than compressing and then packetizing
2892      4KB of compressed data.  This should reduce the number of round trips
2893      to fetch web pages substantially.
2894    * Adjust the startup and timing of the addressbook so that susidns always
2895      has config to work off, and expose a method for susidns to tell it to
2896      reload its config and rerun.
2897
28982005-09-15  jrandom
2899    * Error handling for failed intro packets (thanks red.hand!)
2900    * More carefully verify intro addresses
2901
29022005-09-13  jrandom
2903    * More careful error handling with introductions (thanks dust!)
2904    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
2905    * Hide the shitlist on the summary so it doesn't confuse new users.
2906
29072005-09-12  comwiz
2908    * Migrated the router tests to junit
2909
29102005-09-12  jrandom
2911    * Removed guaranteed delivery mode entirely (so existing i2phex clients
2912      using it can get the benefits of mode=best_effort).  Guaranteed delivery
2913      is offered at the streaming lib level.
2914    * Improve the peer selection code for peer testing, as everyone now
2915      supports tests.
2916    * Give the watchdog its fangs - if it detects obscene job lag or if
2917      clients have been unable to get a leaseSet for more than 5 minutes,
2918      restart the router.  This was disabled a year ago due to spurious
2919      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
2920      cause of the spurious restarts should be gone.
2921
29222005-09-12  jrandom
2923    * Bugfix for skewed store which could kill a UDP thread (causing complete
2924      comm failure and eventual OOM)
2925
29262005-09-12  jrandom
2927    * More aggressively publish updated routerInfo.
2928    * Expose the flag to force SSU introductions on the router console
2929    * Don't give people the option to disable SNTP time sync, at least not
2930      through the router console, because there is no reason to disable it.
2931      No, not even if your OS is "ntp synced", because chances are, its not.
2932
29332005-09-10  jrandom
2934    * Test the router's reachability earlier and more aggressively
2935    * Use the low level bandwidth limiter's rates for the router console, and
2936      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
2937      the logger config, keep track of the 1 second transfer rates as the stat
2938      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
2939      behavior.
2940
29412005-09-09  jrandom
2942    * Added preliminary support for NAT hole punching through SSU introducers
2943    * Honor peer test results from peers that we have an SSU session with if
2944      those sessions are idle for 3 minutes or more.
2945
29462005-09-09  cervantes
2947    * New build due to change in build number :P (thanks ugha!)
2948
29492005-09-07  BarkerJr
2950    * HTML cleanup for the router console (thanks!)
2951
29522005-09-07  jrandom
2953    * Lay the foundation for 'client routers' - the ability for peers to opt
2954      out of participating in tunnels entirely due to firewall/NAT issues. 
2955      Individual routers have control over where those peers are used in
2956      tunnels - in outbound or inbound, exploratory or client tunnels, or
2957      none at all.  The defaults with this build are to simply act as before -
2958      placing everyone as potential participants in any tunnel.
2959    * Another part of the foundation includes the option for netDb
2960      participants to refuse to answer queries regarding peers who are marked
2961      as unreachable, though this too is disabled by default (meaning the
2962      routerInfo is retrievable from the netDb).
2963
29642005-09-05  jrandom
2965    * Expose the HTTP headers to EepGet status listeners
2966    * Handle DSA key failures properly (if the signature is not invertable, it
2967      is obviously invalid)
2968
29692005-09-04  jrandom
2970    * Don't persist peer profiles until we are shutting down, as the
2971      persistence process gobbles RAM and wall time.
2972    * Bugfix to allow you to check/uncheck the sharedClient setting on the
2973      I2PTunnel web interface (thanks BarkerJr!)
2974    * Be more careful when expiring a failed tunnel message fragment so we
2975      don't drop the data while attempting to read it.
2976
2977* 2005-09-02  0.6.0.5 released
2978
29792005-09-02  jrandom
2980    * Don't refuse to send a netDb store if the targetted peer has failed a
2981      bit (the value was an arbitrary amount).
2982    * Logging changes
2983
2984* 2005-09-01  0.6.0.4 released
2985
29862005-09-01  jrandom
2987    * Don't send out a netDb store of a router if it is more than a few hours
2988      old, even if someone asked us for it.
2989
29902005-08-31  jrandom
2991    * Don't publish leaseSets to the netDb if they will never be looked for -
2992      namely, if they are for destinations that only establish outbound
2993      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
2994      modified to tell the router that it doesn't need to publish their
2995      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
2996      to 'true').
2997    * Don't publish the top 10 peer rankings of each router in the netdb, as
2998      it isn't being watched right now.
2999
30002005-08-29  jrandom
3001    * Added the new test Floodfill netDb
3002
30032005-08-27  jrandom
3004    * Minor logging and optimization tweaks in the router and SDK
3005    * Use ISO-8859-1 in the XML files (thanks redzara!)
3006    * The consolePassword config property can now be used to bypass the router
3007      console's nonce checking, allowing CLI restarts
3008
30092005-08-24  jrandom
3010    * Catch errors with corrupt tunnel messages more gracefully (no need to
3011      kill the thread and cause an OOM...)
3012    * Don't skip shitlisted peers for netDb store messages, as they aren't
3013      necessarily shitlisted by other people (though they probably are).
3014    * Adjust the netDb store per-peer timeout based on each particular peer's
3015      profile (timeout = 4x their average netDb store response time)   
3016    * Don't republish leaseSets to *failed* peers - send them to peers who
3017      replied but just didn't know the value.
3018    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3019      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3020      sent entirely within the first streaming packet anyway, so this won't be
3021      a problem.
3022    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3023      prevent any clients from accessing the server if the handlers get
3024      blocked by the streaming lib or other issues.
3025    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3026      Unknown.
3027
30282005-08-23  jrandom
3029    * Removed the concept of "no bandwidth limit" - if none is specified, its
3030      16KBps in/out.
3031    * Include ack packets in the per-peer cwin throttle (they were part of the
3032      bandwidth limit though).
3033    * Tweak the SSU cwin operation to get more accurrate estimates under
3034      congestions.
3035    * SSU improvements to resend more efficiently.
3036    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3037
3038* 2005-08-21  0.6.0.3 released
3039
30402005-08-21  jrandom
3041    * If we already have an established SSU session with the Charlie helping
3042      test us, cancel the test with the status of "unknown".
3043
30442005-08-17  jrandom
3045    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3046      viability before agreeing to Alice's request.  This doesn't work with
3047      older SSU peer test builds, but is backwards compatible (older nodes
3048      won't ask newer nodes to participate in tests, and newer nodes won't
3049      ask older nodes to either).
3050
30512005-08-12  jrandom
3052    * Keep detailed stats on the peer testing, publishing the results in the
3053      netDb.
3054    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3055      status in a while.
3056    * Make sure to avoid shitlisted peers for peer testing.
3057    * When we get an unknown result to a peer test, try again soon afterwards.
3058    * When a peer tells us that our address is different from what we expect,
3059      if we've done a recent peer test with a result of OK, fire off a peer
3060      test to make sure our IP/port is still valid.  If our test is old or the
3061      result was not OK, accept their suggestion, but queue up a peer test for
3062      later.
3063    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3064      we monitor netDb store progress (to clear up the high netDb.storePeers
3065      stat)
3066
30672005-08-10  jrandom
3068    * Deployed the peer testing implementation to be run every few minutes on
3069      each router, as well as any time the user requests a test manually.  The
3070      tests do not reconfigure the ports at the moment, merely determine under
3071      what conditions the local router is reachable.  The status shown in the
3072      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3073      differently for different peers, "ERR-Reject" if the router cannot
3074      receive unsolicited packets or the peer helping test could not find a 
3075      collaborator, "Unknown" if the test has not been run or the test
3076      participants were unreachable, or "OK" if the router can receive
3077      unsolicited connections and those connections use the same IP and port.
3078
3079* 2005-08-08  0.6.0.2 released
3080
30812005-08-08  jrandom
3082    * Add a configurable throttle to the number of concurrent outbound SSU
3083      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3084      may help those with slow connections to get integrated at the start.
3085    * Further fixlets to the streaming lib
3086
30872005-08-07  Complication
3088    * Display the average clock skew for both SSU and TCP connections
3089
30902005-08-07  jrandom
3091    * Fixed the long standing streaming lib bug where we could lose the first
3092      packet on retransmission.
3093    * Avoid an NPE when a message expires on the SSU queue.
3094    * Adjust the streaming lib's window growth factor with an additional
3095      Vegas-esque congestion detection algorithm.
3096    * Removed an unnecessary SSU session drop
3097    * Reduced the MTU (until we get a working PMTU lib)
3098    * Deferr tunnel acceptance until we know how to reach the next hop,
3099      rejecting it if we can't find them in time.
3100    * If our netDb store of our leaseSet fails, give it a few seconds before
3101      republishing.
3102
3103* 2005-08-03  0.6.0.1 released
3104
31052005-08-03  jrandom
3106    * Backed out an inadvertant change to the netDb store redundancy factor.
3107    * Verify tunnel participant caching.
3108    * Logging cleanup
3109
31102005-08-01  duck
3111    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3112
31132005-08-01  duck
3114    * Fix an addressbook NPE when a new hostname from the master addressbook
3115      didn't exist in the router addressbook.
3116    * Fix an addressbook bug which caused subscriptions not to be parsed at
3117      all. (Oops!)
3118
31192005-07-31  jrandom
3120    * Adjust the netDb search and store per peer timeouts to match the average
3121      measured per peer success times, rather than huge fixed values.
3122    * Optimized and reverified the netDb peer selection / retrieval process
3123      within the kbuckets.
3124    * Drop TCP connections that don't have any useful activity in 10 minutes.
3125    * If i2np.udp.fixedPort=true, never change the externally published port,
3126      even if we are autodetecting the IP address.
3127
3128* 2005-07-27  0.6 released
3129
31302005-07-27  jrandom
3131    * Enabled SSU as the default top priority transport, adjusting the
3132      config.jsp page accordingly.
3133    * Add verification fields to the SSU and TCP connection negotiation (not
3134      compatible with previous builds)
3135    * Enable the backwards incompatible tunnel crypto change as documented in
3136      tunnel-alt.html (have each hop encrypt the received IV before using it,
3137      then encrypt it again before sending it on)
3138    * Disable the I2CP encryption, leaving in place the end to end garlic
3139      encryption (another backwards incompatible change)
3140    * Adjust the protocol versions on the TCP and SSU transports so that they
3141      won't talk to older routers.
3142    * Fix up the config stats handling again
3143    * Fix a rare off-by-one in the SSU fragmentation
3144    * Reduce some unnecessary netDb resending by inluding the peers queried
3145      successfully in the store redundancy count.
3146
31472005-07-22  jrandom
3148    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3149      I2PTunnelServer)
3150    * Minor memory churn reduction in I2CP
3151    * Small stats update
3152
31532005-07-21  jrandom
3154    * Fix in the SDK for a bug which would manifest itself as misrouted
3155      streaming packets when a destination has many concurrent streaming
3156      connections (thanks duck!)
3157    * No more "Graceful shutdown in -18140121441141s"
3158
31592005-07-20  jrandom
3160    * Allow the user to specify an external port # for SSU even if the external
3161      host isn't specified (thanks duck!)
3162
31632005-07-19  jrandom
3164    * Further preparation for removing I2CP crypto
3165    * Added some validation to the DH key agreement (thanks $anon)
3166    * Validate tunnel data message expirations (though not really a problem,
3167      since tunnels expire)
3168    * Minor PRNG threading cleanup
3169
31702005-07-15  cervantes
3171    * Added workaround for an odd win32 bug in the stats configuration console
3172      page which meant only the first checkbox selection was saved.
3173
31742005-07-15  Romster
3175    * Added per group selection toggles in the stats configuration console
3176      page.
3177
31782005-07-13  jrandom
3179    * Fixed a recently injected bug in the multitransport bidding which had
3180      allowed an essentially arbitrary choice of transports, rather than the
3181      properly ordered choice.
3182
31832005-07-13  jrandom
3184    * Fixed a long standing bug where we weren't properly comparing session
3185      tags but instead largely depending upon comparing their hashCode,
3186      causing intermittent decryption errors.
3187
31882005-07-12  jrandom
3189    * Add some data duplication to avoid a recently injected concurrency
3190      problem in the session tag manager (thanks redzara and romster).
3191
31922005-07-11  jrandom
3193    * Reduced the growth factor on the slow start and congestion avoidance for
3194      the streaming lib.
3195    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3196      handlers, rather than launching off new threads which then immediately
3197      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3198    * Don't persist session keys / session tags (not worth it, for now)
3199    * Added some detection and handling code for duplicate session tags being
3200      delivered (root cause still not addressed)
3201    * Make the PRNG's buffer size configurable (via the config property
3202      "i2p.prng.totalBufferSizeKB=4096")
3203    * Disable SSU flooding by default (duh)
3204    * Updates to the StreamSink apps for better throttling tests.
3205
32062005-07-05  jrandom
3207    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3208      buffer, rather than the underlying PRNG's (likely small) one, which in
3209      turn reduces the frequency of recalcing.
3210    * More tuning to reduce temporary allocation churn
3211
32122005-07-04  jrandom
3213    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3214      rather than the IV by itself, preventing an attack that would let
3215      colluding internal adversaries tag a message to determine that they are
3216      in the same tunnel.  Thanks dvorak for the catch!
3217    * Drop long inactive profiles on startup and shutdown
3218    * /configstats.jsp: web interface to pick what stats to log
3219    * Deliver more session tags to account for wider window sizes
3220    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3221    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3222    * UrlLauncher: adjust the browser selection order
3223    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3224    * StreamSinkClient: add support for sending an unlimited amount of data
3225    * Migrate the tests out of the default build jars
3226
32272005-06-22  Comwiz
3228    * Migrate the core tests to junit
3229
32302005-05-25  duck
3231    * Fixed PRNG bug (bugzilla #107)
3232
32332005-05-01  jrandom
3234    * Added a substantial optimization to the AES engine by caching the
3235      prepared session keys (duh).
3236
32372005-05-01  jrandom
3238    * Cleaned up the peers page a bit more.
3239
32402005-04-30  jrandom
3241    * Added a small new page to the web console (/peers.jsp) which contains
3242      the peer connection information.  This will be cleaned up a lot more
3243      before 0.6 is out, but its a start.
3244
32452005-04-30  jrandom
3246    * Reduced some SimpleTimer churn
3247
32482005-04-29  jrandom
3249    * Reduce the peer profile stat coallesce overhead by inlining it with the
3250      reorganize.
3251    * Limit each transport to at most one address (any transport that requires
3252      multiple entry points can include those alternatives in the address).
3253
32542005-04-28  jrandom
3255    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3256    * Add back the code to handle bids from multiple transports (though there
3257      is still only one transport enabled by default)
3258    * Adjust the router's queueing of outbound client messages when under
3259      heavy load by running the preparatory job in the client's I2CP handler
3260      thread, thereby blocking additional outbound messages when the router is
3261      hosed.
3262    * No need to validate or persist a netDb entry if we already have it
3263
32642005-04-25  smeghead
3265    * Added button to router console for manual update checks.
3266    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3267      every time the form was submitted even if it hadn't changed.
3268
32692005-04-24  jrandom
3270    * Added a pool of PRNGs using a different synchronization technique,
3271      hopefully sufficient to work around IBM's PRNG bugs until we get our
3272      own Fortuna.
3273    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3274      size bound the not-yet-ready messages to the peer, not the unacked
3275      message count (not sure yet whether this is worthwile).
3276    * Many additions to the messageHistory log.
3277    * Handle out of order tunnel fragment delivery (not an issue on the live
3278      net with TCP, but critical with UDP).
3279
3280* 2005-04-20  0.5.0.7 released
3281
32822005-04-20  jrandom
3283    * In the SDK, we don't actually need to block when we're sending a message
3284      as BestEffort (and these days, we're always sending BestEffort).
3285    * Pass out client messages in fewer (larger) steps.
3286    * Have the InNetMessagePool short circuit dispatch requests.
3287    * Have the message validator take into account expiration to cut down on
3288      false positives at high transfer rates.
3289    * Allow configuration of the probabalistic window size growth rate in the
3290      streaming lib's slow start and congestion avoidance phases, and default
3291      them to a more conservative value (2), rather than the previous value
3292      (1).
3293    * Reduce the ack delay in the streaming lib to 500ms
3294    * Honor choke requests in the streaming lib (only affects those getting
3295      insanely high transfer rates)
3296    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3297      I2PTunnel client page (thanks maestro^!)
3298
32992005-04-17  sirup
3300    * Added the possibility for i2ptunnel client and httpclient instances to
3301      have their own i2p session (and hence, destination and tunnels).  By
3302      default, tunnels are shared, but that can be changed on the web
3303      interface or with the sharedClient config option in i2ptunnel.config.
3304
33052005-04-17  jrandom
3306    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3307      this?  If not, I want to drop it (lots of tiny details with lots of
3308      duplicated semantics).
3309
33102005-04-17  zzz
3311    * Added new user-editable eepproxy error page templates.
3312
33132005-04-17  jrandom
3314    * Revamp the tunnel building throttles, fixing a situation where the
3315      rebuild may not recover, and defaulting it to unthrottled (users with
3316      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3317      advanced router config)
3318
33192005-04-16  jrandom
3320    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3321
33222005-04-12  jrandom
3323    * Make sure we don't get cached updates (thanks smeghead!)
3324    * Clear out the callback for the TestJob after it passes (only affects the
3325      job timing accounting)
3326
33272005-04-08  smeghead
3328    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3329
33302005-04-08  smeghead
3331    * Security improvements to TrustedUpdate: signing and verification of the
3332      version string along with the data payload for signed update files
3333      (consequently the positions of the DSA signature and version string fields
3334      have been swapped in the spec for the update file's header); router will
3335      no longer perform a trusted update if the signed update's version is lower
3336      than or equal to the currently running router's version.
3337    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3338    * Extended TrustedUpdate public API for use by third party applications.
3339
3340* 2005-04-06  0.5.0.6 released
3341
33422005-04-05  jrandom
3343    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3344      client or httpclient tunnel.
3345    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3346
33472005-04-05  jrandom
3348    * After a successfull netDb search for a leaseSet, republish it to all of
3349      the peers we have tried so far who did not give us the key (up to 10),
3350      rather than the old K closest (which may include peers who had given us
3351      the key)
3352    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3353      republish it every 5 minutes, republish it every 3.  In addition, always
3354      republish as soon as the leaseSet changes (duh^2).
3355    * Minor fix for oddball startup race (thanks travis_bickle!)
3356    * Minor AES update to allow in-place decryption.
3357
33582005-04-03  jrandom
3359    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3360      feeding the NewsFetcher)
3361
33622005-04-01  jrandom
3363    * Allow editing I2PTunnel server instances with five digit ports
3364      (thanks nickless_head!)
3365    * More NewsFetcher debugging for reported weirdness
3366
33672005-04-01  jrandom
3368    * Fix to check for missing news file (thanks smeghead!)
3369    * Added destination display CLI:
3370      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3371    * Added destination display to the web interface (thanks pnspns)
3372    * Installed CIA backdoor
3373
3374* 2005-03-29  0.5.0.5 released
3375
33762005-03-29  jrandom
3377    * Decreased the initial RTT estimate to 10s to allow more retries.
3378    * Increased the default netDb store replication factor from 2 to 6 to take
3379      into consideration tunnel failures.
3380    * Address some statistical anonymity attacks against the netDb that could
3381      be mounted by an active internal adversary by only answering lookups for
3382      leaseSets we received through an unsolicited store.
3383    * Don't throttle lookup responses (we throttle enough elsewhere)
3384    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3385      the file (thanks nickster!)
3386    * Updated the I2PTunnel HTML (thanks postman!)
3387    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3388      which, if matched against the router.config "i2ptunnel.passphrase" value,
3389      skips the nonce check.  If the config prop doesn't exist or is blank, no
3390      passphrase is accepted.
3391    * Implemented HMAC-SHA256.
3392    * Enable the tunnel batching with a 500ms delay by default
3393    * Dropped compatability with 0.5.0.3 and earlier releases
3394
33952005-03-26  jrandom
3396    * Added some error handling and fairly safe to cache data to the streaming
3397      lib (good call Tom!)
3398
33992005-03-25  jrandom
3400    * Fixed up building dependencies for the routerconsole on some more
3401      aggressive compilers (thanks polecat!)
3402
3403* 2005-03-24  0.5.0.4 released
3404
34052005-03-23  jrandom
3406    * Added more intelligent version checking in news.xml, in case we have a
3407      version newer than the one specified.
3408
34092005-03-23  jrandom
3410    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3411      cvsweb.cgi doesn't puke on us.
3412
34132005-03-23  Connelly
3414    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3415      stream send data to not be sent if STREAM CLOSE is issued too fast.
3416
34172005-03-23  jrandom
3418    * Implemented the news fetch / update policy code, as configurated on
3419      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3420      doesn't exist yet, on startup).  No action is taken however, though if
3421      the news.xml specifies that a new release is available, an option to
3422      update will be shown on the router console.
3423    * New initialNews.xml delivered with new installs, and moved news.xml out
3424      of the i2pwww module and into the i2p module so that we can bundle it
3425      within each update.
3426
34272005-03-23  jrandom
3428    * New /configupdate.jsp page for controlling the update / notification
3429      process, as well as various minor related updates.  Note that not all
3430      options are exposed yet, and the update detection code isn't in place
3431      in this commit - it currently says there is always an update available.
3432    * New EepGet component for reliable downloading, with a CLI exposed in
3433      java -cp lib/i2p.jar net.i2p.util.EepGet url
3434    * Added a default signing key to the TrustedUpdate component to be used
3435      for verifying updates.  This signing key can be authenticated via
3436      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3437    * New public domain SHA1 implementation for the DSA code so that we can
3438      handle signing streams of arbitrary size without excess memory usage
3439      (thanks P.Verdy!)
3440    * Added some helpers to the TrustedUpdate to work off streams and to offer
3441      a minimal CLI:
3442          TrustedUpdate keygen pubKeyFile privKeyFile
3443          TrustedUpdate sign origFile signedFile privKeyFile
3444          TrustedUpdate verify signedFile
3445
34462005-03-22  smeghead
3447    * New TrustedUpdate component for signing/verifying files with a DSA
3448      signature.
3449
34502005-03-21  jrandom
3451    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3452      in a single message properly (rather than release the buffer into the
3453      cache after processing the first one) (duh!)
3454    * Added the batching preprocessor which will bundle together multiple
3455      small messages inside a single tunnel message by delaying their delivery
3456      up to .5s, or whenever the pending data will fill a full message,
3457      whichever comes first.  This is disabled at the moment, since without the
3458      above bugfix widely deployed, lots and lots of messages would fail.
3459    * Within each tunnel pool, stick with a randomly selected peer for up to
3460      .5s before randomizing and selecting again, instead of randomizing the
3461      pool each time a tunnel is needed. 
3462
3463* 2005-03-18  0.5.0.3 released
3464
34652005-03-18  jrandom
3466    * Minor tweak to the timestamper to help reduce small skews
3467    * Adjust the stats published to include only the relevent ones
3468    * Only show the currently used speed calculation on the profile page
3469    * Allow the full max # resends to be sent, rather than piggybacking the
3470      RESET packet along side the final resend (duh)
3471    * Add irc.postman.i2p to the default list of IRC servers for new installs
3472    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3473      backwards compatability for users running 0.5.0.2.
3474
34752005-03-18  jrandom
3476    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3477    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3478
34792005-03-17  jrandom
3480    * Update the old speed calculator and associated profile data points to
3481      use a non-tiered moving average of the tunnel test time, avoiding the
3482      freshness issues of the old tiered speed stats.
3483    * Explicitly synchronize all of the methods on the PRNG, rather than just
3484      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3485      needs all of them synchronized).
3486    * Properly use the tunnel tests as part of the profile stats.
3487    * Don't flood the jobqueue with sequential persist profile tasks, but
3488      instead, inject a brief scheduling delay between them.
3489    * Reduce the TCP connection establishment timeout to 20s (which is still
3490      absurdly excessive)
3491    * Reduced the max resend delay to 30s so we can get some resends in when
3492      dealing with client apps that hang up early (e.g. wget)
3493    * Added more alternative socketManager factories (good call aum!)
3494
34952005-03-16  jrandom
3496    * Adjust the old speed calculator to include end to end RTT data in its
3497      estimates, and use that as the primary speed calculator again.
3498    * Use the mean of the high capacity speeds to determine the fast
3499      threshold, rather than the median.  Perhaps we should use the mean of
3500      all active non-failing peers?
3501    * Updated the profile page to sort by tier, then alphabetically.
3502    * Added some alternative socketManager factories (good call aum!)
3503
35042005-03-14  jrandom
3505    * New strict speed calculator that goes off the actual number of messages
3506      verifiably sent through the peer by way of tunnels.  Initially, this only
3507      contains the successful message count on inbound tunnels, but may be
3508      augmented later to include verified outbound messages, peers queried in
3509      the netDb, etc.  The speed calculation decays quickly, but should give
3510      a better differential than the previous stat (both values are shown on
3511      the /profiles.jsp page)
3512
35132005-03-11  jrandom
3514    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3515      minimum (increased on resends as before, of course).
3516    * Always prod the clock update listeners, even if just to tell them that
3517      the time hasn't changed much.
3518    * Added support for explicit peer selection for individual tunnel pools,
3519      which will be useful in debugging but not recommended for use by normal
3520      end users.
3521    * More aggressively search for the next hop's routerInfo on tunnel join.
3522    * Give messages received via inbound tunnels that are bound to remote
3523      locations sufficient time (taking into account clock skew).
3524    * Give alternate direct send messages sufficient time (10s min, not 5s)
3525    * Always give the end to end data message the explicit timeout (though the
3526      old default was sufficient before)
3527    * No need to give end to end messages an insane expiration (+2m), as we
3528      are already handling skew on the receiving side.
3529    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3530      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3531    * Properly keep the sendBps stat
3532    * When running the router with router.keepHistory=true, log more data to
3533      messageHistory.txt
3534    * Logging updates
3535    * Minor formatting updates
3536
35372005-03-08  jrandom
3538    * More aggressively adjust the clock
3539
35402005-03-07  jrandom
3541    * Fix the HTTP response header filter to allow multiple headers with the
3542      same name (thanks duck and spotteri!)
3543
3544* 2005-03-06  0.5.0.2 released
3545
35462005-03-06  jrandom
3547    * Allow the I2PTunnel web interface to select streaming lib options for
3548      individual client tunnels, rather than sharing them across all of them,
3549      as we do with the session options.  This way people can (and should) set
3550      the irc proxy to interactive and the eepproxy to bulk.
3551    * Added a startRouter.sh script to new installs which simply calls
3552      "sh i2prouter start".  This should make it clear how people should start
3553      I2P.
3554    * Properly expand the HTTP response header buffer (thanks shendaras!)
3555
35562005-03-04  jrandom
3557    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3558      so that broken (/malicious) webservers can't allow persistent
3559      connections.  All HTTP compliant browsers should now always close the
3560      socket.
3561    * Enabled the GZIPInputStream's cache (they weren't cached before)
3562    * Make sure our first send is always a SYN (duh)
3563    * Workaround for some buggy compilers
3564
35652005-03-03  jrandom
3566    * Loop while starting up the I2PTunnel instances, in case the I2CP
3567      listener isn't up yet (thanks detonate!)
3568    * Implement custom reusable GZIP streams to both reduce memory churn
3569      and prevent the exposure of data in the standard GZIP header (creation
3570      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3571      though has only been tested within the confines of I2P's compression use
3572      (DataHelper.[de]compress).
3573    * Preemptively support the next protocol version, so that after the 0.5.0.2
3574      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3575
35762005-03-02  jrandom
3577    * Fix one substantial OOM cause (session tag manager was only dropping
3578      tags once the critical limit was met, rather than honoring their
3579      expiration) (duh)
3580    * Lots of small memory fixes
3581    * Double the allowable concurrent outstanding tunnel build tasks (20)
3582
35832005-03-01  jrandom
3584    * Really disable the streaming lib packet caching
3585    * Synchronized a message handling point in the SDK (even though its use is
3586      already essentially single threaded, its better to play it safe)
3587    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3588      existing one (duh)
3589    * Throttle the number of concurrent pending tunnel builds across all
3590      pools, in addition to simply throttling the number of new requests per
3591      minute for each pool individually.  This should avoid the cascading
3592      failure when tunnel builds take too long, as no new builds will be
3593      created until the previous ones are handled.
3594    * Factored out and extended the DataHelper's unit tests for dealing with
3595      long and date formatting.
3596    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3597      alone doesn't address the bug where jetty asks for authentication too
3598      much.  (thanks orion!)
3599    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3600      them to the filesystem.
3601
36022005-02-27  jrandom
3603    * Don't rerequest leaseSets if there are already pending requests
3604    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3605      temporary disabled the streaming lib packet caching.
3606    * Reduced the resend RTT penalty to 10s
3607
36082005-02-26  jrandom
3609    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3610
36112005-02-26  jrandom
3612    * Further streaming lib caching improvements
3613    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3614      increase the RTT on resends.
3615    * Lower the default message size to 4KB from 16KB to further reduce the
3616      chance of failed fragmentation.
3617    * Extend tunnel rebuild throttling to include fallback rebuilds
3618    * If there are less than 20 routers known, don't drop the last 20 (to help
3619      avoid dropping all peers under catastrophic failures)
3620    * New stats for end to end messages - "client.leaseSetFoundLocally",
3621      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3622
36232005-02-24  jrandom
3624    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3625      overload under catastrophic failures (thanks Tracker and cervantes!)
3626    * Block the router startup process until we've initialized the clock
3627
36282005-02-24  jrandom
3629    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3630      data in the streaming lib.
3631    * Fixed a streaming lib bug where the connection initiator would fail the
3632      stream if the ACK to their SYN was lost.
3633
36342005-02-23  jrandom
3635    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3636      get stale tunnel pools, don't you think?
3637
3638* 2005-02-23  0.5.0.1 released
3639
36402005-02-22  jrandom
3641    * Reworked the tunnel (re)building process to remove the tokens and
3642      provide cleaner controls on the tunnels built.
3643    * Fixed situations where the timestamper wanted to test more servers than
3644      were provided (thanks Tracker!)
3645    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3646      (thanks Tracker!)
3647
36482005-02-22  jrandom
3649    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3650      try to automatically reconnect on accept()/connect(..)).
3651    * Loop check for expired lease republishing (just in case)
3652
36532005-02-22  jrandom
3654    * Adjusted (and fixed...) the timestamper change detection
3655    * Deal with a rare reordering bug at the beginning of a stream (so we
3656      don't drop it unnecessarily)
3657    * Cleaned up some dropped message handling in the router
3658    * Reduced job queue churn when dealing with a large number of tunnels by
3659      sharing an expiration job
3660    * Keep a separate list of the most recent CRIT messages (shown on the
3661      logs.jsp).  This way they don't get buried among any other messages.
3662    * For clarity, display the tunnel variance config as "Randomization" on
3663      the web console.
3664    * If lease republishing fails (boo! hiss!) try it again
3665    * Actually fix the negative jobLag in the right place (this time)
3666    * Allow reseeding when there are less than 10 known peer references
3667    * Lots of logging updates.
3668
36692005-02-20  jrandom
3670    * Allow the streaming lib resend frequency to drop down to 20s as the
3671      minimum, so that up to 2 retries can get sent on an http request.
3672    * Add further limits to failsafe tunnels.
3673    * Keep exploratory and client tunnel testing and building stats separate.
3674    * Only use the 60s period for throttling tunnel requests due to transient
3675      network overload.
3676    * Rebuild tunnels earlier (1-3m before expiration, by default)
3677    * Cache the next hop's routerInfo for participating tunnels so that the
3678      tunnel participation doesn't depend on the netDb.
3679    * Fixed a long standing bug in the streaming lib where we wouldn't always
3680      unchoke messages when the window size grows.
3681    * Make sure the window size never reaches 0 (duh)
3682
36832005-02-20  jrandom
3684    * Only build failsafe tunnels if we need them
3685    * Properly implement the selectNotFailingPeers so that we get a random
3686      selection of peers, rather than using the strictOrdering (thanks dm!)
3687    * Don't include too many "don't tell me about" peer references in the
3688      lookup message - only send the 10 peer references closest to the target.
3689
36902005-02-19  jrandom
3691    * Only build new extra tunnels on failure if we don't have enough
3692    * Fix a fencepost in the tunnel building so that e.g. a variance of
3693      2 means +/- 2, not +/- 1 (thanks dm!)
3694    * Avoid an NPE on client disconnect
3695    * Never select a shitlisted peer to participate in a tunnel
3696    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3697    * Keep session tags around for a little longer, just in case (grr)
3698    * Cleaned up some closing event issues on the streaming lib
3699    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3700      so that 0.4.* users will need to do a clean install, but we don't need
3701      to shove an additional 2MB in each update to those already on 0.5.
3702    * Imported the susimail css (oops, thanks susi!)
3703
3704* 2005-02-18  0.5 released
3705
37062005-02-17  jrandom
3707    * If the clock is adjusted during a job run, don't act as if the job took
3708      negative time.
3709
37102005-02-17  jrandom
3711    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3712
37132005-02-17  jrandom
3714    * Fixed the braindead tunnel testing logic
3715    * If a large number of tunnels are failing (within the last 5-10 minutes)
3716      and the current tunnel pool's configuration allows it, randomly build a
3717      zero hop tunnel to replace failed tunnels.
3718    * Enable postman's POP3 and SMTP tunnels by default
3719
37202005-02-16  jrandom
3721    * Added some error handling when the number of session tags exceeds the
3722      realistic capacity, dropping a random chunk of received tag sets and
3723      conducting some minor analysis of the remaining ones.  This is a part
3724      of a pretty serious error condition, and logs as CRIT (if/when people
3725      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3726      puts in the wrapper.log or /logs.jsp)
3727    * Update the addressbook to only write to the published hosts location
3728      if the addressbook's config contains "should_publish=true" (by default,
3729      it contains "should_publish=false")
3730
37312005-02-16  jrandom
3732    * (Merged the 0.5-pre branch back into CVS HEAD)
3733    * Replaced the old tunnel routing crypto with the one specified in
3734      router/doc/tunnel-alt.html, including updates to the web console to view
3735      and tweak it. 
3736    * Provide the means for routers to reject tunnel requests with a wider
3737      range of responses:
3738        probabalistic rejection, due to approaching overload
3739        transient rejection, due to temporary overload
3740        bandwidth rejection, due to persistent bandwidth overload
3741        critical rejection, due to general router fault (or imminent shutdown)
3742      The different responses are factored into the profiles accordingly.
3743    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3744      with a series of new properties, relevent to the new tunnel routing code:
3745        inbound.nickname (used on the console)
3746        inbound.quantity (# of tunnels to use in any leaseSets)
3747        inbound.backupQuantity (# of tunnels to keep in the ready)
3748        inbound.length (# of remote peers in the tunnel)
3749        inbound.lengthVariance (if > 0, permute the length by adding a random #
3750                                up to the variance.  if < 0, permute the length
3751                                by adding or subtracting a random # up to the
3752                                variance)
3753        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3754                    in that client's pool)
3755      There are other options, and more will be added later, but the above are
3756      the most relevent ones.
3757    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3758    * Compress all profile data on disk.
3759    * Adjust the reseeding functionality to work even when the JVM's http proxy
3760      is set.
3761    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3762      max window size.
3763    * Reduced the default streaming lib max message size to 16KB (though still
3764      configurable by the user), also doubling the default maximum window
3765      size.
3766    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3767    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3768      the first byte of the SHA256.
3769    * Added a new "netId" flag to let routers drop references to other routers
3770      who we won't be able to talk to.
3771    * Extended the timestamper to get a second (or third) opinion whenever it
3772      wants to actually adjust the clock offset.
3773    * Replaced that kludge of a timestamp I2NP message with a full blown
3774      DateMessage.
3775    * Substantial memory optimizations within the router and the SDK to reduce
3776      GC churn.  Client apps and the streaming libs have not been tuned,
3777      however.
3778    * More bugfixes than you can shake a stick at.
3779
37802005-02-13  jrandom
3781    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3782      only contains 32bit versions, so build your own, placing libjbigi.so in
3783      your install dir if necessary.  (thanks mule!)
3784    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3785      (thanks spaetz!)
3786
37872005-02-10  smeghead
3788    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3789      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3790      Pants are still non-functional at this time so don't mess with it yet
3791      unless you want to potentially mangle your working copy of CVS.
3792
37932005-02-09  duck
3794    * Allow an unneeded newline in the SAM client connection without
3795      disconnecting.
3796
37972005-02-07  jrandom
3798    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3799
38002005-02-06  Sugadude
3801    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3802
38032005-02-03  smeghead
3804    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3805      library from GNU Crypto's CVS HEAD sources.
3806
38072005-01-26  smeghead
3808    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3809      packages and installed to $i2pinstalldir/scripts.
3810    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3811      using gij + libgcj, and --sourcedir to run them from the source tree
3812      instead of the installation directory.
3813    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3814      causing gcj to toss a compilation warning (jrandom++).
3815
38162005-01-26  smeghead
3817    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3818      tests and benchmarks.
3819    * Routerconsole now builds under gcj 3.4.3.
3820    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3821
38222005-01-25  smeghead
3823    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3824      supporting apps (except for the routerconsole which is still being
3825      investigated).
3826
38272005-01-24  smeghead
3828    * C#-ification of sam-sharp: interface greatly simplified using delegates
3829      and events; SamBaseEventHandler provides basic implementation and helper
3830      methods but is now optional.
3831    * NAnt buildfile and README added for sam-sharp.
3832
38332005-01-23  smeghead
3834    * Port the java SAM client library to mono/C# and released into the
3835      public domain.  The 0.1 version of this port is available in CVS as
3836      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3837      library has been removed.
3838
38392005-01-21  Jhor
3840    * Updated jbigi build scripts for OSX.
3841
38422005-01-21  jrandom
3843    * Added support for OSX to the NativeBigInteger code so that it will look
3844      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3845      is not bundled with the shipped jbigi.jar yet though.
3846
38472005-01-18  jrandom
3848    * Increased the max # session tags maintained and decreased slightly the
3849      period over which they are gathered.
3850
38512005-01-17  jrandom
3852    * Added meaningful support for adjusting the preferred message size in the
3853      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3854      whatever).  The other side will mimic a reduction (but never an increase).
3855    * Always make sure to use distinct ConnectionOption objects for each
3856      connection (duh)
3857    * Reduced the default ACK delay to 500ms on in the streaming lib
3858    * Only shrink the streaming window once per window
3859    * Don't bundle a new jetty.xml with updates
3860    * Catch another local routerInfo corruption issue on startup.
3861
38622005-01-15  cervantes
3863    * Added support to the eepproxy for URLs such as
3864      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3865      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3866
38672005-01-15  jrandom
3868    * Caught a series of (previously unhandled) errors caused by requeueing
3869      messages that had timed out on the TCP transport (thanks mae^!)
3870    * Reduce the barrier to dropping session tags on streaming lib resends -
3871      every fourth send should drop the tags, forcing ElGamal encryption.  This
3872      will help speed up the recovery after a disconnect, rather than the drop
3873      every fifth send.
3874
3875* 2005-01-06  0.4.2.6 released
3876
38772005-01-06  jrandom
3878    * Added a startup message to the addressbook, printing its version number
3879      to stdout (which is sent to wrapper.config) when it loads.
3880    * Updated the addressbook to reread the config file periodically
3881    * Added orion.i2p to the list of eepsites on the default homepage
3882
38832005-01-05  jrandom
3884    * Handle unexpected network read errors more carefully (thanks parg!)
3885    * Added more methods to partially compare (DataHelper) and display
3886      arrays (Base64.encode).
3887    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
3888    * Be more generous on the throttle when just starting up the router
3889    * Fix a missing scheduled event in the streaming lib (caused after reset)
3890    * Add a new DisconnectListener on the I2PSocketManager to allow
3891      notification of session destruction.
3892    * Make sure our own router identity is valid, and if it isn't, build a new
3893      one and restart the router.  Alternately, you can run the Router with
3894      the single command line argument "rebuild" and it will do the same.
3895
38962004-12-31  ragnarok
3897    * Integrated latest addressbook changes (2.0.3) which include support for
3898      deploying as a .war file with no existing addressbook configuration.
3899    * Updated main build process to bundle the addressbook.war in the
3900      i2pinstall.jar and i2pupdate.zip.
3901
39022004-12-31  jrandom
3903    * Speling fxi (thanks digum!)
3904    * Bugfix for the I2PTunnel web interface so that it now properly launches
3905      newly added tunnels that are defined to be run on startup (thanks ugha!)
3906
39072004-12-30  jrandom
3908    * Revised the I2PTunnel client and httpclient connection establishment
3909      throttles.  There is now a pool of threads that build the I2PSocket
3910      connections with a default size of 5, configurable via the I2PTunnel
3911      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
3912      not throttle the number of concurrent builders, but will launch a thread
3913      per socket during establishment).  In addition, sockets accepted but
3914      not yet allocated to one of the connection builders will be destroyed
3915      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
3916      0, it will wait indefinitely).
3917
39182004-12-29  jrandom
3919    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
3920      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
3921    * Don't treat connection inactivity closure as a connection error.
3922
39232004-12-29  jrandom
3924    * Add in a new keepalive event on each TCP connection, proactively sending
3925      a (tiny) time message every minute or two, as well as killing the
3926      connection if no message has been fully sent within 5 minutes or so. 
3927      This should help deal with hung connections from IP address changes.
3928
39292004-12-28  jrandom
3930    * Cleaned up the resending and choking algorithm in the streaming lib.
3931    * Removed the read timeout override for I2PTunnel's httpclient, allowing
3932      it to use the default for the streaming lib.
3933    * Revised ack triggers in the streaming lib.
3934    * Logging.
3935
3936* 2004-12-21  0.4.2.5 released
3937
39382004-12-21  jrandom
3939    * Track a new stat for expired client leases (client.leaseSetExpired).
3940
39412004-12-21  jrandom
3942    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
3943      and added windows info to the headless docs. (thanks ardvark!)
3944    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
3945      a stream (thanks frosk!)
3946    * Add a pair of new stats for monitoring tunnel participation -
3947      tunnel.participatingBytesProcessed (total # bytes transferred) and
3948      tunnel.participatingBytesProcessedActive (total # bytes transferred for
3949      tunnels whose byte count exceed the 10m average).  This should help
3950      further monitor congestion issues.
3951    * Made the NamingService factory property public (thanks susi!)
3952
39532004-12-20  jrandom
3954    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
3955    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
3956      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
3957      reasoning is gone.
3958
39592004-12-19  jrandom
3960    * Fix for a race on startup wrt the new stats (thanks susi!)
3961
39622004-12-19  jrandom
3963    * Added three new stats - router.activePeers, router.fastPeers, and
3964      router.highCapacityPeers, updated every minute
3965
39662004-12-19  jrandom
3967    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
3968      hostname should be sent to the webserver.  By default, new installs will
3969      have an httpserver pointing at their jetty instance with the spoofed
3970      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
3971
39722004-12-19  scintilla
3973    * Convert native jcpuid code from C++ to C. This should alleviate build
3974      problems experienced by some users.
3975
3976* 2004-12-18  0.4.2.4 released
3977
39782004-12-16  jrandom
3979    * Catch another oddball case for a reset connection in the streaming lib.
3980    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
3981      dumps the current state of that peer's profile.  Instead of the full
3982      base64, you can pass in however many characters you have and it will
3983      return the first match found.
3984
39852004-12-16  jrandom
3986    * Remove the randomized factor in the tunnel rejection by bandwidth -
3987      we now accept the request if we've allocated less than our limit
3988      and reject it if we've allocated more.
3989    * Stick to the standard capacity scale on tunnel rejection, even for
3990      the 10m period.
3991    * Build the time message at the very last possible moment
3992
39932004-12-15  jrandom
3994    * Handle hard disconnects more gracefully within the streaming lib, and
3995      log unmonitored events more aggressively.
3996    * If we drop a peer after connection due to clock skew, log it to the
3997      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
3998      the stat 'tcp.disconnectAfterSkew'.
3999    * Fixed the formatting in the skew display
4000    * Added an ERROR message that is fired once after we run out of
4001      routerInfo files (thanks susi!)
4002    * Set the connect timeout equal to the streaming lib's disconnect timeout
4003      if not already specified (the I2PTunnel httpclient already enforces a
4004      60s connect timeout)
4005    * Fix for another connection startup problem in the streaming lib.
4006    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4007    * Adjust the capacity calculations so that tunnel failures alone in the
4008      last 10m will not trigger a 0 capacity rank.
4009
40102004-12-14  jrandom
4011    * Periodically send a message along all I2NP connections with the router's
4012      current time, allowing the receiving peer to determine that the clock
4013      has skewed too much, and hence, disconnect.  For backwards compatability
4014      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4015      next time we have a backwards compatability break, we can put in a proper
4016      message setup for it.
4017
40182004-12-14  jrandom
4019    * Reenable the probabalistic drop on the TCP queues to deal with good old
4020      fashioned bandwidth limiting.  However, by default the probability is
4021      rigged to reserve 0% of the queue free - meaning we just aggressively
4022      fail messages in the queue if we're transferring too slowly.  That
4023      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4024      (or whatever) and the drop code can be disabled with the parameter
4025      'tcp.dropProbabalistically=false'.
4026    * Still penalize a peer on tunnel failure, but don't immediately drop
4027      their capacity to 0.
4028    * More aggressively ACK duplicates
4029    * Randomize the timestamper period
4030    * Display the clock skew on the connection logs when a peer sends it.
4031    * Allow the timestamper to fix skews of up to 10 minutes
4032    * Logging
4033
40342004-12-13  jrandom
4035    * Added some error checking on the new client send job (thanks duck!)
4036    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4037      proportional to the bytes allocated in existing tunnels vs the bytes
4038      allowed through the bandwidth limiter).
4039    * Enable a new configuration parameter for triggering a tunnel rebuild
4040      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4041      before killing the tunnel (default 0).
4042    * Gather more data that we rank capacity by (now we monitor and balance the
4043      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4044    * Fix a truncation/type conversion problem on the long term capacity
4045      values (we were ignoring the daily stats outright)
4046
40472004-12-11  jrandom
4048    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4049      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4050      on .connect, but is unable to transfer any data in any direction.  We now
4051      detect that condition for the I2PTunnelHTTPClient and throw up the right
4052      error page.
4053    * Logging
4054
40552004-12-11  jrandom
4056    * Use a simpler and less memory intensive job for processing outbound
4057      client messages when the session is in mode=bestEffort.  We can
4058      immediately discard the data as soon as its sent the first time,
4059      rather than wait for an ack, since we will never internally resend.
4060    * Reduce some synchronization to avoid a rare deadlock
4061    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4062      case it within the tunnel controller.
4063    * Script cleanup for building jbigi/jcpuid
4064    * Logging
4065
4066* 2004-12-08  0.4.2.3 released
4067
40682004-12-08  jrandom
4069    * Revised the buffering when reading from the SAM client and writing
4070      to the stream.  Also added a thread (sigh) so we don't block the
4071      SAM client from giving us more messages for abnormally long periods
4072      of time.
4073    * Display the router version in the logs on startup (oft requested)
4074    * Fix a race during the closing of a messageOutputStream
4075
40762004-12-06  jrandom
4077    * Don't do a 'passive flush' while there are already outbound messages
4078      unacked.
4079    * Show the reseed link if up to 10 peers profiles are active (thanks
4080      dburton!)
4081
40822004-12-06  jrandom
4083    * Don't propogate streaming connection failures out to the SAM bridge as
4084      fatal errors.
4085    * Dont barf on repeated I2CP closure.
4086
40872004-12-05  jrandom
4088    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4089      getLocalhost call
4090
40912004-12-05  jrandom
4092    * Default the I2CP listener to localhost only, unless overridden by
4093      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4094    * More SAM fixes for things recently broken (whee)
4095
40962004-12-05  jrandom
4097    * Fix the recently broken SAM bridge (duh)
4098    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4099      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4100      StreamSink and StreamSend apps for transferring files.
4101    * Make the passive flush timer fire more frequently.
4102
41032004-12-05  jrandom
4104    * Fixed some links in the console (thanks ugha!) and the javadoc
4105      (thanks dinoman!)
4106    * Fix the stream's passive flush timer (oh, its supposed to work?)
4107
41082004-12-03  jrandom
4109    * Toss in a small pool of threads (3) to execute the events queued up with
4110      the SimpleTimer, as we do currently see the occational event
4111      notification spiking up to a second or so.
4112    * Implement a SAM client API in java, useful for event based streaming (or
4113      for testing the SAM bridge)
4114    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4115      bridge is being run outside of the router).
4116    * Include the SAM test code in the sam.jar
4117    * Remove an irrelevent warning message from SAM, which was caused by
4118      perfectly normal operation due to a session being closed.
4119    * Removed some unnecessary synchronization in the streaming lib's
4120      PacketQueue
4121    * More quickly clean up the memory used by the streaming lib by
4122      immediately killing each packet's resend job as soon as it is ACKed (or
4123      cancelled), so that there are no longer any valid pointers to the
4124      (potentially 32KB) packet.
4125    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4126    * Drop packets that would expand our inbound window beyond our maximum
4127      buffer size (default 32 messages)
4128    * Always read the ACK/NACK data from the verified packets received, even
4129      if we are going to drop them
4130    * Always adjust the window when there are messages ACKed, though do not
4131      change its size except as before.
4132    * Streamlined some synchronization in the router's I2CP handling
4133    * Streamlined some memory allocation in the SAM bridge
4134    * Default the streaming lib to disconnect on inactivity, rather than send
4135      an empty message.
4136
41372004-12-01  jrandom
4138    * Fix for a race in the streaming lib as caused by some odd SAM activity
4139
4140* 2004-12-01  0.4.2.2 released
4141
41422004-12-01  jrandom
4143    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4144      connections to work (thanks duck!)
4145    * Make sure we override the inactivity timeout too
4146
4147* 2004-12-01  0.4.2.1 released
4148
41492004-12-01  jrandom
4150    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4151      include the forged User-agent header.
4152    * Adjust the default read timeout on the eepproxy to 60s, unless
4153      overridden.
4154    * Minor tweak on stream shutdown.
4155
41562004-11-30  jrandom
4157    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4158    * Build in a simple timeout to flush data queued into the I2PSocket but
4159      not yet flushed.
4160    * Don't explicitly flush after each SAM stream write, but leave it up to
4161      the [nonblocking] passive flush.
4162    * Don't whine about 10-99 connection events occurring in a second
4163    * Don't wait for completion of packets that will not be ACKed (duh)
4164    * Adjust the congestion window, even if the packet was resent (duh)
4165    * Make sure to wake up any blocking read()'s when the MessageInputStream
4166      is close()ed (duh)
4167    * Never wait more than the disconnect timeout for a write to complete
4168
41692004-11-29  jrandom
4170    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4171
41722004-11-29  jrandom
4173    * Reduced contention for local client delivery
4174    * Drop the new code that munges the wrapper.config.  Instead, updates that
4175      need to change it will include their own wrapper.config in the
4176      i2pupdate.zip, overwriting the existing file.  If the file
4177      "wrapper.config.updated" is included, it is deleted at first opportunity
4178      and the router shut down, displaying a notice that the router must be
4179      started again cleanly to allow the changes to the wrapper.config to take
4180      effect.
4181    * Properly stop accept()ing I2PSocket connections if we close down the
4182      session (duh).
4183    * Make sure we cancel any outstanding Packets in flight when a connection
4184      is terminated (thanks susi!)
4185    * Split up the I2PTunnel closing a little further.
4186
41872004-11-28  jrandom
4188    * Accept IP address detection changes with a 2-out-of-3 minimum.
4189    * As long as the router is up, keep retrying to bind the I2CP listener.
4190    * Decrease the java service wrapper ping frequency to once every 10
4191      minutes, rather than once every 5 seconds.
4192
41932004-11-27  jrandom
4194    * Some cleanup and bugfixes for the IP address detection code where we
4195      only consider connections that have actually sent and received messages
4196      recently as active, rather than the mere presence of a TCP socket as
4197      activity.
4198
41992004-11-27  jrandom
4200    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4201      lib can do that (without an additional per-connection thread).
4202    * Close the I2PTunnel forwarder threads more aggressively
4203
42042004-11-27  jrandom
4205    * Fix for a fast loop caused by a race in the new streaming library (thanks
4206      DrWoo, frontier, pwk_, and thetower!)
4207    * Minor updates to the SimpleTimer and Connection to help track down a
4208      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4209      many events/tasks fire in a second)
4210    * Minor fixes for races on client disconnects (causing NPEs)
4211
4212* 2004-11-26  0.4.2 released
4213
42142004-11-26  jrandom
4215    * Enable the new streaming lib as the default.  That means, for any
4216      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4217
42182004-11-25  jrandom
4219    * Revised the installer to include start menu and desktop shortcuts for
4220      windows platforms, including pretty icons (thanks DrWoo!)
4221    * Allow clients specified in clients.config to have an explicit startup
4222      delay.
4223    * Update the default install to launch a browser pointing at the console
4224      whenever I2P starts up, rather than only the first time it starts up
4225      (configurable on /configservice.jsp, or in clients.config)
4226    * Bugfix to the clock skew checking code to monitor the delta between
4227      offsets, not the offset itself (duh)
4228    * Router console html update
4229    * New (and uuuuugly) code to verify that the wrapper.config contains
4230      the necessary classpath entries on update.  If it has to update the
4231      wrapper.config, it will stop the JVM and service completely, since the
4232      java service wrapper doesn't reread the wrapper.config on JVM restart -
4233      requiring the user to manually restart the service after an update.
4234    * Increase the TCP connection timeout to 30s (which is obscenely long)
4235
42362004-11-22  jrandom
4237    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4238    * New stat to keep track of slow jobs (ones that take more than a second
4239      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4240
42412004-11-21  jrandom
4242    * Update the I2PTunnel web interface to include an option for the new
4243      streaming lib (which is ignored until the 0.4.2 release).
4244    * Revised the I2PTunnel web interface to keep the I2CP options of client
4245      and httpclient tunnels in sync, as they all share the same I2CP session.
4246
42472004-11-21  jrandom
4248    * Only allow small clock skews after the first 10 minutes of operation
4249      (to prevent later network lag bouncing us way off course - yes, we
4250      really need an NTP impl to balance out the network burps...)
4251    * Revamp the I2PTunnel web interface startup process so that everything
4252      is shown immediately, so that different pieces hanging don't hang
4253      the rest, and other minor bugfixes.
4254    * Take note of SAM startup error (in case you're already running a SAM
4255      bridge...)
4256    * Increase the bandwidth limiter burst values available to 10-60s (or
4257      whatever is placed in /configadvanced.jsp, of course)
4258
42592004-11-21  jrandom
4260    * Allow end of line comments in the hosts.txt and other config files,
4261      using '#' to begin the comments (thanks susi!)
4262    * Add support to I2PTunnel's 'client' feature for picking between multiple
4263      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4264    * Add a quick link on the left hand nav to reseed if there aren't enough
4265      known peers, as well as link to the config page if there are no active
4266      peers.  Revised config page accordingly.
4267
42682004-11-21  jrandom
4269    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4270      rather that every 15 minutes, and increase the warning period in which
4271      we refresh tags from 30s to 2 minutes.
4272    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4273      to close the I2PSocket (leaving it to timeout).
4274
42752004-11-19  jrandom
4276    * Off-by-one fix to the tunnel pool management code, along side some
4277      explicit initialization.  This can affect clients whose lengths are
4278      shorter than the router's default (thanks duck!)
4279
42802004-11-17  jrandom
4281    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4282      Ragnarok!)
4283
42842004-11-17  jrandom
4285    * Minor logging update.
4286
42872004-11-16  jrandom
4288    * Clean up the propogation of i2psocket options so that various streaming
4289      libs can honor them more precisely
4290
42912004-11-16  jrandom
4292    * Minor logging update
4293
42942004-11-14  jrandom
4295    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4296    * Fix a leak injected into the SimpleTimer
4297    * Fix a race condition in the tunnel message handling
4298
42992004-11-13  jrandom
4300    * Added throttles on how many I2PTunnel client connections we open at once
4301    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4302      the streaming library used should take care of any buffering.
4303    * Added a cache for some objects used in I2PTunnel, especially useful when
4304      there are many short lived connections.
4305    * Trimmed the SimpleTimer's processing a bit
4306
43072004-11-10  jrandom
4308    * Allow loading the (mini)streaming connection options from the
4309      environment.
4310    * More defensive programming in the DSA implementation.
4311
43122004-11-08  jrandom
4313    * Remove spurious flush calls from I2PTunnel, and work with the
4314      I2PSocket's output stream directly (as the various implementations
4315      do their own buffering).
4316    * Another pass at a long standing JobQueue bug - dramatically simplify
4317      the job management synchronization since we dont need to deal with
4318      high contention (unlike last year when we had dozens of queue runners
4319      going at once).
4320    * Logging
4321
43222004-11-08  jrandom
4323    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4324
4325* 2004-11-06  0.4.1.4 released
4326
43272004-11-06  jrandom
4328    * Expose a drop down on the /configclients.jsp to enter the outbound
4329      tunnel depth.
4330    * Improved *hosts.txt loading
4331    * Explicitly override the JVM's timezone settings to use GMT so that
4332      any client applications which use timezones won't leak sensitive
4333      data (thanks gott!)
4334    * Bundle sam.jar in the update (thanks duck!)
4335
43362004-11-06  jrandom
4337    * Fix for a long standing synchronization bug in the SDK that in rare
4338      instances can add a few seconds of lag.
4339
43402004-11-05  jrandom
4341    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4342      parameters, verify proper operation after multiple session lifetimes,
4343      as well as some synchronization problems.
4344    * New properties method on the DataHelper class.
4345    * Address a race on fast disconnecting clients
4346
43472004-11-02  jrandom
4348    * Fix for a long standing synchronization bug in the JobQueue (and added
4349      some kooky flags to make sure it stays dead)
4350    * Update the ministreaming lib to force mode=guaranteed if the default
4351      lib is used, and mode=best_effort for all other libs.
4352
43532004-11-02  jrandom
4354    * Fixed up the configuration overrides for the streaming socket lib
4355      integration so that it properly honors env settings.
4356    * More memory usage streamlining (last major revamp for now, i promise)
4357
43582004-11-01  jrandom
4359    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4360    * Honor message expirations for some tunnel jobs that were prematurely
4361      expired.
4362    * Streamline memory usage with temporary object caches and more efficient
4363      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4364      message handling.
4365    * Fix some situations where we forward messages too eagerly.  For a
4366      request at the tunnel endpoint, if the tunnel is inbound and the target
4367      is remote, honor the message by tunnel routing the data rather than
4368      sending it directly to the requested location.
4369
43702004-10-30  jrandom
4371    * Cache the temporary objects used in the AES encryption/decryption
4372      process so that AES doesn't require any memory allocation to process
4373      data.
4374    * Dramatically reduce memory usage within various crypto implementations
4375      by avoiding unnecessary (though simplifying) buffers.
4376    * If we specify some tags to be sent in an I2CP message explicitly, use
4377      only those, not those plus a new set (otherwise we aren't sure on ACK
4378      which set was delivered)
4379    * Allow configuration for the partial send timeout (how long before
4380      resending a message down a different tunnel in a lease).  This can be
4381      updated with the "router.clientPartialSendTimeout" router config prop.
4382    * Logging
4383
43842004-10-29  jrandom
4385    * Strip the Referer, Via, and From headers completely, rather than
4386      inserting a bogus value ("i2p").  This should help with the use of
4387      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4388
43892004-10-27  jrandom
4390    * Fix a strange race condition on i2cp client disconnect.
4391    * win98 startup fixes (thanks tester-1 and ardvark!)
4392    * include build scripts for the new streaming lib (which is NOT ready
4393      for use yet, but you can hack around with it)
4394
43952004-10-24  jrandom
4396    * Allow explicit inclusion of session tags in the SDK, enabling the
4397      resending of tags bundled with messages that would not otherwise
4398      be ACKed.
4399    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4400      no DeliveryStatusMessage will be bundled (and as such, client apps using
4401      it will need to do their own session tag ack/nack).
4402    * Handle client errors when notifying them of message availability.
4403    * New StreamSinkSend which sends a file to a destination and disconnects.
4404    * Update the I2PSocketManagerFactory to build the specific
4405      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4406      containing the class name of the I2PSocketManager to instantiate.
4407
44082004-10-23  jrandom
4409    * Minor ministreaming lib refactoring to simplify integration of the full
4410      streaming lib.
4411    * Minor bugfixes to data structure serialization.
4412
4413* 2004-10-18  0.4.1.3 released
4414
44152004-10-18  jrandom
4416    * Allow sending messages with a section of a byte array.
4417    * Reduced stats published.
4418
44192004-10-17  jrandom
4420    * Don't b0rk on whitespace in the router address.
4421
44222004-10-16  jrandom
4423    * More aggressively reduce the capacity of peers if their tunnels are
4424      failing so that we move off them quicker.
4425    * Simplify some data structure serialization for reuse in the streaming
4426      lib, as well as add support for signing and verifying partial byte
4427      arrays.
4428    * Logging updates
4429
44302004-10-16  jrandom
4431    * Increased the default minimum tunnel test time to 5 seconds, since we
4432      still see the occational message processing time spike to 2 seconds.
4433    * Update the SimpleTimer to allow rescheduling a task thats already
4434      queued (useful for the new streaming lib).
4435
44362004-10-15  jrandom
4437    * Replaced old minimum tunnel test timeout of 1s with a configurable
4438      value (router.config property "router.tunnelTestMinimum", with the
4439      default of 2s).
4440
44412004-10-14  jrandom
4442    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4443      peer, so don't use it as a key point of the IsFailing calculator.
4444      We still use it as a key point of the Capacity calculator, however.
4445
44462004-10-14  jrandom
4447    * Allow for a configurable tunnel "growth factor", rather than trying
4448      to achieve a steady state.  This will let us grow gradually when
4449      the router is needed more, rather than blindly accepting the request
4450      or arbitrarily choking it at an averaged value.  Configure this with
4451      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4452    * Adjust the tunnel test timeouts dynamically - rather than the old
4453      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4454      test time (the deviation factor can be adjusted by setting
4455      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4456      find the 'good' tunnels.
4457    * Added some crazy debugging to try and track down an intermittent hang.
4458
44592004-10-13  jrandom
4460    * Fix the probabalistic tunnel reject (we always accepted everything,
4461      since the docs on java.util.Random.nextDouble() are wrong..)
4462    * Fixed a race on startup (thanks Quadn!)
4463
44642004-10-12  jrandom
4465    * Disable the probabalistic drop by default (enable via the router config
4466      property "tcp.dropProbabalistically=true")
4467    * Disable the actual watchdog shutdown by default, but keep track of more
4468      variables and log a lot more when it occurs (enable via the router
4469      config property "watchdog.haltOnHang=true")
4470    * Implement some tunnel participation smoothing by refusing requests
4471      probabalistically as our participating tunnel count exceeds the previous
4472      hour's, or when the 10 minute average tunnel test time exceeds the 60
4473      minute average tunnel test time.  The probabilities in both cases are
4474      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4475      and you had previously only participated in 50, you'll have a 25% chance
4476      of accepting a subsequent request.
4477
4478* 2004-10-10  0.4.1.2 released
4479
44802004-10-10  cervantes
4481    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4482      the request.
4483
44842004-10-09  jrandom
4485    * Added a watchdog timer to do some baseline liveliness checking to help
4486      debug some odd errors.
4487    * Added a pair of summary stats for bandwidth usage, allowing easy export
4488      with the other stats ("bw.sendBps" and "bw.receiveBps")
4489    * Trimmed another memory allocation on message reception.
4490
44912004-10-08  jrandom
4492    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4493      during its operation.
4494
44952004-10-08  jrandom
4496    * Don't kill the establisher threads during a soft restart.
4497    * Attempt to validate the peer's routerInfo earlier during handshaking.
4498    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4499      during its operation.
4500
45012004-10-07  jrandom
4502    * Reimplement the I2NP reading with less temporary memory allocation.
4503      There is still significant GC churn, especially under load, but this
4504      should help.
4505    * Catch some oddball errors in the transport (message timeout while
4506      establishing).
4507
45082004-10-07  jrandom
4509    * Expire queued messages even when the writer is blocked.
4510    * Reimplement most of the I2NP writing with less temporary memory
4511      allocations (I2NP reading still gobbles memory).
4512
45132004-10-06  jrandom
4514    * Implement an active queue management scheme on the TCP transports,
4515      dropping messages probabalistically as the queue fills up.  The
4516      estimated queue capacity is determined by the rate at which messages
4517      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4518      we exceed 1/2 of the estimated capacity, we drop messages throughout
4519      the queue probabalistically with regards to their size.  This is based
4520      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4521      estimated connection capacity.  We may want to consider using a send
4522      rate and queue size measured across all connections, to deal with our
4523      own local bandwidth saturation, but we'll try the per-con metrics first.
4524
45252004-10-06  jrandom
4526    * Enable explicit disabling of the systray entirely for windows machines
4527      with strange configurations: add -Dsystray.disable=true to the java
4528      command line.  (thanks mihi!)
4529
45302004-10-05  jrandom
4531    * Allow peers on the same LAN to communicate with each other safely even
4532      when they cannot talk to each other through the external address.
4533
45342004-10-05  jrandom
4535    * Display how much time is left before the graceful shutdown is complete.
4536    * Debug some improperly failed messages on timeout or disconnection.
4537
45382004-10-05  jrandom
4539    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4540      (thanks mule!)
4541    * Handle some more error conditions regarding abruptly closing sockets
4542      (thanks Jonva!)
4543
45442004-10-04  jrandom
4545    * Update the shitlist to reject a peer for an exponentially increasing
4546      period of time (with an upper bounds of an hour). 
4547    * Various minor stat and debugging fixes
4548
45492004-10-03  jrandom
4550    * Add a new stat logging component to optionally dump the raw stats to
4551      disk as they are generated, rather than rely upon the summarized data.
4552      By default, this is off, but the router property "stat.logFilters" can
4553      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4554      which will be written to the file "stats.log" (or whatever the property
4555      "stat.logFile" is set to).  This can also log profile related stats,
4556      such as "dbResponseTime" or "tunnelTestResponseTime".
4557
45582004-10-02  jrandom
4559    * Assure that we quickly fail messages bound for shitlisted peers.
4560    * Address a race on startup where the first peer contacted could hang the
4561      router (thanks Romster!)
4562    * Only whine about an intermittent inability to query the time server once
4563
45642004-10-02  jrandom
4565    * Command line utility to verify a peer's reachability - simply run
4566      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4567      will print out whether that peer is reachable or not (using a simple
4568      verification handshake).
4569
4570* 2004-10-01  0.4.1.1 released
4571
45722004-10-01  jrandom
4573    * Handle partial reseeds, caused by seeds going away before the download
4574      completes (thanks Sugadude!)
4575
45762004-10-01  jrandom
4577    * Explicitly refuse IPv6 addresses, since only some peers support
4578      them and we want fully reachable peers.
4579
45802004-10-01  jrandom
4581    * Additional error handling for a variety of transport layer errors.
4582
4583* 2004-09-30  0.4.1 released (not backwards compatible)
4584
45852004-09-30  jrandom
4586    * Bundle the configuration necessary to run an eepsite out of the box
4587      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4588      the key listed on the I2PTunnel configuration page, and its up.
4589    * Router console cleanup, and some (off by default) tunnels -
4590      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4591      irc.baffled.i2p (port 7661)
4592
45932004-09-29  jrandom
4594    * Always wipe the Jetty work directory on startup, so that web updates
4595      are reflected immediately (Jetty does not honor the cache across
4596      multiple executions)
4597
45982004-09-27  jrandom
4599    * Limit the number of connection tags saved to 10,000.  This is a huge
4600      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4601      randomly after reaching that size, forcing those dropped peers to use
4602      a full DH negotiation.
4603    * HTML cleanup in the console.
4604
46052004-09-26  jrandom
4606    * Complete rewrite of the TCP transport with IP autodetection and
4607      low CPU overhead reconnections.  More concise connectivity errors
4608      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4609      by listening to the first person who tells you what your IP address is
4610      when you have not defined one yourself and you have no other TCP
4611      connections.
4612    * Update to the I2NP message format to add transparent verification at
4613      the I2NP level (beyond standard TCP verification).
4614    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4615      implementation (rather than verifying with E(H(key)), we now verify with
4616      E(H(iv))).
4617    * The above changes are NOT BACKWARDS COMPATIBLE.
4618    * Removed all of the old unused PHTTP code.
4619    * Refactor various methods and clean up some javadoc.
4620
46212004-09-21  jrandom
4622    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4623      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4624      but values stored in the later take precedence.  Both are queried on
4625      lookup.
4626
46272004-09-16  jrandom
4628    * Refactor the TCP transport to deal with changing identities gracefully,
4629      and to prevent some wasted effort by keeping track of what host+port
4630      combinations we are connected to (rather than just the identities).  Also
4631      catch a few configuration errors earlier.
4632    * Removed no longer relevent methods from the Transport API that were
4633      exposing ideas that probably shouldn't be exposed.
4634    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4635      updates)
4636
46372004-09-13  jrandom
4638    * Update for the SDK reconnection to deal with overflow.
4639    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4640      rounding on lifetime bandwidth used [thanks gott!]).
4641
4642* 2004-09-08  0.4.0.1 released
4643
46442004-09-08  jrandom
4645    * Updated the "Active:" peer count to display the # of connections as well
4646      as the number of recently active router identities.
4647    * Implement some basic updating code - on startup, if there is a file named
4648      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4649      then restart.
4650    * Added an ugly little script to allow launching the router on win9x
4651      machines without a dos box (using javaw to run a .bat file).
4652    * Logging updates.
4653    * Updated VERSION constants to 0.4.0.1
4654
46552004-09-08  hypercubus
4656    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4657      hopefully any other affected *nix systems) now properly discards non-
4658      essential directories after installation.
4659    * Support for Win9x in the installer and postinstall.bat.
4660    * Changed the name of the default installation directory on all platforms
4661      from "I2P" to "i2p" in the installer.
4662    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4663      other configuration files.
4664
46652004-09-07  cervantes:
4666    * Proxy recursion disabled by default (strict)
4667    * Password Authentication for session commands
4668    * Support for http://path?i2paddresshelper=BASE64
4669    * Support for http://i2p/BASE64/path syntax
4670
46712004-09-07  jrandom
4672    * Make sure that peers placed in the 'fast' group are ones we both know
4673      how to reach and have been able to reach recently.  These peers may
4674      still be placed in the 'high capacity' group however (though that group
4675      is only queried if the 'fast' group is too small)
4676    * Include some updates to the ProgileOrganizer's CLI.
4677
46782004-09-07  jrandom
4679    * Disable the timestamper by default for all applications except the router
4680      (enable via -Dtime.disabled=false)
4681    * Simplify the retrieval of the full destination with text based browsers.
4682    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4683
46842004-09-07  jrandom
4685    * Write the native libraries to the current directory when they are loaded
4686      from a resource, and load them from that file on subsequent runs (in
4687      turn, we no longer *cough* delete the running libraries...)
4688    * Added support for a graceful restart.
4689    * Added new pseudo-shutdown hook specific to the router, allowing
4690      applications to request tasks to be run when the router shuts down.  We
4691      use this for integration with the service manager, since otherwise a
4692      graceful shutdown would cause a timeout, followed by a forced hard
4693      shutdown.
4694    * Made the capacity calculator a bit more dynamic by not outright ignoring
4695      the otherwise valid capacity data for a period with a single rejected
4696      tunnel (except for the 10 minute period).  In addition, peers with an
4697      equal capacity are ordered by speed rather than by their hashes.
4698    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4699      issues.
4700    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4701      associated session (unless there are other clients using it), and deal
4702      with a closed session when starting a new I2PTunnel instance.
4703    * Refactoring and logging.
4704
47052004-09-06  jrandom
4706    * Address a race condition in the key management code that would manifest
4707      itself as a corrupt router identity.
4708    * Properly clear old transport addresses from being displayed on the old
4709      console after soft restarts.
4710    * Properly refuse to load the client applications more than once in the
4711      same JVM.
4712    * Added support for a graceful restart (a graceful shutdown followed by a
4713      full JVM restart - useful for restarting client apps).
4714    * More defensive programming, HTML cleanup, logging
4715    * wrapper.config cleanup of duplicate lines
4716
47172004-09-04  jrandom
4718    * Added some basic guards to prevent multiple instances from running.
4719      Specifically, a file "router.ping" in the install directory which is
4720      written to once a minute - if that file exists and has been modified
4721      within the last minute, refuse to start up.  In turn, adjust the
4722      service wrapper to wait a minute before restarting a crashed JVM.
4723    * Create a "work" directory in the I2P install dir which Jetty will
4724      use for all of its temporary files.
4725    * Tell the browser not to cache most of the router console's pages.
4726
47272004-09-04  jrandom
4728    * Update the SDK to automatically reconnect indefinitely with an
4729      exponential delay on retries (capped at 5 minutes).
4730
4731* 2004-09-03  0.4 released
4732
47332004-09-03  jrandom
4734    * Updated default wrapper.config to deal with the hard restart option
4735    * Include the history.txt in the /help.jsp page
4736    * HTML updates (wrapper.log, and no more unix scripts)
4737    * Updated VERSION constants to 0.4
4738
47392004-09-03  hypercubus
4740    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4741    * Temporarily removed install_i2p_service_unix and
4742      uninstall_i2p_service_unix from distribution packages.
4743    * postinstall.bat/postinstall.sh cleans installation directory of all files
4744      not applicable to the host OS.
4745
47462004-09-03  oOo
4747    * Added some filters to the HTTP request, replacing the User-Agent,
4748      Referrer, Via, and From headers, which helps until we have a more
4749      comprehensive filtering system.
4750
47512004-09-03  jrandom
4752    * Disabled the old listener on port 7655.
4753
47542004-09-02  jrandom
4755    * Cleaned up the base build.xml, adding a new target ("updater") which
4756      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4757      existing installs.
4758
47592004-xx-xx  jrandom
4760    * Implemented the new web architecture and router console
4761    * Implemented I2PTunnel web interface, and revamped startup process.
4762    * Revamped peer selection code to address skew.
4763    * Removed all temporary threads from the router and the SDK.
4764    * Bugfix dealing with timeouts and resends.
4765    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4766
47672004-xx-xx  hypercubus
4768    * Implemented the new installation process.
4769    * Integrated systray
4770    * Integrated service manager
4771
47722004-xx-xx  oOo
4773    * Implemented ?i2paddresshelper= hook
4774    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4775
47762004-xx-xx  Nightblade
4777    * libSAM updates.
4778
47792004-xx-xx  cervantes
4780    * Imported i2pProxy.pac proxy script in with the build.
4781
4782* 2004-08-20  0.3.4.3 released
4783* 2004-08-12  0.3.4.2 released
4784* 2004-08-08  0.3.4.1 released
4785* 2004-07-29  0.3.4 released
4786* 2004-07-23  0.3.3 released
4787* 2004-07-16  0.3.2.3 released
4788* 2004-07-14  0.3.2.2 released
4789* 2004-07-11  0.3.2.1 released
4790* 2004-07-07  0.3.2 released
4791* 2004-06-25  0.3.1.5 released
4792* 2004-05-23  0.3.1.4 released
4793* 2004-05-20  0.3.1.3 released
4794* 2004-05-13  0.3.1.2 released
4795* 2004-05-07  0.3.1.1 released
4796* 2004-04-30  0.3.1 released
4797* 2004-04-20  0.3.0.4 released
4798* 2004-04-04  0.3.0.3 released
4799* 2004-03-30  0.3.0.2 released
4800* 2004-03-25  0.3.0.1 released
4801* 2004-03-21  0.3.0 released
4802* 2004-03-10  0.2.5.4 released
4803* 2004-03-04  0.2.5.3 released
4804* 2004-02-28  0.2.5.2 released
4805* 2004-02-27  0.2.5.1 released
4806* 2004-02-25  0.2.5 released
4807* 2004-02-19  0.2.4.2 released
4808* 2004-02-15  0.2.4.1 released
4809* 2004-02-14  0.2.4 released
4810* 2004-01-27  0.2.3.6 released
4811* 2004-01-21  0.2.3.5 released
4812* 2004-01-14  0.2.3.4 released
4813* 2003-12-29  0.2.3.3 released
4814* 2003-12-27  0.2.3.2 released
4815* 2003-12-25  0.2.3.1 released
4816* 2003-12-13  0.2.3 released
4817* 2003-12-01  0.2.2 released
4818* 2003-11-18  0.2.1.1 released
4819* 2003-11-12  0.2.1 released
4820* 2003-11-09  0.2.0.3 released
4821* 2003-11-08  0.2.0.2 released
4822* 2003-11-03  0.2.0.1 released
4823* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.