source: history.txt @ a988358

Last change on this file since a988358 was a988358, checked in by sponge <sponge@…>, 12 years ago

history.txt additions

  • Property mode set to 100644
File size: 214.3 KB
Line 
12008-10-07 sponge
2    * Bugfixes and additions to streaming.
3    * Added SimpleStore class in utils.
4    * Fixed SimpleTimer class to allow exit.
5    * BOB (Basic Open Bridge) added.
6
72008-09-29 zzz
8    * i2psnark: Add codevoid link, remove mastertracker
9
102008-09-23 zzz
11    * config.jsp: Add some reachability help
12    * configpeer.jsp: Add blocklist info
13    * help.jsp: Add link to German FAQ
14    * tunnels.jsp: Fix inactive participating count
15    * SearchReplyJob: Don't look up references to shitlisted peers
16    * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
17
182008-09-20 zzz
19    * NetDb: Fix the totally broken "check new routers against blocklist"
20      code from 3 checkins ago
21    * tunnels.jsp: Sort participating tunnels by usage, display rate
22
232008-09-19 zzz
24    * Tunnels:
25      - Add missing message accounting for inbound gateways,
26        we were underestimating participating traffic because of it,
27        and the tunnels were classified "inactive"
28      - Add participating tunnel role on tunnels.jsp
29
302008-09-18 zzz
31    * Throttle:
32      - Correctly check inbound and outbound total bw limits separately
33      - Fix up and actually use the tunnel.participatingMessageCount stat,
34        favor it if lower than the total bw stat, so that
35        client traffic isn't included for throttle decisions
36      - Reduce min message count from 60 to 40
37    * Tunnel Dispatcher:
38      - Add tunnel.participatingBandwidth stat
39      - Remove all 3h and 24h stats
40
412008-09-15 zzz
42    * FloodOnlySearchJob:
43      - Ask non-floodfill peers if we don't know any floodfills
44      - Lookup hashes in the DatabaseSearchReplyMessage if we
45        don't know enough floodfills
46    * NetDb: Check new routers against blocklist
47    * Router: Shutdown clients first
48    * Throttle:
49      - Use 60s rather than 10m tunnel.participatingMessageCount stat
50      - Fix a summary bar message
51    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
52      every 20s, rather than at tunnel expiration, to maintain
53      a more current stat
54    * Tunnel Pool:
55      - Prevent excess zero-hop tunnels
56      - Always wait before looping in BuildExecutor
57    * configlogging.jsp: Increase box width
58    * logs.jsp: Remove unused connection log, cut wrapper log output in half
59
602008-09-12 zzz
61    * Blocklist: Fix a log message format
62    * HarvesterJob: Don't instantiate if disabled
63    * i2psnark:
64      - Add config i2psnark.linkPrefix to enable access to completed
65        torrents from a different machine - examples:
66           i2psnark.linkPrefix=file://///localserver/path/to/files/
67           i2psnark.linkPrefix=http://localwebserver/path/
68        (Stop i2psnark, add to i2psnark.config, restart)
69      - Remove Galen and NickyB trackers
70    * NetDb: Add netDb.exploreKeySet stat
71    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
72      and ?r=. to view our own; change links on other pages too
73    * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
74
752008-09-06 zzz
76    * EepGet command line: Fix byte counts after a failed resume
77    * NTCP: Mark unreachable on outbound connection timeout
78    * Shitlist: Fix partial shitlisting (still unused though)
79    * Summary Bar: Warn if firewalled and floodfill
80    * Throttle: Combine current and last bw measurement,
81      reduce default max tunnels to 2500 (was 3000)
82    * Tunnel BuildHandler: Logging cleanup
83    * UpdateHandler: Cleanup, clarify failure message
84    * DataHelper: Prepare for 999 day uptime :)
85
862008-08-29 zzz
87    * Tunnel BuildExecutor: Debug cleanup
88    * Profiles: Penalize capacity when tunnel build request times out
89    * Shutdown: Call the shutdown hooks before the router shutdown
90      rather than after
91    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
92
932008-08-27 zzz
94    * Floodfill Peer Selector: Prefer already-connected floodfill
95      peer for direct RouterInfo stores, to mimimize floodfill
96      connections
97    * Peer Profiles: Classify connected peers as "active",
98      which will help improve the fast pool
99    * Transport Manager: Add isEstablished(Hash)
100    * NTCP: Reduce max idle time from 20m to 15m
101    * NetDb stats: Post-0.6.3 clean up
102
103* 2008-08-24  0.6.3 released
104
1052008-08-24 Complication
106    * Update versions, package release
107
1082008-08-20 zzz
109    * Blocklists: Handle blank lines and \r\n in blocklist.txt
110    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
111      default is 500 (very high for now)
112    * Persistent data store: Increase write limit from 300 to 600
113      so floodfill routers don't get backed up
114
1152008-08-13 zzz
116    * i2psnark: Fix OOM vulnerability by checking incoming message length
117      (thanks devzero!)
118
1192008-08-04 zzz
120    * Floodfill Peer Selector:
121      - Avoid peers whose netdb is old, or have a recent failed store,
122        or are forever-shitlisted
123
1242008-07-30 zzz
125    * Blocklists:
126      - New, disabled by default, except for blocking of
127        forever-shitlisted peers. See source for instructions
128        and file format.
129    * Transport - Reject peers from inbound connections:
130      - Check IP against blocklist
131      - Check router hash against forever-shitlist, then block IP
132
1332008-07-16 zzz
134    * configpeer.jsp: New
135    * i2psnark: Open completed files read-only the first time
136    * profiles.jsp: Show bonuses, link to configpeer.jsp
137    * PRNG: Move logging from wrapper to router log
138    * SSU:
139        Don't proactively reconnect until 30m idle, so
140        we don't lose introducer tags prematurely
141
1422008-07-16 Oldaris
143    * Imports cleanup
144
1452008-07-07 zzz
146    * i2psnark:
147      - Repair corrupted files with wrong length rather than die
148      - Register shutdown hook to properly shutdown torrents when
149        the router shuts down, hopefully will reduce corruption
150      - Add Galen tracker
151      - Add a note about how to change directory
152    * HTTP Proxy: Don't show jump links for unknown jump hosts
153    * KeyManager:
154      - Don't write router key backup when leaseSet keys are updated
155      - Synchronize to prevent concurrent writes (thanks Galen!)
156      - Backup keys every 7 days instead of every 5 minutes
157    * LoadTestManager: Don't instantiate, it's disabled
158    * Router console: Flag placeholder pages as noncacheable
159    * Streaming lib:
160      - Change some logging from WARN to INFO
161      - Clean up toString()
162    * SSU:
163      - Try to pick better introducers by checking shitlist,
164        wasUnreachable list, failing list, and idle times
165      - To keep introducer connections up and valid,
166        periodically send a "ping" (a data packet with no data and no acks)
167        to everybody that has been an introducer in the last two hours
168      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
169      - Remove some 60s and 5m stats, leave only the 10m ones
170      - Narrow the range for the retransmit time after an allocation fail
171      - Adjust some logging
172
1732008-06-30 zzz
174    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
175    * i2psnark:
176      - Fix NPE caused by race (thanks echelon!)
177      - Add mastertracker, remove de-ebook
178    * NTCP:
179      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
180      - Fix failsafe stats
181    * PersistentDataStore: More leaseSet code cleanup
182    * SimpleTimer: Change congestion message from error to warn
183
1842008-06-24 zzz
185    * FloodfillMonitorJob: Change range from 5-7 to 4-6
186    * NTCP: Remove getIsInbound(), duplicate of isInbound()
187    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
188    * Router console: add placeholder pages for i2psnark, i2ptunnel,
189      susidns, and susimail for use when the .wars are not running
190    * Streaming lib: Increase max window size to 128
191
1922008-06-22 welterde
193    * Optimize I2PDatagramDissector
194
1952008-06-20 zzz
196    * configclients.jsp: Add start button for clients and webapps.
197    * PRNG: Add two stats
198    * Summary bar:
199      - Display Warning for TCP private IP address
200      - Display PRNG stats
201    * OutNetMessage: Change cache logging from WARN to INFO
202
2032008-06-17 zzz
204    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
205    * Summary bar: Display helpful errror message when UDP bind fails
206    * UDP: Don't bid when UDP bind fails
207    * configclients.jsp: Implement saves for clients and webapps.
208
2092008-06-16 zzz
210    * UDP: Prevent 100% CPU when UDP bind fails;
211      change bind fail message from ERROR to CRIT
212    * Refactor LoadClientAppsJob.java, move some functions to new
213      ClientAppConfig.java, to make them easily available to
214      new configclients.jsp
215    * RouterConsoleRunner: Use a new config file, webapps.config,
216      to control which .wars in webapps/ get run. Apps are enabled
217      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
218      Config file is written if it does not exist.
219      Implement methods for use by new configclients.jsp.
220    * configclients.jsp: New. For both clients and webapps.
221      Saves are not yet implemented.
222
2232008-06-10 zzz
224    * Floodfill: Add new FloodfillMonitorJob, which tracks active
225      floodfills, and automatically enables/disables floodfill on
226      Class O routers to maintain 5-7 total active floodfills
227    * NetDb Stats:
228      - Remove several more stats
229      - Don't publish bw stats in first hour of uptime
230      - Publish floodfill stats even if other stats are disabled
231      - Changes not effective until 0.6.2.1 to provide cover.
232    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
233      startup, so peers don't list us as failing.
234    * graphs.jsp: Fix a bug where it tries to display the combined
235      bandwidth graph when it isn't available
236
2372008-06-09 zzz
238    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
239
2402008-06-09 zzz
241    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
242    * News:
243      - Add display of last updated and last checked time
244        on index.jsp and configupdate.jsp
245      - Add a function to get update version (unused for now)
246    * config.jsp: Add another warning
247
2482008-06-07 zzz
249    * NetDb: Tweak some logging on lease problems
250    * Shitlist:
251      - Add shitlistForever() and isShitlistedForever(), unused for now
252      - Sort the HTML output by router hash
253    * netdb.jsp:
254      - Sort the lease HTML output by dest hash, local first
255      - Sort the router HTML output by router hash
256
2572008-06-06 zzz
258    * LeaseSet:
259      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
260        to make later LeaseSet comparisons reliable. This cleans up the code too.
261      - Fix broken old vs. new LeaseSet comparison
262        in ClientConnectionRunner.requestLeaseSet(),
263        so that we only sign and publish a new LeaseSet when it's really new.
264        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
265        and floodfill router load, since locked_buildNewLeaseSet() generates
266        the same LeaseSet as before quite frequently, often just seconds apart.
267
2682008-06-05 zzz
269    * LeaseSet - code cleanup:
270      - Add exception to enforce max # of leases = 6, should be plenty
271      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
272        leases and then immediately remove them again, triggering
273        the new leaseSet size exception
274      - Remove the now unused LeaseSet.removeLease(lease) and
275        LeaseSet.removeLease(index)
276      - Store first and last expiration for efficiency
277    * Peer Profiles - Preparation for using bonuses:
278      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
279      - Persist CapacityBonus rather than ReachabilityBonus
280      - Include SpeedBonus in the Speed calculation
281      - Prevent negative values in Speed and Capacity when using bonuses
282      - Clean up SpeedCalculator.java
283    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
284    * Add some config files for a future small distribution
285    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
286
2872008-06-01 zzz
288    * Client Apps: Add new parameter for clients.config,
289        clientApp.x.startOnLoad=false, to disable loading
290        (for SAM for example). Defaults to true of course.
291    * Logging: Move common WARN output to DEBUG so we can ask users to
292        set the default log level to WARN without massive spewage
293    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
294      not just the Fast tier, since we don't use them for tunnels anyway
295    * SAM: Add some compiler flexibility to two obscure makefiles
296    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
297      (sponge's suggestion)
298    * summary bar:
299      - Hide ident, provide a tooltip and a link
300      - Add a warning if you are firewalled and class O
301
3022008-06-07 Complication
303    * Fix version in news.xml so it could be published
304
305* 2008-06-07  0.6.2 released
306
3072008-06-07 Complication
308    * Write announcement and prepare for release
309
3102008-05-29 zzz
311    * Fix up initialNews.xml
312
3132008-05-27 zzz
314    * Transport:
315      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
316      - UDP: Don't bid when IP address missing, mark unreachable
317
3182008-05-26 zzz
319    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
320    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
321    * build.xml:
322      - Add an updaterSmall target which includes only the essentials
323      - Add an updaterRouter target which includes only i2p.jar and router.jar
324      - Clean up the build file some
325      - Remove empty eepsite/ and subdirs from i2pupdate.zip
326    * configtunnels.jsp: Add warning
327    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
328    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
329
3302008-05-22 welterde
331    * Change jetty download location in build script
332
3332008-05-20 zzz
334    * Reachability:
335      - Call the previously unused profile.tunnelTestFailed()
336        (redefined to include a probability argument)
337        and severely downgrade a peer's capacity upon failures,
338        depending on tunnel length and direction.
339        This will help push unreachable and malicious peers
340        out of the High Capacity tier.
341      - Put recent fail rate on profiles.jsp
342    * ProfileOrganizer: Logging cleanup
343    * eepsite_index.html: Update add-host and jump links
344    * HTTP Proxy: Remove trevorreznik jump server from list
345
3462008-05-20 welterde
347    * implemented PrivateKeyFile
348
3492008-05-18 zzz
350    * Throttle: Reject tunnels for first 20m uptime (was 10m)
351    * TunnelPeerSelectors:
352       - Re-enable strict ordering of peers,
353         based on XOR distance from a random hash
354       - Restrict peers with uptime < 90m from tunnels (was 2h),
355         which is really 60m due to rounding in netDb publishing.
356    * i2psnark:
357       - Limit max pipelined requests from a single peer to 128KB
358         (was unlimited; i2p-bt default is 5 * 64KB)
359       - Increase max uploaders per torrent to 6 (was 4)
360       - Reduce max connections per torrent to 16 (was 24) to increase
361         unchoke time and reduce memory consumption
362       - Strictly enforce max connections per torrent
363       - Choke more gradually when over BW limit
364    * help.jsp: Add a link to the FAQ
365    * peers.jsp: Fix UDP direction indicators
366    * hosts.txt: Add update.postman.i2p
367
3682008-05-12 zzz
369    * Outbound message:
370      - Tweak the cache key for efficiency
371    * Stats:
372      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
373    * Summary bar:
374      - Add messages when dropping tunnel requests due to load
375    * Update Handler:
376      - Add postman to the list
377    * i2psnark:
378      - Randomize the PeerCheckerTask start times to make global limiting
379        work better
380      - Calculate bw limits using 40s rather than 4m averages to make
381        bw limiting work better
382      - Change default bw limit from uplimit/3 to uplimit/2 due to
383        overhead reduction from the leaseset bundling change
384    * libjbigi:
385      - Add documentation on dynamic build option
386      - Add two speed tests to the build script
387      - Clean up the build script, make it easier to build dynamic
388
3892008-05-10 zzz
390    * NetDb: Don't write the my.info file to disk, it isn't used for anything
391    * Stats:
392      - Simplify oldstats.jsp if no events in a stat
393      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
394        (caused by an SSU hack)
395    * Update Handler:
396      - Add option to download and verify only
397      - Add distinct error message if version check fails
398
3992008-05-09 welterde
400    * Add an update URL to the list
401
4022008-05-07 zzz
403    * Reachability:
404      - Restrict peers requiring introducers from inbound tunnels,
405        since it's slow and unreliable... and many of them advertise
406        NTCP, which seems unlikely to work
407      - Provide warning on summary bar if firewalled with inbound NTCP enabled
408    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
409      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
410      at startup (you didn't get any data unless you set the log level anyway)
411    * oldstats.jsp: Don't put 2 decimal places on integer event counts
412    * Remove the Internals link from the menu bar
413    * i2psnark: Extend startup delay from 1 to 3 minutes
414
4152008-05-06 welterde
416    * HTTP Proxy: Add i2jump.i2p jump service
417
4182008-05-05 zzz
419    * NetDb Stats: Cleanup of commented out stats
420    * Outbound message:
421      - Fix a couple of tunnel cache cleaning bugs
422      - Cache based on source+dest pairs rather than just dest
423      - Send the reply leaseSet only when necessary,
424        rather than all the time (big savings in overhead)
425      - Enable persistent lease selection again
426      - Logging tweaks
427    * Reachability:
428      - Restrict <= .32 SSU-only peers from inbound tunnels,
429        since they don't know if they are unreachable
430      - Have SSU bid aggressively when it has less than 3 peers, so
431        we can determine our IP address and do peer testing.
432        Otherwise a router may never determine its IP address or reachability status.
433    * Summary bar:
434      - Add reachability status
435      - Add participating tunnel acceptance status
436    * Throttle: Reject tunnels for first 10m uptime
437    * I2PTunnel: Change default outproxy to false.i2p
438    * profiles.jsp: Add router version
439
440* 2008-04-26  0.6.1.33 released
441
4422008-04-20 zzz
443    * Outbound message/Reachability:
444      - Fix a bug from -19 causing the persistent lease selection
445        removed in -17 to be back again
446      - Use netDb-listed-unreachable instead of detected-unreachable
447        for exclusion of unreachable peers from selected leases,
448        as there are potential anonymity problems with using
449        detected-unreachable
450      - Tweak logging some more
451    * NetDb stats: Remove a couple more including the inefficient stat_identities
452
4532008-04-17 zzz
454    * Reachability:
455      - Track unreachable peers persistently
456        (i.e. separately from shitlist, and not cleared when they contact us)
457      - Exclude detected unreachable peers from inbound tunnels
458      - Exclude detected unreachable peers from selected leases
459      - Exclude detected unreachable floodfill peers from lookups
460      - Show unreachable status on profiles.jsp
461
4622008-04-16 zzz
463    * SSU/Reachability:
464      - Extend shitlist time from 4-8m to 40-60m
465      - Add some shitlist logging
466      - Don't shitlist twice when unreachable on all transports
467      - Exclude netDb-listed unreachable peers from inbound tunnels;
468        this won't help much since there are very few of these now
469      - Remove 10s delay on inbound UDP connections used for the
470        0.6.1.10 transition
471      - Track and display UDP connection direction on peers.jsp
472      - Show shitlist status in-line on profiles.jsp
473
4742008-04-15 zzz
475    * SSU Reachability/PeerTestManager:
476      - Back out strict peer ordering until we fix SSU
477      - Back out persistent lease selection until we fix SSU
478      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
479      - Increase known Charlie time to 10m; 3m wasn't enough
480      - Don't continue retransmitting peer test if we know Charlie
481      - Don't run multiple peer tests at once
482      - Tighten test frequency range to 6.5-19.5m, was 0-26m
483
4842008-04-12 zzz
485    * Addressbook: Disallow '.-' and '-.' in host names
486    * NTCP: Don't drop a connection unless both directions are idle;
487            Fix idle time for outbound connections
488    * Outbound message: Make sure cached lease is in current leaseSet
489    * Stats: Put all NetworkDatabase stats in same group
490    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
491    * i2psnark: Add locking to prevent two I2CP connections
492
4932008-04-07 zzz
494    * i2psnark:
495      - Implement upstream bandwidth limiting
496      - Fix a rare NPE at startup/shutdown
497      - Really increase retries for .torrent fetch
498    * profiles.jsp: Minor cleanup
499    * DataHelper: Only format < 5s as ms
500    * Eepget: Fix percentage output on command line eepget retries
501    * Lower partipating message priority from 400 to 200
502    * NTCP: Add a debug message
503    * Outbound message: Minor cleanup
504
5052008-03-30 zzz
506    * ExploratoryPeerSelector: Try NonFailing even more
507    * HostsTxtNamingService: Add reverse lookup support
508    * Outbound message: Minor cleanup
509    * i2psnark TrackerClient: Minor cleanup
510    * checklist.txt: Minor edit
511    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
512    * i2ptunnel.config: Change CVS client to mtn
513    * netdb.jsp: Show leaseSet destinations using reverse lookup
514    * profiles.jsp: First cut at showing floodfill data
515
5162008-03-27 zzz
517    * Send messages for the same destination to the same inbound
518      lease to reduce out-of-order delivery.
519    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
520      for now, as it prevents speed rating of those peers
521
5222008-03-26 zzz
523    * ReseedHandler: Support multiple urls,
524      add netdb.i2p2.de as a 2nd default
525
5262008-03-25 zzz
527    * i2psnark:
528      - Add support for secondary open trackers
529      - Refactor and simplify the TrackerClient code
530      - Add welterde's tracker to the default list
531      - Don't have eepget retry announces
532      - Slow down tracker contacts if they've failed for a while
533      - Add some debug support showing connections (?p=2)
534    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
535
5362008-03-22 zzz
537    * NewsFetcher: Fix bug causing fetch every 10m
538
5392008-03-22 zzz
540    * Tunnel Testing:
541      - Fix counting so it really takes 4 consecutive failures
542        rather than 4 total to remove a tunnel
543      - Credit or blame goes to the exploratory tunnel as well
544        as the tunnel being tested
545      - Adjust tunnel test timeout based on tunnel length
546    * ExploratoryPeerSelector: Tweak logging
547    * ProfileOrganizer: Adjust integration calculation again
548    * build.xml: Add to help
549    * checklist.txt: Tweak
550    * readme.html: Fix forum links
551    * netDb: Remove tunnel.testFailedTime
552
5532008-03-19 zzz
554    * ExploratoryPeerSelector:
555      - Exclude floodfill peers
556      - Tweak the HighCap vs. NonFailing decision; try NonFailing
557        at least a minimum % of the time
558    * i2psnark: Increase retries for .torrent fetch
559    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
560      containing an IP
561    * readme.html: Reorder some items
562    * Stats: Add some more required stats
563    * Streaming lib: Fix slow start to be exponential growth,
564      fix congestion avoidance to be linear growth.
565      Should speed up local connections a lot, and remote
566      connections a little.
567
5682008-03-14 zzz
569    * Floodfill Search:
570       - Prefer heard-from, unfailing, unshitlisted floodfill peers
571
5722008-03-14 zzz
573    * ProfileOrganizer:
574       - Use more recent stats to calculate integration
575       - Show that fast peers are also high-capacity on profiles.jsp
576    * readme.html: Update Syndie link
577    * TunnelPool: Update comments
578    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
579      get rid of the 60s tunnel stats
580      (effective as of .33 to provide cover)
581
5822008-03-13 zzz
583    * Floodfill Search:
584       - Fix a bug that caused a single FloodfillOnlySearchJob
585         instance to be run multiple times, with unpredictable
586         results
587       - Select ff peers randomly to improve reliability
588       - Add some bulletproofing
589
5902008-03-11 zzz
591    * ProfileOrganizer:
592       - Don't require a peer to be high-capacity to be
593         well-integrated (not used for anything right now,
594         but want to get it right for possible floodfill verification)
595       - Don't fall back to median for high-capacity threshold
596         if the mean is higher than the median, this prevents
597         frequent large high-capacity counts
598       - Fix high-capacity selector that picked one too many
599    * Console: put well-integrated count back in the summary
600
6012008-03-10 zzz
602    * EepGet: Fix byte count for bytesTransferred status listeners
603      (fixes command line status)
604    * UpdateHandler:
605       - Fix byte count display
606       - Display final status on router console
607       - Don't allow multiple update jobs to queue up
608       - Increase max retries
609       - Code cleanup
610       - Don't show 'check for update' button when update in progress
611       - Enhance error messages
612    * NetDb: Comment out published netDb stats disabled for .32
613
6142008-03-08 zzz
615    * TunnelPeerSelectors: Implement strict ordering of peers,
616      based on XOR distance from a random hash
617      separately generated for each tunnel pool
618
6192008-03-07 zzz
620    * Naming: Optimize lookups for a destkey
621    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
622      - Prevent peers with matching IPs from joining same tunnel.
623        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
624        Default is 2 (disallow routers in same /16).
625        Set with router.defaultPool.IPRestriction=x
626      - Comment out unused RebuildPeriod pool setting
627      - Add random key to pool in preparation for XOR peer ordering
628    * SusiMail: Add 'Create Account' link
629    * TunnelDispatcher: Change a common wtf error to a warn
630
6312008-03-05 zzz
632    * Naming: Make HostsTxt the sole default NamingService
633      (was Meta = PetName + HostsTxt)
634    * Naming: Add two new experimental NamingServices, EepGet and Exec,
635      not enabled by default -
636      see source comments in core/java/src/net/i2p/client/naming
637      for configuration instructions
638    * i2psnark: Don't do a naming lookup for Base64 destkeys
639    * i2psnark: Add a StartAll button
640    * Stats: Add code to disable most stats to save memory.
641      Set on configstats.jsp or set stat.full=false to disable the stats.
642      (true by default for now)
643
6442008-03-09 Complication
645    * Give the Jetty build file ability to ask permission
646      before downloading the Jetty archive from the web,
647      and to verify its SHA1 + MD5 hashes. Adjust the main build file
648      in accordance with this change.
649    * Improve the release checklist.
650
651* 2008-03-09  0.6.1.32 released
652
6532008-03-07 zzz
654    * Update news and version numbers
655
6562008-03-01 zzz
657    * Fix netdb.knownLeaseSets count reported by floodfill routers
658      (was broken by -3)
659
6602008-02-27 zzz
661    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
662    * i2psnark: Remove orion and gaytorrents from default tracker list
663    * Remove orion from jump list and from eepsite_index.html
664    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
665    * Capitalize OutboundMessageDistributor job name
666    * TunnelPool: Add a warning if all tunnels are backlogged
667
6682008-02-26 zzz
669    * Reintroduce NTCP backlog pushback, with switch back to
670      previous tunnel when no longer backlogged
671    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
672    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
673
6742008-02-21 zzz
675    * Raise inbound default bandwidth to 32KBps
676    * Fix config.jsp that showed 0KBps share bandwidth by default
677
6782008-02-19 zzz
679    * Addressbook: Disallow '--' in host names except in IDN,
680      add some reserved host names
681    * I2PTunnel: Clarify edit form
682    * NetDb: Remove many stats from netDb, effective as of .32
683    * profiles.jsp: Display capabilities
684    * Tunnels: Enforce max tunnel length of 8, catch an index error
685      http://forum.i2p/viewtopic.php?t=2561
686
6872008-02-16 zzz
688    * Fix race in TunnelDispatcher which caused
689      participating tunnel count to seesaw -
690      should increase network capacity
691    * Leave participating tunnels in 10s batches for efficiency
692    * Update participating tunnel ratestat when leaving a tunnel too,
693      to generate a smoother graph
694    * Fix tunnel.participatingMessageCount stat to include all
695      participating tunnels, not just outbound endpoints
696    * Simplify Expire Tunnel job name
697
6982008-02-13 zzz
699    * PersistentDataStore: Write out 300 records every 10 min
700      rather than 1 every 10 sec;
701      Don't store leasesets to disk or read them in
702    * Combine rates for pools with the same length setting
703      in the new tunnel build algorithm
704    * Clarify a log message in the UpdateHandler
705
7062008-02-13 zzz
707    * Make graphs clickable to get larger graphs
708    * Change SimpleTimer CRIT to a WARN, increase threshold
709    * Checklist update
710
7112008-02-11 welterde
712    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
713
7142008-02-10 zzz
715    * Add new tunnel build algorithm (preliminary)
716    * Change NTCP backlogged message from error to warning
717    * Checklist updates
718
719* 2008-02-10  0.6.1.31 released
720
7212008-02-10 Complication
722    * Update news and version numbers
723
7242008-02-06 zzz
725    * build.xml: Add some apps to javadoc
726    * checklist.txt: Add some things
727    * news.xml: make links relative
728    * runplain.sh: Add some comments
729    * wrapper.config: Add some comments
730
7312008-02-05 Complication
732    * Change the dates too (sorry for such forgetfulness!)
733
7342008-02-04 Complication
735    * Also use the new key for checking, and add it into news.xml
736
7372008-02-04 Complication
738    * Added my release signing key into TrustedUpdate.java
739
7402008-01-31 zzz
741    * NewsFetcher: Change fetch failed from error to warning
742    * installer: Fix URL and "email"
743    * checklist.txt: New release checklist
744
7452008-01-29 zzz
746    * Addressbook: Change default subscription
747    * ConfigUpdateHandler: Change default news URL
748    * initialNews.xml: Update version to .31
749    * news.xml: More updates
750    * hosts.txt: Add i2p-projekt.i2p
751    * readme.html: More URL updates
752    * SusiDNS: Change references to default subscription
753
7542008-01-28 zzz
755    * news.xml: Updates, still preliminary
756    * ReseedHandler: Change default URL
757    * i2ptunnel.config: Change default outproxies
758    * readme.html: Change *.i2p.net URLs
759    * help.jsp: Change *.i2p.net URLs
760    * eepsite_index.html: Change stats.i2p addressbook subscription URL
761    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
762
763* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
764
7652008-01-08 zzz
766    * addressbook: Limit size of subscribed hosts.txt,
767        don't save old etag or last-modified data
768    * EepGet: Add some logging,
769        enforce size limits even when size not in returned header,
770        don't return old etag or last-modified data,
771        don't call transferFailed listener more than once
772    * Sign my update signing key
773    * NewsFetcher: add last-modified support, reduce number of retries
774    * Error pages: add icon and logo,
775        clarify 'destination not found' and 'proxy not found' pages
776
7772008-01-07 zzz
778    * profiles.jsp formatting cleanup
779    * NTCP: Reduce max idle time from 60m to 20m
780    * NTCP: Fix idle time on connections with zero messages,
781      correctly drop these connections
782
7832008-01-03 zzz
784    * addressbook: Do basic validation of hostnames and destkeys
785    * susidns: Add support for the private addressbook,
786      update the text and links somewhat
787
7882008-01-02 zzz
789    * Add stats.i2p to the jump list
790    * Impose 20MB limit on POSTs and catch OOMs in POST
791    * eepsite_index.html: add stats.i2p services
792    * addressbook: log source of new keys; disallow dests > 516 bytes
793    * addressbook: convert hostnames to lower case to prevent duplicates
794    * susidns: generalize references to orion
795
7962007-12-29 zzz
797    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
798    * Allow commas in router.trustedUpdateKeys and router.updateURL again
799    * Change default news host from dev.i2p.net to dev.i2p
800    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
801
8022007-12-28 zzz
803    * Add zzz's update signing key
804
8052007-12-26 Complication
806    * Improve reseed handler (less repetitive code,
807      avoid reporting errors when less than 10% of fetches fail)
808
8092007-12-26 Complication
810    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
811      and unescape them in DataHelper.loadProps() to support
812      saving and loading config properties with line breaks
813    * Change the update URLs textbox into a textarea like keys have,
814      so different URLs go on different lines
815    * Modify TrustedUpdate to provide a method which supplies a key list
816      delimited with CR LF line breaks
817    * Modify DEFAULT_UPDATE_URL to supply a default URL list
818      delimited with CR LF line breaks
819    * Modify selectUpdateURL() to handle URL lists
820      delimited by any kind of line breaks
821    * Start saving trusted update keys
822    * Improve formatting on configupdate.jsp
823
8242007-12-22 zzz
825    * Add support for multiple update URLs
826    * Change default for update to use i2p proxy,
827      add several URLs as defaults
828    * Enable trusted key form on configupdate.jsp
829    * Clarify the 'destination not found' error page
830
8312007-12-16 zzz
832    * i2psnark: remove anonymitytracker from default list
833
8342007-12-10 zzz
835    * Fix NPE in CLI TrustedUpdate keygen
836
8372007-12-02 Complication
838    * Commit SAM v2 patch from mkvore (thank you!)
839    * Minor reformatting to preserve consistent whitespace
840      in old SAM classes (new classes unaltered)
841
8422007-12-01 Complication
843    * Separate the checks "does Jetty .zip file need downloading"
844      and "does Jetty .zip file need extracting" in the Jetty buildfile.
845      First download (unless already done), then extract (unless done).
846
8472007-11-26 zzz
848    * i2psnark: add timeout for receive inactivity
849
8502007-11-24 zzz
851    * i2psnark: increase streaming lib write timeout to 240 sec and change
852      timeout action from "ping" to "disconect", as the fix in .30 to
853      honor options on outbound connections led to hung outbound connections
854      (bitfield never transmitted, connection never dropped)
855
8562007-11-06 jrandom
857    * add i2host.i2p to the jump list
858
8592007-10-11 zzz
860    * IRC Proxy: Fix several possible anonymity holes:
861      - Block CTCP in NOTICE messages
862      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
863      - Check for lower case commands
864    (Thanks sponge!)
865
8662007-10-07  jrandom
867    * back out the NTCP backlog pushback, as it could be used to mount an
868      active anonymity attack.
869
870* 2007-10-07  0.6.1.30 released
871
8722007-10-07  Complication
873    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
874      broke retrying.
875
8762007-09-27  zzz
877    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
878    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
879      fix some of the sorting
880
8812007-09-22  zzz
882    * Send messages for the same destination out the same outbound
883      tunnel to reduce out-of-order delivery.
884
8852007-09-19  zzz
886    * i2psnark: Fix broken multifile torrent Delete;
887        cleanup Storage resources in AddTorrent;
888        don't autostart torrent after Create
889
8902007-09-18  zzz
891    * eepsite_index.html: Add links to trevorreznik address book
892    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
893    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
894    * i2psnark: Don't make outbound connections to already-connected peers
895    * i2psnark: Debug logging cleanup
896
8972007-09-14  zzz
898    * eepget: Increase header timeout to 45s
899    * HTTP proxy: Return a better error message for localhost requests
900    * tunnels: Fix PooledTunnelCreatorConfig memory leak
901
9022007-09-09  zzz
903    * eepget: Add support for Last-Modified and If-Modified-Since
904    * addressbook: Finish incomplete support for Last-Modified
905
9062007-09-08  zzz
907    * eepget: Copy over SocketTimeout.java file from syndie
908
9092007-09-07  jrandom
910    * eepget: Merge timeout support from syndie
911
912* 2007-08-23  0.6.1.29 released
913
9142007-08-12  zzz
915    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
916      tweak the eepsite and troubleshooting sections
917
9182007-08-11  zzz
919    * Add stats for individual tunnel rates (nice when graphed)
920    * i2psnark: Fix outbound tunnel nickname
921
9222007-08-05  Complication
923    * Update the sharing calculator on config.jsp
924      and explain the trade-off even more thoroughly.
925
9262007-08-04  Complication
927    * Lower the threshold between the K and L bandwidth class,
928      so that K is now < 12 KB/s, instead of <= 16 KB/s.
929      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
930      participate in routing, if they keep the default share percentage.
931
9322007-07-16  zzz
933    * i2psnark: Add tooltip info for choked/uninterested
934
9352007-07-16  zzz
936    * Make selection of graphed data configurable via configstats.jsp,
937      remove most of the default graphs to save some memory
938
9392007-07-15  zzz
940    * Add current values to graph legends
941    * Fix up previous Rate fix to check for divide by zero
942
9432007-07-14  Complication
944    * Take the post-download routerInfo size check back out of ReseedHandler,
945      since it wasn't helpful, and a lower limit caused false warnings.
946    * Give EepGet ability to enforce a min/max HTTP response size.
947    * Enforce a maximum response size of 8 MB when ReseedHandler
948      downloads into a ByteArrayOutputStream.
949    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
950      change invocation from RouterConsoleRunner accordingly.
951    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
952      provide status reports to indicate the progress of reseeding.
953    * Enable icon for default eepsite, and the index page
954      of the router console (more later).
955
9562007-07-14  zzz
957    * Clean up graphs.jsp - set K=1024 where appropriate,
958      output image sizes in html, catch ooms, other minor tweaks
959    * Fix current event count truncation which fixes graphs with low
960      60-sec event counts displaying high values
961      (bw.* and router.* graphs for example were 1.5x too high)
962      Affects all "events per period" (non-lifetime) counts.
963
9642007-07-09  zzz
965    * i2psnark: give a better error message for a non-i2p torrent
966
9672007-07-07  zzz
968    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
969      SSU will notify/restart NTCP when the external address changes.
970      Now you can enable inbound TCP without a static IP or dyndns service.
971
9722007-07-04  zzz
973    * Display calculated share bandwidth and remove load testing
974      on config.jsp
975
9762007-07-01  zzz
977    * Replace broken option i2np.udp.alwaysPreferred with
978      i2np.udp.preferred and adjust UDP bids; possible settings are
979      "false" (default), "true", and "always".
980      Default setting results in same behavior as before
981      (NTCP is preferred unless it isn't established and UDP is established).
982      Use to compare NTCP and UDP transports.
983
9842007-06-27  jrandom
985    * fix for a streaming lib bug that could leave a thread waiting
986      indefinitely (thanks Complication!)
987
9882007-06-16  Complication
989    * First pass on EepGet and ReseedHandler improvements,
990      please avoid use on routers which matter!
991    * Give EepGet ability of downloading into an OutputStream,
992      such as the ByteArrayOutputStream of ReseedHandler.
993    * Detect failure to reseed better, report it persistently
994      and more verbosely, provide a link to logs
995      and suggest manual reseed.
996
9972007-05-06  Complication
998    * Fix the build.xml file, so the preppkg build target won't try copying files
999      which became deprecated with the old Syndie (thanks for alerting, itsu!)
1000
10012007-03-31  zzz
1002    * Add trevorreznik jump server to the http proxy error page
1003    * Add anonymity to the trackers supporting details links in i2psnark
1004
10052007-03-24  zzz
1006    * Remove Syndie from build targets and navbar
1007
10082007-03-22  zzz
1009    * i2psnark tracker handling tweaks:
1010    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
1011    -   Add Base URL to tracker list configuration
1012    -   Web page links built from tracker list Base URLs
1013    -   Only build and sort tracker list once
1014    -   Add anonymityWeb tracker to default list
1015    -   Add tooltip info for TrackerErrs
1016    -   Stop torrent if not registered with tracker
1017    -   Mark temp files as delete on exit
1018
10192007-03-18  zzz
1020    * i2psnark: Cleanup some handling of saved partial pieces
1021    * i2psnark: Put bit counting in Bitfield.java for efficiency
1022    * i2psnark: Save torrent completion state in i2psnark.config
1023
1024* 2007-03-17  0.6.1.28 released
1025
10262007-03-13  zzz
1027    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
1028
10292007-03-12  jrandom
1030    * dodge a race on startup (thanks zzz!)
1031
10322007-03-10  zzz
1033    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
1034      (RFC 2988) to reduce early RTO values
1035
10362007-03-08  zzz
1037    * i2psnark changes to improve upload performance:
1038    *  Implement total uploader limit (10)
1039    *  Don't timeout non-piece messages out
1040    *  Change chunk size to 32K (was 64K)
1041    *  Change request limit to 64K (was 256K)
1042    * i2psnark: Disconnect from seeds when complete
1043
10442007-03-07  zzz
1045    * Remove dynamic router keys from config.jsp
1046
10472007-03-07  zzz
1048    * Streaming lib changes to improve upstream performance during congestion:
1049    *   Change min window size from 12 to 1
1050    *   Change max timeout from 10 to 45 sec
1051    *   Change initial timeout from 10 to 15 sec
1052    *   Change intial window size for i2psnark from 12 to 1
1053    *   Change slow start growth rate for i2psnark from 1/2 to 1
1054
10552007-03-04  zzz
1056    * Update eepsite_index.html
1057
10582007-03-03  zzz
1059    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
1060    * Add a updaterWithJetty build target
1061
10622007-03-03  zzz
1063    * Implement priority sending for NTCP
1064    * Disable trimForOverload() in tunnel BuildExecutor which
1065      was preventing tunnel builds when outbound traffic was high
1066      (i.e. most of the time when running i2psnark)
1067
10682007-02-28  zzz
1069    * i2psnark: File reopen cleanup
1070
10712007-02-28  zzz
1072    * i2psnark: Add peer details to web page
1073
1074* 2007-02-15  0.6.1.27 released
1075
10762007-02-15  jrandom
1077    * Limit the whispering floodfill sends to at most 3 randomly
1078      chosen from the known floodfill peers
1079
10802007-02-14  jrandom
1081    * Don't filter out KICK and H(ide oper status) IRC messages
1082      (thanks Takk and postman!)
1083
10842007-02-13  jrandom
1085    * Tell our peers about who we know in the floodfill netDb every
1086      6 hours or so, mitigating the situation where peers lose track
1087      of floodfill routers.
1088    * Disable the Syndie updater (people should use the new Syndie,
1089      not this one)
1090    * Disable the eepsite tunnel by default
1091
10922007-01-30  zzz
1093    * i2psnark: Don't hold _snarks lock while checking a snark,
1094      so web page is responsive at startup
1095
10962007-01-29  zzz
1097    * i2psnark: Add NickyB tracker
1098
10992007-01-28  zzz
1100    * i2psnark: Don't hold sendQueue lock while flushing output,
1101      to make everything run smoother
1102
11032007-01-27  zzz
1104    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
1105
11062007-01-20  Complication
1107    * Drop overlooked comment
1108
11092007-01-20  Complication
1110    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
1111      instead of System, so setting a reseed URL in advanced configuration has effect.
1112    * Clean out obsolete reseed code from ConfigNetHandler.
1113
11142007-01-20  zzz
1115    * i2psnark: More choking rotation tweaks
1116    * Improve performance by not reading in the whole
1117      piece from disk for each request. A huge memory savings
1118      on 1MB torrents with many peers.
1119
11202007-01-17  zzz
1121    * Add new HTTP Proxy error message for non-http protocols
1122
11232007-01-17  zzz
1124    * Add note on Syndie index.html steering people to new Syndie
1125
11262007-01-16  zzz
1127    * i2psnark: Fix crash when autostart off and
1128      tcrrent started manually
1129
11302007-01-16  zzz
1131    * i2psnark: Fix bug caused by last i2psnark checkin
1132      (ConnectionAcceptor not started)
1133    * Don't start PeerCoordinator, ConnectionAcceptor,
1134      and TrackerClient unless starting torrent
1135
11362007-01-15  jrandom
1137    * small guard against unnecessary streaming lib reset packets
1138      (thanks Complication!)
1139
11402007-01-15  zzz
1141    * i2psnark: Add 'Stop All' link on web page
1142    * Add some links to trackers and forum on web page
1143    * Don't start tunnel if 'Autostart' unchecked
1144    * Fix torrent restart bug by reopening file descriptors
1145
11462007-01-14  zzz
1147    * i2psnark: Improvements for torrents with > 4 leechers:
1148      choke based on upload rate when seeding, and
1149      be smarter and fairer about rotating choked peers.
1150    * Handle two common i2psnark OOM situations rather
1151      than shutting down the whole thing.
1152    * Fix reporting to tracker of remaining bytes for
1153      torrents > 4GB (but ByteMonsoon still has a bug)
1154
11552006-10-29  zzz
1156    * i2psnark: Fix and enable generation of multifile torrents,
1157      print error if no tracker selected at create-torrent,
1158      fix stopping a torrent that hasn't started successfully,
1159      add eBook and GayTorrents trackers to form,
1160      web page formatting tweaks
1161
1162* 2006-10-10  0.6.1.26 released
1163
11642006-10-29  Complication
1165    * Ensure we get NTP samples from more diverse sources
1166      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1167    * Discard median-based peer skew calculator as framed average works,
1168      and adjusting its percentage can make it behave median-like
1169    * Require more data points (from at least 20 peers)
1170      before considering a peer skew measurement reliable
1171
11722006-10-10  jrandom
1173    * Removed the status display from the console, as its more confusing
1174      than informative (though the content is still displayed in the HTML)
1175
11762006-10-08  Complication
1177    * Add a framed average peer clock skew calculator
1178    * Add config property "router.clockOffsetSanityCheck" to determine
1179      if NTP-suggested clock offsets get sanity checked (default "true")
1180    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1181      by more than 5 seconds, or make it more than 20 seconds total
1182    * Decrease log level in getMedianPeerClockSkew()
1183
11842006-09-29  zzz
1185    * i2psnark: Second try at synchronization fix - synch addRequest()
1186      completely rather than just portions of it and requestNextPiece()
1187
11882006-09-27  jrandom
1189    * added HMAC-SHA256
1190    * properly use CRLF with EepPost
1191    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1192    * PBE session key generation (with 1000 rounds of SHA256)
1193    * misc SDK helper functions
1194
11952006-09-26  Complication
1196    * Take back another inadverent logging change in NTCPConnection
1197
11982006-09-26  Complication
1199    * Take back an accidental log level change
1200
12012006-09-26  Complication
1202    * Subclass from Clock a RouterClock which can access router transports,
1203      with the goal of developing it to second-guess NTP results
1204    * Make transports report clock skew in seconds
1205    * Adjust renderStatusHTML() methods accordingly
1206    * Show average for NTCP clock skews too
1207    * Give transports a getClockSkews() method to report clock skews
1208    * Give transport manager a getClockSkews() method to aggregate results
1209    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1210      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1211    * Extra explicitness in NTCP classes to denote unit of time.
1212    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1213
12142006-09-25  zzz
1215    * i2psnark: Paranoid copy before writing pieces,
1216      recheck files on completion, redownload bad pieces
1217    * i2psnark: Don't contact tracker as often when seeding
1218
12192006-09-24  zzz
1220    * i2psnark: Add some synchronization to prevent rare problem
1221      after restoring orphan piece
1222
12232006-09-20  zzz
1224    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1225      rapid choke/unchokes
1226    * i2psnark: Truncate long TrackerErr messages on web page
1227
12282006-09-16  zzz
1229    * i2psnark: Implement retransmission of requests. This
1230      eliminates one cause of complete stalls with a peer.
1231      This problem is common on torrents with a small number of
1232      active peers where there are no choke/unchokes to kickstart things.
1233
12342006-09-13  zzz
1235    * i2psnark: Fix restoral of partial pieces broken by last patch
1236
12372006-09-13  zzz
1238    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1239      preventing premature end game
1240    * i2psnark: Randomize selection of next piece during end game
1241    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1242    * i2psnark: strip ".torrent" on web page
1243    * i2psnark: Limit piece size in generated torrent to 1MB max
1244
12452006-09-09  zzz
1246    * i2psnark: Add "Stalled" indication and stat totals on web page
1247
12482006-09-09  zzz
1249    * i2psnark: Fix bug where new peers would always be sent an "interested"
1250      regardless of actual interest
1251    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1252      memory and efficiency problems
1253
1254* 2006-09-09  0.6.1.25 released
1255
12562006-09-08  jrandom
1257    * Tweak the PRNG logging so it only displays error messages if there are
1258      problems
1259    * Disable dynamic router keys for the time being, as they don't offer
1260      meaningful security, may hurt the router, and makes it harder to
1261      determine the network health.  The code to restart on SSU IP change is
1262      still enabled however.
1263    * Disable tunnel load testing, leaning back on the tiered selection for
1264      the time being.
1265    * Spattering of bugfixes
1266
12672006-09-07  zzz
1268    * i2psnark: Increase output timeout from 2 min to 4 min
1269    * i2psnark: Orphan debug msg cleanup
1270    * i2psnark: More web rate report cleanup
1271
12722006-09-05  zzz
1273    * i2psnark: Implement basic partial-piece saves across connections
1274    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1275      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1276      code in i2psnark ineffective. Will have to research why there is transmit but
1277      not receive inactivity code. With the current connection limit of 24 peers
1278      we aren't in any danger of keeping out new peers by keeping inactive ones.
1279    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1280    * i2psnark: Fix dropped chunk handling
1281    * i2psnark: Web rate report cleanup
1282
12832006-09-04  zzz
1284    * i2psnark: Report cleared trackerErr immediately
1285    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1286    * i2psnark: Set up new connections more quickly
1287    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1288    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1289
12902006-09-04  zzz
1291    * Enable pipelining in i2psnark
1292    * Make i2psnark tunnel default be 1 + 0-1
1293
12942006-09-03  zzz
1295    * Add rate reporting to i2psnark
1296
12972006-09-03  Complication
1298    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1299    * Print messages about addressbook size to give better overview
1300    * Enable delete function in published addressbook
1301
13022006-08-21  Complication
1303    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1304
13052006-08-03  jrandom
1306    * Decrease the recently modified tunnel building timeout, though keep
1307      the scaling on their processing
1308
13092006-07-31  jrandom
1310    * Increase the tunnel building timeout
1311    * Avoid a rare race (thanks bar!)
1312    * Fix the bandwidth capacity publishing code to factor in share percentage
1313      and outbound throttling (oops)
1314
13152006-07-29  Complication
1316    * Treat NTP responses from unexpected stratums like failures
1317
1318* 2006-07-28  0.6.1.24 released
1319
13202006-07-28  jrandom
1321    * Don't try to reverify too many netDb entries at once (thanks
1322      cervantes and Complication!)
1323
13242006-07-28  jrandom
1325    * Actually fix the threading deadlock issue in the netDb (removing
1326      the synchronized access to individual kbuckets while validating
1327      individual entries) (thanks cervantes, postman, frosk, et al!)
1328
1329* 2006-07-27  0.6.1.23 released
1330
13312006-07-27  jrandom
1332    * Cut down NTCP connection establishments once we know the peer is skewed
1333      (rather than wait for full establishment before verifying)
1334    * Removed a lock on the stats framework when accessing rates, which
1335      shouldn't be a problem, assuming rates are created (pretty much) all at
1336      once and merely updated during the lifetime of the jvm.
1337
13382006-07-27  jrandom
1339    * Further NTCP write status cleanup
1340    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1341
13422006-07-26  jrandom
1343    * When dropping a netDb router reference, only accept newer
1344      references as part of the update check
1345    * If we have been up for a while, don't accept really old
1346      router references (published 2 or more days ago)
1347    * Drop router references once they are no longer valid, even if
1348      they were allowed in due to the lax restrictions on startup
1349
13502006-07-26  jrandom
1351    * Every time we create a new router identity, add an entry to the
1352      new "identlog.txt" text file in the I2P install directory.  For
1353      debugging purposes, publish the count of how many identities the
1354      router has cycled through, though not the identities itself.
1355    * Cleaned up the way the multitransport shitlisting worked, and
1356      added per-transport shitlists
1357    * When dropping a router reference locally, first fire a netDb
1358      lookup for the entry
1359    * Take the peer selection filters into account when organizing the
1360      profiles (thanks Complication!)
1361    * Avoid some obvious configuration errors for the NTCP transport
1362      (invalid ports, "null" ip, etc)
1363    * Deal with some small NTCP bugs found in the wild (unresolveable
1364      hosts, strange network discons, etc)
1365    * Send our netDb info to peers we have direct NTCP connections to
1366      after each 6-12 hours of connection uptime
1367    * Clean up the NTCP reading and writing queue logic to avoid some
1368      potential delays
1369    * Allow people to specify the IP that the SSU transport binds on
1370      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1371
1372* 2006-07-18  0.6.1.22 released
1373
13742006-07-18  jrandom
1375    * Add a failsafe to the NTCP transport to make sure we keep
1376      pumping writes when we should.
1377    * Properly reallow 16-32KBps routers in the default config
1378      (thanks Complication!)
1379
13802006-07-16  Complication
1381    * Collect tunnel build agree/reject/expire statistics
1382      for each bandwidth tier of peers (and peers of unknown tiers,
1383      even if those shouldn't exist)
1384
13852006-07-14  jrandom
1386    * Improve the multitransport shitlisting (thanks Complication!)
1387    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1388      the default configuration (thanks for the stats Complication!)
1389    * Properly allow older router references to load on startup
1390      (thanks bar, Complication, et al!)
1391    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1392      hopefully today's changes should make this unnecessary (thanks void!)
1393    * Improved NTCP buffering
1394    * Close NTCP connections if we are too backlogged when writing to them
1395
13962006-07-04  jrandom
1397    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1398      connections only.  Those who configure their NAT/firewall to allow
1399      inbound connections and specify the external host and port
1400      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1401      SSU is still enabled for use by default for all users as a fallback.
1402    * Substantial bugfix to the tunnel gateway processing to transfer
1403      messages sequentially instead of interleaved
1404    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1405      GNU/Classpath based JVMs
1406    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1407      refill with a background thread to refill the output buffer
1408    * Add per-transport support for the shitlist
1409    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1410      contention
1411
14122006-07-01  Complication
1413    * Ensure that the I2PTunnel web interface won't update tunnel settings
1414      for shared clients when a non-shared client is modified
1415      (thanks for spotting, BarkerJr!)
1416
14172006-06-14  cervantes
1418    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1419      that use Bitstream Vera fonts @ 96 dpi
1420
1421* 2006-06-14  0.6.1.21 released
1422
14232006-06-13  jrandom
1424    * Use a minimum uptime of 2 hours, not 4 (oops)
1425
14262006-06-13  jrandom
1427    * Cut down the proactive rejections due to queue size - if we are
1428      at the point of having decrypted the request off the queue, might
1429      as well let it through, rather than waste that decryption
1430
14312006-06-11  Kloug
1432    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1433      outstanding pings/pongs
1434
14352006-06-10  jrandom
1436    * Further reduction in proactive rejections
1437
14382006-06-09  jrandom
1439    * Don't let the pending tunnel request queue grow beyond reason
1440      (letting things sit for up to 30s when they fail after 10s
1441      seems a bit... off)
1442
14432006-06-08  jrandom
1444    * Be more conservative in the proactive rejections
1445
14462006-06-04  Complication
1447    * Trim out sending a blank line before USER in susimail.
1448      Seemed to break in rare cases, thanks for reporting, Brachtus!
1449
1450* 2006-06-04  0.6.1.20 released
1451
14522006-06-04  jrandom
1453    * Reduce the SSU ack frequency
1454    * Tweaked the tunnel rejection settings to reject less aggressively
1455
14562006-05-31  jrandom
1457    * Only send netDb searches to the floodfill peers for the time being
1458    * Add some proof of concept filters for tunnel participation.  By default,
1459      it will skip peers with an advertised bandwith of less than 32KBps or
1460      an advertised uptime of less than 2 hours.  If this is sufficient, a
1461      safer implementation of these filters will be implemented.
1462
1463* 2006-05-18  0.6.1.19 released
1464
14652006-05-18  jrandom
1466    * Made the SSU ACKs less frequent when possible
1467
14682006-05-17  Complication
1469    * Fix some oversights in my previous changes:
1470      adjust some loglevels, make a few statements less wasteful,
1471      make one comparison less confusing and more likely to log unexpected values
1472
14732006-05-17  jrandom
1474    * Make the peer page sortable
1475    * SSU modifications to cut down on unnecessary connection failures
1476
14772006-05-16  jrandom
1478    * Further shitlist randomizations
1479    * Adjust the stats monitored for detecting cpu overload when dropping new
1480      tunnel requests
1481
14822006-05-15  jrandom
1483    * Add a load dependent throttle on the pending inbound tunnel request
1484      backlog
1485    * Increased the tunnel test failure slack before killing a tunnel
1486
14872006-05-13  Complication
1488    * Separate growth factors for tunnel count and tunnel test time
1489    * Reduce growth factors, so probabalistic throttle would activate
1490    * Square probAccept values to decelerate stronger when far from average
1491    * Create a bandwidth stat with approximately 15-second half life
1492    * Make allowTunnel() check the 1-second bandwidth for overload
1493      before doing allowance calculations using 15-second bandwidth
1494    * Tweak the overload detector in BuildExecutor to be more sensitive
1495      for rising edges, add ability to initiate tunnel drops
1496    * Add a function to seek and drop the highest-rate participating tunnel,
1497      keeping a fixed+random grace period between such drops.
1498      It doesn't seem very effective, so disabled by default
1499      ("router.dropTunnelsOnOverload=true" to enable)
1500
15012006-05-11  jrandom
1502    * PRNG bugfix (thanks cervantes and Complication!)
1503
1504* 2006-05-09  0.6.1.18 released
1505
15062006-05-09  jrandom
1507    * Further tunnel creation timeout revamp
1508
15092006-05-07  Complication
1510    * Fix problem whereby repeated calls to allowed() would make
1511      the 1-tunnel exception permit more than one concurrent build
1512
15132006-05-06  jrandom
1514    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1515      while tracking the extended timeout events.
1516
15172006-05-04  jrandom
1518    * Short circuit a highly congested part of the stat logging unless its
1519      required (may or may not help with a synchronization issue reported by
1520      andreas)
1521
15222006-05-03  Complication
1523    * Allow a single build attempt to proceed despite 1-minute overload
1524      only if the 1-second rate shows enough spare bandwidth
1525      (e.g. overload has already eased)
1526
15272006-05-02  Complication
1528    * Correct a misnamed property in SummaryHelper.java
1529      to avoid confusion
1530    * Make the maximum allowance of our own concurrent
1531      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1532      within the fixed range 2..10
1533    * While overloaded, try to avoid completely choking our own build attempts,
1534      instead prefer limiting them to 1
1535
15362006-05-01  jrandom
1537    * Adjust the tunnel build timeouts to cut down on expirations, and
1538      increased the SSU connection establishment retransmission rate to
1539      something less glacial.
1540    * For the first 5 minutes of uptime, be less aggressive with tunnel
1541      exploration, opting for more reliable peers to start with.
1542
15432006-05-01  jrandom
1544    * Fix for a netDb lookup race (thanks cervantes!)
1545
15462006-04-27  jrandom
1547    * Avoid a race in the message reply registry (thanks cervantes!)
1548
15492006-04-27  jrandom
1550    * Fixed the tunnel expiration desync code (thanks Complication!)
1551
1552* 2006-04-23  0.6.1.17 released
1553
15542006-04-19  jrandom
1555    * Adjust how we pick high capacity peers to allow the inclusion of fast
1556      peers (the previous filter assumed an old usage pattern)
1557    * New set of stats to help track per-packet-type bandwidth usage better
1558    * Cut out the proactive tail drop from the SSU transport, for now
1559    * Reduce the frequency of tunnel build attempts while we're saturated
1560    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1561
1562* 2006-04-15  0.6.1.16 released
1563
15642006-04-15  jrandom
1565    * Adjust the proactive tunnel request dropping so we will reject what we
1566      can instead of dropping so much (but still dropping if we get too far
1567      overloaded)
1568
15692006-04-14  jrandom
1570    * 0 isn't very random
1571    * Adjust the tunnel drop to be more reasonable
1572
15732006-04-14  jrandom
1574    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1575    * Made the bw-related tunnel join throttle much simpler
1576
15772006-04-14  jrandom
1578    * Make some more stats graphable, and allow some internal tweaking on the
1579      tunnel pairing for creation and testing.
1580
1581* 2006-04-13  0.6.1.15 released
1582
15832006-04-12  jrandom
1584    * Added a further failsafe against trying to queue up too many messages to
1585      a peer.
1586
15872006-04-12  jrandom
1588    * Watch out for failed syndie index fetches (thanks bar!)
1589
15902006-04-11  jrandom
1591    * Throttling improvements on SSU - throttle all transmissions to a peer
1592      when we are retransmitting, not just retransmissions.  Also, if
1593      we're already retransmitting to a peer, probabalistically tail drop new
1594      messages targetting that peer, based on the estimated wait time before
1595      transmission.
1596    * Fixed the rounding error in the inbound tunnel drop probability.
1597
15982006-04-10  jrandom
1599    * Include a combined send/receive graph (good idea cervantes!)
1600    * Proactively drop inbound tunnel requests probabalistically as the
1601      estimated queue time approaches our limit, rather than letting them all
1602      through up to that limit.
1603
16042006-04-08  jrandom
1605    * Stat summarization fix (removing the occational holes in the jrobin
1606      graphs)
1607
16082006-04-08  jrandom
1609    * Process inbound tunnel requests more efficiently
1610    * Proactively drop inbound tunnel requests if the queue before we'd
1611      process it in is too long (dynamically adjusted by cpu load)
1612    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1613      proactively drop too many requests.
1614    * Display the number of pending inbound tunnel join requests on the router
1615      console (as the "handle backlog")
1616    * Include a few more stats in the default set of graphs
1617
16182006-04-06  jrandom
1619    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1620
16212006-04-06  jrandom
1622    * Fixed a typo in the reply cleanup code
1623
1624* 2006-04-05  0.6.1.14 released
1625
16262006-04-05  jrandom
1627    * Cut down on the time that we allow a tunnel creation request to sit by
1628      without response, and reject tunnel creation requests that are lagged
1629      locally.  Also switch to a bounded FIFO instead of a LIFO
1630    * Threading tweaks for the message handling (thanks bar!)
1631    * Don't add addresses to syndie with blank names (thanks Complication!)
1632    * Further ban clearance
1633
16342006-04-05  jrandom
1635    * Fix during the ssu handshake to avoid an unnecessary failure on
1636      packet retransmission (thanks ripple!)
1637    * Fix during the SSU handshake to use the negotiated session key asap,
1638      rather than using the intro key for more than we should (thanks ripple!)
1639    * Fixes to the message reply registry (thanks Complication!)
1640    * More comprehensive syndie banning (for repeated pushes)
1641    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1642      testing purposes
1643    * Put a floor back on the capacity threshold, so too many failing peers
1644      won't cause us to pick very bad peers (unless we have very few good
1645      ones)
1646    * Bugfix to cut down on peers using introducers unneessarily (thanks
1647      Complication!)
1648    * Reduced the default streaming lib message size to fit into a single
1649      tunnel message, rather than require 5 tunnel messages to be transferred
1650      without loss before recomposition.  This reduces throughput, but should
1651      increase reliability, at least for the time being.
1652    * Misc small bugfixes in the router (thanks all!)
1653    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1654
16552006-04-01  jrandom
1656    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1657    * Filter the IRC ping/pong messages, as some clients send unsafe
1658      information in them (thanks aardvax and dust!)
1659
16602006-03-30  jrandom
1661    * Substantially reduced the lock contention in the message registry (a
1662      major hotspot that can choke most threads).  Also reworked the locking
1663      so we don't need per-message timer events
1664    * No need to have additional per-peer message clearing, as they are
1665      either unregistered individually or expired.
1666    * Include some of the more transient tunnel throttling
1667
1668* 2006-03-26  0.6.1.13 released
1669
16702006-03-25  jrandom
1671    * Added a simple purge and ban of syndie authors, shown as the
1672      "Purge and ban" button on the addressbook for authors that are already
1673      on the ignore list.  All of their entries and metadata are deleted from
1674      the archive, and the are transparently filtered from any remote
1675      syndication (so no user on the syndie instance will pull any new posts
1676      from them)
1677    * More strict tunnel join throtting when congested
1678
16792006-03-24  jrandom
1680    * Try to desync tunnel building near startup (thanks Complication!)
1681    * If we are highly congested, fall back on only querying the floodfill
1682      netDb peers, and only storing to those peers too
1683    * Cleaned up the floodfill-only queries
1684
16852006-03-21  jrandom
1686    * Avoid a very strange (unconfirmed) bug that people using the systray's
1687      browser picker dialog could cause by disabling the GUI-based browser
1688      picker.
1689    * Cut down on subsequent streaming lib reset packets transmitted
1690    * Use a larger MTU more often
1691    * Allow netDb searches to query shitlisted peers, as the queries are
1692      indirect.
1693    * Add an option to disable non-floodfill netDb searches (non-floodfill
1694      searches are used by default, but can be disabled by adding
1695      netDb.floodfillOnly=true to the advanced config)
1696
16972006-03-20  jrandom
1698    * Fix to allow for some slack when coalescing stats
1699    * Workaround some oddball errors
1700
17012006-03-18  jrandom
1702    * Added a new graphs.jsp page to show all of the stats being harvested
1703
17042006-03-18  jrandom
1705    * Made the netDb search load limitations a little less stringent
1706    * Add support for specifying the number of periods to be plotted on the
1707      graphs - e.g. to plot only the last hour of a stat that is averaged at
1708      the 60 second period, add &periodCount=60
1709
17102006-03-17  jrandom
1711    * Add support for graphing the event count as well as the average stat
1712      value (done by adding &showEvents=true to the URL).  Also supports
1713      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1714      the title (&hideTitle=true).
1715    * Removed an unnecessary arbitrary filter on the profile organizer so we
1716      can pick high capacity and fast peers more appropriately
1717
17182006-03-16  jrandom
1719    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1720      console.  Selected stats can be harvested automatically and fed into
1721      in-memory RRD databases, and those databases can be served up either as
1722      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1723      details).  A base set of stats are harvested by default, but an
1724      alternate list can be specified by setting the 'stat.summaries' list on
1725      the advanced config.  For instance:
1726      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1727    * HTML tweaking for the general config page (thanks void!)
1728    * Odd NPE fix (thanks Complication!)
1729
17302006-03-15  Complication
1731    * Trim out an old, inactive IP second-guessing method
1732      (thanks for spotting, Anonymous!)
1733
17342006-03-15  jrandom
1735    * Further stat cleanup
1736    * Keep track of how many peers we are actively trying to communicate with,
1737      beyond those who are just trying to communicate with us.
1738    * Further router tunnel participation throttle revisions to avoid spurious
1739      rejections
1740    * Rate stat display cleanup (thanks ripple!)
1741    * Don't even try to send messages that have been queued too long
1742
17432006-03-05  zzz
1744    * Remove the +++--- from the logs on i2psnark startup
1745
17462006-03-05  jrandom
1747    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1748    * Give netDb lookups to floodfill peers more time, as they are much more
1749      likely to succeed (thereby cutting down on the unnecessary netDb
1750      searches outside the floodfill set)
1751    * Fix to the SSU IP detection code so we won't use introducers when we
1752      don't need them (thanks Complication!)
1753    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1754      peers given to it
1755    * Don't let netDb searches wander across too many peers
1756    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1757      as its too volatile to have much meaning.
1758    * Don't bork if a Syndie post is missing an entry.sml
1759
17602006-03-05  Complication
1761    * Reduce exposed statistical information,
1762      to make build and uptime tracking more expensive
1763
17642006-03-04  Complication
1765    * Fix the announce URL of orion's tracker in Snark sources
1766
17672006-03-03  Complication
1768    * Explicit check for an index out of bounds exception while parsing
1769      an inbound IRC command (implicit check was there already)
1770
17712006-03-01  jrandom
1772    * More aggressive tunnel throttling as we approach our bandwidth limit,
1773      and throttle based off periods wider than 1 second.
1774    * Included Doubtful Salmon's syndie stylings (thanks!)
1775
17762006-02-27  zzz
1777    * Update error page templates to add \r, Connection: close, and
1778      Proxy-connection: close to headers.
1779
1780* 2006-02-27  0.6.1.12 released
1781
17822006-02-27  jrandom
1783    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1784      machines, rather than the generic jbigi (until we have an athlon64
1785      optimized version)
1786
17872006-02-26  jrandom
1788    * Switch from the bouncycastle to the gnu-crypto implementation for
1789      SHA256, as benchmarks show a 10-30% speedup.
1790    * Removed some unnecessary object caches
1791    * Don't close i2psnark streams prematurely
1792
17932006-02-25  jrandom
1794    * Made the Syndie permalinks in the thread view point to the blog view
1795    * Disabled TCP again (since the live net seems to be doing well w/out it)
1796    * Fix the message time on inbound SSU establishment (thanks zzz!)
1797    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1798      just starts up
1799
18002006-02-24  jrandom
1801    * Rounding calculation cleanup in the stats, and avoid an uncontested
1802      mutex (thanks ripple!)
1803    * SSU handshake cleanup to help force incompatible peers to stop nagging
1804      us by both not giving them an updated reference to us and by dropping
1805      future handshake packets from them.
1806
18072006-02-23  jrandom
1808    * Increase the SSU retransmit ceiling (for slow links)
1809    * Estimate the sender's SSU MTU (to help see if we agree)
1810
18112006-02-22  jrandom
1812    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1813    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1814      links
1815    * Further class validator refactorings
1816
18172006-02-22  jrandom
1818    * Handle a rare race under high bandwidth situations in the SSU transport
1819    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1820
18212006-02-21  Complication
1822    * Reactivate TCP tranport by default, in addition to re-allowing
1823
1824* 2006-02-21  0.6.1.11 released
1825
18262006-02-21  jrandom
1827    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1828      heap when backlogged (and so that the messages queued up on it don't sit
1829      there forever)
1830    * Further SSU memory cleanup
1831    * Clean up the address regeneration code so it knows when to rebuild the
1832      local info more precisely.
1833
18342006-02-20  jrandom
1835    * Properly enable TCP this time (oops)
1836    * Deal with multiple form handlers on the same page in the console without
1837      being too annoying (thanks blubb and bd_!)
1838
18392006-02-20  jrandom
1840    * Reenable the TCP transport as a fallback (we'll continue to muck with
1841      debugging SSU-only elsewhere)
1842
18432006-02-20  jrandom
1844    * Major SSU and router tuning to reduce contention, memory usage, and GC
1845      churn.  There are still issues to be worked out, but this should be a
1846      substantial improvement.
1847    * Modified the optional netDb harvester task to support choosing whether
1848      to use (non-anonymous) direct connections or (anonymous) exploratory
1849      tunnels to do the harvesting.  Harvesting itself is enabled via the
1850      advanced config "netDb.shouldHarvest=true" (default is false) and the
1851      connection type can be chosen via "netDb.harvestDirectly=false" (default
1852      is false).
1853
18542006-02-19  dust
1855    * Added pruning of suckers history (it used to grow indefinitely).
1856
18572006-02-19  jrandom
1858    * Moved the current net's reseed URL to a different location than where
1859      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1860    * More aggressively expire inbound messages (on receive, not just on send)
1861    * Add in a hook for breaking backwards compatibility in the SSU wire
1862      protocol directly by including a version as part of the handshake.  The
1863      version is currently set to 0, however, so the wire protocol from this
1864      build is compatible with all earlier SSU implementations.
1865    * Increased the number of complete message readers, cutting down
1866      substantially on the delay processing inbound messages.
1867    * Delete the message history file on startup
1868    * Reworked the restart/shutdown display on the console (thanks bd_!)
1869
18702006-02-18  jrandom
1871    * Migrate the outbound packets from a central component to the individual
1872      per-peer components, substantially cutting down on lock contention when
1873      dealing with higher degrees.
1874    * Load balance the outbound SSU transfers evenly across peers, rather than
1875      across messages (so peers with few messages won't be starved by peers
1876      with many).
1877    * Reduce the frequency of router info rebuilds (thanks bar!)
1878
18792006-02-18  jrandom
1880    * Add a new AIMD throttle in SSU to control the number of concurrent
1881      messages being sent to a given peer, in addition to the throttle on the
1882      number of concurrent bytes to that peer.
1883    * Adjust the existing SSU outbound queue to throttle based on the queue's
1884      lag, not an arbitrary number of packets.
1885
18862006-02-17  jrandom
1887    * Properly fix the build request queue throttling, using queue age to
1888      detect congestion, rather than queue size.
1889
18902006-02-17  jrandom
1891    * Disable the message history log file by default (duh - feel free to
1892      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1893    * Limit the size of the inbound tunnel build request queue so we don't
1894      get an insane backlog of requests that we're bound to reject, and adjust
1895      the queue processing so we keep on churning through them when we've got
1896      a backlog.
1897    * Small fixes for the multiuser syndie operation (thanks Complication!)
1898    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1899      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1900
1901* 2006-02-16  0.6.1.10 released
1902
19032006-02-16  jrandom
1904    * Add a new toggle to the web config to enable/disable the load testing
1905
19062006-02-16  jrandom
1907    * Dropped much of the abandonware from the apps/ directory
1908
19092006-02-16  jrandom
1910    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1911    * Initial sucker refactoring to simplify reuse of the html parsing
1912    * Beginnings of hooks to push imported rss/atom out to remote syndie
1913      archives automatically (though not enabled currently)
1914    * Further SSU peer test cleanup
1915
19162006-02-15  jrandom
1917    * Add in per-blog RSS feeds to Syndie
1918    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1919      with the posts, marking additional attachments as Media RSS enclosures
1920      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1921      per item.
1922    * Don't allow the default syndie user to be set to something invalid if
1923      its in single user mode.
1924
19252006-02-15  jrandom
1926    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1927      longer backwards compatible (and should not be used until 0.6.1.1 is
1928      out)
1929
19302006-02-14  jrandom
1931    * Syndie ui bugfixes (thanks all!)
1932
19332006-02-13  jrandom
1934    * Use the current directory for some temporary I2PSnark files, rather than
1935      the OS default temp dir (thanks anon!)
1936    * Increase the base streaming lib window size (still shrinks to 1 on
1937      retransmission though, of course)
1938    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1939    * Implement fast retransmit in the streaming lib (fires at most once per
1940      packet), and increased the default ack delay to 2 seconds (from .5s)
1941    * Don't ask for garlic level message acks for end to end messages unless
1942      they're useful (e.g. to ack session tags)
1943
19442006-02-12  cervantes
1945    * Use a different santisation method for some SML attributes
1946    * Make router console update config save button actually save.
1947    * Fix console bandwidth limiter burst rate dropdowns, so the display
1948      relates to what is saved in the config.
1949   
19502006-02-12  cervantes
1951    * SML is now stricter in it's formatting (attributes should only use
1952      double quotes instead of being allowed to mix with singles).
1953    * Using apostrophes in SML attributes will no longer invalidate the tag.
1954    * Some instances of [blog] tag description were not being displayed
1955      correctly.
1956
19572006-02-12  jrandom
1958    * Further SSU peer test throttling
1959    * Put the most common router console features on the main index page too
1960
19612006-02-11  jrandom
1962    * Be more careful about SSU peer test floods
1963
19642006-02-09  jrandom
1965    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1966
19672006-02-08  jrandom
1968    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1969      bundled a precompiled libjbigi.so in the jbigi.jar
1970    * Cleaned up the synchronization for some SSU packet handling code
1971    * Allow explicit rejection of more lagged tunnel build requests, rather
1972      than dropping them outright
1973    * Use lighter load testing
1974
19752006-02-07  jrandom
1976    * Handle HTTP headers without any values (thanks Sugadude!)
1977    * Don't show the option to make Syndie multiuser, since very few people
1978      need it, and multiuser mode is a lot more complex to use.  Geeks can
1979      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1980      (or in the router's advanced config, for the embedded Syndie)
1981    * When a peer rejects participation in a tunnel, they mean it (duh)
1982    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1983    * Remove a throttle on the size of the SSU active outbound pool, since
1984      it was essentially arbitrary
1985    * Use a more appropriate SSU bloom filter size
1986    * Don't "proactively" drop SSU connections if we have partially received
1987      inbound messages (duh)
1988    * Migrate most of the message state across SSU connection reestablishment
1989
19902006-02-06  jrandom
1991    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
1992      piggybacked
1993
19942006-02-05  jrandom
1995    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
1996      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
1997      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
1998    * Enable the messageHistory.txt by default, for debugging
1999
20002006-02-05  jrandom
2001    * Substantial bugfix for the duplicate message detection in the transport
2002      layer
2003    * Handle tunnel build responses ASAP, rather than queueing them up to wait
2004      in line (processing them is really fast - just a few AES loops)
2005    * Don't bother handling build requests that we have queued up for a while
2006      locally, as the requestor will have timed it out anyway (perhaps we
2007      should reply regardless, but with a backoff instead?)
2008
20092006-02-04  jrandom
2010    * Further tunnel test cleanup and disabling of the old tunnel creation
2011      code
2012
20132006-02-04  jrandom
2014    * Clean up and reenable the tunnel testing for the new tunnel system.
2015
20162006-02-04  jrandom
2017    * Don't cache the archive.txt in syndie when fetching it through the web
2018      interface.
2019    * Logging updates
2020
20212006-02-03  jrandom
2022    * Added further replay prevention on the tunnel build requests
2023    * More aggressive streaming lib closing on reset
2024
20252006-02-03  jrandom
2026    * More aggressive refusal of peers from the wrong network (oops)
2027
20282006-02-01  jrandom
2029    * Instruct the router to reseed against a new URL, for migration purposes:
2030      http://dev.i2p.net/i2pdb2/
2031    * Aggressive error handling during UDP packet creation (thanks cervantes)
2032
20332006-02-01  jrandom
2034    * Fix the new tunnel creation crypto, including the addition of a 4 byte
2035      "next message ID" to the encrypted request structure in the spec.
2036    * Backwards incompatible change, using the new tunnel creation crypto, the
2037      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
2038      with the old incompatible network).
2039    * Reworked the leaseSet request process to handle a race condition
2040    * Disable the TCP transport
2041    * Run four separate threads on the job queue to cut down on job lag
2042
20432006-01-28  jrandom
2044    * Removed a race that could show up in leaseSet requesting with the new
2045      tunnel building process
2046
20472006-01-25  jrandom
2048    * Run the peer profile coalescing/reorganization outside the job queue
2049      (on one of the timers), to cut down on some job queue congestion.  Also,
2050      trim old profiles while running, not just when starting up.
2051    * Slightly more sane intra-floodfill-node netDb activity (only flood new
2052      entries)
2053    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
2054      source of the bug is not yet addressed)
2055    * Better I2PSnark reconnection handling
2056    * Further cleanup in the new tunnel build process
2057    * Make sure we expire old participants properly
2058    * Remove much of the transient overload throttling (it wasn't using a good
2059      metric)
2060
20612006-01-25  dust
2062    * Fix IRC client proxy to use ISO-8859-1.
2063
20642006-01-22  jrandom
2065    * New tunnel build process - does not use the new crypto or new peer
2066      selection strategies.  However, it does drop the fallback tunnel
2067      procedure, except for tunnels who are configured to allow them, or for
2068      the exploratory pool during bootstrapping or after a catastrophic
2069      failure.  This new process prefers to fail rather than use too-short
2070      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
2071      it may expose more tunnel failures to the user.
2072    * Always prefer normal tunnels to fallback tunnels.
2073    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
2074      bar!)
2075    * Do all of the netDb entry writing in a separate thread, avoiding
2076      duplicates and batching them up.
2077
20782006-01-19  Complication
2079    * Explain better where eepsite's destkey can be found
2080
20812006-01-18  cervantes
2082    * Add title attributes to all external links in Syndie, so we can rollover
2083      and quickly see if it's worth clicking on.
2084    * Fixed a minor compiler warning.
2085
20862006-01-17  jrandom
2087    * First pass of the new tunnel creation crypto, specified in the new
2088      router/doc/tunnel-alt-creation.html (referenced in the current
2089      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
2090      than in the test code, but the code verifies the technical viability, so
2091      further scrutiny would be warranted.
2092
20932006-01-16  cervantes
2094    * Dragged I2P kicking and screaming into 2006 (Oops)
2095
20962006-01-14  cervantes
2097    * Removed entirely misleading memory status from the console summary.
2098       
20992006-01-13  cervantes
2100    * Further Syndie layout hardening and typeface balancing.
2101
2102* 2006-01-12  0.6.1.9 released
2103
21042006-01-12  jrandom
2105    * Only create the loadtest.log if requested to do so (thanks zzz!)
2106    * Make sure we cleanly take into consideration the appropriate data
2107      points when filtering out duplicate messages in the message validator,
2108      and report the right bloom filter false positives rate (not used for
2109      anything except debugging)
2110
21112006-01-12  cervantes
2112    * Syndie CSS tweaks to removed some redundant declarations, improve font
2113      scaling and layout robustness. Improved cross browser compatibility
2114      (in other words "kicked IE"). Tightened the look of the blog template
2115      a little.
2116
21172006-01-11  Complication
2118    * CSS comment fixes
2119
21202006-01-11  jrandom
2121    * Include the attachments/blogs/etc for comments on the blog view
2122    * Syndie HTML fixes (thanks cervantes!)
2123    * Make sure we fully reset the objects going into our cache before we
2124      reuse them (thanks zzz!)
2125
21262006-01-10  jrandom
2127    * Added the per-post list of attachments/blogs/etc to the blog view in
2128      Syndie (though this does not yet include comments or some further
2129      refinements)
2130    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2131      removing the dox box (though also removes the restart functionality...)
2132    * Give the i2p.exe the correct java.library.path to support the systray
2133      dll (thanks Bobcat, Sugadude, anon!)
2134
21352006-01-09  jrandom
2136    * Removed a longstanding bug that had caused unnecessary router identity
2137      churn due to clock skew
2138    * Temporarily sanity check within the streaming lib for long pending
2139      writes
2140    * Added support for a blog-wide logo to Syndie, and automated the pushing
2141      of updated extended blog info data along side the metadata.
2142
21432006-01-09  jrandom
2144    * Bugfix for a rare SSU error (thanks cervantes!)
2145    * More progress on the blog interface, allowing customizable blog-wide
2146      links.
2147
21482006-01-08  jrandom
2149    * First pass of the new blog interface, though without much of the useful
2150      customization features (coming soon)
2151
21522006-01-04  jrandom
2153    * Rather than profile individual tunnels for throughput over their
2154      lifetime, do so at 1 minute intervals (allowing less frequently active
2155      tunnels to be more fairly measured).
2156    * Run the live tunnel load test across two tunnels at a time, by default.
2157      The load test runs for a random period from 90s to the tunnel lifetime,
2158      self paced.  This should help gathering data for profiling peers that
2159      are in exploratory tunnels.
2160
21612006-01-03  jrandom
2162    * Calculate the overall peer throughput across the 3 fastest one minute
2163      tunnel throughput values, rather than the single fastest throughput.
2164    * Degrade the profiled throughput data over time (cutting the profiled
2165      peaks in half once a day, on average)
2166    * Enable yet another new speed calculation for profiling peers, using the
2167      peak throughput from individual tunnels that a peer is participating in,
2168      rather than across all tunnels they are participating in.  This helps
2169      gather a fairer peer throughput measurement, since it won't allow a slow
2170      high capacity peer seem to have a higher throughput (pushing a little
2171      data across many tunnels at once, as opposed to lots of data across a
2172      single tunnel).  This degrades over time like the other.
2173    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2174      precompiled OS/2 library)
2175
21762006-01-01  jrandom
2177    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2178      (though it can still seed and participate in multifile swarms)
2179    * Enable a new speed calculation for profiling peers, using their peak
2180      1 minute average tunnel throughput as their speed.
2181
21822005-12-31  jrandom
2183    * Include a simple torrent creator in the I2PSnark web UI
2184    * Further streaming lib closing improvements
2185    * Refactored the load test components to run off live tunnels (though,
2186      still not safe for normal/anonymous load testing)
2187
21882005-12-30  jrandom
2189    * Close streams more gracefully
2190
21912005-12-30  jrandom
2192    * Small streaming lib bugfixes for the modified timeouts
2193    * Minor Syndie/Sucker RSS html fix
2194    * Small synchronization fix in I2PSnark (thanks fsm!)
2195
21962005-12-30  jrandom
2197    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2198      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2199      some distros (e.g. mandriva)
2200
22012005-12-29  jrandom
2202    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2203      actually correct
2204
22052005-12-27  jrandom
2206    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2207      the clock is too skewed to do anything useful (check the year and month,
2208      not just the hour and minute).
2209    * Fixed the read/write timeouts in the streaming lib (so that it actually
2210      honors them now)
2211    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2212      torrent closing)
2213    * Handle an oddball tunnel creation failure (thanks Xunk)
2214
22152005-12-26  Complication
2216    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2217    * HTML readability cosmetics on "Peers" page
2218
2219* 2005-12-22  0.6.1.8 released
2220
22212005-12-22  jrandom
2222    * Bundle the standalone I2PSnark launcher in the installer and update
2223      process (launch as "java -jar launch-i2psnark.jar", viewing the
2224      interface on http://localhost:8002/)
2225    * Don't autostart swarming torrents by default so that you can run a
2226      standalone I2PSnark from the I2P install dir and not have the embedded
2227      I2PSnark autolaunch the torrents that the standalone instance is running
2228    * Fixed a rare streaming lib bug that could let a blocking call wait
2229      forever.
2230
22312005-12-22  jrandom
2232    * Cleaned up some buffer synchronization issues in I2PSnark that could
2233      cause blockage.
2234
22352005-12-21  jrandom
2236    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2237      behavior)
2238    * Fixed the I2PSnark bug that would lose track of live peers
2239
22402005-12-20  jrandom
2241    * Enabled the control in I2PSnark to toggle whether torrents should be
2242      started automatically or not
2243    * Hopefully finished the last hook to close down torrents completely when
2244      they're stopped.
2245
22462005-12-19  jrandom
2247    * Fix for old Syndie blog bookmarks (thanks Complication!)
2248    * Fix for I2PSnark to accept incoming connections again (oops)
2249    * Randomize the order that peers from the tracker are contacted
2250
22512005-12-19  jrandom
2252    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2253      memory usage reduction, better OOM handling, and a shared connection
2254      acceptor.
2255    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2256      blog from the blog page shows threads started by the selected author,
2257      not those that they merely participate in)
2258
22592005-12-18  jrandom
2260    * Added a standalone runner for the I2PSnark web ui (build with the
2261      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2262      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2263    * Further I2PSnark error handling
2264
22652005-12-17  jrandom
2266    * Let multiuser accounts authorize themselves to access the remote
2267      functionality again (thanks Ch0Hag!)
2268    * Adjust the JVM heap size to 128MB for new installs (existing users can
2269      accomplish this by editing wrapper.config, adding the line
2270      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2271      of the router).  This is relevent for heavy usage of I2PSnark in the
2272      router console.
2273
22742005-12-17  jrandom
2275    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2276      'piece' sizes grow larger than before.
2277
22782005-12-16  jrandom
2279    * Added some I2PSnark sanity checks, an OOMListener when running
2280      standalone, and a guard against keeping memory tied up indefinitely.
2281    * Sanity check on the watchdog (thanks zzz!)
2282    * Handle invalid HTTP requests in I2PTunnel a little better
2283
22842005-12-16  jrandom
2285    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2286      properly (thanks Complication!)
2287    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2288      b0rking in the DirMonitor, etc)
2289
22902005-12-16  jrandom
2291    * Try to run a torrent in readonly mode if we can't write to the file, and
2292      handle failures a little more gracefully (thanks polecat!)
2293
22942005-12-16  jrandom
2295    * Refuse torrents with too many files (128), avoiding ulimit errors.
2296    * Remove an fd leak in I2PSnark
2297    * Further I2PSnark web UI cleanup
2298
22992005-12-15  jrandom
2300    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2301
23022005-12-15  jrandom
2303    * Added multitorrent support to I2PSnark, accessible currently by running
2304      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2305      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2306      their data in that directory as well.  Removing the .torrent file stops
2307      participation, and it is currently set to seed indefinitely.  Completion
2308      is logged to the logger and standard output, with further UI interaction
2309      left to the (work in progress) web UI.
2310
23112005-12-14  jrandom
2312    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2313    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2314      (thanks Complication!)
2315
23162005-12-13  zzz
2317    * Don't test tunnels expiring within 90 seconds
2318    * Defer Test Tunnel jobs if job lag too large
2319    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2320      job lag for tunnel build backoff, allowing for more agile handling
2321      (since the stat is only updated once a minute)
2322    * Use tunnel length override if all tunnels are expiring within one
2323      minute.
2324
23252005-12-13  jrandom
2326    * Fixed I2PSnark's handling of some torrent files to deal with those
2327      created by Azureus and I2PRufus (it didn't know how to deal with
2328      additional meta info, such as path.utf-8 or name.utf-8).
2329
23302005-12-09  zzz
2331    * Create different strategies for exploratory tunnels (which are difficult
2332      to create) and client tunnels (which are much easier)
2333    * Gradually increase number of parallel build attempts as tunnel expiry
2334      nears.
2335    * Temporarily shorten attempted build tunnel length if builds using
2336      configured tunnel length are unsuccessful
2337    * React more aggressively to tunnel failure than routine tunnel
2338      replacement
2339    * Make tunnel creation times randomized - there is existing code to
2340      randomize the tunnels but it isn't effective due to the tunnel creation
2341      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2342      to 3 minutes before expiration. The patch fixes this by fixing the
2343      randomization, and by changing the overlap time (with old tunnels) to a
2344      range of 2 to 4 minutes.
2345    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2346      to overlapping calls. Just about anything generated a call which could
2347      build many tunnels all at once, even if tunnel building was already in
2348      process.
2349    * Miscellaneous router console enhancements
2350
23512005-12-08  jrandom
2352    * Minor bugfix in SSU for dealing with corrupt packets
2353    * Added some hooks for load testing
2354
23552005-12-07  jrandom
2356    * Added a first pass at a blog view in Syndie
2357
23582005-12-07  jrandom
2359    * Expand the thread we're viewing to its leaf
2360    * Bugfix on intraday ordering (children are always newer than parents)
2361
23622005-12-05  jrandom
2363    * Added an RDF and XML thread export to Syndie, reachable at
2364      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2365      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2366      displays all threads.
2367
23682005-12-04  TLorD
2369    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2370
23712005-12-04  jrandom
2372    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2373    * Always include ourselves in the favorite authors (since we don't
2374      bookmark ourselves)
2375
23762005-12-03  jrandom
2377    * Use newgroup-like tags by default in Syndie's interface
2378
23792005-12-03  jrandom
2380    * Added support for a 'most recent posts' view that CofE requested, which
2381      includes the ability to filter by age (e.g. posts by your favorite
2382      authors in the last 5 days).
2383
23842005-12-03  jrandom
2385    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2386      displays a a single thread path at a time - from root to leaf - rather
2387      than a depth first traversal.
2388
23892005-12-03  jrandom
2390    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2391      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2392      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2393      running a single user Syndie instance (by default).  It also creates a
2394      default subscription to syndiemedia without any anonymity (using no
2395      proxy).  Upgrades can be done by just replacing the syndie.war with the
2396      one from I2P.
2397
2398* 2005-12-01  0.6.1.7 released
2399
24002005-12-01  jrandom
2401    * Add a new criteria to the tunnel join throttle, backing off people if we
2402      are failing to talk to our peers more than usual.
2403
24042005-11-30  jrandom
2405    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2406      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2407      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2408      separate jdom or rome, as they're inside syndie.war.
2409
24102005-11-30  jrandom
2411    * Don't let the TCP transport alone shitlist a peer, since other
2412      transports may be working.  Also display whether TCP connections are
2413      inbound or outbound on the peers page.
2414    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2415      talk to anyone who didn't expose an IP (even if they had introducers),
2416      among other goofy things.
2417    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2418      rather than sending one a packet at 3s, then another a packet at 6s,
2419      and a third a packet at 9s.
2420    * Fixed Syndie attachments (oops)
2421
24222005-11-29  zzz
2423    * Added a link to orion's jump page on the 'key not found' error page.
2424
24252005-11-29  jrandom
2426    * Further Syndie UI cleanup
2427    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2428      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2429      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2430      will be removed as soon as its integrated into Jetty.  This patch allows
2431      posting content in various character sets.
2432      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2433    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2434      isn't pushed as part of the update yet, as there aren't any critical
2435      bugs.
2436
24372005-11-29  jrandom
2438    * Added back in the OSX jbigi, which was accidentally removed a few revs
2439      back (thanks for the bug report stoerte!)  New installs will get the
2440      full jbigi, or you can pull the jbigi.jar from CVS by going to
2441      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2442      and clicking on the first "download" link, saving that jbigi.jar to
2443      lib/jbigi.jar in your I2P installation directory.  After restarting your
2444      router, it should load up fine.
2445
24462005-11-27  jrandom
2447    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2448      because firefox [and others?] delay rendering until they fetch the css).
2449    * Make sure we fire the shutdown tasks when regenerating a new identity
2450      (thanks picsou!)
2451    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2452    * Don't drop SSU sessions if they're still transmitting data successfully,
2453      even if there are transmission failures
2454    * Adjusted the time summarization to display hours after 119m, not 90m
2455    * Further EepGet cleanup (grr)
2456
2457* 2005-11-26 0.6.1.6 released
2458
24592005-11-26  jrandom
2460    * Update the sorting in Syndie to consider children 'newer' than parents,
2461      even if they have the same message ID (duh)
2462    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2463    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2464    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2465      better)
2466
24672005-11-26  jrandom
2468    * Be more explicit about what messages we will handle through a client
2469      tunnel, and how we will handle them.  This cuts off a set of attacks
2470      that an active adversary could mount, though they're probably nonobvious
2471      and would require at least some sophistication.
2472
24732005-11-26  Raccoon23
2474    * Added support for 'dynamic keys' mode, where the router creates a new
2475      router identity whenever it detects a substantial change in its public
2476      address (read: SSU IP or port).  This only offers minimal additional
2477      protection against trivial attackers, but should provide functional
2478      improvement for people who have periodic IP changes, since their new
2479      router address would not be shitlisted while their old one would be.
2480    * Added further infrastructure for restricted route operation, but its use
2481      is not recommended.
2482
24832005-11-25  jrandom
2484    * Further Syndie UI cleanups
2485    * Logging cleanup
2486    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2487
24882005-11-25  jrandom
2489    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2490    * Cleaned up the syndie threaded display to show the last updated date for
2491      a subthread, and to highlight threads updated in the last two days.
2492
24932005-11-24  jrandom
2494    * Fix to save syndication settings in Syndie (thanks spaetz!)
2495
24962005-11-23  jrandom
2497    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2498    * Streamlined the tunnel batching to schedule batch transmissions more
2499      appropriately.
2500    * Default tunnel pool variance to 2 +0-1 hops
2501
25022005-11-21  jrandom
2503    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2504      within I2PTunnel.
2505    * Increase the maximum SSU retransmission timeout to accomodate slower or
2506      more congested links (though SSU's RTO calculation will usually use a
2507      much lower timeout)
2508    * Moved the streaming lib timed events off the main timer queues and onto
2509      a streaming lib specific set of timer queues.  Streaming lib timed
2510      events are more likely to have lock contention on the I2CP socket while
2511      other timed events in the router are (largely) independent.
2512    * Fixed a case sensitive lookup bug (thanks tino!)
2513    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2514      links (thanks tino!)
2515
25162005-11-19  jrandom
2517    * Implemented a trivial pure java PMTU backoff strategy, switching between
2518      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2519    * Fixed new user registration in Syndie (thanks Complication!)
2520
25212005-11-17  jrandom
2522    * More cautious file handling in Syndie
2523
25242005-11-16  jrandom
2525    * More aggressive I2PTunnel content encoding munging to work around some
2526      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2527      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2528      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2529      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2530      or X-Accept-encoding headers.  Eepsite operators who do not know to
2531      check for X-Accept-encoding will simply use the identity encoding.
2532
2533* 2005-11-15  0.6.1.5 released
2534
25352005-11-14  jrandom
2536    * Migrate to the new Syndie interface
2537
25382005-11-11  jrandom
2539    * Add filtering threads by author to Syndie, populated with authors in the
2540      user's addressbook
2541    * When creating the default user, add
2542      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2543      configured to automatically pull updates.  (what other archives should
2544      be included?)
2545    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2546      the installer/resources/themes/** into ./docs/themes/** on both install
2547      and update.
2548
25492005-11-11  cervantes
2550    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2551      being progressively rolled out to other sections at later dates.
2552      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2553      layout and styling.
2554    * Implemented console themes. Users can create their own themes by
2555      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2556      and activating it using the routerconsole.theme={themename} advanced
2557      config property. Look at the example incomplete "defCon1" theme.
2558      Note: This is very much a work in progress. Folks might want to hold-off
2559      creating their own skins until the markup has solidified.
2560    * Added "routerconsole.javascript.disabled=true" to disable console
2561      client-side scripting and "routerconsole.css.disabled=true" to remove
2562      css styling (only rolled out in the i2ptunnel interface currently)
2563    * Fixed long standing bug with i2ptunnel client and server edit screens
2564      where tunnel count and depth properties would fail to save. Added
2565      backup quantity and variance configuration options.
2566    * Added basic accessibility support (key shortcuts, linear markup, alt and
2567      title information and form labels).
2568    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2569
25702005-11-11  jrandom
2571    * Default Syndie to single user mode, and automatically log into a default
2572      user account (additional accounts can be logged into with the 'switch'
2573      or login pages, and new accounts can be created with the register page).
2574    * Disable the 'automated' column on the Syndie addressbook unless the user
2575      is appropriately authorized (good idea Polecat!)
2576
25772005-11-10  jrandom
2578    * First pass to a new threaded Syndie interface, which isn't enabled by
2579      default, as its not done yet.
2580
25812005-11-06  jrandom
2582    * Include SSU establishment failure in the peer profile as a commError,
2583      as we do for TCP establishment failures.
2584    * Don't throttle the initial transmission of a message because of ongoing
2585      retransmissions to a peer, since the initial transmission of a message
2586      is more valuable than a retransmission (since it has less latency).
2587    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2588
25892005-11-05  jrandom
2590    * Include the most recent ACKs with packets, rather than only sending an
2591      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2592      increasing sequence numbers, while each message ID in SSU is random, so
2593      we don't get the benefit of later ACKs implicitly ACKing earlier
2594      messages.
2595    * Reduced the max retransmission timeout for SSU
2596    * Don't try to send messages queued up for a long time waiting for
2597      establishment.
2598
25992005-11-05  dust
2600    * Fix sucker to delete its temporary files.
2601    * Improve sucker's sml output some.
2602    * Fix Exception in SMLParser for weird sml.
2603
26042005-11-03  zzz
2605    * Added a new error page to the eepproxy to differentiate the full 60
2606      second timeout from the immediate "I don't know this base64" failure.
2607
26082005-11-01  jrandom
2609    * Added a few more css elements (thanks identiguy!)
2610
26112005-10-31  jrandom
2612    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2613    * Removed a potentially infinitely recursive call (oops)
2614
26152005-10-30  dust
2616    * Merge sucker into syndie with a rssimport.jsp page.
2617    * Add getContentType() to EepGet.
2618    * Make chunked transfer work (better) with EepGet.
2619    * Do replaceAll("<","&lt;") for logs.
2620
2621* 2005-10-29  0.6.1.4 released
2622
26232005-10-29  jrandom
2624    * Improved the bandwidth throtting on tunnel participation, especially for
2625      low bandwidth peers.
2626    * Improved failure handling in SSU with proactive reestablishment of
2627      failing idle peers, and rather than shitlisting a peer who failed too
2628      much, drop the SSU session and allow a new attempt (which, if it fails,
2629      will cause a shitlisting)
2630    * Clarify the cause of the shitlist on the profiles page, and include
2631      bandwidth limiter info at the bottom of the peers page.
2632
26332005-10-26  jrandom
2634    * In Syndie, propogate the subject and tags in a reply, and show the parent
2635      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2636    * Streamline some netDb query handling to run outside the jobqueue -
2637      which means they'll run on the particular SSU thread that handles the
2638      message.  This should help out heavily loaded netDb peers.
2639
26402005-10-25  jrandom
2641    * Defer netDb searches for newly referenced peers until we actually want
2642      them
2643    * Ignore netDb references to peers on our shitlist
2644    * Set the timeout for end to end client messages to the max delay after
2645      finding the leaseSet, so we don't have as many expired messages floating
2646      around.
2647    * Add a floor to the streaming lib window size
2648    * When we need to send a streaming lib ACK, try to retransmit one of the
2649      unacked packets instead (with updated ACK/NACK fields, of course).  The
2650      bandwidth cost of an unnecessary retransmission should be minor as
2651      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2652      the probability of a necessary retransmission.
2653    * Adjust the streaming lib cwin algorithm to allow growth after a full
2654      cwin messages if the rtt is trending downwards.  If it is not, use the
2655      existing algorithm.
2656    * Increased the maximum rto size in the streaming lib.
2657    * Load balancing bugfix on end to end messages to distribute across
2658      tunnels more evenly.
2659
26602005-10-22  jrandom
2661    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2662      ./prngseed.rnd (if they exist), and reseeding it with data out of
2663      various crypto operations (unused bits in a DH exchange, intermediary
2664      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2665      The Fortuna implementation under gnu.crypto.prng has been modified to
2666      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2667      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2668      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2669      wrapper around it is, of course, public domain.
2670
26712005-10-20  dust
2672    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2673      always shared. (thx for info Ragnarok)
2674    * Fix crash in Sucker with some bad html.
2675
26762005-10-20  jrandom
2677    * Workaround a bug in GCJ's Calendar implementation
2678    * Propery throw an exception in the streaming lib if we try to write to a
2679      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2680      GregorK!)
2681
26822005-10-19  jrandom
2683    * Ported the snark bittorrent client to I2P such that it is compatible
2684      with i2p-bt and azneti2p.  For usage information, grab an update and run
2685      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2686      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2687    * Don't allow leaseSets expiring too far in the future (thanks postman)
2688
26892005-10-19  jrandom
2690    * Bugfix for the auto-update code to handle different usage patterns
2691    * Decreased the addressbook recheck frequency to once every 12 hours
2692      instead of hourly.
2693    * Handle dynamically changing the HMAC size (again, unless your nym is
2694      toad or jrandom, ignore this ;)
2695    * Cleaned up some synchronization/locking code
2696
26972005-10-17  dust
2698    * Exchange the remaining URL with EepGet in Sucker.
2699    * Allow /TOPIC irc command.
2700
27012005-10-17  jrandom
2702    * Allow an env prop to configure whether we want to use the backwards
2703      compatible (but not standards compliant) HMAC-MD5, or whether we want
2704      to use the not-backwards compatible (but standards compliant) one.  No
2705      one should touch this setting, unless your name is toad or jrandom ;)
2706    * Added some new dummy facades
2707    * Be more aggressive on loading up the router.config before building the
2708      router context
2709    * Added new hooks for apps to deal with previously undefined I2NP message
2710      types without having to modify any code.
2711    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2712
27132005-10-14  jrandom
2714    * More explicit filter for linux/PPC building (thanks anon!)
2715    * Fixed Syndie's Sucker to not explicitly reference something only found
2716      in sun's JVM (thanks cervantes!)
2717    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2718
2719* 2005-10-14  0.6.1.3 released
2720
27212005-10-14  jrandom
2722    * Added a key explaining peers.jsp a bit (thanks tethra!)
2723
27242005-10-13  dust
2725    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2726      then be injected into Syndie with the Syndie CLI.
2727    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2728      RSS/Atom parsing.
2729
27302005-10-13  jrandom
2731    * SSU retransmission choke bugfix (== != !=)
2732    * Include initial transmissions in the retransmission choke, so that
2733      if we are already retransmitting a message, we won't send anything
2734      to that peer other than that message (or ACKs, if necessary)
2735
27362005-10-12  jrandom
2737    * Choke SSU retransmissions to a peer while there is already a
2738      retransmission in flight to them.  This currently lets other initial
2739      transmissions through, since packet loss is often sporadic, but maybe
2740      this should block initial transmissions as well?
2741    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2742    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2743
27442005-10-11  jrandom
2745    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2746      compatible.
2747    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2748      just the blurb before the cut.
2749
27502005-10-11  jrandom
2751    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2752      yet piggybacked).  This is backwards compatible.
2753    * SML parser cleanup in Syndie
2754
27552005-10-10  dust
2756    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2757      outbound IRC commands for anonymity and security purposes, removing all
2758      CTCP messages except ACTION, as well as stripping the hostname from the
2759      USER message (while leaving the nick and 'full name').  The IRC proxy
2760      doesn't use this by default, but you can enable it by creating a new
2761      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2762      to "ircclient" in i2ptunnel.config.
2763
27642005-10-10  jrandom
2765    * I2PTunnel http client config cleanup and stats
2766    * Minor SSU congestion tweaks and stats
2767    * Reduced netDb exploration period
2768
27692005-10-09  jrandom
2770    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2771      java -jar lib/syndie.jar
2772    * Beginnings of the Syndie logging cleanup
2773    * Delete corrupt Syndie posts
2774
27752005-10-09  jrandom
2776    * Now that the streaming lib works reasonably, set the default inactivity
2777      event to send a 0 byte keepalive payload, rather than disconnecting the
2778      stream.  This should cut the irc netsplits and help out with other long
2779      lived streams.  The default timeout is now less than the old timeout as
2780      well, so the keepalive will be sent before earlier builds fire their
2781      fatal timeouts.
2782
27832005-10-08  jrandom
2784    * Use the OS clock for stat timing, since it doesn't jump around (though
2785      still use the NTP'ed clock for display)
2786    * Added new DH stats
2787
2788* 2005-10-07  0.6.1.2 released
2789
27902005-10-07  jrandom
2791    * Include the 1 second bandwidth usage on the console rather than the
2792      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2793      issues.
2794
27952005-10-07  jrandom
2796    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2797      HTTP response quicker, and initialize the streaming lib's cwin more
2798      carefully.
2799    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2800      as a user authorized to use the remote archive funtionality, you can
2801      request remote archives in your address book to be automatically pulled
2802      down by checking the "scheduled?" checkbox.
2803
28042005-10-05  jrandom
2805    * Allow the first few packets in the stream to fill in their IDs during
2806      handshake (thanks cervantes, Complication, et al!)  This should fix at
2807      least some of the intermittent HTTP POST issues.
2808
28092005-10-04  jrandom
2810    * Syndie patch for single user remote archives (thanks nickless_head!)
2811    * Handle an invalid netDb store (thanks Complication!)
2812
28132005-10-04  jrandom
2814    * Further reduction in unnecessary streaming packets.
2815
28162005-10-03  jrandom
2817    * Properly reject unroutable IP addresses *cough*
2818
28192005-10-03  rangarok
2820    * Changed default update delay to twelve hours, and enforced a minimum
2821      delay of one hour.
2822
28232005-10-03  ragnarok
2824    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2825      from selected syndie archives.  To try it out, add
2826      syndie.updateArchives=<comma seperated list of syndie archives> to your
2827      syndie.config.  Archives must be specified as the full url to archive.txt
2828      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2829      for new posts every hour.  This can be modified by setting
2830      syndie.updateDelay=<delay in hours> also in syndie.config.
2831
2832* 2005-10-01  0.6.1.1 released
2833
28342005-09-30  ragnarok
2835    * Implemented conditional get for syndie remote archive imports.
2836
28372005-09-30  jrandom
2838    * Killed three more streaming lib bugs, one of which caused excess packets
2839      to be transmitted (dupacking dupacks), one that was the root of many of
2840      the old hung streams (shrinking highest received), and another that was
2841      releasing data too soon.
2842
28432005-09-30  jrandom
2844    * Only allow autodetection of our IP address if we haven't received an
2845      inbound connection in the last two minutes.
2846    * Increase the default max streaming resends to 8 from 5 (and down from
2847      the earlier 10)
2848
28492005-09-29  ragnarok
2850    * Export petnames from syndie to the router's petname db instead of
2851      userhosts.txt.
2852
28532005-09-29  jrandom
2854    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2855      reseeding - useful on OSes that make it hard to create dot files. 
2856      Thanks Complication (and anon)!
2857    * Fixed the installer version string (thanks Frontier!)
2858    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2859      us invalid IP addresses, verify again that we are not sending invalid IP
2860      addresses, and log an error if it happens. (Thanks Complication, ptm,
2861      and adab!)
2862
2863* 2005-09-29  0.6.1 released
2864
28652005-09-29  jrandom
2866    * Let syndie users modify their metadata.
2867    * Reseed the router on startup if there aren't enough peer references
2868      known locally.  This can be disabled by creating the file .i2pnoreseed
2869      in your home directory, and the existing detection and reseed handling
2870      on the web interface is unchanged.
2871
28722005-09-28  jrandom
2873    * Fix for at least some (all?) of the wrong stream errors in the streaming
2874      lib
2875
28762005-09-27  jrandom
2877    * Properly suggest filenames for attachments in Syndie (thanks all!)
2878    * Fixed the Syndie authorization scheme for single user vs. multiuser
2879
28802005-09-27  jrandom
2881    * I2PTunnel bugfix (thanks Complication!)
2882    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2883      instead of k/cwin)
2884    * Limit the number of inbound SSU sessions being built at once (using
2885      half of the i2np.udp.maxConcurrentEstablish config prop)
2886    * Don't shitlist on a message send failure alone (unless there aren't any
2887      common transports).
2888    * More careful bandwidth bursting
2889
28902005-09-26  jrandom
2891    * Reworded the SSU introductions config section (thanks duck!)
2892    * Force identity content encoding for I2PTunnel httpserver requests
2893      (thanks redzara!)
2894    * Further x-i2p-gzip bugfixes for the end of streams
2895    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2896      I2P's performance at 3KBps is another issue)
2897    * Cleaned up some streaming lib structures
2898
28992005-09-25  jrandom
2900    * Allow reseeding on the console if the netDb knows less than 30 peers,
2901      rather than less than 10 (without internet connectivity, we keep the
2902      last 15 router references)
2903    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2904      more aggressively.
2905    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2906    * Reduced the default maximum number of streaming lib resends of a packet
2907      (10 retransmits is a bit much with a reasonable RTO)
2908
29092005-09-25  Complication
2910    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2911      conflict resolution page if the i2paddresshelper parameter differs from
2912      an existing name to destination mapping.
2913
29142005-09-25  jrandom
2915    * Fix a long standing streaming lib bug (in the inactivity detection code)
2916    * Improved handling of initial streaming lib packet retransmissions to
2917      kill the "lost first packet" bug (where a page shows up with the first
2918      few KB missing)
2919    * Add support for initial window sizes greater than 1 - useful for
2920      eepsites to transmit e.g. 4 packets full of data along with the initial
2921      ACK, thereby cutting down on the rtt latency.  The congestion window
2922      size can and does still shrink down to 1 packet though.
2923    * Adjusted the streaming lib retransmission calculation algorithm to be
2924      more TCP-like.
2925
29262005-09-21  redzara
2927    * Use ISO-8859-1 for the susidns xml
2928
29292005-09-21  susi
2930    * Bugfix in susidns for deleting entries
2931
29322005-09-21  jrandom
2933    * Add support for HTTP POST to EepGet
2934    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2935      put in that URL.
2936
29372005-09-18  jrandom
2938    * Added support for pure 64bit linux with jbigi and the java service
2939      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2940      et al for help testing!
2941    * UI cleanup in Syndie (thanks gloin and bar!)
2942
29432005-09-18  Ragnarok
2944    * Made MetaNamingService the default naming service.
2945
29462005-09-17  Ragnarok
2947    * Implemented a naming service using Syndie's petname db.  It's not enabled
2948      by default, but you can try it out by setting
2949      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2950      router.config.
2951    * Implemented a meta naming service that will first lookup names in the
2952      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2953      naming services are checked and in which order is specified by
2954      i2p.nameservicelist.  This will probably become the default naming service
2955      so please help test it out by setting
2956      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2957     
2958* 2005-09-17  0.6.0.6 released
2959
29602005-09-17  jrandom
2961    * Clean up syndie a bit more and bundle a default introductory post with
2962      both new installs and updates.
2963    * Typo fixes on the console (thanks bar!)
2964
29652005-09-17  jrandom
2966    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2967      steady state rate, plus a new limit on how fast we transfer when
2968      bursting.  This is different from the old "burst as fast as possible
2969      until we're out of tokens" policy, and should help those with congested
2970      networks.  See /config.jsp to manage this rate.
2971    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2972      old posts just didn't show up).
2973    * Log properly in EepPost
2974
29752005-09-17  jrandom
2976    * Added the natively compiled jbigi and patched java service wrapper for
2977      OS X.  Thanks Bill Dorsey for letting me use your machine!
2978    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2979      don't bundle the binutils necessary (and there'd be a naming conflict
2980      if we did).
2981    * Added 'single user' functionality to syndie - if the single user
2982      checkbox on the admin page is checked, all users are allowed to control
2983      the instance and sync up with remote syndie nodes.
2984    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2985      debugged.
2986
29872005-09-16  jrandom
2988    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
2989      you have i2np.udp.allowLocal=true defined - useful for private nets)
2990
29912005-09-16  jrandom
2992    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
2993      (just specify the spoofed host as an empty string), allowing them to
2994      honor x-i2p-gzip encoding.
2995    * Let windows users build the exes too (thanks bar and redzara!)
2996    * Allow I2PTunnel httpserver operators to disable gzip compression on
2997      individual tunnels with the i2ptunnel.gzip=false client option
2998      (good idea susi!)
2999
30002005-09-16  jrandom
3001    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
3002    * Added runplain.sh for *nix/osx users having problems using the java
3003      service wrapper (called from the install dir as: sh runplain.sh)
3004    * Bundle susidns and syndie, with links on the top nav
3005    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
3006      content-encoding (if offered), reducing the payload size before it
3007      reaches the streaming lib.  The existing compression is at the i2cp
3008      level, so we've been packetizing 4KB of uncompressed data and then
3009      compressing those messages, rather than compressing and then packetizing
3010      4KB of compressed data.  This should reduce the number of round trips
3011      to fetch web pages substantially.
3012    * Adjust the startup and timing of the addressbook so that susidns always
3013      has config to work off, and expose a method for susidns to tell it to
3014      reload its config and rerun.
3015
30162005-09-15  jrandom
3017    * Error handling for failed intro packets (thanks red.hand!)
3018    * More carefully verify intro addresses
3019
30202005-09-13  jrandom
3021    * More careful error handling with introductions (thanks dust!)
3022    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
3023    * Hide the shitlist on the summary so it doesn't confuse new users.
3024
30252005-09-12  comwiz
3026    * Migrated the router tests to junit
3027
30282005-09-12  jrandom
3029    * Removed guaranteed delivery mode entirely (so existing i2phex clients
3030      using it can get the benefits of mode=best_effort).  Guaranteed delivery
3031      is offered at the streaming lib level.
3032    * Improve the peer selection code for peer testing, as everyone now
3033      supports tests.
3034    * Give the watchdog its fangs - if it detects obscene job lag or if
3035      clients have been unable to get a leaseSet for more than 5 minutes,
3036      restart the router.  This was disabled a year ago due to spurious
3037      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
3038      cause of the spurious restarts should be gone.
3039
30402005-09-12  jrandom
3041    * Bugfix for skewed store which could kill a UDP thread (causing complete
3042      comm failure and eventual OOM)
3043
30442005-09-12  jrandom
3045    * More aggressively publish updated routerInfo.
3046    * Expose the flag to force SSU introductions on the router console
3047    * Don't give people the option to disable SNTP time sync, at least not
3048      through the router console, because there is no reason to disable it.
3049      No, not even if your OS is "ntp synced", because chances are, its not.
3050
30512005-09-10  jrandom
3052    * Test the router's reachability earlier and more aggressively
3053    * Use the low level bandwidth limiter's rates for the router console, and
3054      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
3055      the logger config, keep track of the 1 second transfer rates as the stat
3056      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
3057      behavior.
3058
30592005-09-09  jrandom
3060    * Added preliminary support for NAT hole punching through SSU introducers
3061    * Honor peer test results from peers that we have an SSU session with if
3062      those sessions are idle for 3 minutes or more.
3063
30642005-09-09  cervantes
3065    * New build due to change in build number :P (thanks ugha!)
3066
30672005-09-07  BarkerJr
3068    * HTML cleanup for the router console (thanks!)
3069
30702005-09-07  jrandom
3071    * Lay the foundation for 'client routers' - the ability for peers to opt
3072      out of participating in tunnels entirely due to firewall/NAT issues. 
3073      Individual routers have control over where those peers are used in
3074      tunnels - in outbound or inbound, exploratory or client tunnels, or
3075      none at all.  The defaults with this build are to simply act as before -
3076      placing everyone as potential participants in any tunnel.
3077    * Another part of the foundation includes the option for netDb
3078      participants to refuse to answer queries regarding peers who are marked
3079      as unreachable, though this too is disabled by default (meaning the
3080      routerInfo is retrievable from the netDb).
3081
30822005-09-05  jrandom
3083    * Expose the HTTP headers to EepGet status listeners
3084    * Handle DSA key failures properly (if the signature is not invertable, it
3085      is obviously invalid)
3086
30872005-09-04  jrandom
3088    * Don't persist peer profiles until we are shutting down, as the
3089      persistence process gobbles RAM and wall time.
3090    * Bugfix to allow you to check/uncheck the sharedClient setting on the
3091      I2PTunnel web interface (thanks BarkerJr!)
3092    * Be more careful when expiring a failed tunnel message fragment so we
3093      don't drop the data while attempting to read it.
3094
3095* 2005-09-02  0.6.0.5 released
3096
30972005-09-02  jrandom
3098    * Don't refuse to send a netDb store if the targetted peer has failed a
3099      bit (the value was an arbitrary amount).
3100    * Logging changes
3101
3102* 2005-09-01  0.6.0.4 released
3103
31042005-09-01  jrandom
3105    * Don't send out a netDb store of a router if it is more than a few hours
3106      old, even if someone asked us for it.
3107
31082005-08-31  jrandom
3109    * Don't publish leaseSets to the netDb if they will never be looked for -
3110      namely, if they are for destinations that only establish outbound
3111      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
3112      modified to tell the router that it doesn't need to publish their
3113      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
3114      to 'true').
3115    * Don't publish the top 10 peer rankings of each router in the netdb, as
3116      it isn't being watched right now.
3117
31182005-08-29  jrandom
3119    * Added the new test Floodfill netDb
3120
31212005-08-27  jrandom
3122    * Minor logging and optimization tweaks in the router and SDK
3123    * Use ISO-8859-1 in the XML files (thanks redzara!)
3124    * The consolePassword config property can now be used to bypass the router
3125      console's nonce checking, allowing CLI restarts
3126
31272005-08-24  jrandom
3128    * Catch errors with corrupt tunnel messages more gracefully (no need to
3129      kill the thread and cause an OOM...)
3130    * Don't skip shitlisted peers for netDb store messages, as they aren't
3131      necessarily shitlisted by other people (though they probably are).
3132    * Adjust the netDb store per-peer timeout based on each particular peer's
3133      profile (timeout = 4x their average netDb store response time)   
3134    * Don't republish leaseSets to *failed* peers - send them to peers who
3135      replied but just didn't know the value.
3136    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3137      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3138      sent entirely within the first streaming packet anyway, so this won't be
3139      a problem.
3140    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3141      prevent any clients from accessing the server if the handlers get
3142      blocked by the streaming lib or other issues.
3143    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3144      Unknown.
3145
31462005-08-23  jrandom
3147    * Removed the concept of "no bandwidth limit" - if none is specified, its
3148      16KBps in/out.
3149    * Include ack packets in the per-peer cwin throttle (they were part of the
3150      bandwidth limit though).
3151    * Tweak the SSU cwin operation to get more accurrate estimates under
3152      congestions.
3153    * SSU improvements to resend more efficiently.
3154    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3155
3156* 2005-08-21  0.6.0.3 released
3157
31582005-08-21  jrandom
3159    * If we already have an established SSU session with the Charlie helping
3160      test us, cancel the test with the status of "unknown".
3161
31622005-08-17  jrandom
3163    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3164      viability before agreeing to Alice's request.  This doesn't work with
3165      older SSU peer test builds, but is backwards compatible (older nodes
3166      won't ask newer nodes to participate in tests, and newer nodes won't
3167      ask older nodes to either).
3168
31692005-08-12  jrandom
3170    * Keep detailed stats on the peer testing, publishing the results in the
3171      netDb.
3172    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3173      status in a while.
3174    * Make sure to avoid shitlisted peers for peer testing.
3175    * When we get an unknown result to a peer test, try again soon afterwards.
3176    * When a peer tells us that our address is different from what we expect,
3177      if we've done a recent peer test with a result of OK, fire off a peer
3178      test to make sure our IP/port is still valid.  If our test is old or the
3179      result was not OK, accept their suggestion, but queue up a peer test for
3180      later.
3181    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3182      we monitor netDb store progress (to clear up the high netDb.storePeers
3183      stat)
3184
31852005-08-10  jrandom
3186    * Deployed the peer testing implementation to be run every few minutes on
3187      each router, as well as any time the user requests a test manually.  The
3188      tests do not reconfigure the ports at the moment, merely determine under
3189      what conditions the local router is reachable.  The status shown in the
3190      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3191      differently for different peers, "ERR-Reject" if the router cannot
3192      receive unsolicited packets or the peer helping test could not find a 
3193      collaborator, "Unknown" if the test has not been run or the test
3194      participants were unreachable, or "OK" if the router can receive
3195      unsolicited connections and those connections use the same IP and port.
3196
3197* 2005-08-08  0.6.0.2 released
3198
31992005-08-08  jrandom
3200    * Add a configurable throttle to the number of concurrent outbound SSU
3201      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3202      may help those with slow connections to get integrated at the start.
3203    * Further fixlets to the streaming lib
3204
32052005-08-07  Complication
3206    * Display the average clock skew for both SSU and TCP connections
3207
32082005-08-07  jrandom
3209    * Fixed the long standing streaming lib bug where we could lose the first
3210      packet on retransmission.
3211    * Avoid an NPE when a message expires on the SSU queue.
3212    * Adjust the streaming lib's window growth factor with an additional
3213      Vegas-esque congestion detection algorithm.
3214    * Removed an unnecessary SSU session drop
3215    * Reduced the MTU (until we get a working PMTU lib)
3216    * Deferr tunnel acceptance until we know how to reach the next hop,
3217      rejecting it if we can't find them in time.
3218    * If our netDb store of our leaseSet fails, give it a few seconds before
3219      republishing.
3220
3221* 2005-08-03  0.6.0.1 released
3222
32232005-08-03  jrandom
3224    * Backed out an inadvertant change to the netDb store redundancy factor.
3225    * Verify tunnel participant caching.
3226    * Logging cleanup
3227
32282005-08-01  duck
3229    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3230
32312005-08-01  duck
3232    * Fix an addressbook NPE when a new hostname from the master addressbook
3233      didn't exist in the router addressbook.
3234    * Fix an addressbook bug which caused subscriptions not to be parsed at
3235      all. (Oops!)
3236
32372005-07-31  jrandom
3238    * Adjust the netDb search and store per peer timeouts to match the average
3239      measured per peer success times, rather than huge fixed values.
3240    * Optimized and reverified the netDb peer selection / retrieval process
3241      within the kbuckets.
3242    * Drop TCP connections that don't have any useful activity in 10 minutes.
3243    * If i2np.udp.fixedPort=true, never change the externally published port,
3244      even if we are autodetecting the IP address.
3245
3246* 2005-07-27  0.6 released
3247
32482005-07-27  jrandom
3249    * Enabled SSU as the default top priority transport, adjusting the
3250      config.jsp page accordingly.
3251    * Add verification fields to the SSU and TCP connection negotiation (not
3252      compatible with previous builds)
3253    * Enable the backwards incompatible tunnel crypto change as documented in
3254      tunnel-alt.html (have each hop encrypt the received IV before using it,
3255      then encrypt it again before sending it on)
3256    * Disable the I2CP encryption, leaving in place the end to end garlic
3257      encryption (another backwards incompatible change)
3258    * Adjust the protocol versions on the TCP and SSU transports so that they
3259      won't talk to older routers.
3260    * Fix up the config stats handling again
3261    * Fix a rare off-by-one in the SSU fragmentation
3262    * Reduce some unnecessary netDb resending by inluding the peers queried
3263      successfully in the store redundancy count.
3264
32652005-07-22  jrandom
3266    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3267      I2PTunnelServer)
3268    * Minor memory churn reduction in I2CP
3269    * Small stats update
3270
32712005-07-21  jrandom
3272    * Fix in the SDK for a bug which would manifest itself as misrouted
3273      streaming packets when a destination has many concurrent streaming
3274      connections (thanks duck!)
3275    * No more "Graceful shutdown in -18140121441141s"
3276
32772005-07-20  jrandom
3278    * Allow the user to specify an external port # for SSU even if the external
3279      host isn't specified (thanks duck!)
3280
32812005-07-19  jrandom
3282    * Further preparation for removing I2CP crypto
3283    * Added some validation to the DH key agreement (thanks $anon)
3284    * Validate tunnel data message expirations (though not really a problem,
3285      since tunnels expire)
3286    * Minor PRNG threading cleanup
3287
32882005-07-15  cervantes
3289    * Added workaround for an odd win32 bug in the stats configuration console
3290      page which meant only the first checkbox selection was saved.
3291
32922005-07-15  Romster
3293    * Added per group selection toggles in the stats configuration console
3294      page.
3295
32962005-07-13  jrandom
3297    * Fixed a recently injected bug in the multitransport bidding which had
3298      allowed an essentially arbitrary choice of transports, rather than the
3299      properly ordered choice.
3300
33012005-07-13  jrandom
3302    * Fixed a long standing bug where we weren't properly comparing session
3303      tags but instead largely depending upon comparing their hashCode,
3304      causing intermittent decryption errors.
3305
33062005-07-12  jrandom
3307    * Add some data duplication to avoid a recently injected concurrency
3308      problem in the session tag manager (thanks redzara and romster).
3309
33102005-07-11  jrandom
3311    * Reduced the growth factor on the slow start and congestion avoidance for
3312      the streaming lib.
3313    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3314      handlers, rather than launching off new threads which then immediately
3315      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3316    * Don't persist session keys / session tags (not worth it, for now)
3317    * Added some detection and handling code for duplicate session tags being
3318      delivered (root cause still not addressed)
3319    * Make the PRNG's buffer size configurable (via the config property
3320      "i2p.prng.totalBufferSizeKB=4096")
3321    * Disable SSU flooding by default (duh)
3322    * Updates to the StreamSink apps for better throttling tests.
3323
33242005-07-05  jrandom
3325    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3326      buffer, rather than the underlying PRNG's (likely small) one, which in
3327      turn reduces the frequency of recalcing.
3328    * More tuning to reduce temporary allocation churn
3329
33302005-07-04  jrandom
3331    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3332      rather than the IV by itself, preventing an attack that would let
3333      colluding internal adversaries tag a message to determine that they are
3334      in the same tunnel.  Thanks dvorak for the catch!
3335    * Drop long inactive profiles on startup and shutdown
3336    * /configstats.jsp: web interface to pick what stats to log
3337    * Deliver more session tags to account for wider window sizes
3338    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3339    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3340    * UrlLauncher: adjust the browser selection order
3341    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3342    * StreamSinkClient: add support for sending an unlimited amount of data
3343    * Migrate the tests out of the default build jars
3344
33452005-06-22  Comwiz
3346    * Migrate the core tests to junit
3347
33482005-05-25  duck
3349    * Fixed PRNG bug (bugzilla #107)
3350
33512005-05-01  jrandom
3352    * Added a substantial optimization to the AES engine by caching the
3353      prepared session keys (duh).
3354
33552005-05-01  jrandom
3356    * Cleaned up the peers page a bit more.
3357
33582005-04-30  jrandom
3359    * Added a small new page to the web console (/peers.jsp) which contains
3360      the peer connection information.  This will be cleaned up a lot more
3361      before 0.6 is out, but its a start.
3362
33632005-04-30  jrandom
3364    * Reduced some SimpleTimer churn
3365
33662005-04-29  jrandom
3367    * Reduce the peer profile stat coallesce overhead by inlining it with the
3368      reorganize.
3369    * Limit each transport to at most one address (any transport that requires
3370      multiple entry points can include those alternatives in the address).
3371
33722005-04-28  jrandom
3373    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3374    * Add back the code to handle bids from multiple transports (though there
3375      is still only one transport enabled by default)
3376    * Adjust the router's queueing of outbound client messages when under
3377      heavy load by running the preparatory job in the client's I2CP handler
3378      thread, thereby blocking additional outbound messages when the router is
3379      hosed.
3380    * No need to validate or persist a netDb entry if we already have it
3381
33822005-04-25  smeghead
3383    * Added button to router console for manual update checks.
3384    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3385      every time the form was submitted even if it hadn't changed.
3386
33872005-04-24  jrandom
3388    * Added a pool of PRNGs using a different synchronization technique,
3389      hopefully sufficient to work around IBM's PRNG bugs until we get our
3390      own Fortuna.
3391    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3392      size bound the not-yet-ready messages to the peer, not the unacked
3393      message count (not sure yet whether this is worthwile).
3394    * Many additions to the messageHistory log.
3395    * Handle out of order tunnel fragment delivery (not an issue on the live
3396      net with TCP, but critical with UDP).
3397
3398* 2005-04-20  0.5.0.7 released
3399
34002005-04-20  jrandom
3401    * In the SDK, we don't actually need to block when we're sending a message
3402      as BestEffort (and these days, we're always sending BestEffort).
3403    * Pass out client messages in fewer (larger) steps.
3404    * Have the InNetMessagePool short circuit dispatch requests.
3405    * Have the message validator take into account expiration to cut down on
3406      false positives at high transfer rates.
3407    * Allow configuration of the probabalistic window size growth rate in the
3408      streaming lib's slow start and congestion avoidance phases, and default
3409      them to a more conservative value (2), rather than the previous value
3410      (1).
3411    * Reduce the ack delay in the streaming lib to 500ms
3412    * Honor choke requests in the streaming lib (only affects those getting
3413      insanely high transfer rates)
3414    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3415      I2PTunnel client page (thanks maestro^!)
3416
34172005-04-17  sirup
3418    * Added the possibility for i2ptunnel client and httpclient instances to
3419      have their own i2p session (and hence, destination and tunnels).  By
3420      default, tunnels are shared, but that can be changed on the web
3421      interface or with the sharedClient config option in i2ptunnel.config.
3422
34232005-04-17  jrandom
3424    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3425      this?  If not, I want to drop it (lots of tiny details with lots of
3426      duplicated semantics).
3427
34282005-04-17  zzz
3429    * Added new user-editable eepproxy error page templates.
3430
34312005-04-17  jrandom
3432    * Revamp the tunnel building throttles, fixing a situation where the
3433      rebuild may not recover, and defaulting it to unthrottled (users with
3434      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3435      advanced router config)
3436
34372005-04-16  jrandom
3438    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3439
34402005-04-12  jrandom
3441    * Make sure we don't get cached updates (thanks smeghead!)
3442    * Clear out the callback for the TestJob after it passes (only affects the
3443      job timing accounting)
3444
34452005-04-08  smeghead
3446    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3447
34482005-04-08  smeghead
3449    * Security improvements to TrustedUpdate: signing and verification of the
3450      version string along with the data payload for signed update files
3451      (consequently the positions of the DSA signature and version string fields
3452      have been swapped in the spec for the update file's header); router will
3453      no longer perform a trusted update if the signed update's version is lower
3454      than or equal to the currently running router's version.
3455    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3456    * Extended TrustedUpdate public API for use by third party applications.
3457
3458* 2005-04-06  0.5.0.6 released
3459
34602005-04-05  jrandom
3461    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3462      client or httpclient tunnel.
3463    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3464
34652005-04-05  jrandom
3466    * After a successfull netDb search for a leaseSet, republish it to all of
3467      the peers we have tried so far who did not give us the key (up to 10),
3468      rather than the old K closest (which may include peers who had given us
3469      the key)
3470    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3471      republish it every 5 minutes, republish it every 3.  In addition, always
3472      republish as soon as the leaseSet changes (duh^2).
3473    * Minor fix for oddball startup race (thanks travis_bickle!)
3474    * Minor AES update to allow in-place decryption.
3475
34762005-04-03  jrandom
3477    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3478      feeding the NewsFetcher)
3479
34802005-04-01  jrandom
3481    * Allow editing I2PTunnel server instances with five digit ports
3482      (thanks nickless_head!)
3483    * More NewsFetcher debugging for reported weirdness
3484
34852005-04-01  jrandom
3486    * Fix to check for missing news file (thanks smeghead!)
3487    * Added destination display CLI:
3488      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3489    * Added destination display to the web interface (thanks pnspns)
3490    * Installed CIA backdoor
3491
3492* 2005-03-29  0.5.0.5 released
3493
34942005-03-29  jrandom
3495    * Decreased the initial RTT estimate to 10s to allow more retries.
3496    * Increased the default netDb store replication factor from 2 to 6 to take
3497      into consideration tunnel failures.
3498    * Address some statistical anonymity attacks against the netDb that could
3499      be mounted by an active internal adversary by only answering lookups for
3500      leaseSets we received through an unsolicited store.
3501    * Don't throttle lookup responses (we throttle enough elsewhere)
3502    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3503      the file (thanks nickster!)
3504    * Updated the I2PTunnel HTML (thanks postman!)
3505    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3506      which, if matched against the router.config "i2ptunnel.passphrase" value,
3507      skips the nonce check.  If the config prop doesn't exist or is blank, no
3508      passphrase is accepted.
3509    * Implemented HMAC-SHA256.
3510    * Enable the tunnel batching with a 500ms delay by default
3511    * Dropped compatability with 0.5.0.3 and earlier releases
3512
35132005-03-26  jrandom
3514    * Added some error handling and fairly safe to cache data to the streaming
3515      lib (good call Tom!)
3516
35172005-03-25  jrandom
3518    * Fixed up building dependencies for the routerconsole on some more
3519      aggressive compilers (thanks polecat!)
3520
3521* 2005-03-24  0.5.0.4 released
3522
35232005-03-23  jrandom
3524    * Added more intelligent version checking in news.xml, in case we have a
3525      version newer than the one specified.
3526
35272005-03-23  jrandom
3528    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3529      cvsweb.cgi doesn't puke on us.
3530
35312005-03-23  Connelly
3532    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3533      stream send data to not be sent if STREAM CLOSE is issued too fast.
3534
35352005-03-23  jrandom
3536    * Implemented the news fetch / update policy code, as configurated on
3537      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3538      doesn't exist yet, on startup).  No action is taken however, though if
3539      the news.xml specifies that a new release is available, an option to
3540      update will be shown on the router console.
3541    * New initialNews.xml delivered with new installs, and moved news.xml out
3542      of the i2pwww module and into the i2p module so that we can bundle it
3543      within each update.
3544
35452005-03-23  jrandom
3546    * New /configupdate.jsp page for controlling the update / notification
3547      process, as well as various minor related updates.  Note that not all
3548      options are exposed yet, and the update detection code isn't in place
3549      in this commit - it currently says there is always an update available.
3550    * New EepGet component for reliable downloading, with a CLI exposed in
3551      java -cp lib/i2p.jar net.i2p.util.EepGet url
3552    * Added a default signing key to the TrustedUpdate component to be used
3553      for verifying updates.  This signing key can be authenticated via
3554      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3555    * New public domain SHA1 implementation for the DSA code so that we can
3556      handle signing streams of arbitrary size without excess memory usage
3557      (thanks P.Verdy!)
3558    * Added some helpers to the TrustedUpdate to work off streams and to offer
3559      a minimal CLI:
3560          TrustedUpdate keygen pubKeyFile privKeyFile
3561          TrustedUpdate sign origFile signedFile privKeyFile
3562          TrustedUpdate verify signedFile
3563
35642005-03-22  smeghead
3565    * New TrustedUpdate component for signing/verifying files with a DSA
3566      signature.
3567
35682005-03-21  jrandom
3569    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3570      in a single message properly (rather than release the buffer into the
3571      cache after processing the first one) (duh!)
3572    * Added the batching preprocessor which will bundle together multiple
3573      small messages inside a single tunnel message by delaying their delivery
3574      up to .5s, or whenever the pending data will fill a full message,
3575      whichever comes first.  This is disabled at the moment, since without the
3576      above bugfix widely deployed, lots and lots of messages would fail.
3577    * Within each tunnel pool, stick with a randomly selected peer for up to
3578      .5s before randomizing and selecting again, instead of randomizing the
3579      pool each time a tunnel is needed. 
3580
3581* 2005-03-18  0.5.0.3 released
3582
35832005-03-18  jrandom
3584    * Minor tweak to the timestamper to help reduce small skews
3585    * Adjust the stats published to include only the relevent ones
3586    * Only show the currently used speed calculation on the profile page
3587    * Allow the full max # resends to be sent, rather than piggybacking the
3588      RESET packet along side the final resend (duh)
3589    * Add irc.postman.i2p to the default list of IRC servers for new installs
3590    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3591      backwards compatability for users running 0.5.0.2.
3592
35932005-03-18  jrandom
3594    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3595    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3596
35972005-03-17  jrandom
3598    * Update the old speed calculator and associated profile data points to
3599      use a non-tiered moving average of the tunnel test time, avoiding the
3600      freshness issues of the old tiered speed stats.
3601    * Explicitly synchronize all of the methods on the PRNG, rather than just
3602      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3603      needs all of them synchronized).
3604    * Properly use the tunnel tests as part of the profile stats.
3605    * Don't flood the jobqueue with sequential persist profile tasks, but
3606      instead, inject a brief scheduling delay between them.
3607    * Reduce the TCP connection establishment timeout to 20s (which is still
3608      absurdly excessive)
3609    * Reduced the max resend delay to 30s so we can get some resends in when
3610      dealing with client apps that hang up early (e.g. wget)
3611    * Added more alternative socketManager factories (good call aum!)
3612
36132005-03-16  jrandom
3614    * Adjust the old speed calculator to include end to end RTT data in its
3615      estimates, and use that as the primary speed calculator again.
3616    * Use the mean of the high capacity speeds to determine the fast
3617      threshold, rather than the median.  Perhaps we should use the mean of
3618      all active non-failing peers?
3619    * Updated the profile page to sort by tier, then alphabetically.
3620    * Added some alternative socketManager factories (good call aum!)
3621
36222005-03-14  jrandom
3623    * New strict speed calculator that goes off the actual number of messages
3624      verifiably sent through the peer by way of tunnels.  Initially, this only
3625      contains the successful message count on inbound tunnels, but may be
3626      augmented later to include verified outbound messages, peers queried in
3627      the netDb, etc.  The speed calculation decays quickly, but should give
3628      a better differential than the previous stat (both values are shown on
3629      the /profiles.jsp page)
3630
36312005-03-11  jrandom
3632    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3633      minimum (increased on resends as before, of course).
3634    * Always prod the clock update listeners, even if just to tell them that
3635      the time hasn't changed much.
3636    * Added support for explicit peer selection for individual tunnel pools,
3637      which will be useful in debugging but not recommended for use by normal
3638      end users.
3639    * More aggressively search for the next hop's routerInfo on tunnel join.
3640    * Give messages received via inbound tunnels that are bound to remote
3641      locations sufficient time (taking into account clock skew).
3642    * Give alternate direct send messages sufficient time (10s min, not 5s)
3643    * Always give the end to end data message the explicit timeout (though the
3644      old default was sufficient before)
3645    * No need to give end to end messages an insane expiration (+2m), as we
3646      are already handling skew on the receiving side.
3647    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3648      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3649    * Properly keep the sendBps stat
3650    * When running the router with router.keepHistory=true, log more data to
3651      messageHistory.txt
3652    * Logging updates
3653    * Minor formatting updates
3654
36552005-03-08  jrandom
3656    * More aggressively adjust the clock
3657
36582005-03-07  jrandom
3659    * Fix the HTTP response header filter to allow multiple headers with the
3660      same name (thanks duck and spotteri!)
3661
3662* 2005-03-06  0.5.0.2 released
3663
36642005-03-06  jrandom
3665    * Allow the I2PTunnel web interface to select streaming lib options for
3666      individual client tunnels, rather than sharing them across all of them,
3667      as we do with the session options.  This way people can (and should) set
3668      the irc proxy to interactive and the eepproxy to bulk.
3669    * Added a startRouter.sh script to new installs which simply calls
3670      "sh i2prouter start".  This should make it clear how people should start
3671      I2P.
3672    * Properly expand the HTTP response header buffer (thanks shendaras!)
3673
36742005-03-04  jrandom
3675    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3676      so that broken (/malicious) webservers can't allow persistent
3677      connections.  All HTTP compliant browsers should now always close the
3678      socket.
3679    * Enabled the GZIPInputStream's cache (they weren't cached before)
3680    * Make sure our first send is always a SYN (duh)
3681    * Workaround for some buggy compilers
3682
36832005-03-03  jrandom
3684    * Loop while starting up the I2PTunnel instances, in case the I2CP
3685      listener isn't up yet (thanks detonate!)
3686    * Implement custom reusable GZIP streams to both reduce memory churn
3687      and prevent the exposure of data in the standard GZIP header (creation
3688      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3689      though has only been tested within the confines of I2P's compression use
3690      (DataHelper.[de]compress).
3691    * Preemptively support the next protocol version, so that after the 0.5.0.2
3692      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3693
36942005-03-02  jrandom
3695    * Fix one substantial OOM cause (session tag manager was only dropping
3696      tags once the critical limit was met, rather than honoring their
3697      expiration) (duh)
3698    * Lots of small memory fixes
3699    * Double the allowable concurrent outstanding tunnel build tasks (20)
3700
37012005-03-01  jrandom
3702    * Really disable the streaming lib packet caching
3703    * Synchronized a message handling point in the SDK (even though its use is
3704      already essentially single threaded, its better to play it safe)
3705    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3706      existing one (duh)
3707    * Throttle the number of concurrent pending tunnel builds across all
3708      pools, in addition to simply throttling the number of new requests per
3709      minute for each pool individually.  This should avoid the cascading
3710      failure when tunnel builds take too long, as no new builds will be
3711      created until the previous ones are handled.
3712    * Factored out and extended the DataHelper's unit tests for dealing with
3713      long and date formatting.
3714    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3715      alone doesn't address the bug where jetty asks for authentication too
3716      much.  (thanks orion!)
3717    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3718      them to the filesystem.
3719
37202005-02-27  jrandom
3721    * Don't rerequest leaseSets if there are already pending requests
3722    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3723      temporary disabled the streaming lib packet caching.
3724    * Reduced the resend RTT penalty to 10s
3725
37262005-02-26  jrandom
3727    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3728
37292005-02-26  jrandom
3730    * Further streaming lib caching improvements
3731    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3732      increase the RTT on resends.
3733    * Lower the default message size to 4KB from 16KB to further reduce the
3734      chance of failed fragmentation.
3735    * Extend tunnel rebuild throttling to include fallback rebuilds
3736    * If there are less than 20 routers known, don't drop the last 20 (to help
3737      avoid dropping all peers under catastrophic failures)
3738    * New stats for end to end messages - "client.leaseSetFoundLocally",
3739      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3740
37412005-02-24  jrandom
3742    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3743      overload under catastrophic failures (thanks Tracker and cervantes!)
3744    * Block the router startup process until we've initialized the clock
3745
37462005-02-24  jrandom
3747    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3748      data in the streaming lib.
3749    * Fixed a streaming lib bug where the connection initiator would fail the
3750      stream if the ACK to their SYN was lost.
3751
37522005-02-23  jrandom
3753    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3754      get stale tunnel pools, don't you think?
3755
3756* 2005-02-23  0.5.0.1 released
3757
37582005-02-22  jrandom
3759    * Reworked the tunnel (re)building process to remove the tokens and
3760      provide cleaner controls on the tunnels built.
3761    * Fixed situations where the timestamper wanted to test more servers than
3762      were provided (thanks Tracker!)
3763    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3764      (thanks Tracker!)
3765
37662005-02-22  jrandom
3767    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3768      try to automatically reconnect on accept()/connect(..)).
3769    * Loop check for expired lease republishing (just in case)
3770
37712005-02-22  jrandom
3772    * Adjusted (and fixed...) the timestamper change detection
3773    * Deal with a rare reordering bug at the beginning of a stream (so we
3774      don't drop it unnecessarily)
3775    * Cleaned up some dropped message handling in the router
3776    * Reduced job queue churn when dealing with a large number of tunnels by
3777      sharing an expiration job
3778    * Keep a separate list of the most recent CRIT messages (shown on the
3779      logs.jsp).  This way they don't get buried among any other messages.
3780    * For clarity, display the tunnel variance config as "Randomization" on
3781      the web console.
3782    * If lease republishing fails (boo! hiss!) try it again
3783    * Actually fix the negative jobLag in the right place (this time)
3784    * Allow reseeding when there are less than 10 known peer references
3785    * Lots of logging updates.
3786
37872005-02-20  jrandom
3788    * Allow the streaming lib resend frequency to drop down to 20s as the
3789      minimum, so that up to 2 retries can get sent on an http request.
3790    * Add further limits to failsafe tunnels.
3791    * Keep exploratory and client tunnel testing and building stats separate.
3792    * Only use the 60s period for throttling tunnel requests due to transient
3793      network overload.
3794    * Rebuild tunnels earlier (1-3m before expiration, by default)
3795    * Cache the next hop's routerInfo for participating tunnels so that the
3796      tunnel participation doesn't depend on the netDb.
3797    * Fixed a long standing bug in the streaming lib where we wouldn't always
3798      unchoke messages when the window size grows.
3799    * Make sure the window size never reaches 0 (duh)
3800
38012005-02-20  jrandom
3802    * Only build failsafe tunnels if we need them
3803    * Properly implement the selectNotFailingPeers so that we get a random
3804      selection of peers, rather than using the strictOrdering (thanks dm!)
3805    * Don't include too many "don't tell me about" peer references in the
3806      lookup message - only send the 10 peer references closest to the target.
3807
38082005-02-19  jrandom
3809    * Only build new extra tunnels on failure if we don't have enough
3810    * Fix a fencepost in the tunnel building so that e.g. a variance of
3811      2 means +/- 2, not +/- 1 (thanks dm!)
3812    * Avoid an NPE on client disconnect
3813    * Never select a shitlisted peer to participate in a tunnel
3814    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3815    * Keep session tags around for a little longer, just in case (grr)
3816    * Cleaned up some closing event issues on the streaming lib
3817    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3818      so that 0.4.* users will need to do a clean install, but we don't need
3819      to shove an additional 2MB in each update to those already on 0.5.
3820    * Imported the susimail css (oops, thanks susi!)
3821
3822* 2005-02-18  0.5 released
3823
38242005-02-17  jrandom
3825    * If the clock is adjusted during a job run, don't act as if the job took
3826      negative time.
3827
38282005-02-17  jrandom
3829    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3830
38312005-02-17  jrandom
3832    * Fixed the braindead tunnel testing logic
3833    * If a large number of tunnels are failing (within the last 5-10 minutes)
3834      and the current tunnel pool's configuration allows it, randomly build a
3835      zero hop tunnel to replace failed tunnels.
3836    * Enable postman's POP3 and SMTP tunnels by default
3837
38382005-02-16  jrandom
3839    * Added some error handling when the number of session tags exceeds the
3840      realistic capacity, dropping a random chunk of received tag sets and
3841      conducting some minor analysis of the remaining ones.  This is a part
3842      of a pretty serious error condition, and logs as CRIT (if/when people
3843      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3844      puts in the wrapper.log or /logs.jsp)
3845    * Update the addressbook to only write to the published hosts location
3846      if the addressbook's config contains "should_publish=true" (by default,
3847      it contains "should_publish=false")
3848
38492005-02-16  jrandom
3850    * (Merged the 0.5-pre branch back into CVS HEAD)
3851    * Replaced the old tunnel routing crypto with the one specified in
3852      router/doc/tunnel-alt.html, including updates to the web console to view
3853      and tweak it. 
3854    * Provide the means for routers to reject tunnel requests with a wider
3855      range of responses:
3856        probabalistic rejection, due to approaching overload
3857        transient rejection, due to temporary overload
3858        bandwidth rejection, due to persistent bandwidth overload
3859        critical rejection, due to general router fault (or imminent shutdown)
3860      The different responses are factored into the profiles accordingly.
3861    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3862      with a series of new properties, relevent to the new tunnel routing code:
3863        inbound.nickname (used on the console)
3864        inbound.quantity (# of tunnels to use in any leaseSets)
3865        inbound.backupQuantity (# of tunnels to keep in the ready)
3866        inbound.length (# of remote peers in the tunnel)
3867        inbound.lengthVariance (if > 0, permute the length by adding a random #
3868                                up to the variance.  if < 0, permute the length
3869                                by adding or subtracting a random # up to the
3870                                variance)
3871        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3872                    in that client's pool)
3873      There are other options, and more will be added later, but the above are
3874      the most relevent ones.
3875    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3876    * Compress all profile data on disk.
3877    * Adjust the reseeding functionality to work even when the JVM's http proxy
3878      is set.
3879    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3880      max window size.
3881    * Reduced the default streaming lib max message size to 16KB (though still
3882      configurable by the user), also doubling the default maximum window
3883      size.
3884    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3885    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3886      the first byte of the SHA256.
3887    * Added a new "netId" flag to let routers drop references to other routers
3888      who we won't be able to talk to.
3889    * Extended the timestamper to get a second (or third) opinion whenever it
3890      wants to actually adjust the clock offset.
3891    * Replaced that kludge of a timestamp I2NP message with a full blown
3892      DateMessage.
3893    * Substantial memory optimizations within the router and the SDK to reduce
3894      GC churn.  Client apps and the streaming libs have not been tuned,
3895      however.
3896    * More bugfixes than you can shake a stick at.
3897
38982005-02-13  jrandom
3899    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3900      only contains 32bit versions, so build your own, placing libjbigi.so in
3901      your install dir if necessary.  (thanks mule!)
3902    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3903      (thanks spaetz!)
3904
39052005-02-10  smeghead
3906    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3907      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3908      Pants are still non-functional at this time so don't mess with it yet
3909      unless you want to potentially mangle your working copy of CVS.
3910
39112005-02-09  duck
3912    * Allow an unneeded newline in the SAM client connection without
3913      disconnecting.
3914
39152005-02-07  jrandom
3916    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3917
39182005-02-06  Sugadude
3919    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3920
39212005-02-03  smeghead
3922    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3923      library from GNU Crypto's CVS HEAD sources.
3924
39252005-01-26  smeghead
3926    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3927      packages and installed to $i2pinstalldir/scripts.
3928    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3929      using gij + libgcj, and --sourcedir to run them from the source tree
3930      instead of the installation directory.
3931    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3932      causing gcj to toss a compilation warning (jrandom++).
3933
39342005-01-26  smeghead
3935    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3936      tests and benchmarks.
3937    * Routerconsole now builds under gcj 3.4.3.
3938    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3939
39402005-01-25  smeghead
3941    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3942      supporting apps (except for the routerconsole which is still being
3943      investigated).
3944
39452005-01-24  smeghead
3946    * C#-ification of sam-sharp: interface greatly simplified using delegates
3947      and events; SamBaseEventHandler provides basic implementation and helper
3948      methods but is now optional.
3949    * NAnt buildfile and README added for sam-sharp.
3950
39512005-01-23  smeghead
3952    * Port the java SAM client library to mono/C# and released into the
3953      public domain.  The 0.1 version of this port is available in CVS as
3954      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3955      library has been removed.
3956
39572005-01-21  Jhor
3958    * Updated jbigi build scripts for OSX.
3959
39602005-01-21  jrandom
3961    * Added support for OSX to the NativeBigInteger code so that it will look
3962      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3963      is not bundled with the shipped jbigi.jar yet though.
3964
39652005-01-18  jrandom
3966    * Increased the max # session tags maintained and decreased slightly the
3967      period over which they are gathered.
3968
39692005-01-17  jrandom
3970    * Added meaningful support for adjusting the preferred message size in the
3971      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3972      whatever).  The other side will mimic a reduction (but never an increase).
3973    * Always make sure to use distinct ConnectionOption objects for each
3974      connection (duh)
3975    * Reduced the default ACK delay to 500ms on in the streaming lib
3976    * Only shrink the streaming window once per window
3977    * Don't bundle a new jetty.xml with updates
3978    * Catch another local routerInfo corruption issue on startup.
3979
39802005-01-15  cervantes
3981    * Added support to the eepproxy for URLs such as
3982      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3983      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3984
39852005-01-15  jrandom
3986    * Caught a series of (previously unhandled) errors caused by requeueing
3987      messages that had timed out on the TCP transport (thanks mae^!)
3988    * Reduce the barrier to dropping session tags on streaming lib resends -
3989      every fourth send should drop the tags, forcing ElGamal encryption.  This
3990      will help speed up the recovery after a disconnect, rather than the drop
3991      every fifth send.
3992
3993* 2005-01-06  0.4.2.6 released
3994
39952005-01-06  jrandom
3996    * Added a startup message to the addressbook, printing its version number
3997      to stdout (which is sent to wrapper.config) when it loads.
3998    * Updated the addressbook to reread the config file periodically
3999    * Added orion.i2p to the list of eepsites on the default homepage
4000
40012005-01-05  jrandom
4002    * Handle unexpected network read errors more carefully (thanks parg!)
4003    * Added more methods to partially compare (DataHelper) and display
4004      arrays (Base64.encode).
4005    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
4006    * Be more generous on the throttle when just starting up the router
4007    * Fix a missing scheduled event in the streaming lib (caused after reset)
4008    * Add a new DisconnectListener on the I2PSocketManager to allow
4009      notification of session destruction.
4010    * Make sure our own router identity is valid, and if it isn't, build a new
4011      one and restart the router.  Alternately, you can run the Router with
4012      the single command line argument "rebuild" and it will do the same.
4013
40142004-12-31  ragnarok
4015    * Integrated latest addressbook changes (2.0.3) which include support for
4016      deploying as a .war file with no existing addressbook configuration.
4017    * Updated main build process to bundle the addressbook.war in the
4018      i2pinstall.jar and i2pupdate.zip.
4019
40202004-12-31  jrandom
4021    * Speling fxi (thanks digum!)
4022    * Bugfix for the I2PTunnel web interface so that it now properly launches
4023      newly added tunnels that are defined to be run on startup (thanks ugha!)
4024
40252004-12-30  jrandom
4026    * Revised the I2PTunnel client and httpclient connection establishment
4027      throttles.  There is now a pool of threads that build the I2PSocket
4028      connections with a default size of 5, configurable via the I2PTunnel
4029      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
4030      not throttle the number of concurrent builders, but will launch a thread
4031      per socket during establishment).  In addition, sockets accepted but
4032      not yet allocated to one of the connection builders will be destroyed
4033      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
4034      0, it will wait indefinitely).
4035
40362004-12-29  jrandom
4037    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
4038      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
4039    * Don't treat connection inactivity closure as a connection error.
4040
40412004-12-29  jrandom
4042    * Add in a new keepalive event on each TCP connection, proactively sending
4043      a (tiny) time message every minute or two, as well as killing the
4044      connection if no message has been fully sent within 5 minutes or so. 
4045      This should help deal with hung connections from IP address changes.
4046
40472004-12-28  jrandom
4048    * Cleaned up the resending and choking algorithm in the streaming lib.
4049    * Removed the read timeout override for I2PTunnel's httpclient, allowing
4050      it to use the default for the streaming lib.
4051    * Revised ack triggers in the streaming lib.
4052    * Logging.
4053
4054* 2004-12-21  0.4.2.5 released
4055
40562004-12-21  jrandom
4057    * Track a new stat for expired client leases (client.leaseSetExpired).
4058
40592004-12-21  jrandom
4060    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
4061      and added windows info to the headless docs. (thanks ardvark!)
4062    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
4063      a stream (thanks frosk!)
4064    * Add a pair of new stats for monitoring tunnel participation -
4065      tunnel.participatingBytesProcessed (total # bytes transferred) and
4066      tunnel.participatingBytesProcessedActive (total # bytes transferred for
4067      tunnels whose byte count exceed the 10m average).  This should help
4068      further monitor congestion issues.
4069    * Made the NamingService factory property public (thanks susi!)
4070
40712004-12-20  jrandom
4072    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
4073    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
4074      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
4075      reasoning is gone.
4076
40772004-12-19  jrandom
4078    * Fix for a race on startup wrt the new stats (thanks susi!)
4079
40802004-12-19  jrandom
4081    * Added three new stats - router.activePeers, router.fastPeers, and
4082      router.highCapacityPeers, updated every minute
4083
40842004-12-19  jrandom
4085    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
4086      hostname should be sent to the webserver.  By default, new installs will
4087      have an httpserver pointing at their jetty instance with the spoofed
4088      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
4089
40902004-12-19  scintilla
4091    * Convert native jcpuid code from C++ to C. This should alleviate build
4092      problems experienced by some users.
4093
4094* 2004-12-18  0.4.2.4 released
4095
40962004-12-16  jrandom
4097    * Catch another oddball case for a reset connection in the streaming lib.
4098    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
4099      dumps the current state of that peer's profile.  Instead of the full
4100      base64, you can pass in however many characters you have and it will
4101      return the first match found.
4102
41032004-12-16  jrandom
4104    * Remove the randomized factor in the tunnel rejection by bandwidth -
4105      we now accept the request if we've allocated less than our limit
4106      and reject it if we've allocated more.
4107    * Stick to the standard capacity scale on tunnel rejection, even for
4108      the 10m period.
4109    * Build the time message at the very last possible moment
4110
41112004-12-15  jrandom
4112    * Handle hard disconnects more gracefully within the streaming lib, and
4113      log unmonitored events more aggressively.
4114    * If we drop a peer after connection due to clock skew, log it to the
4115      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
4116      the stat 'tcp.disconnectAfterSkew'.
4117    * Fixed the formatting in the skew display
4118    * Added an ERROR message that is fired once after we run out of
4119      routerInfo files (thanks susi!)
4120    * Set the connect timeout equal to the streaming lib's disconnect timeout
4121      if not already specified (the I2PTunnel httpclient already enforces a
4122      60s connect timeout)
4123    * Fix for another connection startup problem in the streaming lib.
4124    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4125    * Adjust the capacity calculations so that tunnel failures alone in the
4126      last 10m will not trigger a 0 capacity rank.
4127
41282004-12-14  jrandom
4129    * Periodically send a message along all I2NP connections with the router's
4130      current time, allowing the receiving peer to determine that the clock
4131      has skewed too much, and hence, disconnect.  For backwards compatability
4132      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4133      next time we have a backwards compatability break, we can put in a proper
4134      message setup for it.
4135
41362004-12-14  jrandom
4137    * Reenable the probabalistic drop on the TCP queues to deal with good old
4138      fashioned bandwidth limiting.  However, by default the probability is
4139      rigged to reserve 0% of the queue free - meaning we just aggressively
4140      fail messages in the queue if we're transferring too slowly.  That
4141      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4142      (or whatever) and the drop code can be disabled with the parameter
4143      'tcp.dropProbabalistically=false'.
4144    * Still penalize a peer on tunnel failure, but don't immediately drop
4145      their capacity to 0.
4146    * More aggressively ACK duplicates
4147    * Randomize the timestamper period
4148    * Display the clock skew on the connection logs when a peer sends it.
4149    * Allow the timestamper to fix skews of up to 10 minutes
4150    * Logging
4151
41522004-12-13  jrandom
4153    * Added some error checking on the new client send job (thanks duck!)
4154    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4155      proportional to the bytes allocated in existing tunnels vs the bytes
4156      allowed through the bandwidth limiter).
4157    * Enable a new configuration parameter for triggering a tunnel rebuild
4158      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4159      before killing the tunnel (default 0).
4160    * Gather more data that we rank capacity by (now we monitor and balance the
4161      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4162    * Fix a truncation/type conversion problem on the long term capacity
4163      values (we were ignoring the daily stats outright)
4164
41652004-12-11  jrandom
4166    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4167      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4168      on .connect, but is unable to transfer any data in any direction.  We now
4169      detect that condition for the I2PTunnelHTTPClient and throw up the right
4170      error page.
4171    * Logging
4172
41732004-12-11  jrandom
4174    * Use a simpler and less memory intensive job for processing outbound
4175      client messages when the session is in mode=bestEffort.  We can
4176      immediately discard the data as soon as its sent the first time,
4177      rather than wait for an ack, since we will never internally resend.
4178    * Reduce some synchronization to avoid a rare deadlock
4179    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4180      case it within the tunnel controller.
4181    * Script cleanup for building jbigi/jcpuid
4182    * Logging
4183
4184* 2004-12-08  0.4.2.3 released
4185
41862004-12-08  jrandom
4187    * Revised the buffering when reading from the SAM client and writing
4188      to the stream.  Also added a thread (sigh) so we don't block the
4189      SAM client from giving us more messages for abnormally long periods
4190      of time.
4191    * Display the router version in the logs on startup (oft requested)
4192    * Fix a race during the closing of a messageOutputStream
4193
41942004-12-06  jrandom
4195    * Don't do a 'passive flush' while there are already outbound messages
4196      unacked.
4197    * Show the reseed link if up to 10 peers profiles are active (thanks
4198      dburton!)
4199
42002004-12-06  jrandom
4201    * Don't propogate streaming connection failures out to the SAM bridge as
4202      fatal errors.
4203    * Dont barf on repeated I2CP closure.
4204
42052004-12-05  jrandom
4206    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4207      getLocalhost call
4208
42092004-12-05  jrandom
4210    * Default the I2CP listener to localhost only, unless overridden by
4211      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4212    * More SAM fixes for things recently broken (whee)
4213
42142004-12-05  jrandom
4215    * Fix the recently broken SAM bridge (duh)
4216    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4217      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4218      StreamSink and StreamSend apps for transferring files.
4219    * Make the passive flush timer fire more frequently.
4220
42212004-12-05  jrandom
4222    * Fixed some links in the console (thanks ugha!) and the javadoc
4223      (thanks dinoman!)
4224    * Fix the stream's passive flush timer (oh, its supposed to work?)
4225
42262004-12-03  jrandom
4227    * Toss in a small pool of threads (3) to execute the events queued up with
4228      the SimpleTimer, as we do currently see the occational event
4229      notification spiking up to a second or so.
4230    * Implement a SAM client API in java, useful for event based streaming (or
4231      for testing the SAM bridge)
4232    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4233      bridge is being run outside of the router).
4234    * Include the SAM test code in the sam.jar
4235    * Remove an irrelevent warning message from SAM, which was caused by
4236      perfectly normal operation due to a session being closed.
4237    * Removed some unnecessary synchronization in the streaming lib's
4238      PacketQueue
4239    * More quickly clean up the memory used by the streaming lib by
4240      immediately killing each packet's resend job as soon as it is ACKed (or
4241      cancelled), so that there are no longer any valid pointers to the
4242      (potentially 32KB) packet.
4243    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4244    * Drop packets that would expand our inbound window beyond our maximum
4245      buffer size (default 32 messages)
4246    * Always read the ACK/NACK data from the verified packets received, even
4247      if we are going to drop them
4248    * Always adjust the window when there are messages ACKed, though do not
4249      change its size except as before.
4250    * Streamlined some synchronization in the router's I2CP handling
4251    * Streamlined some memory allocation in the SAM bridge
4252    * Default the streaming lib to disconnect on inactivity, rather than send
4253      an empty message.
4254
42552004-12-01  jrandom
4256    * Fix for a race in the streaming lib as caused by some odd SAM activity
4257
4258* 2004-12-01  0.4.2.2 released
4259
42602004-12-01  jrandom
4261    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4262      connections to work (thanks duck!)
4263    * Make sure we override the inactivity timeout too
4264
4265* 2004-12-01  0.4.2.1 released
4266
42672004-12-01  jrandom
4268    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4269      include the forged User-agent header.
4270    * Adjust the default read timeout on the eepproxy to 60s, unless
4271      overridden.
4272    * Minor tweak on stream shutdown.
4273
42742004-11-30  jrandom
4275    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4276    * Build in a simple timeout to flush data queued into the I2PSocket but
4277      not yet flushed.
4278    * Don't explicitly flush after each SAM stream write, but leave it up to
4279      the [nonblocking] passive flush.
4280    * Don't whine about 10-99 connection events occurring in a second
4281    * Don't wait for completion of packets that will not be ACKed (duh)
4282    * Adjust the congestion window, even if the packet was resent (duh)
4283    * Make sure to wake up any blocking read()'s when the MessageInputStream
4284      is close()ed (duh)
4285    * Never wait more than the disconnect timeout for a write to complete
4286
42872004-11-29  jrandom
4288    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4289
42902004-11-29  jrandom
4291    * Reduced contention for local client delivery
4292    * Drop the new code that munges the wrapper.config.  Instead, updates that
4293      need to change it will include their own wrapper.config in the
4294      i2pupdate.zip, overwriting the existing file.  If the file
4295      "wrapper.config.updated" is included, it is deleted at first opportunity
4296      and the router shut down, displaying a notice that the router must be
4297      started again cleanly to allow the changes to the wrapper.config to take
4298      effect.
4299    * Properly stop accept()ing I2PSocket connections if we close down the
4300      session (duh).
4301    * Make sure we cancel any outstanding Packets in flight when a connection
4302      is terminated (thanks susi!)
4303    * Split up the I2PTunnel closing a little further.
4304
43052004-11-28  jrandom
4306    * Accept IP address detection changes with a 2-out-of-3 minimum.
4307    * As long as the router is up, keep retrying to bind the I2CP listener.
4308    * Decrease the java service wrapper ping frequency to once every 10
4309      minutes, rather than once every 5 seconds.
4310
43112004-11-27  jrandom
4312    * Some cleanup and bugfixes for the IP address detection code where we
4313      only consider connections that have actually sent and received messages
4314      recently as active, rather than the mere presence of a TCP socket as
4315      activity.
4316
43172004-11-27  jrandom
4318    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4319      lib can do that (without an additional per-connection thread).
4320    * Close the I2PTunnel forwarder threads more aggressively
4321
43222004-11-27  jrandom
4323    * Fix for a fast loop caused by a race in the new streaming library (thanks
4324      DrWoo, frontier, pwk_, and thetower!)
4325    * Minor updates to the SimpleTimer and Connection to help track down a
4326      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4327      many events/tasks fire in a second)
4328    * Minor fixes for races on client disconnects (causing NPEs)
4329
4330* 2004-11-26  0.4.2 released
4331
43322004-11-26  jrandom
4333    * Enable the new streaming lib as the default.  That means, for any
4334      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4335
43362004-11-25  jrandom
4337    * Revised the installer to include start menu and desktop shortcuts for
4338      windows platforms, including pretty icons (thanks DrWoo!)
4339    * Allow clients specified in clients.config to have an explicit startup
4340      delay.
4341    * Update the default install to launch a browser pointing at the console
4342      whenever I2P starts up, rather than only the first time it starts up
4343      (configurable on /configservice.jsp, or in clients.config)
4344    * Bugfix to the clock skew checking code to monitor the delta between
4345      offsets, not the offset itself (duh)
4346    * Router console html update
4347    * New (and uuuuugly) code to verify that the wrapper.config contains
4348      the necessary classpath entries on update.  If it has to update the
4349      wrapper.config, it will stop the JVM and service completely, since the
4350      java service wrapper doesn't reread the wrapper.config on JVM restart -
4351      requiring the user to manually restart the service after an update.
4352    * Increase the TCP connection timeout to 30s (which is obscenely long)
4353
43542004-11-22  jrandom
4355    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4356    * New stat to keep track of slow jobs (ones that take more than a second
4357      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4358
43592004-11-21  jrandom
4360    * Update the I2PTunnel web interface to include an option for the new
4361      streaming lib (which is ignored until the 0.4.2 release).
4362    * Revised the I2PTunnel web interface to keep the I2CP options of client
4363      and httpclient tunnels in sync, as they all share the same I2CP session.
4364
43652004-11-21  jrandom
4366    * Only allow small clock skews after the first 10 minutes of operation
4367      (to prevent later network lag bouncing us way off course - yes, we
4368      really need an NTP impl to balance out the network burps...)
4369    * Revamp the I2PTunnel web interface startup process so that everything
4370      is shown immediately, so that different pieces hanging don't hang
4371      the rest, and other minor bugfixes.
4372    * Take note of SAM startup error (in case you're already running a SAM
4373      bridge...)
4374    * Increase the bandwidth limiter burst values available to 10-60s (or
4375      whatever is placed in /configadvanced.jsp, of course)
4376
43772004-11-21  jrandom
4378    * Allow end of line comments in the hosts.txt and other config files,
4379      using '#' to begin the comments (thanks susi!)
4380    * Add support to I2PTunnel's 'client' feature for picking between multiple
4381      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4382    * Add a quick link on the left hand nav to reseed if there aren't enough
4383      known peers, as well as link to the config page if there are no active
4384      peers.  Revised config page accordingly.
4385
43862004-11-21  jrandom
4387    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4388      rather that every 15 minutes, and increase the warning period in which
4389      we refresh tags from 30s to 2 minutes.
4390    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4391      to close the I2PSocket (leaving it to timeout).
4392
43932004-11-19  jrandom
4394    * Off-by-one fix to the tunnel pool management code, along side some
4395      explicit initialization.  This can affect clients whose lengths are
4396      shorter than the router's default (thanks duck!)
4397
43982004-11-17  jrandom
4399    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4400      Ragnarok!)
4401
44022004-11-17  jrandom
4403    * Minor logging update.
4404
44052004-11-16  jrandom
4406    * Clean up the propogation of i2psocket options so that various streaming
4407      libs can honor them more precisely
4408
44092004-11-16  jrandom
4410    * Minor logging update
4411
44122004-11-14  jrandom
4413    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4414    * Fix a leak injected into the SimpleTimer
4415    * Fix a race condition in the tunnel message handling
4416
44172004-11-13  jrandom
4418    * Added throttles on how many I2PTunnel client connections we open at once
4419    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4420      the streaming library used should take care of any buffering.
4421    * Added a cache for some objects used in I2PTunnel, especially useful when
4422      there are many short lived connections.
4423    * Trimmed the SimpleTimer's processing a bit
4424
44252004-11-10  jrandom
4426    * Allow loading the (mini)streaming connection options from the
4427      environment.
4428    * More defensive programming in the DSA implementation.
4429
44302004-11-08  jrandom
4431    * Remove spurious flush calls from I2PTunnel, and work with the
4432      I2PSocket's output stream directly (as the various implementations
4433      do their own buffering).
4434    * Another pass at a long standing JobQueue bug - dramatically simplify
4435      the job management synchronization since we dont need to deal with
4436      high contention (unlike last year when we had dozens of queue runners
4437      going at once).
4438    * Logging
4439
44402004-11-08  jrandom
4441    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4442
4443* 2004-11-06  0.4.1.4 released
4444
44452004-11-06  jrandom
4446    * Expose a drop down on the /configclients.jsp to enter the outbound
4447      tunnel depth.
4448    * Improved *hosts.txt loading
4449    * Explicitly override the JVM's timezone settings to use GMT so that
4450      any client applications which use timezones won't leak sensitive
4451      data (thanks gott!)
4452    * Bundle sam.jar in the update (thanks duck!)
4453
44542004-11-06  jrandom
4455    * Fix for a long standing synchronization bug in the SDK that in rare
4456      instances can add a few seconds of lag.
4457
44582004-11-05  jrandom
4459    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4460      parameters, verify proper operation after multiple session lifetimes,
4461      as well as some synchronization problems.
4462    * New properties method on the DataHelper class.
4463    * Address a race on fast disconnecting clients
4464
44652004-11-02  jrandom
4466    * Fix for a long standing synchronization bug in the JobQueue (and added
4467      some kooky flags to make sure it stays dead)
4468    * Update the ministreaming lib to force mode=guaranteed if the default
4469      lib is used, and mode=best_effort for all other libs.
4470
44712004-11-02  jrandom
4472    * Fixed up the configuration overrides for the streaming socket lib
4473      integration so that it properly honors env settings.
4474    * More memory usage streamlining (last major revamp for now, i promise)
4475
44762004-11-01  jrandom
4477    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4478    * Honor message expirations for some tunnel jobs that were prematurely
4479      expired.
4480    * Streamline memory usage with temporary object caches and more efficient
4481      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4482      message handling.
4483    * Fix some situations where we forward messages too eagerly.  For a
4484      request at the tunnel endpoint, if the tunnel is inbound and the target
4485      is remote, honor the message by tunnel routing the data rather than
4486      sending it directly to the requested location.
4487
44882004-10-30  jrandom
4489    * Cache the temporary objects used in the AES encryption/decryption
4490      process so that AES doesn't require any memory allocation to process
4491      data.
4492    * Dramatically reduce memory usage within various crypto implementations
4493      by avoiding unnecessary (though simplifying) buffers.
4494    * If we specify some tags to be sent in an I2CP message explicitly, use
4495      only those, not those plus a new set (otherwise we aren't sure on ACK
4496      which set was delivered)
4497    * Allow configuration for the partial send timeout (how long before
4498      resending a message down a different tunnel in a lease).  This can be
4499      updated with the "router.clientPartialSendTimeout" router config prop.
4500    * Logging
4501
45022004-10-29  jrandom
4503    * Strip the Referer, Via, and From headers completely, rather than
4504      inserting a bogus value ("i2p").  This should help with the use of
4505      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4506
45072004-10-27  jrandom
4508    * Fix a strange race condition on i2cp client disconnect.
4509    * win98 startup fixes (thanks tester-1 and ardvark!)
4510    * include build scripts for the new streaming lib (which is NOT ready
4511      for use yet, but you can hack around with it)
4512
45132004-10-24  jrandom
4514    * Allow explicit inclusion of session tags in the SDK, enabling the
4515      resending of tags bundled with messages that would not otherwise
4516      be ACKed.
4517    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4518      no DeliveryStatusMessage will be bundled (and as such, client apps using
4519      it will need to do their own session tag ack/nack).
4520    * Handle client errors when notifying them of message availability.
4521    * New StreamSinkSend which sends a file to a destination and disconnects.
4522    * Update the I2PSocketManagerFactory to build the specific
4523      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4524      containing the class name of the I2PSocketManager to instantiate.
4525
45262004-10-23  jrandom
4527    * Minor ministreaming lib refactoring to simplify integration of the full
4528      streaming lib.
4529    * Minor bugfixes to data structure serialization.
4530
4531* 2004-10-18  0.4.1.3 released
4532
45332004-10-18  jrandom
4534    * Allow sending messages with a section of a byte array.
4535    * Reduced stats published.
4536
45372004-10-17  jrandom
4538    * Don't b0rk on whitespace in the router address.
4539
45402004-10-16  jrandom
4541    * More aggressively reduce the capacity of peers if their tunnels are
4542      failing so that we move off them quicker.
4543    * Simplify some data structure serialization for reuse in the streaming
4544      lib, as well as add support for signing and verifying partial byte
4545      arrays.
4546    * Logging updates
4547
45482004-10-16  jrandom
4549    * Increased the default minimum tunnel test time to 5 seconds, since we
4550      still see the occational message processing time spike to 2 seconds.
4551    * Update the SimpleTimer to allow rescheduling a task thats already
4552      queued (useful for the new streaming lib).
4553
45542004-10-15  jrandom
4555    * Replaced old minimum tunnel test timeout of 1s with a configurable
4556      value (router.config property "router.tunnelTestMinimum", with the
4557      default of 2s).
4558
45592004-10-14  jrandom
4560    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4561      peer, so don't use it as a key point of the IsFailing calculator.
4562      We still use it as a key point of the Capacity calculator, however.
4563
45642004-10-14  jrandom
4565    * Allow for a configurable tunnel "growth factor", rather than trying
4566      to achieve a steady state.  This will let us grow gradually when
4567      the router is needed more, rather than blindly accepting the request
4568      or arbitrarily choking it at an averaged value.  Configure this with
4569      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4570    * Adjust the tunnel test timeouts dynamically - rather than the old
4571      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4572      test time (the deviation factor can be adjusted by setting
4573      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4574      find the 'good' tunnels.
4575    * Added some crazy debugging to try and track down an intermittent hang.
4576
45772004-10-13  jrandom
4578    * Fix the probabalistic tunnel reject (we always accepted everything,
4579      since the docs on java.util.Random.nextDouble() are wrong..)
4580    * Fixed a race on startup (thanks Quadn!)
4581
45822004-10-12  jrandom
4583    * Disable the probabalistic drop by default (enable via the router config
4584      property "tcp.dropProbabalistically=true")
4585    * Disable the actual watchdog shutdown by default, but keep track of more
4586      variables and log a lot more when it occurs (enable via the router
4587      config property "watchdog.haltOnHang=true")
4588    * Implement some tunnel participation smoothing by refusing requests
4589      probabalistically as our participating tunnel count exceeds the previous
4590      hour's, or when the 10 minute average tunnel test time exceeds the 60
4591      minute average tunnel test time.  The probabilities in both cases are
4592      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4593      and you had previously only participated in 50, you'll have a 25% chance
4594      of accepting a subsequent request.
4595
4596* 2004-10-10  0.4.1.2 released
4597
45982004-10-10  cervantes
4599    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4600      the request.
4601
46022004-10-09  jrandom
4603    * Added a watchdog timer to do some baseline liveliness checking to help
4604      debug some odd errors.
4605    * Added a pair of summary stats for bandwidth usage, allowing easy export
4606      with the other stats ("bw.sendBps" and "bw.receiveBps")
4607    * Trimmed another memory allocation on message reception.
4608
46092004-10-08  jrandom
4610    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4611      during its operation.
4612
46132004-10-08  jrandom
4614    * Don't kill the establisher threads during a soft restart.
4615    * Attempt to validate the peer's routerInfo earlier during handshaking.
4616    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4617      during its operation.
4618
46192004-10-07  jrandom
4620    * Reimplement the I2NP reading with less temporary memory allocation.
4621      There is still significant GC churn, especially under load, but this
4622      should help.
4623    * Catch some oddball errors in the transport (message timeout while
4624      establishing).
4625
46262004-10-07  jrandom
4627    * Expire queued messages even when the writer is blocked.
4628    * Reimplement most of the I2NP writing with less temporary memory
4629      allocations (I2NP reading still gobbles memory).
4630
46312004-10-06  jrandom
4632    * Implement an active queue management scheme on the TCP transports,
4633      dropping messages probabalistically as the queue fills up.  The
4634      estimated queue capacity is determined by the rate at which messages
4635      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4636      we exceed 1/2 of the estimated capacity, we drop messages throughout
4637      the queue probabalistically with regards to their size.  This is based
4638      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4639      estimated connection capacity.  We may want to consider using a send
4640      rate and queue size measured across all connections, to deal with our
4641      own local bandwidth saturation, but we'll try the per-con metrics first.
4642
46432004-10-06  jrandom
4644    * Enable explicit disabling of the systray entirely for windows machines
4645      with strange configurations: add -Dsystray.disable=true to the java
4646      command line.  (thanks mihi!)
4647
46482004-10-05  jrandom
4649    * Allow peers on the same LAN to communicate with each other safely even
4650      when they cannot talk to each other through the external address.
4651
46522004-10-05  jrandom
4653    * Display how much time is left before the graceful shutdown is complete.
4654    * Debug some improperly failed messages on timeout or disconnection.
4655
46562004-10-05  jrandom
4657    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4658      (thanks mule!)
4659    * Handle some more error conditions regarding abruptly closing sockets
4660      (thanks Jonva!)
4661
46622004-10-04  jrandom
4663    * Update the shitlist to reject a peer for an exponentially increasing
4664      period of time (with an upper bounds of an hour). 
4665    * Various minor stat and debugging fixes
4666
46672004-10-03  jrandom
4668    * Add a new stat logging component to optionally dump the raw stats to
4669      disk as they are generated, rather than rely upon the summarized data.
4670      By default, this is off, but the router property "stat.logFilters" can
4671      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4672      which will be written to the file "stats.log" (or whatever the property
4673      "stat.logFile" is set to).  This can also log profile related stats,
4674      such as "dbResponseTime" or "tunnelTestResponseTime".
4675
46762004-10-02  jrandom
4677    * Assure that we quickly fail messages bound for shitlisted peers.
4678    * Address a race on startup where the first peer contacted could hang the
4679      router (thanks Romster!)
4680    * Only whine about an intermittent inability to query the time server once
4681
46822004-10-02  jrandom
4683    * Command line utility to verify a peer's reachability - simply run
4684      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4685      will print out whether that peer is reachable or not (using a simple
4686      verification handshake).
4687
4688* 2004-10-01  0.4.1.1 released
4689
46902004-10-01  jrandom
4691    * Handle partial reseeds, caused by seeds going away before the download
4692      completes (thanks Sugadude!)
4693
46942004-10-01  jrandom
4695    * Explicitly refuse IPv6 addresses, since only some peers support
4696      them and we want fully reachable peers.
4697
46982004-10-01  jrandom
4699    * Additional error handling for a variety of transport layer errors.
4700
4701* 2004-09-30  0.4.1 released (not backwards compatible)
4702
47032004-09-30  jrandom
4704    * Bundle the configuration necessary to run an eepsite out of the box
4705      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4706      the key listed on the I2PTunnel configuration page, and its up.
4707    * Router console cleanup, and some (off by default) tunnels -
4708      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4709      irc.baffled.i2p (port 7661)
4710
47112004-09-29  jrandom
4712    * Always wipe the Jetty work directory on startup, so that web updates
4713      are reflected immediately (Jetty does not honor the cache across
4714      multiple executions)
4715
47162004-09-27  jrandom
4717    * Limit the number of connection tags saved to 10,000.  This is a huge
4718      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4719      randomly after reaching that size, forcing those dropped peers to use
4720      a full DH negotiation.
4721    * HTML cleanup in the console.
4722
47232004-09-26  jrandom
4724    * Complete rewrite of the TCP transport with IP autodetection and
4725      low CPU overhead reconnections.  More concise connectivity errors
4726      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4727      by listening to the first person who tells you what your IP address is
4728      when you have not defined one yourself and you have no other TCP
4729      connections.
4730    * Update to the I2NP message format to add transparent verification at
4731      the I2NP level (beyond standard TCP verification).
4732    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4733      implementation (rather than verifying with E(H(key)), we now verify with
4734      E(H(iv))).
4735    * The above changes are NOT BACKWARDS COMPATIBLE.
4736    * Removed all of the old unused PHTTP code.
4737    * Refactor various methods and clean up some javadoc.
4738
47392004-09-21  jrandom
4740    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4741      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4742      but values stored in the later take precedence.  Both are queried on
4743      lookup.
4744
47452004-09-16  jrandom
4746    * Refactor the TCP transport to deal with changing identities gracefully,
4747      and to prevent some wasted effort by keeping track of what host+port
4748      combinations we are connected to (rather than just the identities).  Also
4749      catch a few configuration errors earlier.
4750    * Removed no longer relevent methods from the Transport API that were
4751      exposing ideas that probably shouldn't be exposed.
4752    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4753      updates)
4754
47552004-09-13  jrandom
4756    * Update for the SDK reconnection to deal with overflow.
4757    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4758      rounding on lifetime bandwidth used [thanks gott!]).
4759
4760* 2004-09-08  0.4.0.1 released
4761
47622004-09-08  jrandom
4763    * Updated the "Active:" peer count to display the # of connections as well
4764      as the number of recently active router identities.
4765    * Implement some basic updating code - on startup, if there is a file named
4766      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4767      then restart.
4768    * Added an ugly little script to allow launching the router on win9x
4769      machines without a dos box (using javaw to run a .bat file).
4770    * Logging updates.
4771    * Updated VERSION constants to 0.4.0.1
4772
47732004-09-08  hypercubus
4774    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4775      hopefully any other affected *nix systems) now properly discards non-
4776      essential directories after installation.
4777    * Support for Win9x in the installer and postinstall.bat.
4778    * Changed the name of the default installation directory on all platforms
4779      from "I2P" to "i2p" in the installer.
4780    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4781      other configuration files.
4782
47832004-09-07  cervantes:
4784    * Proxy recursion disabled by default (strict)
4785    * Password Authentication for session commands
4786    * Support for http://path?i2paddresshelper=BASE64
4787    * Support for http://i2p/BASE64/path syntax
4788
47892004-09-07  jrandom
4790    * Make sure that peers placed in the 'fast' group are ones we both know
4791      how to reach and have been able to reach recently.  These peers may
4792      still be placed in the 'high capacity' group however (though that group
4793      is only queried if the 'fast' group is too small)
4794    * Include some updates to the ProgileOrganizer's CLI.
4795
47962004-09-07  jrandom
4797    * Disable the timestamper by default for all applications except the router
4798      (enable via -Dtime.disabled=false)
4799    * Simplify the retrieval of the full destination with text based browsers.
4800    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4801
48022004-09-07  jrandom
4803    * Write the native libraries to the current directory when they are loaded
4804      from a resource, and load them from that file on subsequent runs (in
4805      turn, we no longer *cough* delete the running libraries...)
4806    * Added support for a graceful restart.
4807    * Added new pseudo-shutdown hook specific to the router, allowing
4808      applications to request tasks to be run when the router shuts down.  We
4809      use this for integration with the service manager, since otherwise a
4810      graceful shutdown would cause a timeout, followed by a forced hard
4811      shutdown.
4812    * Made the capacity calculator a bit more dynamic by not outright ignoring
4813      the otherwise valid capacity data for a period with a single rejected
4814      tunnel (except for the 10 minute period).  In addition, peers with an
4815      equal capacity are ordered by speed rather than by their hashes.
4816    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4817      issues.
4818    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4819      associated session (unless there are other clients using it), and deal
4820      with a closed session when starting a new I2PTunnel instance.
4821    * Refactoring and logging.
4822
48232004-09-06  jrandom
4824    * Address a race condition in the key management code that would manifest
4825      itself as a corrupt router identity.
4826    * Properly clear old transport addresses from being displayed on the old
4827      console after soft restarts.
4828    * Properly refuse to load the client applications more than once in the
4829      same JVM.
4830    * Added support for a graceful restart (a graceful shutdown followed by a
4831      full JVM restart - useful for restarting client apps).
4832    * More defensive programming, HTML cleanup, logging
4833    * wrapper.config cleanup of duplicate lines
4834
48352004-09-04  jrandom
4836    * Added some basic guards to prevent multiple instances from running.
4837      Specifically, a file "router.ping" in the install directory which is
4838      written to once a minute - if that file exists and has been modified
4839      within the last minute, refuse to start up.  In turn, adjust the
4840      service wrapper to wait a minute before restarting a crashed JVM.
4841    * Create a "work" directory in the I2P install dir which Jetty will
4842      use for all of its temporary files.
4843    * Tell the browser not to cache most of the router console's pages.
4844
48452004-09-04  jrandom
4846    * Update the SDK to automatically reconnect indefinitely with an
4847      exponential delay on retries (capped at 5 minutes).
4848
4849* 2004-09-03  0.4 released
4850
48512004-09-03  jrandom
4852    * Updated default wrapper.config to deal with the hard restart option
4853    * Include the history.txt in the /help.jsp page
4854    * HTML updates (wrapper.log, and no more unix scripts)
4855    * Updated VERSION constants to 0.4
4856
48572004-09-03  hypercubus
4858    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4859    * Temporarily removed install_i2p_service_unix and
4860      uninstall_i2p_service_unix from distribution packages.
4861    * postinstall.bat/postinstall.sh cleans installation directory of all files
4862      not applicable to the host OS.
4863
48642004-09-03  oOo
4865    * Added some filters to the HTTP request, replacing the User-Agent,
4866      Referrer, Via, and From headers, which helps until we have a more
4867      comprehensive filtering system.
4868
48692004-09-03  jrandom
4870    * Disabled the old listener on port 7655.
4871
48722004-09-02  jrandom
4873    * Cleaned up the base build.xml, adding a new target ("updater") which
4874      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4875      existing installs.
4876
48772004-xx-xx  jrandom
4878    * Implemented the new web architecture and router console
4879    * Implemented I2PTunnel web interface, and revamped startup process.
4880    * Revamped peer selection code to address skew.
4881    * Removed all temporary threads from the router and the SDK.
4882    * Bugfix dealing with timeouts and resends.
4883    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4884
48852004-xx-xx  hypercubus
4886    * Implemented the new installation process.
4887    * Integrated systray
4888    * Integrated service manager
4889
48902004-xx-xx  oOo
4891    * Implemented ?i2paddresshelper= hook
4892    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4893
48942004-xx-xx  Nightblade
4895    * libSAM updates.
4896
48972004-xx-xx  cervantes
4898    * Imported i2pProxy.pac proxy script in with the build.
4899
4900* 2004-08-20  0.3.4.3 released
4901* 2004-08-12  0.3.4.2 released
4902* 2004-08-08  0.3.4.1 released
4903* 2004-07-29  0.3.4 released
4904* 2004-07-23  0.3.3 released
4905* 2004-07-16  0.3.2.3 released
4906* 2004-07-14  0.3.2.2 released
4907* 2004-07-11  0.3.2.1 released
4908* 2004-07-07  0.3.2 released
4909* 2004-06-25  0.3.1.5 released
4910* 2004-05-23  0.3.1.4 released
4911* 2004-05-20  0.3.1.3 released
4912* 2004-05-13  0.3.1.2 released
4913* 2004-05-07  0.3.1.1 released
4914* 2004-04-30  0.3.1 released
4915* 2004-04-20  0.3.0.4 released
4916* 2004-04-04  0.3.0.3 released
4917* 2004-03-30  0.3.0.2 released
4918* 2004-03-25  0.3.0.1 released
4919* 2004-03-21  0.3.0 released
4920* 2004-03-10  0.2.5.4 released
4921* 2004-03-04  0.2.5.3 released
4922* 2004-02-28  0.2.5.2 released
4923* 2004-02-27  0.2.5.1 released
4924* 2004-02-25  0.2.5 released
4925* 2004-02-19  0.2.4.2 released
4926* 2004-02-15  0.2.4.1 released
4927* 2004-02-14  0.2.4 released
4928* 2004-01-27  0.2.3.6 released
4929* 2004-01-21  0.2.3.5 released
4930* 2004-01-14  0.2.3.4 released
4931* 2003-12-29  0.2.3.3 released
4932* 2003-12-27  0.2.3.2 released
4933* 2003-12-25  0.2.3.1 released
4934* 2003-12-13  0.2.3 released
4935* 2003-12-01  0.2.2 released
4936* 2003-11-18  0.2.1.1 released
4937* 2003-11-12  0.2.1 released
4938* 2003-11-09  0.2.0.3 released
4939* 2003-11-08  0.2.0.2 released
4940* 2003-11-03  0.2.0.1 released
4941* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.