source: history.txt @ 224ebb1

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

Bugfixes for BOB, Important database locking to prevent thread collisions.

  • Property mode set to 100644
File size: 214.6 KB
Line 
12008-10-09 sponge
2    * Update version to -3
3    * BOB database threadlocking fixes
4
52008-10-08 sponge
6    * Update version to -2
7    * Bugfixes and additions to BOB
8
92008-10-07 sponge
10    * Bugfixes and additions to streaming.
11    * Added SimpleStore class in utils.
12    * Fixed SimpleTimer class to allow exit.
13    * BOB (Basic Open Bridge) added.
14
15* 2008-10-05  0.6.4 released
16
172008-10-05 Complication
18    * Update versions, package release
19
202008-09-29 zzz
21    * i2psnark: Add codevoid link, remove mastertracker
22
232008-09-23 zzz
24    * config.jsp: Add some reachability help
25    * configpeer.jsp: Add blocklist info
26    * help.jsp: Add link to German FAQ
27    * tunnels.jsp: Fix inactive participating count
28    * SearchReplyJob: Don't look up references to shitlisted peers
29    * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
30
312008-09-20 zzz
32    * NetDb: Fix the totally broken "check new routers against blocklist"
33      code from 3 checkins ago
34    * tunnels.jsp: Sort participating tunnels by usage, display rate
35
362008-09-19 zzz
37    * Tunnels:
38      - Add missing message accounting for inbound gateways,
39        we were underestimating participating traffic because of it,
40        and the tunnels were classified "inactive"
41      - Add participating tunnel role on tunnels.jsp
42
432008-09-18 zzz
44    * Throttle:
45      - Correctly check inbound and outbound total bw limits separately
46      - Fix up and actually use the tunnel.participatingMessageCount stat,
47        favor it if lower than the total bw stat, so that
48        client traffic isn't included for throttle decisions
49      - Reduce min message count from 60 to 40
50    * Tunnel Dispatcher:
51      - Add tunnel.participatingBandwidth stat
52      - Remove all 3h and 24h stats
53
542008-09-15 zzz
55    * FloodOnlySearchJob:
56      - Ask non-floodfill peers if we don't know any floodfills
57      - Lookup hashes in the DatabaseSearchReplyMessage if we
58        don't know enough floodfills
59    * NetDb: Check new routers against blocklist
60    * Router: Shutdown clients first
61    * Throttle:
62      - Use 60s rather than 10m tunnel.participatingMessageCount stat
63      - Fix a summary bar message
64    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
65      every 20s, rather than at tunnel expiration, to maintain
66      a more current stat
67    * Tunnel Pool:
68      - Prevent excess zero-hop tunnels
69      - Always wait before looping in BuildExecutor
70    * configlogging.jsp: Increase box width
71    * logs.jsp: Remove unused connection log, cut wrapper log output in half
72
732008-09-12 zzz
74    * Blocklist: Fix a log message format
75    * HarvesterJob: Don't instantiate if disabled
76    * i2psnark:
77      - Add config i2psnark.linkPrefix to enable access to completed
78        torrents from a different machine - examples:
79           i2psnark.linkPrefix=file://///localserver/path/to/files/
80           i2psnark.linkPrefix=http://localwebserver/path/
81        (Stop i2psnark, add to i2psnark.config, restart)
82      - Remove Galen and NickyB trackers
83    * NetDb: Add netDb.exploreKeySet stat
84    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
85      and ?r=. to view our own; change links on other pages too
86    * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
87
882008-09-06 zzz
89    * EepGet command line: Fix byte counts after a failed resume
90    * NTCP: Mark unreachable on outbound connection timeout
91    * Shitlist: Fix partial shitlisting (still unused though)
92    * Summary Bar: Warn if firewalled and floodfill
93    * Throttle: Combine current and last bw measurement,
94      reduce default max tunnels to 2500 (was 3000)
95    * Tunnel BuildHandler: Logging cleanup
96    * UpdateHandler: Cleanup, clarify failure message
97    * DataHelper: Prepare for 999 day uptime :)
98
992008-08-29 zzz
100    * Tunnel BuildExecutor: Debug cleanup
101    * Profiles: Penalize capacity when tunnel build request times out
102    * Shutdown: Call the shutdown hooks before the router shutdown
103      rather than after
104    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
105
1062008-08-27 zzz
107    * Floodfill Peer Selector: Prefer already-connected floodfill
108      peer for direct RouterInfo stores, to mimimize floodfill
109      connections
110    * Peer Profiles: Classify connected peers as "active",
111      which will help improve the fast pool
112    * Transport Manager: Add isEstablished(Hash)
113    * NTCP: Reduce max idle time from 20m to 15m
114    * NetDb stats: Post-0.6.3 clean up
115
116* 2008-08-24  0.6.3 released
117
1182008-08-24 Complication
119    * Update versions, package release
120
1212008-08-20 zzz
122    * Blocklists: Handle blank lines and \r\n in blocklist.txt
123    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
124      default is 500 (very high for now)
125    * Persistent data store: Increase write limit from 300 to 600
126      so floodfill routers don't get backed up
127
1282008-08-13 zzz
129    * i2psnark: Fix OOM vulnerability by checking incoming message length
130      (thanks devzero!)
131
1322008-08-04 zzz
133    * Floodfill Peer Selector:
134      - Avoid peers whose netdb is old, or have a recent failed store,
135        or are forever-shitlisted
136
1372008-07-30 zzz
138    * Blocklists:
139      - New, disabled by default, except for blocking of
140        forever-shitlisted peers. See source for instructions
141        and file format.
142    * Transport - Reject peers from inbound connections:
143      - Check IP against blocklist
144      - Check router hash against forever-shitlist, then block IP
145
1462008-07-16 zzz
147    * configpeer.jsp: New
148    * i2psnark: Open completed files read-only the first time
149    * profiles.jsp: Show bonuses, link to configpeer.jsp
150    * PRNG: Move logging from wrapper to router log
151    * SSU:
152        Don't proactively reconnect until 30m idle, so
153        we don't lose introducer tags prematurely
154
1552008-07-16 Oldaris
156    * Imports cleanup
157
1582008-07-07 zzz
159    * i2psnark:
160      - Repair corrupted files with wrong length rather than die
161      - Register shutdown hook to properly shutdown torrents when
162        the router shuts down, hopefully will reduce corruption
163      - Add Galen tracker
164      - Add a note about how to change directory
165    * HTTP Proxy: Don't show jump links for unknown jump hosts
166    * KeyManager:
167      - Don't write router key backup when leaseSet keys are updated
168      - Synchronize to prevent concurrent writes (thanks Galen!)
169      - Backup keys every 7 days instead of every 5 minutes
170    * LoadTestManager: Don't instantiate, it's disabled
171    * Router console: Flag placeholder pages as noncacheable
172    * Streaming lib:
173      - Change some logging from WARN to INFO
174      - Clean up toString()
175    * SSU:
176      - Try to pick better introducers by checking shitlist,
177        wasUnreachable list, failing list, and idle times
178      - To keep introducer connections up and valid,
179        periodically send a "ping" (a data packet with no data and no acks)
180        to everybody that has been an introducer in the last two hours
181      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
182      - Remove some 60s and 5m stats, leave only the 10m ones
183      - Narrow the range for the retransmit time after an allocation fail
184      - Adjust some logging
185
1862008-06-30 zzz
187    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
188    * i2psnark:
189      - Fix NPE caused by race (thanks echelon!)
190      - Add mastertracker, remove de-ebook
191    * NTCP:
192      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
193      - Fix failsafe stats
194    * PersistentDataStore: More leaseSet code cleanup
195    * SimpleTimer: Change congestion message from error to warn
196
1972008-06-24 zzz
198    * FloodfillMonitorJob: Change range from 5-7 to 4-6
199    * NTCP: Remove getIsInbound(), duplicate of isInbound()
200    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
201    * Router console: add placeholder pages for i2psnark, i2ptunnel,
202      susidns, and susimail for use when the .wars are not running
203    * Streaming lib: Increase max window size to 128
204
2052008-06-22 welterde
206    * Optimize I2PDatagramDissector
207
2082008-06-20 zzz
209    * configclients.jsp: Add start button for clients and webapps.
210    * PRNG: Add two stats
211    * Summary bar:
212      - Display Warning for TCP private IP address
213      - Display PRNG stats
214    * OutNetMessage: Change cache logging from WARN to INFO
215
2162008-06-17 zzz
217    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
218    * Summary bar: Display helpful errror message when UDP bind fails
219    * UDP: Don't bid when UDP bind fails
220    * configclients.jsp: Implement saves for clients and webapps.
221
2222008-06-16 zzz
223    * UDP: Prevent 100% CPU when UDP bind fails;
224      change bind fail message from ERROR to CRIT
225    * Refactor LoadClientAppsJob.java, move some functions to new
226      ClientAppConfig.java, to make them easily available to
227      new configclients.jsp
228    * RouterConsoleRunner: Use a new config file, webapps.config,
229      to control which .wars in webapps/ get run. Apps are enabled
230      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
231      Config file is written if it does not exist.
232      Implement methods for use by new configclients.jsp.
233    * configclients.jsp: New. For both clients and webapps.
234      Saves are not yet implemented.
235
2362008-06-10 zzz
237    * Floodfill: Add new FloodfillMonitorJob, which tracks active
238      floodfills, and automatically enables/disables floodfill on
239      Class O routers to maintain 5-7 total active floodfills
240    * NetDb Stats:
241      - Remove several more stats
242      - Don't publish bw stats in first hour of uptime
243      - Publish floodfill stats even if other stats are disabled
244      - Changes not effective until 0.6.2.1 to provide cover.
245    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
246      startup, so peers don't list us as failing.
247    * graphs.jsp: Fix a bug where it tries to display the combined
248      bandwidth graph when it isn't available
249
2502008-06-09 zzz
251    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
252
2532008-06-09 zzz
254    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
255    * News:
256      - Add display of last updated and last checked time
257        on index.jsp and configupdate.jsp
258      - Add a function to get update version (unused for now)
259    * config.jsp: Add another warning
260
2612008-06-07 zzz
262    * NetDb: Tweak some logging on lease problems
263    * Shitlist:
264      - Add shitlistForever() and isShitlistedForever(), unused for now
265      - Sort the HTML output by router hash
266    * netdb.jsp:
267      - Sort the lease HTML output by dest hash, local first
268      - Sort the router HTML output by router hash
269
2702008-06-06 zzz
271    * LeaseSet:
272      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
273        to make later LeaseSet comparisons reliable. This cleans up the code too.
274      - Fix broken old vs. new LeaseSet comparison
275        in ClientConnectionRunner.requestLeaseSet(),
276        so that we only sign and publish a new LeaseSet when it's really new.
277        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
278        and floodfill router load, since locked_buildNewLeaseSet() generates
279        the same LeaseSet as before quite frequently, often just seconds apart.
280
2812008-06-05 zzz
282    * LeaseSet - code cleanup:
283      - Add exception to enforce max # of leases = 6, should be plenty
284      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
285        leases and then immediately remove them again, triggering
286        the new leaseSet size exception
287      - Remove the now unused LeaseSet.removeLease(lease) and
288        LeaseSet.removeLease(index)
289      - Store first and last expiration for efficiency
290    * Peer Profiles - Preparation for using bonuses:
291      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
292      - Persist CapacityBonus rather than ReachabilityBonus
293      - Include SpeedBonus in the Speed calculation
294      - Prevent negative values in Speed and Capacity when using bonuses
295      - Clean up SpeedCalculator.java
296    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
297    * Add some config files for a future small distribution
298    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
299
3002008-06-01 zzz
301    * Client Apps: Add new parameter for clients.config,
302        clientApp.x.startOnLoad=false, to disable loading
303        (for SAM for example). Defaults to true of course.
304    * Logging: Move common WARN output to DEBUG so we can ask users to
305        set the default log level to WARN without massive spewage
306    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
307      not just the Fast tier, since we don't use them for tunnels anyway
308    * SAM: Add some compiler flexibility to two obscure makefiles
309    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
310      (sponge's suggestion)
311    * summary bar:
312      - Hide ident, provide a tooltip and a link
313      - Add a warning if you are firewalled and class O
314
3152008-06-07 Complication
316    * Fix version in news.xml so it could be published
317
318* 2008-06-07  0.6.2 released
319
3202008-06-07 Complication
321    * Write announcement and prepare for release
322
3232008-05-29 zzz
324    * Fix up initialNews.xml
325
3262008-05-27 zzz
327    * Transport:
328      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
329      - UDP: Don't bid when IP address missing, mark unreachable
330
3312008-05-26 zzz
332    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
333    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
334    * build.xml:
335      - Add an updaterSmall target which includes only the essentials
336      - Add an updaterRouter target which includes only i2p.jar and router.jar
337      - Clean up the build file some
338      - Remove empty eepsite/ and subdirs from i2pupdate.zip
339    * configtunnels.jsp: Add warning
340    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
341    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
342
3432008-05-22 welterde
344    * Change jetty download location in build script
345
3462008-05-20 zzz
347    * Reachability:
348      - Call the previously unused profile.tunnelTestFailed()
349        (redefined to include a probability argument)
350        and severely downgrade a peer's capacity upon failures,
351        depending on tunnel length and direction.
352        This will help push unreachable and malicious peers
353        out of the High Capacity tier.
354      - Put recent fail rate on profiles.jsp
355    * ProfileOrganizer: Logging cleanup
356    * eepsite_index.html: Update add-host and jump links
357    * HTTP Proxy: Remove trevorreznik jump server from list
358
3592008-05-20 welterde
360    * implemented PrivateKeyFile
361
3622008-05-18 zzz
363    * Throttle: Reject tunnels for first 20m uptime (was 10m)
364    * TunnelPeerSelectors:
365       - Re-enable strict ordering of peers,
366         based on XOR distance from a random hash
367       - Restrict peers with uptime < 90m from tunnels (was 2h),
368         which is really 60m due to rounding in netDb publishing.
369    * i2psnark:
370       - Limit max pipelined requests from a single peer to 128KB
371         (was unlimited; i2p-bt default is 5 * 64KB)
372       - Increase max uploaders per torrent to 6 (was 4)
373       - Reduce max connections per torrent to 16 (was 24) to increase
374         unchoke time and reduce memory consumption
375       - Strictly enforce max connections per torrent
376       - Choke more gradually when over BW limit
377    * help.jsp: Add a link to the FAQ
378    * peers.jsp: Fix UDP direction indicators
379    * hosts.txt: Add update.postman.i2p
380
3812008-05-12 zzz
382    * Outbound message:
383      - Tweak the cache key for efficiency
384    * Stats:
385      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
386    * Summary bar:
387      - Add messages when dropping tunnel requests due to load
388    * Update Handler:
389      - Add postman to the list
390    * i2psnark:
391      - Randomize the PeerCheckerTask start times to make global limiting
392        work better
393      - Calculate bw limits using 40s rather than 4m averages to make
394        bw limiting work better
395      - Change default bw limit from uplimit/3 to uplimit/2 due to
396        overhead reduction from the leaseset bundling change
397    * libjbigi:
398      - Add documentation on dynamic build option
399      - Add two speed tests to the build script
400      - Clean up the build script, make it easier to build dynamic
401
4022008-05-10 zzz
403    * NetDb: Don't write the my.info file to disk, it isn't used for anything
404    * Stats:
405      - Simplify oldstats.jsp if no events in a stat
406      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
407        (caused by an SSU hack)
408    * Update Handler:
409      - Add option to download and verify only
410      - Add distinct error message if version check fails
411
4122008-05-09 welterde
413    * Add an update URL to the list
414
4152008-05-07 zzz
416    * Reachability:
417      - Restrict peers requiring introducers from inbound tunnels,
418        since it's slow and unreliable... and many of them advertise
419        NTCP, which seems unlikely to work
420      - Provide warning on summary bar if firewalled with inbound NTCP enabled
421    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
422      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
423      at startup (you didn't get any data unless you set the log level anyway)
424    * oldstats.jsp: Don't put 2 decimal places on integer event counts
425    * Remove the Internals link from the menu bar
426    * i2psnark: Extend startup delay from 1 to 3 minutes
427
4282008-05-06 welterde
429    * HTTP Proxy: Add i2jump.i2p jump service
430
4312008-05-05 zzz
432    * NetDb Stats: Cleanup of commented out stats
433    * Outbound message:
434      - Fix a couple of tunnel cache cleaning bugs
435      - Cache based on source+dest pairs rather than just dest
436      - Send the reply leaseSet only when necessary,
437        rather than all the time (big savings in overhead)
438      - Enable persistent lease selection again
439      - Logging tweaks
440    * Reachability:
441      - Restrict <= .32 SSU-only peers from inbound tunnels,
442        since they don't know if they are unreachable
443      - Have SSU bid aggressively when it has less than 3 peers, so
444        we can determine our IP address and do peer testing.
445        Otherwise a router may never determine its IP address or reachability status.
446    * Summary bar:
447      - Add reachability status
448      - Add participating tunnel acceptance status
449    * Throttle: Reject tunnels for first 10m uptime
450    * I2PTunnel: Change default outproxy to false.i2p
451    * profiles.jsp: Add router version
452
453* 2008-04-26  0.6.1.33 released
454
4552008-04-20 zzz
456    * Outbound message/Reachability:
457      - Fix a bug from -19 causing the persistent lease selection
458        removed in -17 to be back again
459      - Use netDb-listed-unreachable instead of detected-unreachable
460        for exclusion of unreachable peers from selected leases,
461        as there are potential anonymity problems with using
462        detected-unreachable
463      - Tweak logging some more
464    * NetDb stats: Remove a couple more including the inefficient stat_identities
465
4662008-04-17 zzz
467    * Reachability:
468      - Track unreachable peers persistently
469        (i.e. separately from shitlist, and not cleared when they contact us)
470      - Exclude detected unreachable peers from inbound tunnels
471      - Exclude detected unreachable peers from selected leases
472      - Exclude detected unreachable floodfill peers from lookups
473      - Show unreachable status on profiles.jsp
474
4752008-04-16 zzz
476    * SSU/Reachability:
477      - Extend shitlist time from 4-8m to 40-60m
478      - Add some shitlist logging
479      - Don't shitlist twice when unreachable on all transports
480      - Exclude netDb-listed unreachable peers from inbound tunnels;
481        this won't help much since there are very few of these now
482      - Remove 10s delay on inbound UDP connections used for the
483        0.6.1.10 transition
484      - Track and display UDP connection direction on peers.jsp
485      - Show shitlist status in-line on profiles.jsp
486
4872008-04-15 zzz
488    * SSU Reachability/PeerTestManager:
489      - Back out strict peer ordering until we fix SSU
490      - Back out persistent lease selection until we fix SSU
491      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
492      - Increase known Charlie time to 10m; 3m wasn't enough
493      - Don't continue retransmitting peer test if we know Charlie
494      - Don't run multiple peer tests at once
495      - Tighten test frequency range to 6.5-19.5m, was 0-26m
496
4972008-04-12 zzz
498    * Addressbook: Disallow '.-' and '-.' in host names
499    * NTCP: Don't drop a connection unless both directions are idle;
500            Fix idle time for outbound connections
501    * Outbound message: Make sure cached lease is in current leaseSet
502    * Stats: Put all NetworkDatabase stats in same group
503    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
504    * i2psnark: Add locking to prevent two I2CP connections
505
5062008-04-07 zzz
507    * i2psnark:
508      - Implement upstream bandwidth limiting
509      - Fix a rare NPE at startup/shutdown
510      - Really increase retries for .torrent fetch
511    * profiles.jsp: Minor cleanup
512    * DataHelper: Only format < 5s as ms
513    * Eepget: Fix percentage output on command line eepget retries
514    * Lower partipating message priority from 400 to 200
515    * NTCP: Add a debug message
516    * Outbound message: Minor cleanup
517
5182008-03-30 zzz
519    * ExploratoryPeerSelector: Try NonFailing even more
520    * HostsTxtNamingService: Add reverse lookup support
521    * Outbound message: Minor cleanup
522    * i2psnark TrackerClient: Minor cleanup
523    * checklist.txt: Minor edit
524    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
525    * i2ptunnel.config: Change CVS client to mtn
526    * netdb.jsp: Show leaseSet destinations using reverse lookup
527    * profiles.jsp: First cut at showing floodfill data
528
5292008-03-27 zzz
530    * Send messages for the same destination to the same inbound
531      lease to reduce out-of-order delivery.
532    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
533      for now, as it prevents speed rating of those peers
534
5352008-03-26 zzz
536    * ReseedHandler: Support multiple urls,
537      add netdb.i2p2.de as a 2nd default
538
5392008-03-25 zzz
540    * i2psnark:
541      - Add support for secondary open trackers
542      - Refactor and simplify the TrackerClient code
543      - Add welterde's tracker to the default list
544      - Don't have eepget retry announces
545      - Slow down tracker contacts if they've failed for a while
546      - Add some debug support showing connections (?p=2)
547    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
548
5492008-03-22 zzz
550    * NewsFetcher: Fix bug causing fetch every 10m
551
5522008-03-22 zzz
553    * Tunnel Testing:
554      - Fix counting so it really takes 4 consecutive failures
555        rather than 4 total to remove a tunnel
556      - Credit or blame goes to the exploratory tunnel as well
557        as the tunnel being tested
558      - Adjust tunnel test timeout based on tunnel length
559    * ExploratoryPeerSelector: Tweak logging
560    * ProfileOrganizer: Adjust integration calculation again
561    * build.xml: Add to help
562    * checklist.txt: Tweak
563    * readme.html: Fix forum links
564    * netDb: Remove tunnel.testFailedTime
565
5662008-03-19 zzz
567    * ExploratoryPeerSelector:
568      - Exclude floodfill peers
569      - Tweak the HighCap vs. NonFailing decision; try NonFailing
570        at least a minimum % of the time
571    * i2psnark: Increase retries for .torrent fetch
572    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
573      containing an IP
574    * readme.html: Reorder some items
575    * Stats: Add some more required stats
576    * Streaming lib: Fix slow start to be exponential growth,
577      fix congestion avoidance to be linear growth.
578      Should speed up local connections a lot, and remote
579      connections a little.
580
5812008-03-14 zzz
582    * Floodfill Search:
583       - Prefer heard-from, unfailing, unshitlisted floodfill peers
584
5852008-03-14 zzz
586    * ProfileOrganizer:
587       - Use more recent stats to calculate integration
588       - Show that fast peers are also high-capacity on profiles.jsp
589    * readme.html: Update Syndie link
590    * TunnelPool: Update comments
591    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
592      get rid of the 60s tunnel stats
593      (effective as of .33 to provide cover)
594
5952008-03-13 zzz
596    * Floodfill Search:
597       - Fix a bug that caused a single FloodfillOnlySearchJob
598         instance to be run multiple times, with unpredictable
599         results
600       - Select ff peers randomly to improve reliability
601       - Add some bulletproofing
602
6032008-03-11 zzz
604    * ProfileOrganizer:
605       - Don't require a peer to be high-capacity to be
606         well-integrated (not used for anything right now,
607         but want to get it right for possible floodfill verification)
608       - Don't fall back to median for high-capacity threshold
609         if the mean is higher than the median, this prevents
610         frequent large high-capacity counts
611       - Fix high-capacity selector that picked one too many
612    * Console: put well-integrated count back in the summary
613
6142008-03-10 zzz
615    * EepGet: Fix byte count for bytesTransferred status listeners
616      (fixes command line status)
617    * UpdateHandler:
618       - Fix byte count display
619       - Display final status on router console
620       - Don't allow multiple update jobs to queue up
621       - Increase max retries
622       - Code cleanup
623       - Don't show 'check for update' button when update in progress
624       - Enhance error messages
625    * NetDb: Comment out published netDb stats disabled for .32
626
6272008-03-08 zzz
628    * TunnelPeerSelectors: Implement strict ordering of peers,
629      based on XOR distance from a random hash
630      separately generated for each tunnel pool
631
6322008-03-07 zzz
633    * Naming: Optimize lookups for a destkey
634    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
635      - Prevent peers with matching IPs from joining same tunnel.
636        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
637        Default is 2 (disallow routers in same /16).
638        Set with router.defaultPool.IPRestriction=x
639      - Comment out unused RebuildPeriod pool setting
640      - Add random key to pool in preparation for XOR peer ordering
641    * SusiMail: Add 'Create Account' link
642    * TunnelDispatcher: Change a common wtf error to a warn
643
6442008-03-05 zzz
645    * Naming: Make HostsTxt the sole default NamingService
646      (was Meta = PetName + HostsTxt)
647    * Naming: Add two new experimental NamingServices, EepGet and Exec,
648      not enabled by default -
649      see source comments in core/java/src/net/i2p/client/naming
650      for configuration instructions
651    * i2psnark: Don't do a naming lookup for Base64 destkeys
652    * i2psnark: Add a StartAll button
653    * Stats: Add code to disable most stats to save memory.
654      Set on configstats.jsp or set stat.full=false to disable the stats.
655      (true by default for now)
656
6572008-03-09 Complication
658    * Give the Jetty build file ability to ask permission
659      before downloading the Jetty archive from the web,
660      and to verify its SHA1 + MD5 hashes. Adjust the main build file
661      in accordance with this change.
662    * Improve the release checklist.
663
664* 2008-03-09  0.6.1.32 released
665
6662008-03-07 zzz
667    * Update news and version numbers
668
6692008-03-01 zzz
670    * Fix netdb.knownLeaseSets count reported by floodfill routers
671      (was broken by -3)
672
6732008-02-27 zzz
674    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
675    * i2psnark: Remove orion and gaytorrents from default tracker list
676    * Remove orion from jump list and from eepsite_index.html
677    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
678    * Capitalize OutboundMessageDistributor job name
679    * TunnelPool: Add a warning if all tunnels are backlogged
680
6812008-02-26 zzz
682    * Reintroduce NTCP backlog pushback, with switch back to
683      previous tunnel when no longer backlogged
684    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
685    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
686
6872008-02-21 zzz
688    * Raise inbound default bandwidth to 32KBps
689    * Fix config.jsp that showed 0KBps share bandwidth by default
690
6912008-02-19 zzz
692    * Addressbook: Disallow '--' in host names except in IDN,
693      add some reserved host names
694    * I2PTunnel: Clarify edit form
695    * NetDb: Remove many stats from netDb, effective as of .32
696    * profiles.jsp: Display capabilities
697    * Tunnels: Enforce max tunnel length of 8, catch an index error
698      http://forum.i2p/viewtopic.php?t=2561
699
7002008-02-16 zzz
701    * Fix race in TunnelDispatcher which caused
702      participating tunnel count to seesaw -
703      should increase network capacity
704    * Leave participating tunnels in 10s batches for efficiency
705    * Update participating tunnel ratestat when leaving a tunnel too,
706      to generate a smoother graph
707    * Fix tunnel.participatingMessageCount stat to include all
708      participating tunnels, not just outbound endpoints
709    * Simplify Expire Tunnel job name
710
7112008-02-13 zzz
712    * PersistentDataStore: Write out 300 records every 10 min
713      rather than 1 every 10 sec;
714      Don't store leasesets to disk or read them in
715    * Combine rates for pools with the same length setting
716      in the new tunnel build algorithm
717    * Clarify a log message in the UpdateHandler
718
7192008-02-13 zzz
720    * Make graphs clickable to get larger graphs
721    * Change SimpleTimer CRIT to a WARN, increase threshold
722    * Checklist update
723
7242008-02-11 welterde
725    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
726
7272008-02-10 zzz
728    * Add new tunnel build algorithm (preliminary)
729    * Change NTCP backlogged message from error to warning
730    * Checklist updates
731
732* 2008-02-10  0.6.1.31 released
733
7342008-02-10 Complication
735    * Update news and version numbers
736
7372008-02-06 zzz
738    * build.xml: Add some apps to javadoc
739    * checklist.txt: Add some things
740    * news.xml: make links relative
741    * runplain.sh: Add some comments
742    * wrapper.config: Add some comments
743
7442008-02-05 Complication
745    * Change the dates too (sorry for such forgetfulness!)
746
7472008-02-04 Complication
748    * Also use the new key for checking, and add it into news.xml
749
7502008-02-04 Complication
751    * Added my release signing key into TrustedUpdate.java
752
7532008-01-31 zzz
754    * NewsFetcher: Change fetch failed from error to warning
755    * installer: Fix URL and "email"
756    * checklist.txt: New release checklist
757
7582008-01-29 zzz
759    * Addressbook: Change default subscription
760    * ConfigUpdateHandler: Change default news URL
761    * initialNews.xml: Update version to .31
762    * news.xml: More updates
763    * hosts.txt: Add i2p-projekt.i2p
764    * readme.html: More URL updates
765    * SusiDNS: Change references to default subscription
766
7672008-01-28 zzz
768    * news.xml: Updates, still preliminary
769    * ReseedHandler: Change default URL
770    * i2ptunnel.config: Change default outproxies
771    * readme.html: Change *.i2p.net URLs
772    * help.jsp: Change *.i2p.net URLs
773    * eepsite_index.html: Change stats.i2p addressbook subscription URL
774    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
775
776* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
777
7782008-01-08 zzz
779    * addressbook: Limit size of subscribed hosts.txt,
780        don't save old etag or last-modified data
781    * EepGet: Add some logging,
782        enforce size limits even when size not in returned header,
783        don't return old etag or last-modified data,
784        don't call transferFailed listener more than once
785    * Sign my update signing key
786    * NewsFetcher: add last-modified support, reduce number of retries
787    * Error pages: add icon and logo,
788        clarify 'destination not found' and 'proxy not found' pages
789
7902008-01-07 zzz
791    * profiles.jsp formatting cleanup
792    * NTCP: Reduce max idle time from 60m to 20m
793    * NTCP: Fix idle time on connections with zero messages,
794      correctly drop these connections
795
7962008-01-03 zzz
797    * addressbook: Do basic validation of hostnames and destkeys
798    * susidns: Add support for the private addressbook,
799      update the text and links somewhat
800
8012008-01-02 zzz
802    * Add stats.i2p to the jump list
803    * Impose 20MB limit on POSTs and catch OOMs in POST
804    * eepsite_index.html: add stats.i2p services
805    * addressbook: log source of new keys; disallow dests > 516 bytes
806    * addressbook: convert hostnames to lower case to prevent duplicates
807    * susidns: generalize references to orion
808
8092007-12-29 zzz
810    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
811    * Allow commas in router.trustedUpdateKeys and router.updateURL again
812    * Change default news host from dev.i2p.net to dev.i2p
813    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
814
8152007-12-28 zzz
816    * Add zzz's update signing key
817
8182007-12-26 Complication
819    * Improve reseed handler (less repetitive code,
820      avoid reporting errors when less than 10% of fetches fail)
821
8222007-12-26 Complication
823    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
824      and unescape them in DataHelper.loadProps() to support
825      saving and loading config properties with line breaks
826    * Change the update URLs textbox into a textarea like keys have,
827      so different URLs go on different lines
828    * Modify TrustedUpdate to provide a method which supplies a key list
829      delimited with CR LF line breaks
830    * Modify DEFAULT_UPDATE_URL to supply a default URL list
831      delimited with CR LF line breaks
832    * Modify selectUpdateURL() to handle URL lists
833      delimited by any kind of line breaks
834    * Start saving trusted update keys
835    * Improve formatting on configupdate.jsp
836
8372007-12-22 zzz
838    * Add support for multiple update URLs
839    * Change default for update to use i2p proxy,
840      add several URLs as defaults
841    * Enable trusted key form on configupdate.jsp
842    * Clarify the 'destination not found' error page
843
8442007-12-16 zzz
845    * i2psnark: remove anonymitytracker from default list
846
8472007-12-10 zzz
848    * Fix NPE in CLI TrustedUpdate keygen
849
8502007-12-02 Complication
851    * Commit SAM v2 patch from mkvore (thank you!)
852    * Minor reformatting to preserve consistent whitespace
853      in old SAM classes (new classes unaltered)
854
8552007-12-01 Complication
856    * Separate the checks "does Jetty .zip file need downloading"
857      and "does Jetty .zip file need extracting" in the Jetty buildfile.
858      First download (unless already done), then extract (unless done).
859
8602007-11-26 zzz
861    * i2psnark: add timeout for receive inactivity
862
8632007-11-24 zzz
864    * i2psnark: increase streaming lib write timeout to 240 sec and change
865      timeout action from "ping" to "disconect", as the fix in .30 to
866      honor options on outbound connections led to hung outbound connections
867      (bitfield never transmitted, connection never dropped)
868
8692007-11-06 jrandom
870    * add i2host.i2p to the jump list
871
8722007-10-11 zzz
873    * IRC Proxy: Fix several possible anonymity holes:
874      - Block CTCP in NOTICE messages
875      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
876      - Check for lower case commands
877    (Thanks sponge!)
878
8792007-10-07  jrandom
880    * back out the NTCP backlog pushback, as it could be used to mount an
881      active anonymity attack.
882
883* 2007-10-07  0.6.1.30 released
884
8852007-10-07  Complication
886    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
887      broke retrying.
888
8892007-09-27  zzz
890    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
891    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
892      fix some of the sorting
893
8942007-09-22  zzz
895    * Send messages for the same destination out the same outbound
896      tunnel to reduce out-of-order delivery.
897
8982007-09-19  zzz
899    * i2psnark: Fix broken multifile torrent Delete;
900        cleanup Storage resources in AddTorrent;
901        don't autostart torrent after Create
902
9032007-09-18  zzz
904    * eepsite_index.html: Add links to trevorreznik address book
905    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
906    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
907    * i2psnark: Don't make outbound connections to already-connected peers
908    * i2psnark: Debug logging cleanup
909
9102007-09-14  zzz
911    * eepget: Increase header timeout to 45s
912    * HTTP proxy: Return a better error message for localhost requests
913    * tunnels: Fix PooledTunnelCreatorConfig memory leak
914
9152007-09-09  zzz
916    * eepget: Add support for Last-Modified and If-Modified-Since
917    * addressbook: Finish incomplete support for Last-Modified
918
9192007-09-08  zzz
920    * eepget: Copy over SocketTimeout.java file from syndie
921
9222007-09-07  jrandom
923    * eepget: Merge timeout support from syndie
924
925* 2007-08-23  0.6.1.29 released
926
9272007-08-12  zzz
928    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
929      tweak the eepsite and troubleshooting sections
930
9312007-08-11  zzz
932    * Add stats for individual tunnel rates (nice when graphed)
933    * i2psnark: Fix outbound tunnel nickname
934
9352007-08-05  Complication
936    * Update the sharing calculator on config.jsp
937      and explain the trade-off even more thoroughly.
938
9392007-08-04  Complication
940    * Lower the threshold between the K and L bandwidth class,
941      so that K is now < 12 KB/s, instead of <= 16 KB/s.
942      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
943      participate in routing, if they keep the default share percentage.
944
9452007-07-16  zzz
946    * i2psnark: Add tooltip info for choked/uninterested
947
9482007-07-16  zzz
949    * Make selection of graphed data configurable via configstats.jsp,
950      remove most of the default graphs to save some memory
951
9522007-07-15  zzz
953    * Add current values to graph legends
954    * Fix up previous Rate fix to check for divide by zero
955
9562007-07-14  Complication
957    * Take the post-download routerInfo size check back out of ReseedHandler,
958      since it wasn't helpful, and a lower limit caused false warnings.
959    * Give EepGet ability to enforce a min/max HTTP response size.
960    * Enforce a maximum response size of 8 MB when ReseedHandler
961      downloads into a ByteArrayOutputStream.
962    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
963      change invocation from RouterConsoleRunner accordingly.
964    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
965      provide status reports to indicate the progress of reseeding.
966    * Enable icon for default eepsite, and the index page
967      of the router console (more later).
968
9692007-07-14  zzz
970    * Clean up graphs.jsp - set K=1024 where appropriate,
971      output image sizes in html, catch ooms, other minor tweaks
972    * Fix current event count truncation which fixes graphs with low
973      60-sec event counts displaying high values
974      (bw.* and router.* graphs for example were 1.5x too high)
975      Affects all "events per period" (non-lifetime) counts.
976
9772007-07-09  zzz
978    * i2psnark: give a better error message for a non-i2p torrent
979
9802007-07-07  zzz
981    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
982      SSU will notify/restart NTCP when the external address changes.
983      Now you can enable inbound TCP without a static IP or dyndns service.
984
9852007-07-04  zzz
986    * Display calculated share bandwidth and remove load testing
987      on config.jsp
988
9892007-07-01  zzz
990    * Replace broken option i2np.udp.alwaysPreferred with
991      i2np.udp.preferred and adjust UDP bids; possible settings are
992      "false" (default), "true", and "always".
993      Default setting results in same behavior as before
994      (NTCP is preferred unless it isn't established and UDP is established).
995      Use to compare NTCP and UDP transports.
996
9972007-06-27  jrandom
998    * fix for a streaming lib bug that could leave a thread waiting
999      indefinitely (thanks Complication!)
1000
10012007-06-16  Complication
1002    * First pass on EepGet and ReseedHandler improvements,
1003      please avoid use on routers which matter!
1004    * Give EepGet ability of downloading into an OutputStream,
1005      such as the ByteArrayOutputStream of ReseedHandler.
1006    * Detect failure to reseed better, report it persistently
1007      and more verbosely, provide a link to logs
1008      and suggest manual reseed.
1009
10102007-05-06  Complication
1011    * Fix the build.xml file, so the preppkg build target won't try copying files
1012      which became deprecated with the old Syndie (thanks for alerting, itsu!)
1013
10142007-03-31  zzz
1015    * Add trevorreznik jump server to the http proxy error page
1016    * Add anonymity to the trackers supporting details links in i2psnark
1017
10182007-03-24  zzz
1019    * Remove Syndie from build targets and navbar
1020
10212007-03-22  zzz
1022    * i2psnark tracker handling tweaks:
1023    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
1024    -   Add Base URL to tracker list configuration
1025    -   Web page links built from tracker list Base URLs
1026    -   Only build and sort tracker list once
1027    -   Add anonymityWeb tracker to default list
1028    -   Add tooltip info for TrackerErrs
1029    -   Stop torrent if not registered with tracker
1030    -   Mark temp files as delete on exit
1031
10322007-03-18  zzz
1033    * i2psnark: Cleanup some handling of saved partial pieces
1034    * i2psnark: Put bit counting in Bitfield.java for efficiency
1035    * i2psnark: Save torrent completion state in i2psnark.config
1036
1037* 2007-03-17  0.6.1.28 released
1038
10392007-03-13  zzz
1040    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
1041
10422007-03-12  jrandom
1043    * dodge a race on startup (thanks zzz!)
1044
10452007-03-10  zzz
1046    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
1047      (RFC 2988) to reduce early RTO values
1048
10492007-03-08  zzz
1050    * i2psnark changes to improve upload performance:
1051    *  Implement total uploader limit (10)
1052    *  Don't timeout non-piece messages out
1053    *  Change chunk size to 32K (was 64K)
1054    *  Change request limit to 64K (was 256K)
1055    * i2psnark: Disconnect from seeds when complete
1056
10572007-03-07  zzz
1058    * Remove dynamic router keys from config.jsp
1059
10602007-03-07  zzz
1061    * Streaming lib changes to improve upstream performance during congestion:
1062    *   Change min window size from 12 to 1
1063    *   Change max timeout from 10 to 45 sec
1064    *   Change initial timeout from 10 to 15 sec
1065    *   Change intial window size for i2psnark from 12 to 1
1066    *   Change slow start growth rate for i2psnark from 1/2 to 1
1067
10682007-03-04  zzz
1069    * Update eepsite_index.html
1070
10712007-03-03  zzz
1072    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
1073    * Add a updaterWithJetty build target
1074
10752007-03-03  zzz
1076    * Implement priority sending for NTCP
1077    * Disable trimForOverload() in tunnel BuildExecutor which
1078      was preventing tunnel builds when outbound traffic was high
1079      (i.e. most of the time when running i2psnark)
1080
10812007-02-28  zzz
1082    * i2psnark: File reopen cleanup
1083
10842007-02-28  zzz
1085    * i2psnark: Add peer details to web page
1086
1087* 2007-02-15  0.6.1.27 released
1088
10892007-02-15  jrandom
1090    * Limit the whispering floodfill sends to at most 3 randomly
1091      chosen from the known floodfill peers
1092
10932007-02-14  jrandom
1094    * Don't filter out KICK and H(ide oper status) IRC messages
1095      (thanks Takk and postman!)
1096
10972007-02-13  jrandom
1098    * Tell our peers about who we know in the floodfill netDb every
1099      6 hours or so, mitigating the situation where peers lose track
1100      of floodfill routers.
1101    * Disable the Syndie updater (people should use the new Syndie,
1102      not this one)
1103    * Disable the eepsite tunnel by default
1104
11052007-01-30  zzz
1106    * i2psnark: Don't hold _snarks lock while checking a snark,
1107      so web page is responsive at startup
1108
11092007-01-29  zzz
1110    * i2psnark: Add NickyB tracker
1111
11122007-01-28  zzz
1113    * i2psnark: Don't hold sendQueue lock while flushing output,
1114      to make everything run smoother
1115
11162007-01-27  zzz
1117    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
1118
11192007-01-20  Complication
1120    * Drop overlooked comment
1121
11222007-01-20  Complication
1123    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
1124      instead of System, so setting a reseed URL in advanced configuration has effect.
1125    * Clean out obsolete reseed code from ConfigNetHandler.
1126
11272007-01-20  zzz
1128    * i2psnark: More choking rotation tweaks
1129    * Improve performance by not reading in the whole
1130      piece from disk for each request. A huge memory savings
1131      on 1MB torrents with many peers.
1132
11332007-01-17  zzz
1134    * Add new HTTP Proxy error message for non-http protocols
1135
11362007-01-17  zzz
1137    * Add note on Syndie index.html steering people to new Syndie
1138
11392007-01-16  zzz
1140    * i2psnark: Fix crash when autostart off and
1141      tcrrent started manually
1142
11432007-01-16  zzz
1144    * i2psnark: Fix bug caused by last i2psnark checkin
1145      (ConnectionAcceptor not started)
1146    * Don't start PeerCoordinator, ConnectionAcceptor,
1147      and TrackerClient unless starting torrent
1148
11492007-01-15  jrandom
1150    * small guard against unnecessary streaming lib reset packets
1151      (thanks Complication!)
1152
11532007-01-15  zzz
1154    * i2psnark: Add 'Stop All' link on web page
1155    * Add some links to trackers and forum on web page
1156    * Don't start tunnel if 'Autostart' unchecked
1157    * Fix torrent restart bug by reopening file descriptors
1158
11592007-01-14  zzz
1160    * i2psnark: Improvements for torrents with > 4 leechers:
1161      choke based on upload rate when seeding, and
1162      be smarter and fairer about rotating choked peers.
1163    * Handle two common i2psnark OOM situations rather
1164      than shutting down the whole thing.
1165    * Fix reporting to tracker of remaining bytes for
1166      torrents > 4GB (but ByteMonsoon still has a bug)
1167
11682006-10-29  zzz
1169    * i2psnark: Fix and enable generation of multifile torrents,
1170      print error if no tracker selected at create-torrent,
1171      fix stopping a torrent that hasn't started successfully,
1172      add eBook and GayTorrents trackers to form,
1173      web page formatting tweaks
1174
1175* 2006-10-10  0.6.1.26 released
1176
11772006-10-29  Complication
1178    * Ensure we get NTP samples from more diverse sources
1179      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1180    * Discard median-based peer skew calculator as framed average works,
1181      and adjusting its percentage can make it behave median-like
1182    * Require more data points (from at least 20 peers)
1183      before considering a peer skew measurement reliable
1184
11852006-10-10  jrandom
1186    * Removed the status display from the console, as its more confusing
1187      than informative (though the content is still displayed in the HTML)
1188
11892006-10-08  Complication
1190    * Add a framed average peer clock skew calculator
1191    * Add config property "router.clockOffsetSanityCheck" to determine
1192      if NTP-suggested clock offsets get sanity checked (default "true")
1193    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1194      by more than 5 seconds, or make it more than 20 seconds total
1195    * Decrease log level in getMedianPeerClockSkew()
1196
11972006-09-29  zzz
1198    * i2psnark: Second try at synchronization fix - synch addRequest()
1199      completely rather than just portions of it and requestNextPiece()
1200
12012006-09-27  jrandom
1202    * added HMAC-SHA256
1203    * properly use CRLF with EepPost
1204    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1205    * PBE session key generation (with 1000 rounds of SHA256)
1206    * misc SDK helper functions
1207
12082006-09-26  Complication
1209    * Take back another inadverent logging change in NTCPConnection
1210
12112006-09-26  Complication
1212    * Take back an accidental log level change
1213
12142006-09-26  Complication
1215    * Subclass from Clock a RouterClock which can access router transports,
1216      with the goal of developing it to second-guess NTP results
1217    * Make transports report clock skew in seconds
1218    * Adjust renderStatusHTML() methods accordingly
1219    * Show average for NTCP clock skews too
1220    * Give transports a getClockSkews() method to report clock skews
1221    * Give transport manager a getClockSkews() method to aggregate results
1222    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1223      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1224    * Extra explicitness in NTCP classes to denote unit of time.
1225    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1226
12272006-09-25  zzz
1228    * i2psnark: Paranoid copy before writing pieces,
1229      recheck files on completion, redownload bad pieces
1230    * i2psnark: Don't contact tracker as often when seeding
1231
12322006-09-24  zzz
1233    * i2psnark: Add some synchronization to prevent rare problem
1234      after restoring orphan piece
1235
12362006-09-20  zzz
1237    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1238      rapid choke/unchokes
1239    * i2psnark: Truncate long TrackerErr messages on web page
1240
12412006-09-16  zzz
1242    * i2psnark: Implement retransmission of requests. This
1243      eliminates one cause of complete stalls with a peer.
1244      This problem is common on torrents with a small number of
1245      active peers where there are no choke/unchokes to kickstart things.
1246
12472006-09-13  zzz
1248    * i2psnark: Fix restoral of partial pieces broken by last patch
1249
12502006-09-13  zzz
1251    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1252      preventing premature end game
1253    * i2psnark: Randomize selection of next piece during end game
1254    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1255    * i2psnark: strip ".torrent" on web page
1256    * i2psnark: Limit piece size in generated torrent to 1MB max
1257
12582006-09-09  zzz
1259    * i2psnark: Add "Stalled" indication and stat totals on web page
1260
12612006-09-09  zzz
1262    * i2psnark: Fix bug where new peers would always be sent an "interested"
1263      regardless of actual interest
1264    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1265      memory and efficiency problems
1266
1267* 2006-09-09  0.6.1.25 released
1268
12692006-09-08  jrandom
1270    * Tweak the PRNG logging so it only displays error messages if there are
1271      problems
1272    * Disable dynamic router keys for the time being, as they don't offer
1273      meaningful security, may hurt the router, and makes it harder to
1274      determine the network health.  The code to restart on SSU IP change is
1275      still enabled however.
1276    * Disable tunnel load testing, leaning back on the tiered selection for
1277      the time being.
1278    * Spattering of bugfixes
1279
12802006-09-07  zzz
1281    * i2psnark: Increase output timeout from 2 min to 4 min
1282    * i2psnark: Orphan debug msg cleanup
1283    * i2psnark: More web rate report cleanup
1284
12852006-09-05  zzz
1286    * i2psnark: Implement basic partial-piece saves across connections
1287    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1288      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1289      code in i2psnark ineffective. Will have to research why there is transmit but
1290      not receive inactivity code. With the current connection limit of 24 peers
1291      we aren't in any danger of keeping out new peers by keeping inactive ones.
1292    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1293    * i2psnark: Fix dropped chunk handling
1294    * i2psnark: Web rate report cleanup
1295
12962006-09-04  zzz
1297    * i2psnark: Report cleared trackerErr immediately
1298    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1299    * i2psnark: Set up new connections more quickly
1300    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1301    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1302
13032006-09-04  zzz
1304    * Enable pipelining in i2psnark
1305    * Make i2psnark tunnel default be 1 + 0-1
1306
13072006-09-03  zzz
1308    * Add rate reporting to i2psnark
1309
13102006-09-03  Complication
1311    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1312    * Print messages about addressbook size to give better overview
1313    * Enable delete function in published addressbook
1314
13152006-08-21  Complication
1316    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1317
13182006-08-03  jrandom
1319    * Decrease the recently modified tunnel building timeout, though keep
1320      the scaling on their processing
1321
13222006-07-31  jrandom
1323    * Increase the tunnel building timeout
1324    * Avoid a rare race (thanks bar!)
1325    * Fix the bandwidth capacity publishing code to factor in share percentage
1326      and outbound throttling (oops)
1327
13282006-07-29  Complication
1329    * Treat NTP responses from unexpected stratums like failures
1330
1331* 2006-07-28  0.6.1.24 released
1332
13332006-07-28  jrandom
1334    * Don't try to reverify too many netDb entries at once (thanks
1335      cervantes and Complication!)
1336
13372006-07-28  jrandom
1338    * Actually fix the threading deadlock issue in the netDb (removing
1339      the synchronized access to individual kbuckets while validating
1340      individual entries) (thanks cervantes, postman, frosk, et al!)
1341
1342* 2006-07-27  0.6.1.23 released
1343
13442006-07-27  jrandom
1345    * Cut down NTCP connection establishments once we know the peer is skewed
1346      (rather than wait for full establishment before verifying)
1347    * Removed a lock on the stats framework when accessing rates, which
1348      shouldn't be a problem, assuming rates are created (pretty much) all at
1349      once and merely updated during the lifetime of the jvm.
1350
13512006-07-27  jrandom
1352    * Further NTCP write status cleanup
1353    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1354
13552006-07-26  jrandom
1356    * When dropping a netDb router reference, only accept newer
1357      references as part of the update check
1358    * If we have been up for a while, don't accept really old
1359      router references (published 2 or more days ago)
1360    * Drop router references once they are no longer valid, even if
1361      they were allowed in due to the lax restrictions on startup
1362
13632006-07-26  jrandom
1364    * Every time we create a new router identity, add an entry to the
1365      new "identlog.txt" text file in the I2P install directory.  For
1366      debugging purposes, publish the count of how many identities the
1367      router has cycled through, though not the identities itself.
1368    * Cleaned up the way the multitransport shitlisting worked, and
1369      added per-transport shitlists
1370    * When dropping a router reference locally, first fire a netDb
1371      lookup for the entry
1372    * Take the peer selection filters into account when organizing the
1373      profiles (thanks Complication!)
1374    * Avoid some obvious configuration errors for the NTCP transport
1375      (invalid ports, "null" ip, etc)
1376    * Deal with some small NTCP bugs found in the wild (unresolveable
1377      hosts, strange network discons, etc)
1378    * Send our netDb info to peers we have direct NTCP connections to
1379      after each 6-12 hours of connection uptime
1380    * Clean up the NTCP reading and writing queue logic to avoid some
1381      potential delays
1382    * Allow people to specify the IP that the SSU transport binds on
1383      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1384
1385* 2006-07-18  0.6.1.22 released
1386
13872006-07-18  jrandom
1388    * Add a failsafe to the NTCP transport to make sure we keep
1389      pumping writes when we should.
1390    * Properly reallow 16-32KBps routers in the default config
1391      (thanks Complication!)
1392
13932006-07-16  Complication
1394    * Collect tunnel build agree/reject/expire statistics
1395      for each bandwidth tier of peers (and peers of unknown tiers,
1396      even if those shouldn't exist)
1397
13982006-07-14  jrandom
1399    * Improve the multitransport shitlisting (thanks Complication!)
1400    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1401      the default configuration (thanks for the stats Complication!)
1402    * Properly allow older router references to load on startup
1403      (thanks bar, Complication, et al!)
1404    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1405      hopefully today's changes should make this unnecessary (thanks void!)
1406    * Improved NTCP buffering
1407    * Close NTCP connections if we are too backlogged when writing to them
1408
14092006-07-04  jrandom
1410    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1411      connections only.  Those who configure their NAT/firewall to allow
1412      inbound connections and specify the external host and port
1413      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1414      SSU is still enabled for use by default for all users as a fallback.
1415    * Substantial bugfix to the tunnel gateway processing to transfer
1416      messages sequentially instead of interleaved
1417    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1418      GNU/Classpath based JVMs
1419    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1420      refill with a background thread to refill the output buffer
1421    * Add per-transport support for the shitlist
1422    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1423      contention
1424
14252006-07-01  Complication
1426    * Ensure that the I2PTunnel web interface won't update tunnel settings
1427      for shared clients when a non-shared client is modified
1428      (thanks for spotting, BarkerJr!)
1429
14302006-06-14  cervantes
1431    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1432      that use Bitstream Vera fonts @ 96 dpi
1433
1434* 2006-06-14  0.6.1.21 released
1435
14362006-06-13  jrandom
1437    * Use a minimum uptime of 2 hours, not 4 (oops)
1438
14392006-06-13  jrandom
1440    * Cut down the proactive rejections due to queue size - if we are
1441      at the point of having decrypted the request off the queue, might
1442      as well let it through, rather than waste that decryption
1443
14442006-06-11  Kloug
1445    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1446      outstanding pings/pongs
1447
14482006-06-10  jrandom
1449    * Further reduction in proactive rejections
1450
14512006-06-09  jrandom
1452    * Don't let the pending tunnel request queue grow beyond reason
1453      (letting things sit for up to 30s when they fail after 10s
1454      seems a bit... off)
1455
14562006-06-08  jrandom
1457    * Be more conservative in the proactive rejections
1458
14592006-06-04  Complication
1460    * Trim out sending a blank line before USER in susimail.
1461      Seemed to break in rare cases, thanks for reporting, Brachtus!
1462
1463* 2006-06-04  0.6.1.20 released
1464
14652006-06-04  jrandom
1466    * Reduce the SSU ack frequency
1467    * Tweaked the tunnel rejection settings to reject less aggressively
1468
14692006-05-31  jrandom
1470    * Only send netDb searches to the floodfill peers for the time being
1471    * Add some proof of concept filters for tunnel participation.  By default,
1472      it will skip peers with an advertised bandwith of less than 32KBps or
1473      an advertised uptime of less than 2 hours.  If this is sufficient, a
1474      safer implementation of these filters will be implemented.
1475
1476* 2006-05-18  0.6.1.19 released
1477
14782006-05-18  jrandom
1479    * Made the SSU ACKs less frequent when possible
1480
14812006-05-17  Complication
1482    * Fix some oversights in my previous changes:
1483      adjust some loglevels, make a few statements less wasteful,
1484      make one comparison less confusing and more likely to log unexpected values
1485
14862006-05-17  jrandom
1487    * Make the peer page sortable
1488    * SSU modifications to cut down on unnecessary connection failures
1489
14902006-05-16  jrandom
1491    * Further shitlist randomizations
1492    * Adjust the stats monitored for detecting cpu overload when dropping new
1493      tunnel requests
1494
14952006-05-15  jrandom
1496    * Add a load dependent throttle on the pending inbound tunnel request
1497      backlog
1498    * Increased the tunnel test failure slack before killing a tunnel
1499
15002006-05-13  Complication
1501    * Separate growth factors for tunnel count and tunnel test time
1502    * Reduce growth factors, so probabalistic throttle would activate
1503    * Square probAccept values to decelerate stronger when far from average
1504    * Create a bandwidth stat with approximately 15-second half life
1505    * Make allowTunnel() check the 1-second bandwidth for overload
1506      before doing allowance calculations using 15-second bandwidth
1507    * Tweak the overload detector in BuildExecutor to be more sensitive
1508      for rising edges, add ability to initiate tunnel drops
1509    * Add a function to seek and drop the highest-rate participating tunnel,
1510      keeping a fixed+random grace period between such drops.
1511      It doesn't seem very effective, so disabled by default
1512      ("router.dropTunnelsOnOverload=true" to enable)
1513
15142006-05-11  jrandom
1515    * PRNG bugfix (thanks cervantes and Complication!)
1516
1517* 2006-05-09  0.6.1.18 released
1518
15192006-05-09  jrandom
1520    * Further tunnel creation timeout revamp
1521
15222006-05-07  Complication
1523    * Fix problem whereby repeated calls to allowed() would make
1524      the 1-tunnel exception permit more than one concurrent build
1525
15262006-05-06  jrandom
1527    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1528      while tracking the extended timeout events.
1529
15302006-05-04  jrandom
1531    * Short circuit a highly congested part of the stat logging unless its
1532      required (may or may not help with a synchronization issue reported by
1533      andreas)
1534
15352006-05-03  Complication
1536    * Allow a single build attempt to proceed despite 1-minute overload
1537      only if the 1-second rate shows enough spare bandwidth
1538      (e.g. overload has already eased)
1539
15402006-05-02  Complication
1541    * Correct a misnamed property in SummaryHelper.java
1542      to avoid confusion
1543    * Make the maximum allowance of our own concurrent
1544      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1545      within the fixed range 2..10
1546    * While overloaded, try to avoid completely choking our own build attempts,
1547      instead prefer limiting them to 1
1548
15492006-05-01  jrandom
1550    * Adjust the tunnel build timeouts to cut down on expirations, and
1551      increased the SSU connection establishment retransmission rate to
1552      something less glacial.
1553    * For the first 5 minutes of uptime, be less aggressive with tunnel
1554      exploration, opting for more reliable peers to start with.
1555
15562006-05-01  jrandom
1557    * Fix for a netDb lookup race (thanks cervantes!)
1558
15592006-04-27  jrandom
1560    * Avoid a race in the message reply registry (thanks cervantes!)
1561
15622006-04-27  jrandom
1563    * Fixed the tunnel expiration desync code (thanks Complication!)
1564
1565* 2006-04-23  0.6.1.17 released
1566
15672006-04-19  jrandom
1568    * Adjust how we pick high capacity peers to allow the inclusion of fast
1569      peers (the previous filter assumed an old usage pattern)
1570    * New set of stats to help track per-packet-type bandwidth usage better
1571    * Cut out the proactive tail drop from the SSU transport, for now
1572    * Reduce the frequency of tunnel build attempts while we're saturated
1573    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1574
1575* 2006-04-15  0.6.1.16 released
1576
15772006-04-15  jrandom
1578    * Adjust the proactive tunnel request dropping so we will reject what we
1579      can instead of dropping so much (but still dropping if we get too far
1580      overloaded)
1581
15822006-04-14  jrandom
1583    * 0 isn't very random
1584    * Adjust the tunnel drop to be more reasonable
1585
15862006-04-14  jrandom
1587    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1588    * Made the bw-related tunnel join throttle much simpler
1589
15902006-04-14  jrandom
1591    * Make some more stats graphable, and allow some internal tweaking on the
1592      tunnel pairing for creation and testing.
1593
1594* 2006-04-13  0.6.1.15 released
1595
15962006-04-12  jrandom
1597    * Added a further failsafe against trying to queue up too many messages to
1598      a peer.
1599
16002006-04-12  jrandom
1601    * Watch out for failed syndie index fetches (thanks bar!)
1602
16032006-04-11  jrandom
1604    * Throttling improvements on SSU - throttle all transmissions to a peer
1605      when we are retransmitting, not just retransmissions.  Also, if
1606      we're already retransmitting to a peer, probabalistically tail drop new
1607      messages targetting that peer, based on the estimated wait time before
1608      transmission.
1609    * Fixed the rounding error in the inbound tunnel drop probability.
1610
16112006-04-10  jrandom
1612    * Include a combined send/receive graph (good idea cervantes!)
1613    * Proactively drop inbound tunnel requests probabalistically as the
1614      estimated queue time approaches our limit, rather than letting them all
1615      through up to that limit.
1616
16172006-04-08  jrandom
1618    * Stat summarization fix (removing the occational holes in the jrobin
1619      graphs)
1620
16212006-04-08  jrandom
1622    * Process inbound tunnel requests more efficiently
1623    * Proactively drop inbound tunnel requests if the queue before we'd
1624      process it in is too long (dynamically adjusted by cpu load)
1625    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1626      proactively drop too many requests.
1627    * Display the number of pending inbound tunnel join requests on the router
1628      console (as the "handle backlog")
1629    * Include a few more stats in the default set of graphs
1630
16312006-04-06  jrandom
1632    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1633
16342006-04-06  jrandom
1635    * Fixed a typo in the reply cleanup code
1636
1637* 2006-04-05  0.6.1.14 released
1638
16392006-04-05  jrandom
1640    * Cut down on the time that we allow a tunnel creation request to sit by
1641      without response, and reject tunnel creation requests that are lagged
1642      locally.  Also switch to a bounded FIFO instead of a LIFO
1643    * Threading tweaks for the message handling (thanks bar!)
1644    * Don't add addresses to syndie with blank names (thanks Complication!)
1645    * Further ban clearance
1646
16472006-04-05  jrandom
1648    * Fix during the ssu handshake to avoid an unnecessary failure on
1649      packet retransmission (thanks ripple!)
1650    * Fix during the SSU handshake to use the negotiated session key asap,
1651      rather than using the intro key for more than we should (thanks ripple!)
1652    * Fixes to the message reply registry (thanks Complication!)
1653    * More comprehensive syndie banning (for repeated pushes)
1654    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1655      testing purposes
1656    * Put a floor back on the capacity threshold, so too many failing peers
1657      won't cause us to pick very bad peers (unless we have very few good
1658      ones)
1659    * Bugfix to cut down on peers using introducers unneessarily (thanks
1660      Complication!)
1661    * Reduced the default streaming lib message size to fit into a single
1662      tunnel message, rather than require 5 tunnel messages to be transferred
1663      without loss before recomposition.  This reduces throughput, but should
1664      increase reliability, at least for the time being.
1665    * Misc small bugfixes in the router (thanks all!)
1666    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1667
16682006-04-01  jrandom
1669    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1670    * Filter the IRC ping/pong messages, as some clients send unsafe
1671      information in them (thanks aardvax and dust!)
1672
16732006-03-30  jrandom
1674    * Substantially reduced the lock contention in the message registry (a
1675      major hotspot that can choke most threads).  Also reworked the locking
1676      so we don't need per-message timer events
1677    * No need to have additional per-peer message clearing, as they are
1678      either unregistered individually or expired.
1679    * Include some of the more transient tunnel throttling
1680
1681* 2006-03-26  0.6.1.13 released
1682
16832006-03-25  jrandom
1684    * Added a simple purge and ban of syndie authors, shown as the
1685      "Purge and ban" button on the addressbook for authors that are already
1686      on the ignore list.  All of their entries and metadata are deleted from
1687      the archive, and the are transparently filtered from any remote
1688      syndication (so no user on the syndie instance will pull any new posts
1689      from them)
1690    * More strict tunnel join throtting when congested
1691
16922006-03-24  jrandom
1693    * Try to desync tunnel building near startup (thanks Complication!)
1694    * If we are highly congested, fall back on only querying the floodfill
1695      netDb peers, and only storing to those peers too
1696    * Cleaned up the floodfill-only queries
1697
16982006-03-21  jrandom
1699    * Avoid a very strange (unconfirmed) bug that people using the systray's
1700      browser picker dialog could cause by disabling the GUI-based browser
1701      picker.
1702    * Cut down on subsequent streaming lib reset packets transmitted
1703    * Use a larger MTU more often
1704    * Allow netDb searches to query shitlisted peers, as the queries are
1705      indirect.
1706    * Add an option to disable non-floodfill netDb searches (non-floodfill
1707      searches are used by default, but can be disabled by adding
1708      netDb.floodfillOnly=true to the advanced config)
1709
17102006-03-20  jrandom
1711    * Fix to allow for some slack when coalescing stats
1712    * Workaround some oddball errors
1713
17142006-03-18  jrandom
1715    * Added a new graphs.jsp page to show all of the stats being harvested
1716
17172006-03-18  jrandom
1718    * Made the netDb search load limitations a little less stringent
1719    * Add support for specifying the number of periods to be plotted on the
1720      graphs - e.g. to plot only the last hour of a stat that is averaged at
1721      the 60 second period, add &periodCount=60
1722
17232006-03-17  jrandom
1724    * Add support for graphing the event count as well as the average stat
1725      value (done by adding &showEvents=true to the URL).  Also supports
1726      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1727      the title (&hideTitle=true).
1728    * Removed an unnecessary arbitrary filter on the profile organizer so we
1729      can pick high capacity and fast peers more appropriately
1730
17312006-03-16  jrandom
1732    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1733      console.  Selected stats can be harvested automatically and fed into
1734      in-memory RRD databases, and those databases can be served up either as
1735      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1736      details).  A base set of stats are harvested by default, but an
1737      alternate list can be specified by setting the 'stat.summaries' list on
1738      the advanced config.  For instance:
1739      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1740    * HTML tweaking for the general config page (thanks void!)
1741    * Odd NPE fix (thanks Complication!)
1742
17432006-03-15  Complication
1744    * Trim out an old, inactive IP second-guessing method
1745      (thanks for spotting, Anonymous!)
1746
17472006-03-15  jrandom
1748    * Further stat cleanup
1749    * Keep track of how many peers we are actively trying to communicate with,
1750      beyond those who are just trying to communicate with us.
1751    * Further router tunnel participation throttle revisions to avoid spurious
1752      rejections
1753    * Rate stat display cleanup (thanks ripple!)
1754    * Don't even try to send messages that have been queued too long
1755
17562006-03-05  zzz
1757    * Remove the +++--- from the logs on i2psnark startup
1758
17592006-03-05  jrandom
1760    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1761    * Give netDb lookups to floodfill peers more time, as they are much more
1762      likely to succeed (thereby cutting down on the unnecessary netDb
1763      searches outside the floodfill set)
1764    * Fix to the SSU IP detection code so we won't use introducers when we
1765      don't need them (thanks Complication!)
1766    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1767      peers given to it
1768    * Don't let netDb searches wander across too many peers
1769    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1770      as its too volatile to have much meaning.
1771    * Don't bork if a Syndie post is missing an entry.sml
1772
17732006-03-05  Complication
1774    * Reduce exposed statistical information,
1775      to make build and uptime tracking more expensive
1776
17772006-03-04  Complication
1778    * Fix the announce URL of orion's tracker in Snark sources
1779
17802006-03-03  Complication
1781    * Explicit check for an index out of bounds exception while parsing
1782      an inbound IRC command (implicit check was there already)
1783
17842006-03-01  jrandom
1785    * More aggressive tunnel throttling as we approach our bandwidth limit,
1786      and throttle based off periods wider than 1 second.
1787    * Included Doubtful Salmon's syndie stylings (thanks!)
1788
17892006-02-27  zzz
1790    * Update error page templates to add \r, Connection: close, and
1791      Proxy-connection: close to headers.
1792
1793* 2006-02-27  0.6.1.12 released
1794
17952006-02-27  jrandom
1796    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1797      machines, rather than the generic jbigi (until we have an athlon64
1798      optimized version)
1799
18002006-02-26  jrandom
1801    * Switch from the bouncycastle to the gnu-crypto implementation for
1802      SHA256, as benchmarks show a 10-30% speedup.
1803    * Removed some unnecessary object caches
1804    * Don't close i2psnark streams prematurely
1805
18062006-02-25  jrandom
1807    * Made the Syndie permalinks in the thread view point to the blog view
1808    * Disabled TCP again (since the live net seems to be doing well w/out it)
1809    * Fix the message time on inbound SSU establishment (thanks zzz!)
1810    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1811      just starts up
1812
18132006-02-24  jrandom
1814    * Rounding calculation cleanup in the stats, and avoid an uncontested
1815      mutex (thanks ripple!)
1816    * SSU handshake cleanup to help force incompatible peers to stop nagging
1817      us by both not giving them an updated reference to us and by dropping
1818      future handshake packets from them.
1819
18202006-02-23  jrandom
1821    * Increase the SSU retransmit ceiling (for slow links)
1822    * Estimate the sender's SSU MTU (to help see if we agree)
1823
18242006-02-22  jrandom
1825    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1826    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1827      links
1828    * Further class validator refactorings
1829
18302006-02-22  jrandom
1831    * Handle a rare race under high bandwidth situations in the SSU transport
1832    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1833
18342006-02-21  Complication
1835    * Reactivate TCP tranport by default, in addition to re-allowing
1836
1837* 2006-02-21  0.6.1.11 released
1838
18392006-02-21  jrandom
1840    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1841      heap when backlogged (and so that the messages queued up on it don't sit
1842      there forever)
1843    * Further SSU memory cleanup
1844    * Clean up the address regeneration code so it knows when to rebuild the
1845      local info more precisely.
1846
18472006-02-20  jrandom
1848    * Properly enable TCP this time (oops)
1849    * Deal with multiple form handlers on the same page in the console without
1850      being too annoying (thanks blubb and bd_!)
1851
18522006-02-20  jrandom
1853    * Reenable the TCP transport as a fallback (we'll continue to muck with
1854      debugging SSU-only elsewhere)
1855
18562006-02-20  jrandom
1857    * Major SSU and router tuning to reduce contention, memory usage, and GC
1858      churn.  There are still issues to be worked out, but this should be a
1859      substantial improvement.
1860    * Modified the optional netDb harvester task to support choosing whether
1861      to use (non-anonymous) direct connections or (anonymous) exploratory
1862      tunnels to do the harvesting.  Harvesting itself is enabled via the
1863      advanced config "netDb.shouldHarvest=true" (default is false) and the
1864      connection type can be chosen via "netDb.harvestDirectly=false" (default
1865      is false).
1866
18672006-02-19  dust
1868    * Added pruning of suckers history (it used to grow indefinitely).
1869
18702006-02-19  jrandom
1871    * Moved the current net's reseed URL to a different location than where
1872      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1873    * More aggressively expire inbound messages (on receive, not just on send)
1874    * Add in a hook for breaking backwards compatibility in the SSU wire
1875      protocol directly by including a version as part of the handshake.  The
1876      version is currently set to 0, however, so the wire protocol from this
1877      build is compatible with all earlier SSU implementations.
1878    * Increased the number of complete message readers, cutting down
1879      substantially on the delay processing inbound messages.
1880    * Delete the message history file on startup
1881    * Reworked the restart/shutdown display on the console (thanks bd_!)
1882
18832006-02-18  jrandom
1884    * Migrate the outbound packets from a central component to the individual
1885      per-peer components, substantially cutting down on lock contention when
1886      dealing with higher degrees.
1887    * Load balance the outbound SSU transfers evenly across peers, rather than
1888      across messages (so peers with few messages won't be starved by peers
1889      with many).
1890    * Reduce the frequency of router info rebuilds (thanks bar!)
1891
18922006-02-18  jrandom
1893    * Add a new AIMD throttle in SSU to control the number of concurrent
1894      messages being sent to a given peer, in addition to the throttle on the
1895      number of concurrent bytes to that peer.
1896    * Adjust the existing SSU outbound queue to throttle based on the queue's
1897      lag, not an arbitrary number of packets.
1898
18992006-02-17  jrandom
1900    * Properly fix the build request queue throttling, using queue age to
1901      detect congestion, rather than queue size.
1902
19032006-02-17  jrandom
1904    * Disable the message history log file by default (duh - feel free to
1905      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1906    * Limit the size of the inbound tunnel build request queue so we don't
1907      get an insane backlog of requests that we're bound to reject, and adjust
1908      the queue processing so we keep on churning through them when we've got
1909      a backlog.
1910    * Small fixes for the multiuser syndie operation (thanks Complication!)
1911    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1912      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1913
1914* 2006-02-16  0.6.1.10 released
1915
19162006-02-16  jrandom
1917    * Add a new toggle to the web config to enable/disable the load testing
1918
19192006-02-16  jrandom
1920    * Dropped much of the abandonware from the apps/ directory
1921
19222006-02-16  jrandom
1923    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1924    * Initial sucker refactoring to simplify reuse of the html parsing
1925    * Beginnings of hooks to push imported rss/atom out to remote syndie
1926      archives automatically (though not enabled currently)
1927    * Further SSU peer test cleanup
1928
19292006-02-15  jrandom
1930    * Add in per-blog RSS feeds to Syndie
1931    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1932      with the posts, marking additional attachments as Media RSS enclosures
1933      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1934      per item.
1935    * Don't allow the default syndie user to be set to something invalid if
1936      its in single user mode.
1937
19382006-02-15  jrandom
1939    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1940      longer backwards compatible (and should not be used until 0.6.1.1 is
1941      out)
1942
19432006-02-14  jrandom
1944    * Syndie ui bugfixes (thanks all!)
1945
19462006-02-13  jrandom
1947    * Use the current directory for some temporary I2PSnark files, rather than
1948      the OS default temp dir (thanks anon!)
1949    * Increase the base streaming lib window size (still shrinks to 1 on
1950      retransmission though, of course)
1951    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1952    * Implement fast retransmit in the streaming lib (fires at most once per
1953      packet), and increased the default ack delay to 2 seconds (from .5s)
1954    * Don't ask for garlic level message acks for end to end messages unless
1955      they're useful (e.g. to ack session tags)
1956
19572006-02-12  cervantes
1958    * Use a different santisation method for some SML attributes
1959    * Make router console update config save button actually save.
1960    * Fix console bandwidth limiter burst rate dropdowns, so the display
1961      relates to what is saved in the config.
1962   
19632006-02-12  cervantes
1964    * SML is now stricter in it's formatting (attributes should only use
1965      double quotes instead of being allowed to mix with singles).
1966    * Using apostrophes in SML attributes will no longer invalidate the tag.
1967    * Some instances of [blog] tag description were not being displayed
1968      correctly.
1969
19702006-02-12  jrandom
1971    * Further SSU peer test throttling
1972    * Put the most common router console features on the main index page too
1973
19742006-02-11  jrandom
1975    * Be more careful about SSU peer test floods
1976
19772006-02-09  jrandom
1978    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1979
19802006-02-08  jrandom
1981    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1982      bundled a precompiled libjbigi.so in the jbigi.jar
1983    * Cleaned up the synchronization for some SSU packet handling code
1984    * Allow explicit rejection of more lagged tunnel build requests, rather
1985      than dropping them outright
1986    * Use lighter load testing
1987
19882006-02-07  jrandom
1989    * Handle HTTP headers without any values (thanks Sugadude!)
1990    * Don't show the option to make Syndie multiuser, since very few people
1991      need it, and multiuser mode is a lot more complex to use.  Geeks can
1992      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1993      (or in the router's advanced config, for the embedded Syndie)
1994    * When a peer rejects participation in a tunnel, they mean it (duh)
1995    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1996    * Remove a throttle on the size of the SSU active outbound pool, since
1997      it was essentially arbitrary
1998    * Use a more appropriate SSU bloom filter size
1999    * Don't "proactively" drop SSU connections if we have partially received
2000      inbound messages (duh)
2001    * Migrate most of the message state across SSU connection reestablishment
2002
20032006-02-06  jrandom
2004    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
2005      piggybacked
2006
20072006-02-05  jrandom
2008    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
2009      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
2010      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
2011    * Enable the messageHistory.txt by default, for debugging
2012
20132006-02-05  jrandom
2014    * Substantial bugfix for the duplicate message detection in the transport
2015      layer
2016    * Handle tunnel build responses ASAP, rather than queueing them up to wait
2017      in line (processing them is really fast - just a few AES loops)
2018    * Don't bother handling build requests that we have queued up for a while
2019      locally, as the requestor will have timed it out anyway (perhaps we
2020      should reply regardless, but with a backoff instead?)
2021
20222006-02-04  jrandom
2023    * Further tunnel test cleanup and disabling of the old tunnel creation
2024      code
2025
20262006-02-04  jrandom
2027    * Clean up and reenable the tunnel testing for the new tunnel system.
2028
20292006-02-04  jrandom
2030    * Don't cache the archive.txt in syndie when fetching it through the web
2031      interface.
2032    * Logging updates
2033
20342006-02-03  jrandom
2035    * Added further replay prevention on the tunnel build requests
2036    * More aggressive streaming lib closing on reset
2037
20382006-02-03  jrandom
2039    * More aggressive refusal of peers from the wrong network (oops)
2040
20412006-02-01  jrandom
2042    * Instruct the router to reseed against a new URL, for migration purposes:
2043      http://dev.i2p.net/i2pdb2/
2044    * Aggressive error handling during UDP packet creation (thanks cervantes)
2045
20462006-02-01  jrandom
2047    * Fix the new tunnel creation crypto, including the addition of a 4 byte
2048      "next message ID" to the encrypted request structure in the spec.
2049    * Backwards incompatible change, using the new tunnel creation crypto, the
2050      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
2051      with the old incompatible network).
2052    * Reworked the leaseSet request process to handle a race condition
2053    * Disable the TCP transport
2054    * Run four separate threads on the job queue to cut down on job lag
2055
20562006-01-28  jrandom
2057    * Removed a race that could show up in leaseSet requesting with the new
2058      tunnel building process
2059
20602006-01-25  jrandom
2061    * Run the peer profile coalescing/reorganization outside the job queue
2062      (on one of the timers), to cut down on some job queue congestion.  Also,
2063      trim old profiles while running, not just when starting up.
2064    * Slightly more sane intra-floodfill-node netDb activity (only flood new
2065      entries)
2066    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
2067      source of the bug is not yet addressed)
2068    * Better I2PSnark reconnection handling
2069    * Further cleanup in the new tunnel build process
2070    * Make sure we expire old participants properly
2071    * Remove much of the transient overload throttling (it wasn't using a good
2072      metric)
2073
20742006-01-25  dust
2075    * Fix IRC client proxy to use ISO-8859-1.
2076
20772006-01-22  jrandom
2078    * New tunnel build process - does not use the new crypto or new peer
2079      selection strategies.  However, it does drop the fallback tunnel
2080      procedure, except for tunnels who are configured to allow them, or for
2081      the exploratory pool during bootstrapping or after a catastrophic
2082      failure.  This new process prefers to fail rather than use too-short
2083      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
2084      it may expose more tunnel failures to the user.
2085    * Always prefer normal tunnels to fallback tunnels.
2086    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
2087      bar!)
2088    * Do all of the netDb entry writing in a separate thread, avoiding
2089      duplicates and batching them up.
2090
20912006-01-19  Complication
2092    * Explain better where eepsite's destkey can be found
2093
20942006-01-18  cervantes
2095    * Add title attributes to all external links in Syndie, so we can rollover
2096      and quickly see if it's worth clicking on.
2097    * Fixed a minor compiler warning.
2098
20992006-01-17  jrandom
2100    * First pass of the new tunnel creation crypto, specified in the new
2101      router/doc/tunnel-alt-creation.html (referenced in the current
2102      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
2103      than in the test code, but the code verifies the technical viability, so
2104      further scrutiny would be warranted.
2105
21062006-01-16  cervantes
2107    * Dragged I2P kicking and screaming into 2006 (Oops)
2108
21092006-01-14  cervantes
2110    * Removed entirely misleading memory status from the console summary.
2111       
21122006-01-13  cervantes
2113    * Further Syndie layout hardening and typeface balancing.
2114
2115* 2006-01-12  0.6.1.9 released
2116
21172006-01-12  jrandom
2118    * Only create the loadtest.log if requested to do so (thanks zzz!)
2119    * Make sure we cleanly take into consideration the appropriate data
2120      points when filtering out duplicate messages in the message validator,
2121      and report the right bloom filter false positives rate (not used for
2122      anything except debugging)
2123
21242006-01-12  cervantes
2125    * Syndie CSS tweaks to removed some redundant declarations, improve font
2126      scaling and layout robustness. Improved cross browser compatibility
2127      (in other words "kicked IE"). Tightened the look of the blog template
2128      a little.
2129
21302006-01-11  Complication
2131    * CSS comment fixes
2132
21332006-01-11  jrandom
2134    * Include the attachments/blogs/etc for comments on the blog view
2135    * Syndie HTML fixes (thanks cervantes!)
2136    * Make sure we fully reset the objects going into our cache before we
2137      reuse them (thanks zzz!)
2138
21392006-01-10  jrandom
2140    * Added the per-post list of attachments/blogs/etc to the blog view in
2141      Syndie (though this does not yet include comments or some further
2142      refinements)
2143    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2144      removing the dox box (though also removes the restart functionality...)
2145    * Give the i2p.exe the correct java.library.path to support the systray
2146      dll (thanks Bobcat, Sugadude, anon!)
2147
21482006-01-09  jrandom
2149    * Removed a longstanding bug that had caused unnecessary router identity
2150      churn due to clock skew
2151    * Temporarily sanity check within the streaming lib for long pending
2152      writes
2153    * Added support for a blog-wide logo to Syndie, and automated the pushing
2154      of updated extended blog info data along side the metadata.
2155
21562006-01-09  jrandom
2157    * Bugfix for a rare SSU error (thanks cervantes!)
2158    * More progress on the blog interface, allowing customizable blog-wide
2159      links.
2160
21612006-01-08  jrandom
2162    * First pass of the new blog interface, though without much of the useful
2163      customization features (coming soon)
2164
21652006-01-04  jrandom
2166    * Rather than profile individual tunnels for throughput over their
2167      lifetime, do so at 1 minute intervals (allowing less frequently active
2168      tunnels to be more fairly measured).
2169    * Run the live tunnel load test across two tunnels at a time, by default.
2170      The load test runs for a random period from 90s to the tunnel lifetime,
2171      self paced.  This should help gathering data for profiling peers that
2172      are in exploratory tunnels.
2173
21742006-01-03  jrandom
2175    * Calculate the overall peer throughput across the 3 fastest one minute
2176      tunnel throughput values, rather than the single fastest throughput.
2177    * Degrade the profiled throughput data over time (cutting the profiled
2178      peaks in half once a day, on average)
2179    * Enable yet another new speed calculation for profiling peers, using the
2180      peak throughput from individual tunnels that a peer is participating in,
2181      rather than across all tunnels they are participating in.  This helps
2182      gather a fairer peer throughput measurement, since it won't allow a slow
2183      high capacity peer seem to have a higher throughput (pushing a little
2184      data across many tunnels at once, as opposed to lots of data across a
2185      single tunnel).  This degrades over time like the other.
2186    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2187      precompiled OS/2 library)
2188
21892006-01-01  jrandom
2190    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2191      (though it can still seed and participate in multifile swarms)
2192    * Enable a new speed calculation for profiling peers, using their peak
2193      1 minute average tunnel throughput as their speed.
2194
21952005-12-31  jrandom
2196    * Include a simple torrent creator in the I2PSnark web UI
2197    * Further streaming lib closing improvements
2198    * Refactored the load test components to run off live tunnels (though,
2199      still not safe for normal/anonymous load testing)
2200
22012005-12-30  jrandom
2202    * Close streams more gracefully
2203
22042005-12-30  jrandom
2205    * Small streaming lib bugfixes for the modified timeouts
2206    * Minor Syndie/Sucker RSS html fix
2207    * Small synchronization fix in I2PSnark (thanks fsm!)
2208
22092005-12-30  jrandom
2210    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2211      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2212      some distros (e.g. mandriva)
2213
22142005-12-29  jrandom
2215    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2216      actually correct
2217
22182005-12-27  jrandom
2219    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2220      the clock is too skewed to do anything useful (check the year and month,
2221      not just the hour and minute).
2222    * Fixed the read/write timeouts in the streaming lib (so that it actually
2223      honors them now)
2224    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2225      torrent closing)
2226    * Handle an oddball tunnel creation failure (thanks Xunk)
2227
22282005-12-26  Complication
2229    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2230    * HTML readability cosmetics on "Peers" page
2231
2232* 2005-12-22  0.6.1.8 released
2233
22342005-12-22  jrandom
2235    * Bundle the standalone I2PSnark launcher in the installer and update
2236      process (launch as "java -jar launch-i2psnark.jar", viewing the
2237      interface on http://localhost:8002/)
2238    * Don't autostart swarming torrents by default so that you can run a
2239      standalone I2PSnark from the I2P install dir and not have the embedded
2240      I2PSnark autolaunch the torrents that the standalone instance is running
2241    * Fixed a rare streaming lib bug that could let a blocking call wait
2242      forever.
2243
22442005-12-22  jrandom
2245    * Cleaned up some buffer synchronization issues in I2PSnark that could
2246      cause blockage.
2247
22482005-12-21  jrandom
2249    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2250      behavior)
2251    * Fixed the I2PSnark bug that would lose track of live peers
2252
22532005-12-20  jrandom
2254    * Enabled the control in I2PSnark to toggle whether torrents should be
2255      started automatically or not
2256    * Hopefully finished the last hook to close down torrents completely when
2257      they're stopped.
2258
22592005-12-19  jrandom
2260    * Fix for old Syndie blog bookmarks (thanks Complication!)
2261    * Fix for I2PSnark to accept incoming connections again (oops)
2262    * Randomize the order that peers from the tracker are contacted
2263
22642005-12-19  jrandom
2265    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2266      memory usage reduction, better OOM handling, and a shared connection
2267      acceptor.
2268    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2269      blog from the blog page shows threads started by the selected author,
2270      not those that they merely participate in)
2271
22722005-12-18  jrandom
2273    * Added a standalone runner for the I2PSnark web ui (build with the
2274      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2275      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2276    * Further I2PSnark error handling
2277
22782005-12-17  jrandom
2279    * Let multiuser accounts authorize themselves to access the remote
2280      functionality again (thanks Ch0Hag!)
2281    * Adjust the JVM heap size to 128MB for new installs (existing users can
2282      accomplish this by editing wrapper.config, adding the line
2283      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2284      of the router).  This is relevent for heavy usage of I2PSnark in the
2285      router console.
2286
22872005-12-17  jrandom
2288    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2289      'piece' sizes grow larger than before.
2290
22912005-12-16  jrandom
2292    * Added some I2PSnark sanity checks, an OOMListener when running
2293      standalone, and a guard against keeping memory tied up indefinitely.
2294    * Sanity check on the watchdog (thanks zzz!)
2295    * Handle invalid HTTP requests in I2PTunnel a little better
2296
22972005-12-16  jrandom
2298    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2299      properly (thanks Complication!)
2300    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2301      b0rking in the DirMonitor, etc)
2302
23032005-12-16  jrandom
2304    * Try to run a torrent in readonly mode if we can't write to the file, and
2305      handle failures a little more gracefully (thanks polecat!)
2306
23072005-12-16  jrandom
2308    * Refuse torrents with too many files (128), avoiding ulimit errors.
2309    * Remove an fd leak in I2PSnark
2310    * Further I2PSnark web UI cleanup
2311
23122005-12-15  jrandom
2313    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2314
23152005-12-15  jrandom
2316    * Added multitorrent support to I2PSnark, accessible currently by running
2317      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2318      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2319      their data in that directory as well.  Removing the .torrent file stops
2320      participation, and it is currently set to seed indefinitely.  Completion
2321      is logged to the logger and standard output, with further UI interaction
2322      left to the (work in progress) web UI.
2323
23242005-12-14  jrandom
2325    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2326    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2327      (thanks Complication!)
2328
23292005-12-13  zzz
2330    * Don't test tunnels expiring within 90 seconds
2331    * Defer Test Tunnel jobs if job lag too large
2332    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2333      job lag for tunnel build backoff, allowing for more agile handling
2334      (since the stat is only updated once a minute)
2335    * Use tunnel length override if all tunnels are expiring within one
2336      minute.
2337
23382005-12-13  jrandom
2339    * Fixed I2PSnark's handling of some torrent files to deal with those
2340      created by Azureus and I2PRufus (it didn't know how to deal with
2341      additional meta info, such as path.utf-8 or name.utf-8).
2342
23432005-12-09  zzz
2344    * Create different strategies for exploratory tunnels (which are difficult
2345      to create) and client tunnels (which are much easier)
2346    * Gradually increase number of parallel build attempts as tunnel expiry
2347      nears.
2348    * Temporarily shorten attempted build tunnel length if builds using
2349      configured tunnel length are unsuccessful
2350    * React more aggressively to tunnel failure than routine tunnel
2351      replacement
2352    * Make tunnel creation times randomized - there is existing code to
2353      randomize the tunnels but it isn't effective due to the tunnel creation
2354      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2355      to 3 minutes before expiration. The patch fixes this by fixing the
2356      randomization, and by changing the overlap time (with old tunnels) to a
2357      range of 2 to 4 minutes.
2358    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2359      to overlapping calls. Just about anything generated a call which could
2360      build many tunnels all at once, even if tunnel building was already in
2361      process.
2362    * Miscellaneous router console enhancements
2363
23642005-12-08  jrandom
2365    * Minor bugfix in SSU for dealing with corrupt packets
2366    * Added some hooks for load testing
2367
23682005-12-07  jrandom
2369    * Added a first pass at a blog view in Syndie
2370
23712005-12-07  jrandom
2372    * Expand the thread we're viewing to its leaf
2373    * Bugfix on intraday ordering (children are always newer than parents)
2374
23752005-12-05  jrandom
2376    * Added an RDF and XML thread export to Syndie, reachable at
2377      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2378      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2379      displays all threads.
2380
23812005-12-04  TLorD
2382    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2383
23842005-12-04  jrandom
2385    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2386    * Always include ourselves in the favorite authors (since we don't
2387      bookmark ourselves)
2388
23892005-12-03  jrandom
2390    * Use newgroup-like tags by default in Syndie's interface
2391
23922005-12-03  jrandom
2393    * Added support for a 'most recent posts' view that CofE requested, which
2394      includes the ability to filter by age (e.g. posts by your favorite
2395      authors in the last 5 days).
2396
23972005-12-03  jrandom
2398    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2399      displays a a single thread path at a time - from root to leaf - rather
2400      than a depth first traversal.
2401
24022005-12-03  jrandom
2403    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2404      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2405      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2406      running a single user Syndie instance (by default).  It also creates a
2407      default subscription to syndiemedia without any anonymity (using no
2408      proxy).  Upgrades can be done by just replacing the syndie.war with the
2409      one from I2P.
2410
2411* 2005-12-01  0.6.1.7 released
2412
24132005-12-01  jrandom
2414    * Add a new criteria to the tunnel join throttle, backing off people if we
2415      are failing to talk to our peers more than usual.
2416
24172005-11-30  jrandom
2418    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2419      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2420      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2421      separate jdom or rome, as they're inside syndie.war.
2422
24232005-11-30  jrandom
2424    * Don't let the TCP transport alone shitlist a peer, since other
2425      transports may be working.  Also display whether TCP connections are
2426      inbound or outbound on the peers page.
2427    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2428      talk to anyone who didn't expose an IP (even if they had introducers),
2429      among other goofy things.
2430    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2431      rather than sending one a packet at 3s, then another a packet at 6s,
2432      and a third a packet at 9s.
2433    * Fixed Syndie attachments (oops)
2434
24352005-11-29  zzz
2436    * Added a link to orion's jump page on the 'key not found' error page.
2437
24382005-11-29  jrandom
2439    * Further Syndie UI cleanup
2440    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2441      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2442      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2443      will be removed as soon as its integrated into Jetty.  This patch allows
2444      posting content in various character sets.
2445      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2446    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2447      isn't pushed as part of the update yet, as there aren't any critical
2448      bugs.
2449
24502005-11-29  jrandom
2451    * Added back in the OSX jbigi, which was accidentally removed a few revs
2452      back (thanks for the bug report stoerte!)  New installs will get the
2453      full jbigi, or you can pull the jbigi.jar from CVS by going to
2454      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2455      and clicking on the first "download" link, saving that jbigi.jar to
2456      lib/jbigi.jar in your I2P installation directory.  After restarting your
2457      router, it should load up fine.
2458
24592005-11-27  jrandom
2460    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2461      because firefox [and others?] delay rendering until they fetch the css).
2462    * Make sure we fire the shutdown tasks when regenerating a new identity
2463      (thanks picsou!)
2464    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2465    * Don't drop SSU sessions if they're still transmitting data successfully,
2466      even if there are transmission failures
2467    * Adjusted the time summarization to display hours after 119m, not 90m
2468    * Further EepGet cleanup (grr)
2469
2470* 2005-11-26 0.6.1.6 released
2471
24722005-11-26  jrandom
2473    * Update the sorting in Syndie to consider children 'newer' than parents,
2474      even if they have the same message ID (duh)
2475    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2476    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2477    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2478      better)
2479
24802005-11-26  jrandom
2481    * Be more explicit about what messages we will handle through a client
2482      tunnel, and how we will handle them.  This cuts off a set of attacks
2483      that an active adversary could mount, though they're probably nonobvious
2484      and would require at least some sophistication.
2485
24862005-11-26  Raccoon23
2487    * Added support for 'dynamic keys' mode, where the router creates a new
2488      router identity whenever it detects a substantial change in its public
2489      address (read: SSU IP or port).  This only offers minimal additional
2490      protection against trivial attackers, but should provide functional
2491      improvement for people who have periodic IP changes, since their new
2492      router address would not be shitlisted while their old one would be.
2493    * Added further infrastructure for restricted route operation, but its use
2494      is not recommended.
2495
24962005-11-25  jrandom
2497    * Further Syndie UI cleanups
2498    * Logging cleanup
2499    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2500
25012005-11-25  jrandom
2502    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2503    * Cleaned up the syndie threaded display to show the last updated date for
2504      a subthread, and to highlight threads updated in the last two days.
2505
25062005-11-24  jrandom
2507    * Fix to save syndication settings in Syndie (thanks spaetz!)
2508
25092005-11-23  jrandom
2510    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2511    * Streamlined the tunnel batching to schedule batch transmissions more
2512      appropriately.
2513    * Default tunnel pool variance to 2 +0-1 hops
2514
25152005-11-21  jrandom
2516    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2517      within I2PTunnel.
2518    * Increase the maximum SSU retransmission timeout to accomodate slower or
2519      more congested links (though SSU's RTO calculation will usually use a
2520      much lower timeout)
2521    * Moved the streaming lib timed events off the main timer queues and onto
2522      a streaming lib specific set of timer queues.  Streaming lib timed
2523      events are more likely to have lock contention on the I2CP socket while
2524      other timed events in the router are (largely) independent.
2525    * Fixed a case sensitive lookup bug (thanks tino!)
2526    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2527      links (thanks tino!)
2528
25292005-11-19  jrandom
2530    * Implemented a trivial pure java PMTU backoff strategy, switching between
2531      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2532    * Fixed new user registration in Syndie (thanks Complication!)
2533
25342005-11-17  jrandom
2535    * More cautious file handling in Syndie
2536
25372005-11-16  jrandom
2538    * More aggressive I2PTunnel content encoding munging to work around some
2539      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2540      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2541      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2542      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2543      or X-Accept-encoding headers.  Eepsite operators who do not know to
2544      check for X-Accept-encoding will simply use the identity encoding.
2545
2546* 2005-11-15  0.6.1.5 released
2547
25482005-11-14  jrandom
2549    * Migrate to the new Syndie interface
2550
25512005-11-11  jrandom
2552    * Add filtering threads by author to Syndie, populated with authors in the
2553      user's addressbook
2554    * When creating the default user, add
2555      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2556      configured to automatically pull updates.  (what other archives should
2557      be included?)
2558    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2559      the installer/resources/themes/** into ./docs/themes/** on both install
2560      and update.
2561
25622005-11-11  cervantes
2563    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2564      being progressively rolled out to other sections at later dates.
2565      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2566      layout and styling.
2567    * Implemented console themes. Users can create their own themes by
2568      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2569      and activating it using the routerconsole.theme={themename} advanced
2570      config property. Look at the example incomplete "defCon1" theme.
2571      Note: This is very much a work in progress. Folks might want to hold-off
2572      creating their own skins until the markup has solidified.
2573    * Added "routerconsole.javascript.disabled=true" to disable console
2574      client-side scripting and "routerconsole.css.disabled=true" to remove
2575      css styling (only rolled out in the i2ptunnel interface currently)
2576    * Fixed long standing bug with i2ptunnel client and server edit screens
2577      where tunnel count and depth properties would fail to save. Added
2578      backup quantity and variance configuration options.
2579    * Added basic accessibility support (key shortcuts, linear markup, alt and
2580      title information and form labels).
2581    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2582
25832005-11-11  jrandom
2584    * Default Syndie to single user mode, and automatically log into a default
2585      user account (additional accounts can be logged into with the 'switch'
2586      or login pages, and new accounts can be created with the register page).
2587    * Disable the 'automated' column on the Syndie addressbook unless the user
2588      is appropriately authorized (good idea Polecat!)
2589
25902005-11-10  jrandom
2591    * First pass to a new threaded Syndie interface, which isn't enabled by
2592      default, as its not done yet.
2593
25942005-11-06  jrandom
2595    * Include SSU establishment failure in the peer profile as a commError,
2596      as we do for TCP establishment failures.
2597    * Don't throttle the initial transmission of a message because of ongoing
2598      retransmissions to a peer, since the initial transmission of a message
2599      is more valuable than a retransmission (since it has less latency).
2600    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2601
26022005-11-05  jrandom
2603    * Include the most recent ACKs with packets, rather than only sending an
2604      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2605      increasing sequence numbers, while each message ID in SSU is random, so
2606      we don't get the benefit of later ACKs implicitly ACKing earlier
2607      messages.
2608    * Reduced the max retransmission timeout for SSU
2609    * Don't try to send messages queued up for a long time waiting for
2610      establishment.
2611
26122005-11-05  dust
2613    * Fix sucker to delete its temporary files.
2614    * Improve sucker's sml output some.
2615    * Fix Exception in SMLParser for weird sml.
2616
26172005-11-03  zzz
2618    * Added a new error page to the eepproxy to differentiate the full 60
2619      second timeout from the immediate "I don't know this base64" failure.
2620
26212005-11-01  jrandom
2622    * Added a few more css elements (thanks identiguy!)
2623
26242005-10-31  jrandom
2625    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2626    * Removed a potentially infinitely recursive call (oops)
2627
26282005-10-30  dust
2629    * Merge sucker into syndie with a rssimport.jsp page.
2630    * Add getContentType() to EepGet.
2631    * Make chunked transfer work (better) with EepGet.
2632    * Do replaceAll("<","&lt;") for logs.
2633
2634* 2005-10-29  0.6.1.4 released
2635
26362005-10-29  jrandom
2637    * Improved the bandwidth throtting on tunnel participation, especially for
2638      low bandwidth peers.
2639    * Improved failure handling in SSU with proactive reestablishment of
2640      failing idle peers, and rather than shitlisting a peer who failed too
2641      much, drop the SSU session and allow a new attempt (which, if it fails,
2642      will cause a shitlisting)
2643    * Clarify the cause of the shitlist on the profiles page, and include
2644      bandwidth limiter info at the bottom of the peers page.
2645
26462005-10-26  jrandom
2647    * In Syndie, propogate the subject and tags in a reply, and show the parent
2648      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2649    * Streamline some netDb query handling to run outside the jobqueue -
2650      which means they'll run on the particular SSU thread that handles the
2651      message.  This should help out heavily loaded netDb peers.
2652
26532005-10-25  jrandom
2654    * Defer netDb searches for newly referenced peers until we actually want
2655      them
2656    * Ignore netDb references to peers on our shitlist
2657    * Set the timeout for end to end client messages to the max delay after
2658      finding the leaseSet, so we don't have as many expired messages floating
2659      around.
2660    * Add a floor to the streaming lib window size
2661    * When we need to send a streaming lib ACK, try to retransmit one of the
2662      unacked packets instead (with updated ACK/NACK fields, of course).  The
2663      bandwidth cost of an unnecessary retransmission should be minor as
2664      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2665      the probability of a necessary retransmission.
2666    * Adjust the streaming lib cwin algorithm to allow growth after a full
2667      cwin messages if the rtt is trending downwards.  If it is not, use the
2668      existing algorithm.
2669    * Increased the maximum rto size in the streaming lib.
2670    * Load balancing bugfix on end to end messages to distribute across
2671      tunnels more evenly.
2672
26732005-10-22  jrandom
2674    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2675      ./prngseed.rnd (if they exist), and reseeding it with data out of
2676      various crypto operations (unused bits in a DH exchange, intermediary
2677      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2678      The Fortuna implementation under gnu.crypto.prng has been modified to
2679      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2680      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2681      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2682      wrapper around it is, of course, public domain.
2683
26842005-10-20  dust
2685    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2686      always shared. (thx for info Ragnarok)
2687    * Fix crash in Sucker with some bad html.
2688
26892005-10-20  jrandom
2690    * Workaround a bug in GCJ's Calendar implementation
2691    * Propery throw an exception in the streaming lib if we try to write to a
2692      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2693      GregorK!)
2694
26952005-10-19  jrandom
2696    * Ported the snark bittorrent client to I2P such that it is compatible
2697      with i2p-bt and azneti2p.  For usage information, grab an update and run
2698      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2699      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2700    * Don't allow leaseSets expiring too far in the future (thanks postman)
2701
27022005-10-19  jrandom
2703    * Bugfix for the auto-update code to handle different usage patterns
2704    * Decreased the addressbook recheck frequency to once every 12 hours
2705      instead of hourly.
2706    * Handle dynamically changing the HMAC size (again, unless your nym is
2707      toad or jrandom, ignore this ;)
2708    * Cleaned up some synchronization/locking code
2709
27102005-10-17  dust
2711    * Exchange the remaining URL with EepGet in Sucker.
2712    * Allow /TOPIC irc command.
2713
27142005-10-17  jrandom
2715    * Allow an env prop to configure whether we want to use the backwards
2716      compatible (but not standards compliant) HMAC-MD5, or whether we want
2717      to use the not-backwards compatible (but standards compliant) one.  No
2718      one should touch this setting, unless your name is toad or jrandom ;)
2719    * Added some new dummy facades
2720    * Be more aggressive on loading up the router.config before building the
2721      router context
2722    * Added new hooks for apps to deal with previously undefined I2NP message
2723      types without having to modify any code.
2724    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2725
27262005-10-14  jrandom
2727    * More explicit filter for linux/PPC building (thanks anon!)
2728    * Fixed Syndie's Sucker to not explicitly reference something only found
2729      in sun's JVM (thanks cervantes!)
2730    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2731
2732* 2005-10-14  0.6.1.3 released
2733
27342005-10-14  jrandom
2735    * Added a key explaining peers.jsp a bit (thanks tethra!)
2736
27372005-10-13  dust
2738    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2739      then be injected into Syndie with the Syndie CLI.
2740    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2741      RSS/Atom parsing.
2742
27432005-10-13  jrandom
2744    * SSU retransmission choke bugfix (== != !=)
2745    * Include initial transmissions in the retransmission choke, so that
2746      if we are already retransmitting a message, we won't send anything
2747      to that peer other than that message (or ACKs, if necessary)
2748
27492005-10-12  jrandom
2750    * Choke SSU retransmissions to a peer while there is already a
2751      retransmission in flight to them.  This currently lets other initial
2752      transmissions through, since packet loss is often sporadic, but maybe
2753      this should block initial transmissions as well?
2754    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2755    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2756
27572005-10-11  jrandom
2758    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2759      compatible.
2760    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2761      just the blurb before the cut.
2762
27632005-10-11  jrandom
2764    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2765      yet piggybacked).  This is backwards compatible.
2766    * SML parser cleanup in Syndie
2767
27682005-10-10  dust
2769    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2770      outbound IRC commands for anonymity and security purposes, removing all
2771      CTCP messages except ACTION, as well as stripping the hostname from the
2772      USER message (while leaving the nick and 'full name').  The IRC proxy
2773      doesn't use this by default, but you can enable it by creating a new
2774      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2775      to "ircclient" in i2ptunnel.config.
2776
27772005-10-10  jrandom
2778    * I2PTunnel http client config cleanup and stats
2779    * Minor SSU congestion tweaks and stats
2780    * Reduced netDb exploration period
2781
27822005-10-09  jrandom
2783    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2784      java -jar lib/syndie.jar
2785    * Beginnings of the Syndie logging cleanup
2786    * Delete corrupt Syndie posts
2787
27882005-10-09  jrandom
2789    * Now that the streaming lib works reasonably, set the default inactivity
2790      event to send a 0 byte keepalive payload, rather than disconnecting the
2791      stream.  This should cut the irc netsplits and help out with other long
2792      lived streams.  The default timeout is now less than the old timeout as
2793      well, so the keepalive will be sent before earlier builds fire their
2794      fatal timeouts.
2795
27962005-10-08  jrandom
2797    * Use the OS clock for stat timing, since it doesn't jump around (though
2798      still use the NTP'ed clock for display)
2799    * Added new DH stats
2800
2801* 2005-10-07  0.6.1.2 released
2802
28032005-10-07  jrandom
2804    * Include the 1 second bandwidth usage on the console rather than the
2805      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2806      issues.
2807
28082005-10-07  jrandom
2809    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2810      HTTP response quicker, and initialize the streaming lib's cwin more
2811      carefully.
2812    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2813      as a user authorized to use the remote archive funtionality, you can
2814      request remote archives in your address book to be automatically pulled
2815      down by checking the "scheduled?" checkbox.
2816
28172005-10-05  jrandom
2818    * Allow the first few packets in the stream to fill in their IDs during
2819      handshake (thanks cervantes, Complication, et al!)  This should fix at
2820      least some of the intermittent HTTP POST issues.
2821
28222005-10-04  jrandom
2823    * Syndie patch for single user remote archives (thanks nickless_head!)
2824    * Handle an invalid netDb store (thanks Complication!)
2825
28262005-10-04  jrandom
2827    * Further reduction in unnecessary streaming packets.
2828
28292005-10-03  jrandom
2830    * Properly reject unroutable IP addresses *cough*
2831
28322005-10-03  rangarok
2833    * Changed default update delay to twelve hours, and enforced a minimum
2834      delay of one hour.
2835
28362005-10-03  ragnarok
2837    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2838      from selected syndie archives.  To try it out, add
2839      syndie.updateArchives=<comma seperated list of syndie archives> to your
2840      syndie.config.  Archives must be specified as the full url to archive.txt
2841      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2842      for new posts every hour.  This can be modified by setting
2843      syndie.updateDelay=<delay in hours> also in syndie.config.
2844
2845* 2005-10-01  0.6.1.1 released
2846
28472005-09-30  ragnarok
2848    * Implemented conditional get for syndie remote archive imports.
2849
28502005-09-30  jrandom
2851    * Killed three more streaming lib bugs, one of which caused excess packets
2852      to be transmitted (dupacking dupacks), one that was the root of many of
2853      the old hung streams (shrinking highest received), and another that was
2854      releasing data too soon.
2855
28562005-09-30  jrandom
2857    * Only allow autodetection of our IP address if we haven't received an
2858      inbound connection in the last two minutes.
2859    * Increase the default max streaming resends to 8 from 5 (and down from
2860      the earlier 10)
2861
28622005-09-29  ragnarok
2863    * Export petnames from syndie to the router's petname db instead of
2864      userhosts.txt.
2865
28662005-09-29  jrandom
2867    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2868      reseeding - useful on OSes that make it hard to create dot files. 
2869      Thanks Complication (and anon)!
2870    * Fixed the installer version string (thanks Frontier!)
2871    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2872      us invalid IP addresses, verify again that we are not sending invalid IP
2873      addresses, and log an error if it happens. (Thanks Complication, ptm,
2874      and adab!)
2875
2876* 2005-09-29  0.6.1 released
2877
28782005-09-29  jrandom
2879    * Let syndie users modify their metadata.
2880    * Reseed the router on startup if there aren't enough peer references
2881      known locally.  This can be disabled by creating the file .i2pnoreseed
2882      in your home directory, and the existing detection and reseed handling
2883      on the web interface is unchanged.
2884
28852005-09-28  jrandom
2886    * Fix for at least some (all?) of the wrong stream errors in the streaming
2887      lib
2888
28892005-09-27  jrandom
2890    * Properly suggest filenames for attachments in Syndie (thanks all!)
2891    * Fixed the Syndie authorization scheme for single user vs. multiuser
2892
28932005-09-27  jrandom
2894    * I2PTunnel bugfix (thanks Complication!)
2895    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2896      instead of k/cwin)
2897    * Limit the number of inbound SSU sessions being built at once (using
2898      half of the i2np.udp.maxConcurrentEstablish config prop)
2899    * Don't shitlist on a message send failure alone (unless there aren't any
2900      common transports).
2901    * More careful bandwidth bursting
2902
29032005-09-26  jrandom
2904    * Reworded the SSU introductions config section (thanks duck!)
2905    * Force identity content encoding for I2PTunnel httpserver requests
2906      (thanks redzara!)
2907    * Further x-i2p-gzip bugfixes for the end of streams
2908    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2909      I2P's performance at 3KBps is another issue)
2910    * Cleaned up some streaming lib structures
2911
29122005-09-25  jrandom
2913    * Allow reseeding on the console if the netDb knows less than 30 peers,
2914      rather than less than 10 (without internet connectivity, we keep the
2915      last 15 router references)
2916    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2917      more aggressively.
2918    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2919    * Reduced the default maximum number of streaming lib resends of a packet
2920      (10 retransmits is a bit much with a reasonable RTO)
2921
29222005-09-25  Complication
2923    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2924      conflict resolution page if the i2paddresshelper parameter differs from
2925      an existing name to destination mapping.
2926
29272005-09-25  jrandom
2928    * Fix a long standing streaming lib bug (in the inactivity detection code)
2929    * Improved handling of initial streaming lib packet retransmissions to
2930      kill the "lost first packet" bug (where a page shows up with the first
2931      few KB missing)
2932    * Add support for initial window sizes greater than 1 - useful for
2933      eepsites to transmit e.g. 4 packets full of data along with the initial
2934      ACK, thereby cutting down on the rtt latency.  The congestion window
2935      size can and does still shrink down to 1 packet though.
2936    * Adjusted the streaming lib retransmission calculation algorithm to be
2937      more TCP-like.
2938
29392005-09-21  redzara
2940    * Use ISO-8859-1 for the susidns xml
2941
29422005-09-21  susi
2943    * Bugfix in susidns for deleting entries
2944
29452005-09-21  jrandom
2946    * Add support for HTTP POST to EepGet
2947    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2948      put in that URL.
2949
29502005-09-18  jrandom
2951    * Added support for pure 64bit linux with jbigi and the java service
2952      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2953      et al for help testing!
2954    * UI cleanup in Syndie (thanks gloin and bar!)
2955
29562005-09-18  Ragnarok
2957    * Made MetaNamingService the default naming service.
2958
29592005-09-17  Ragnarok
2960    * Implemented a naming service using Syndie's petname db.  It's not enabled
2961      by default, but you can try it out by setting
2962      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2963      router.config.
2964    * Implemented a meta naming service that will first lookup names in the
2965      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2966      naming services are checked and in which order is specified by
2967      i2p.nameservicelist.  This will probably become the default naming service
2968      so please help test it out by setting
2969      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2970     
2971* 2005-09-17  0.6.0.6 released
2972
29732005-09-17  jrandom
2974    * Clean up syndie a bit more and bundle a default introductory post with
2975      both new installs and updates.
2976    * Typo fixes on the console (thanks bar!)
2977
29782005-09-17  jrandom
2979    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2980      steady state rate, plus a new limit on how fast we transfer when
2981      bursting.  This is different from the old "burst as fast as possible
2982      until we're out of tokens" policy, and should help those with congested
2983      networks.  See /config.jsp to manage this rate.
2984    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2985      old posts just didn't show up).
2986    * Log properly in EepPost
2987
29882005-09-17  jrandom
2989    * Added the natively compiled jbigi and patched java service wrapper for
2990      OS X.  Thanks Bill Dorsey for letting me use your machine!
2991    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2992      don't bundle the binutils necessary (and there'd be a naming conflict
2993      if we did).
2994    * Added 'single user' functionality to syndie - if the single user
2995      checkbox on the admin page is checked, all users are allowed to control
2996      the instance and sync up with remote syndie nodes.
2997    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2998      debugged.
2999
30002005-09-16  jrandom
3001    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
3002      you have i2np.udp.allowLocal=true defined - useful for private nets)
3003
30042005-09-16  jrandom
3005    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
3006      (just specify the spoofed host as an empty string), allowing them to
3007      honor x-i2p-gzip encoding.
3008    * Let windows users build the exes too (thanks bar and redzara!)
3009    * Allow I2PTunnel httpserver operators to disable gzip compression on
3010      individual tunnels with the i2ptunnel.gzip=false client option
3011      (good idea susi!)
3012
30132005-09-16  jrandom
3014    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
3015    * Added runplain.sh for *nix/osx users having problems using the java
3016      service wrapper (called from the install dir as: sh runplain.sh)
3017    * Bundle susidns and syndie, with links on the top nav
3018    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
3019      content-encoding (if offered), reducing the payload size before it
3020      reaches the streaming lib.  The existing compression is at the i2cp
3021      level, so we've been packetizing 4KB of uncompressed data and then
3022      compressing those messages, rather than compressing and then packetizing
3023      4KB of compressed data.  This should reduce the number of round trips
3024      to fetch web pages substantially.
3025    * Adjust the startup and timing of the addressbook so that susidns always
3026      has config to work off, and expose a method for susidns to tell it to
3027      reload its config and rerun.
3028
30292005-09-15  jrandom
3030    * Error handling for failed intro packets (thanks red.hand!)
3031    * More carefully verify intro addresses
3032
30332005-09-13  jrandom
3034    * More careful error handling with introductions (thanks dust!)
3035    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
3036    * Hide the shitlist on the summary so it doesn't confuse new users.
3037
30382005-09-12  comwiz
3039    * Migrated the router tests to junit
3040
30412005-09-12  jrandom
3042    * Removed guaranteed delivery mode entirely (so existing i2phex clients
3043      using it can get the benefits of mode=best_effort).  Guaranteed delivery
3044      is offered at the streaming lib level.
3045    * Improve the peer selection code for peer testing, as everyone now
3046      supports tests.
3047    * Give the watchdog its fangs - if it detects obscene job lag or if
3048      clients have been unable to get a leaseSet for more than 5 minutes,
3049      restart the router.  This was disabled a year ago due to spurious
3050      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
3051      cause of the spurious restarts should be gone.
3052
30532005-09-12  jrandom
3054    * Bugfix for skewed store which could kill a UDP thread (causing complete
3055      comm failure and eventual OOM)
3056
30572005-09-12  jrandom
3058    * More aggressively publish updated routerInfo.
3059    * Expose the flag to force SSU introductions on the router console
3060    * Don't give people the option to disable SNTP time sync, at least not
3061      through the router console, because there is no reason to disable it.
3062      No, not even if your OS is "ntp synced", because chances are, its not.
3063
30642005-09-10  jrandom
3065    * Test the router's reachability earlier and more aggressively
3066    * Use the low level bandwidth limiter's rates for the router console, and
3067      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
3068      the logger config, keep track of the 1 second transfer rates as the stat
3069      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
3070      behavior.
3071
30722005-09-09  jrandom
3073    * Added preliminary support for NAT hole punching through SSU introducers
3074    * Honor peer test results from peers that we have an SSU session with if
3075      those sessions are idle for 3 minutes or more.
3076
30772005-09-09  cervantes
3078    * New build due to change in build number :P (thanks ugha!)
3079
30802005-09-07  BarkerJr
3081    * HTML cleanup for the router console (thanks!)
3082
30832005-09-07  jrandom
3084    * Lay the foundation for 'client routers' - the ability for peers to opt
3085      out of participating in tunnels entirely due to firewall/NAT issues. 
3086      Individual routers have control over where those peers are used in
3087      tunnels - in outbound or inbound, exploratory or client tunnels, or
3088      none at all.  The defaults with this build are to simply act as before -
3089      placing everyone as potential participants in any tunnel.
3090    * Another part of the foundation includes the option for netDb
3091      participants to refuse to answer queries regarding peers who are marked
3092      as unreachable, though this too is disabled by default (meaning the
3093      routerInfo is retrievable from the netDb).
3094
30952005-09-05  jrandom
3096    * Expose the HTTP headers to EepGet status listeners
3097    * Handle DSA key failures properly (if the signature is not invertable, it
3098      is obviously invalid)
3099
31002005-09-04  jrandom
3101    * Don't persist peer profiles until we are shutting down, as the
3102      persistence process gobbles RAM and wall time.
3103    * Bugfix to allow you to check/uncheck the sharedClient setting on the
3104      I2PTunnel web interface (thanks BarkerJr!)
3105    * Be more careful when expiring a failed tunnel message fragment so we
3106      don't drop the data while attempting to read it.
3107
3108* 2005-09-02  0.6.0.5 released
3109
31102005-09-02  jrandom
3111    * Don't refuse to send a netDb store if the targetted peer has failed a
3112      bit (the value was an arbitrary amount).
3113    * Logging changes
3114
3115* 2005-09-01  0.6.0.4 released
3116
31172005-09-01  jrandom
3118    * Don't send out a netDb store of a router if it is more than a few hours
3119      old, even if someone asked us for it.
3120
31212005-08-31  jrandom
3122    * Don't publish leaseSets to the netDb if they will never be looked for -
3123      namely, if they are for destinations that only establish outbound
3124      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
3125      modified to tell the router that it doesn't need to publish their
3126      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
3127      to 'true').
3128    * Don't publish the top 10 peer rankings of each router in the netdb, as
3129      it isn't being watched right now.
3130
31312005-08-29  jrandom
3132    * Added the new test Floodfill netDb
3133
31342005-08-27  jrandom
3135    * Minor logging and optimization tweaks in the router and SDK
3136    * Use ISO-8859-1 in the XML files (thanks redzara!)
3137    * The consolePassword config property can now be used to bypass the router
3138      console's nonce checking, allowing CLI restarts
3139
31402005-08-24  jrandom
3141    * Catch errors with corrupt tunnel messages more gracefully (no need to
3142      kill the thread and cause an OOM...)
3143    * Don't skip shitlisted peers for netDb store messages, as they aren't
3144      necessarily shitlisted by other people (though they probably are).
3145    * Adjust the netDb store per-peer timeout based on each particular peer's
3146      profile (timeout = 4x their average netDb store response time)   
3147    * Don't republish leaseSets to *failed* peers - send them to peers who
3148      replied but just didn't know the value.
3149    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3150      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3151      sent entirely within the first streaming packet anyway, so this won't be
3152      a problem.
3153    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3154      prevent any clients from accessing the server if the handlers get
3155      blocked by the streaming lib or other issues.
3156    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3157      Unknown.
3158
31592005-08-23  jrandom
3160    * Removed the concept of "no bandwidth limit" - if none is specified, its
3161      16KBps in/out.
3162    * Include ack packets in the per-peer cwin throttle (they were part of the
3163      bandwidth limit though).
3164    * Tweak the SSU cwin operation to get more accurrate estimates under
3165      congestions.
3166    * SSU improvements to resend more efficiently.
3167    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3168
3169* 2005-08-21  0.6.0.3 released
3170
31712005-08-21  jrandom
3172    * If we already have an established SSU session with the Charlie helping
3173      test us, cancel the test with the status of "unknown".
3174
31752005-08-17  jrandom
3176    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3177      viability before agreeing to Alice's request.  This doesn't work with
3178      older SSU peer test builds, but is backwards compatible (older nodes
3179      won't ask newer nodes to participate in tests, and newer nodes won't
3180      ask older nodes to either).
3181
31822005-08-12  jrandom
3183    * Keep detailed stats on the peer testing, publishing the results in the
3184      netDb.
3185    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3186      status in a while.
3187    * Make sure to avoid shitlisted peers for peer testing.
3188    * When we get an unknown result to a peer test, try again soon afterwards.
3189    * When a peer tells us that our address is different from what we expect,
3190      if we've done a recent peer test with a result of OK, fire off a peer
3191      test to make sure our IP/port is still valid.  If our test is old or the
3192      result was not OK, accept their suggestion, but queue up a peer test for
3193      later.
3194    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3195      we monitor netDb store progress (to clear up the high netDb.storePeers
3196      stat)
3197
31982005-08-10  jrandom
3199    * Deployed the peer testing implementation to be run every few minutes on
3200      each router, as well as any time the user requests a test manually.  The
3201      tests do not reconfigure the ports at the moment, merely determine under
3202      what conditions the local router is reachable.  The status shown in the
3203      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3204      differently for different peers, "ERR-Reject" if the router cannot
3205      receive unsolicited packets or the peer helping test could not find a 
3206      collaborator, "Unknown" if the test has not been run or the test
3207      participants were unreachable, or "OK" if the router can receive
3208      unsolicited connections and those connections use the same IP and port.
3209
3210* 2005-08-08  0.6.0.2 released
3211
32122005-08-08  jrandom
3213    * Add a configurable throttle to the number of concurrent outbound SSU
3214      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3215      may help those with slow connections to get integrated at the start.
3216    * Further fixlets to the streaming lib
3217
32182005-08-07  Complication
3219    * Display the average clock skew for both SSU and TCP connections
3220
32212005-08-07  jrandom
3222    * Fixed the long standing streaming lib bug where we could lose the first
3223      packet on retransmission.
3224    * Avoid an NPE when a message expires on the SSU queue.
3225    * Adjust the streaming lib's window growth factor with an additional
3226      Vegas-esque congestion detection algorithm.
3227    * Removed an unnecessary SSU session drop
3228    * Reduced the MTU (until we get a working PMTU lib)
3229    * Deferr tunnel acceptance until we know how to reach the next hop,
3230      rejecting it if we can't find them in time.
3231    * If our netDb store of our leaseSet fails, give it a few seconds before
3232      republishing.
3233
3234* 2005-08-03  0.6.0.1 released
3235
32362005-08-03  jrandom
3237    * Backed out an inadvertant change to the netDb store redundancy factor.
3238    * Verify tunnel participant caching.
3239    * Logging cleanup
3240
32412005-08-01  duck
3242    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3243
32442005-08-01  duck
3245    * Fix an addressbook NPE when a new hostname from the master addressbook
3246      didn't exist in the router addressbook.
3247    * Fix an addressbook bug which caused subscriptions not to be parsed at
3248      all. (Oops!)
3249
32502005-07-31  jrandom
3251    * Adjust the netDb search and store per peer timeouts to match the average
3252      measured per peer success times, rather than huge fixed values.
3253    * Optimized and reverified the netDb peer selection / retrieval process
3254      within the kbuckets.
3255    * Drop TCP connections that don't have any useful activity in 10 minutes.
3256    * If i2np.udp.fixedPort=true, never change the externally published port,
3257      even if we are autodetecting the IP address.
3258
3259* 2005-07-27  0.6 released
3260
32612005-07-27  jrandom
3262    * Enabled SSU as the default top priority transport, adjusting the
3263      config.jsp page accordingly.
3264    * Add verification fields to the SSU and TCP connection negotiation (not
3265      compatible with previous builds)
3266    * Enable the backwards incompatible tunnel crypto change as documented in
3267      tunnel-alt.html (have each hop encrypt the received IV before using it,
3268      then encrypt it again before sending it on)
3269    * Disable the I2CP encryption, leaving in place the end to end garlic
3270      encryption (another backwards incompatible change)
3271    * Adjust the protocol versions on the TCP and SSU transports so that they
3272      won't talk to older routers.
3273    * Fix up the config stats handling again
3274    * Fix a rare off-by-one in the SSU fragmentation
3275    * Reduce some unnecessary netDb resending by inluding the peers queried
3276      successfully in the store redundancy count.
3277
32782005-07-22  jrandom
3279    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3280      I2PTunnelServer)
3281    * Minor memory churn reduction in I2CP
3282    * Small stats update
3283
32842005-07-21  jrandom
3285    * Fix in the SDK for a bug which would manifest itself as misrouted
3286      streaming packets when a destination has many concurrent streaming
3287      connections (thanks duck!)
3288    * No more "Graceful shutdown in -18140121441141s"
3289
32902005-07-20  jrandom
3291    * Allow the user to specify an external port # for SSU even if the external
3292      host isn't specified (thanks duck!)
3293
32942005-07-19  jrandom
3295    * Further preparation for removing I2CP crypto
3296    * Added some validation to the DH key agreement (thanks $anon)
3297    * Validate tunnel data message expirations (though not really a problem,
3298      since tunnels expire)
3299    * Minor PRNG threading cleanup
3300
33012005-07-15  cervantes
3302    * Added workaround for an odd win32 bug in the stats configuration console
3303      page which meant only the first checkbox selection was saved.
3304
33052005-07-15  Romster
3306    * Added per group selection toggles in the stats configuration console
3307      page.
3308
33092005-07-13  jrandom
3310    * Fixed a recently injected bug in the multitransport bidding which had
3311      allowed an essentially arbitrary choice of transports, rather than the
3312      properly ordered choice.
3313
33142005-07-13  jrandom
3315    * Fixed a long standing bug where we weren't properly comparing session
3316      tags but instead largely depending upon comparing their hashCode,
3317      causing intermittent decryption errors.
3318
33192005-07-12  jrandom
3320    * Add some data duplication to avoid a recently injected concurrency
3321      problem in the session tag manager (thanks redzara and romster).
3322
33232005-07-11  jrandom
3324    * Reduced the growth factor on the slow start and congestion avoidance for
3325      the streaming lib.
3326    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3327      handlers, rather than launching off new threads which then immediately
3328      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3329    * Don't persist session keys / session tags (not worth it, for now)
3330    * Added some detection and handling code for duplicate session tags being
3331      delivered (root cause still not addressed)
3332    * Make the PRNG's buffer size configurable (via the config property
3333      "i2p.prng.totalBufferSizeKB=4096")
3334    * Disable SSU flooding by default (duh)
3335    * Updates to the StreamSink apps for better throttling tests.
3336
33372005-07-05  jrandom
3338    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3339      buffer, rather than the underlying PRNG's (likely small) one, which in
3340      turn reduces the frequency of recalcing.
3341    * More tuning to reduce temporary allocation churn
3342
33432005-07-04  jrandom
3344    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3345      rather than the IV by itself, preventing an attack that would let
3346      colluding internal adversaries tag a message to determine that they are
3347      in the same tunnel.  Thanks dvorak for the catch!
3348    * Drop long inactive profiles on startup and shutdown
3349    * /configstats.jsp: web interface to pick what stats to log
3350    * Deliver more session tags to account for wider window sizes
3351    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3352    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3353    * UrlLauncher: adjust the browser selection order
3354    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3355    * StreamSinkClient: add support for sending an unlimited amount of data
3356    * Migrate the tests out of the default build jars
3357
33582005-06-22  Comwiz
3359    * Migrate the core tests to junit
3360
33612005-05-25  duck
3362    * Fixed PRNG bug (bugzilla #107)
3363
33642005-05-01  jrandom
3365    * Added a substantial optimization to the AES engine by caching the
3366      prepared session keys (duh).
3367
33682005-05-01  jrandom
3369    * Cleaned up the peers page a bit more.
3370
33712005-04-30  jrandom
3372    * Added a small new page to the web console (/peers.jsp) which contains
3373      the peer connection information.  This will be cleaned up a lot more
3374      before 0.6 is out, but its a start.
3375
33762005-04-30  jrandom
3377    * Reduced some SimpleTimer churn
3378
33792005-04-29  jrandom
3380    * Reduce the peer profile stat coallesce overhead by inlining it with the
3381      reorganize.
3382    * Limit each transport to at most one address (any transport that requires
3383      multiple entry points can include those alternatives in the address).
3384
33852005-04-28  jrandom
3386    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3387    * Add back the code to handle bids from multiple transports (though there
3388      is still only one transport enabled by default)
3389    * Adjust the router's queueing of outbound client messages when under
3390      heavy load by running the preparatory job in the client's I2CP handler
3391      thread, thereby blocking additional outbound messages when the router is
3392      hosed.
3393    * No need to validate or persist a netDb entry if we already have it
3394
33952005-04-25  smeghead
3396    * Added button to router console for manual update checks.
3397    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3398      every time the form was submitted even if it hadn't changed.
3399
34002005-04-24  jrandom
3401    * Added a pool of PRNGs using a different synchronization technique,
3402      hopefully sufficient to work around IBM's PRNG bugs until we get our
3403      own Fortuna.
3404    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3405      size bound the not-yet-ready messages to the peer, not the unacked
3406      message count (not sure yet whether this is worthwile).
3407    * Many additions to the messageHistory log.
3408    * Handle out of order tunnel fragment delivery (not an issue on the live
3409      net with TCP, but critical with UDP).
3410
3411* 2005-04-20  0.5.0.7 released
3412
34132005-04-20  jrandom
3414    * In the SDK, we don't actually need to block when we're sending a message
3415      as BestEffort (and these days, we're always sending BestEffort).
3416    * Pass out client messages in fewer (larger) steps.
3417    * Have the InNetMessagePool short circuit dispatch requests.
3418    * Have the message validator take into account expiration to cut down on
3419      false positives at high transfer rates.
3420    * Allow configuration of the probabalistic window size growth rate in the
3421      streaming lib's slow start and congestion avoidance phases, and default
3422      them to a more conservative value (2), rather than the previous value
3423      (1).
3424    * Reduce the ack delay in the streaming lib to 500ms
3425    * Honor choke requests in the streaming lib (only affects those getting
3426      insanely high transfer rates)
3427    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3428      I2PTunnel client page (thanks maestro^!)
3429
34302005-04-17  sirup
3431    * Added the possibility for i2ptunnel client and httpclient instances to
3432      have their own i2p session (and hence, destination and tunnels).  By
3433      default, tunnels are shared, but that can be changed on the web
3434      interface or with the sharedClient config option in i2ptunnel.config.
3435
34362005-04-17  jrandom
3437    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3438      this?  If not, I want to drop it (lots of tiny details with lots of
3439      duplicated semantics).
3440
34412005-04-17  zzz
3442    * Added new user-editable eepproxy error page templates.
3443
34442005-04-17  jrandom
3445    * Revamp the tunnel building throttles, fixing a situation where the
3446      rebuild may not recover, and defaulting it to unthrottled (users with
3447      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3448      advanced router config)
3449
34502005-04-16  jrandom
3451    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3452
34532005-04-12  jrandom
3454    * Make sure we don't get cached updates (thanks smeghead!)
3455    * Clear out the callback for the TestJob after it passes (only affects the
3456      job timing accounting)
3457
34582005-04-08  smeghead
3459    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3460
34612005-04-08  smeghead
3462    * Security improvements to TrustedUpdate: signing and verification of the
3463      version string along with the data payload for signed update files
3464      (consequently the positions of the DSA signature and version string fields
3465      have been swapped in the spec for the update file's header); router will
3466      no longer perform a trusted update if the signed update's version is lower
3467      than or equal to the currently running router's version.
3468    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3469    * Extended TrustedUpdate public API for use by third party applications.
3470
3471* 2005-04-06  0.5.0.6 released
3472
34732005-04-05  jrandom
3474    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3475      client or httpclient tunnel.
3476    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3477
34782005-04-05  jrandom
3479    * After a successfull netDb search for a leaseSet, republish it to all of
3480      the peers we have tried so far who did not give us the key (up to 10),
3481      rather than the old K closest (which may include peers who had given us
3482      the key)
3483    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3484      republish it every 5 minutes, republish it every 3.  In addition, always
3485      republish as soon as the leaseSet changes (duh^2).
3486    * Minor fix for oddball startup race (thanks travis_bickle!)
3487    * Minor AES update to allow in-place decryption.
3488
34892005-04-03  jrandom
3490    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3491      feeding the NewsFetcher)
3492
34932005-04-01  jrandom
3494    * Allow editing I2PTunnel server instances with five digit ports
3495      (thanks nickless_head!)
3496    * More NewsFetcher debugging for reported weirdness
3497
34982005-04-01  jrandom
3499    * Fix to check for missing news file (thanks smeghead!)
3500    * Added destination display CLI:
3501      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3502    * Added destination display to the web interface (thanks pnspns)
3503    * Installed CIA backdoor
3504
3505* 2005-03-29  0.5.0.5 released
3506
35072005-03-29  jrandom
3508    * Decreased the initial RTT estimate to 10s to allow more retries.
3509    * Increased the default netDb store replication factor from 2 to 6 to take
3510      into consideration tunnel failures.
3511    * Address some statistical anonymity attacks against the netDb that could
3512      be mounted by an active internal adversary by only answering lookups for
3513      leaseSets we received through an unsolicited store.
3514    * Don't throttle lookup responses (we throttle enough elsewhere)
3515    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3516      the file (thanks nickster!)
3517    * Updated the I2PTunnel HTML (thanks postman!)
3518    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3519      which, if matched against the router.config "i2ptunnel.passphrase" value,
3520      skips the nonce check.  If the config prop doesn't exist or is blank, no
3521      passphrase is accepted.
3522    * Implemented HMAC-SHA256.
3523    * Enable the tunnel batching with a 500ms delay by default
3524    * Dropped compatability with 0.5.0.3 and earlier releases
3525
35262005-03-26  jrandom
3527    * Added some error handling and fairly safe to cache data to the streaming
3528      lib (good call Tom!)
3529
35302005-03-25  jrandom
3531    * Fixed up building dependencies for the routerconsole on some more
3532      aggressive compilers (thanks polecat!)
3533
3534* 2005-03-24  0.5.0.4 released
3535
35362005-03-23  jrandom
3537    * Added more intelligent version checking in news.xml, in case we have a
3538      version newer than the one specified.
3539
35402005-03-23  jrandom
3541    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3542      cvsweb.cgi doesn't puke on us.
3543
35442005-03-23  Connelly
3545    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3546      stream send data to not be sent if STREAM CLOSE is issued too fast.
3547
35482005-03-23  jrandom
3549    * Implemented the news fetch / update policy code, as configurated on
3550      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3551      doesn't exist yet, on startup).  No action is taken however, though if
3552      the news.xml specifies that a new release is available, an option to
3553      update will be shown on the router console.
3554    * New initialNews.xml delivered with new installs, and moved news.xml out
3555      of the i2pwww module and into the i2p module so that we can bundle it
3556      within each update.
3557
35582005-03-23  jrandom
3559    * New /configupdate.jsp page for controlling the update / notification
3560      process, as well as various minor related updates.  Note that not all
3561      options are exposed yet, and the update detection code isn't in place
3562      in this commit - it currently says there is always an update available.
3563    * New EepGet component for reliable downloading, with a CLI exposed in
3564      java -cp lib/i2p.jar net.i2p.util.EepGet url
3565    * Added a default signing key to the TrustedUpdate component to be used
3566      for verifying updates.  This signing key can be authenticated via
3567      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3568    * New public domain SHA1 implementation for the DSA code so that we can
3569      handle signing streams of arbitrary size without excess memory usage
3570      (thanks P.Verdy!)
3571    * Added some helpers to the TrustedUpdate to work off streams and to offer
3572      a minimal CLI:
3573          TrustedUpdate keygen pubKeyFile privKeyFile
3574          TrustedUpdate sign origFile signedFile privKeyFile
3575          TrustedUpdate verify signedFile
3576
35772005-03-22  smeghead
3578    * New TrustedUpdate component for signing/verifying files with a DSA
3579      signature.
3580
35812005-03-21  jrandom
3582    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3583      in a single message properly (rather than release the buffer into the
3584      cache after processing the first one) (duh!)
3585    * Added the batching preprocessor which will bundle together multiple
3586      small messages inside a single tunnel message by delaying their delivery
3587      up to .5s, or whenever the pending data will fill a full message,
3588      whichever comes first.  This is disabled at the moment, since without the
3589      above bugfix widely deployed, lots and lots of messages would fail.
3590    * Within each tunnel pool, stick with a randomly selected peer for up to
3591      .5s before randomizing and selecting again, instead of randomizing the
3592      pool each time a tunnel is needed. 
3593
3594* 2005-03-18  0.5.0.3 released
3595
35962005-03-18  jrandom
3597    * Minor tweak to the timestamper to help reduce small skews
3598    * Adjust the stats published to include only the relevent ones
3599    * Only show the currently used speed calculation on the profile page
3600    * Allow the full max # resends to be sent, rather than piggybacking the
3601      RESET packet along side the final resend (duh)
3602    * Add irc.postman.i2p to the default list of IRC servers for new installs
3603    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3604      backwards compatability for users running 0.5.0.2.
3605
36062005-03-18  jrandom
3607    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3608    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3609
36102005-03-17  jrandom
3611    * Update the old speed calculator and associated profile data points to
3612      use a non-tiered moving average of the tunnel test time, avoiding the
3613      freshness issues of the old tiered speed stats.
3614    * Explicitly synchronize all of the methods on the PRNG, rather than just
3615      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3616      needs all of them synchronized).
3617    * Properly use the tunnel tests as part of the profile stats.
3618    * Don't flood the jobqueue with sequential persist profile tasks, but
3619      instead, inject a brief scheduling delay between them.
3620    * Reduce the TCP connection establishment timeout to 20s (which is still
3621      absurdly excessive)
3622    * Reduced the max resend delay to 30s so we can get some resends in when
3623      dealing with client apps that hang up early (e.g. wget)
3624    * Added more alternative socketManager factories (good call aum!)
3625
36262005-03-16  jrandom
3627    * Adjust the old speed calculator to include end to end RTT data in its
3628      estimates, and use that as the primary speed calculator again.
3629    * Use the mean of the high capacity speeds to determine the fast
3630      threshold, rather than the median.  Perhaps we should use the mean of
3631      all active non-failing peers?
3632    * Updated the profile page to sort by tier, then alphabetically.
3633    * Added some alternative socketManager factories (good call aum!)
3634
36352005-03-14  jrandom
3636    * New strict speed calculator that goes off the actual number of messages
3637      verifiably sent through the peer by way of tunnels.  Initially, this only
3638      contains the successful message count on inbound tunnels, but may be
3639      augmented later to include verified outbound messages, peers queried in
3640      the netDb, etc.  The speed calculation decays quickly, but should give
3641      a better differential than the previous stat (both values are shown on
3642      the /profiles.jsp page)
3643
36442005-03-11  jrandom
3645    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3646      minimum (increased on resends as before, of course).
3647    * Always prod the clock update listeners, even if just to tell them that
3648      the time hasn't changed much.
3649    * Added support for explicit peer selection for individual tunnel pools,
3650      which will be useful in debugging but not recommended for use by normal
3651      end users.
3652    * More aggressively search for the next hop's routerInfo on tunnel join.
3653    * Give messages received via inbound tunnels that are bound to remote
3654      locations sufficient time (taking into account clock skew).
3655    * Give alternate direct send messages sufficient time (10s min, not 5s)
3656    * Always give the end to end data message the explicit timeout (though the
3657      old default was sufficient before)
3658    * No need to give end to end messages an insane expiration (+2m), as we
3659      are already handling skew on the receiving side.
3660    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3661      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3662    * Properly keep the sendBps stat
3663    * When running the router with router.keepHistory=true, log more data to
3664      messageHistory.txt
3665    * Logging updates
3666    * Minor formatting updates
3667
36682005-03-08  jrandom
3669    * More aggressively adjust the clock
3670
36712005-03-07  jrandom
3672    * Fix the HTTP response header filter to allow multiple headers with the
3673      same name (thanks duck and spotteri!)
3674
3675* 2005-03-06  0.5.0.2 released
3676
36772005-03-06  jrandom
3678    * Allow the I2PTunnel web interface to select streaming lib options for
3679      individual client tunnels, rather than sharing them across all of them,
3680      as we do with the session options.  This way people can (and should) set
3681      the irc proxy to interactive and the eepproxy to bulk.
3682    * Added a startRouter.sh script to new installs which simply calls
3683      "sh i2prouter start".  This should make it clear how people should start
3684      I2P.
3685    * Properly expand the HTTP response header buffer (thanks shendaras!)
3686
36872005-03-04  jrandom
3688    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3689      so that broken (/malicious) webservers can't allow persistent
3690      connections.  All HTTP compliant browsers should now always close the
3691      socket.
3692    * Enabled the GZIPInputStream's cache (they weren't cached before)
3693    * Make sure our first send is always a SYN (duh)
3694    * Workaround for some buggy compilers
3695
36962005-03-03  jrandom
3697    * Loop while starting up the I2PTunnel instances, in case the I2CP
3698      listener isn't up yet (thanks detonate!)
3699    * Implement custom reusable GZIP streams to both reduce memory churn
3700      and prevent the exposure of data in the standard GZIP header (creation
3701      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3702      though has only been tested within the confines of I2P's compression use
3703      (DataHelper.[de]compress).
3704    * Preemptively support the next protocol version, so that after the 0.5.0.2
3705      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3706
37072005-03-02  jrandom
3708    * Fix one substantial OOM cause (session tag manager was only dropping
3709      tags once the critical limit was met, rather than honoring their
3710      expiration) (duh)
3711    * Lots of small memory fixes
3712    * Double the allowable concurrent outstanding tunnel build tasks (20)
3713
37142005-03-01  jrandom
3715    * Really disable the streaming lib packet caching
3716    * Synchronized a message handling point in the SDK (even though its use is
3717      already essentially single threaded, its better to play it safe)
3718    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3719      existing one (duh)
3720    * Throttle the number of concurrent pending tunnel builds across all
3721      pools, in addition to simply throttling the number of new requests per
3722      minute for each pool individually.  This should avoid the cascading
3723      failure when tunnel builds take too long, as no new builds will be
3724      created until the previous ones are handled.
3725    * Factored out and extended the DataHelper's unit tests for dealing with
3726      long and date formatting.
3727    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3728      alone doesn't address the bug where jetty asks for authentication too
3729      much.  (thanks orion!)
3730    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3731      them to the filesystem.
3732
37332005-02-27  jrandom
3734    * Don't rerequest leaseSets if there are already pending requests
3735    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3736      temporary disabled the streaming lib packet caching.
3737    * Reduced the resend RTT penalty to 10s
3738
37392005-02-26  jrandom
3740    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3741
37422005-02-26  jrandom
3743    * Further streaming lib caching improvements
3744    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3745      increase the RTT on resends.
3746    * Lower the default message size to 4KB from 16KB to further reduce the
3747      chance of failed fragmentation.
3748    * Extend tunnel rebuild throttling to include fallback rebuilds
3749    * If there are less than 20 routers known, don't drop the last 20 (to help
3750      avoid dropping all peers under catastrophic failures)
3751    * New stats for end to end messages - "client.leaseSetFoundLocally",
3752      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3753
37542005-02-24  jrandom
3755    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3756      overload under catastrophic failures (thanks Tracker and cervantes!)
3757    * Block the router startup process until we've initialized the clock
3758
37592005-02-24  jrandom
3760    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3761      data in the streaming lib.
3762    * Fixed a streaming lib bug where the connection initiator would fail the
3763      stream if the ACK to their SYN was lost.
3764
37652005-02-23  jrandom
3766    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3767      get stale tunnel pools, don't you think?
3768
3769* 2005-02-23  0.5.0.1 released
3770
37712005-02-22  jrandom
3772    * Reworked the tunnel (re)building process to remove the tokens and
3773      provide cleaner controls on the tunnels built.
3774    * Fixed situations where the timestamper wanted to test more servers than
3775      were provided (thanks Tracker!)
3776    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3777      (thanks Tracker!)
3778
37792005-02-22  jrandom
3780    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3781      try to automatically reconnect on accept()/connect(..)).
3782    * Loop check for expired lease republishing (just in case)
3783
37842005-02-22  jrandom
3785    * Adjusted (and fixed...) the timestamper change detection
3786    * Deal with a rare reordering bug at the beginning of a stream (so we
3787      don't drop it unnecessarily)
3788    * Cleaned up some dropped message handling in the router
3789    * Reduced job queue churn when dealing with a large number of tunnels by
3790      sharing an expiration job
3791    * Keep a separate list of the most recent CRIT messages (shown on the
3792      logs.jsp).  This way they don't get buried among any other messages.
3793    * For clarity, display the tunnel variance config as "Randomization" on
3794      the web console.
3795    * If lease republishing fails (boo! hiss!) try it again
3796    * Actually fix the negative jobLag in the right place (this time)
3797    * Allow reseeding when there are less than 10 known peer references
3798    * Lots of logging updates.
3799
38002005-02-20  jrandom
3801    * Allow the streaming lib resend frequency to drop down to 20s as the
3802      minimum, so that up to 2 retries can get sent on an http request.
3803    * Add further limits to failsafe tunnels.
3804    * Keep exploratory and client tunnel testing and building stats separate.
3805    * Only use the 60s period for throttling tunnel requests due to transient
3806      network overload.
3807    * Rebuild tunnels earlier (1-3m before expiration, by default)
3808    * Cache the next hop's routerInfo for participating tunnels so that the
3809      tunnel participation doesn't depend on the netDb.
3810    * Fixed a long standing bug in the streaming lib where we wouldn't always
3811      unchoke messages when the window size grows.
3812    * Make sure the window size never reaches 0 (duh)
3813
38142005-02-20  jrandom
3815    * Only build failsafe tunnels if we need them
3816    * Properly implement the selectNotFailingPeers so that we get a random
3817      selection of peers, rather than using the strictOrdering (thanks dm!)
3818    * Don't include too many "don't tell me about" peer references in the
3819      lookup message - only send the 10 peer references closest to the target.
3820
38212005-02-19  jrandom
3822    * Only build new extra tunnels on failure if we don't have enough
3823    * Fix a fencepost in the tunnel building so that e.g. a variance of
3824      2 means +/- 2, not +/- 1 (thanks dm!)
3825    * Avoid an NPE on client disconnect
3826    * Never select a shitlisted peer to participate in a tunnel
3827    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3828    * Keep session tags around for a little longer, just in case (grr)
3829    * Cleaned up some closing event issues on the streaming lib
3830    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3831      so that 0.4.* users will need to do a clean install, but we don't need
3832      to shove an additional 2MB in each update to those already on 0.5.
3833    * Imported the susimail css (oops, thanks susi!)
3834
3835* 2005-02-18  0.5 released
3836
38372005-02-17  jrandom
3838    * If the clock is adjusted during a job run, don't act as if the job took
3839      negative time.
3840
38412005-02-17  jrandom
3842    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3843
38442005-02-17  jrandom
3845    * Fixed the braindead tunnel testing logic
3846    * If a large number of tunnels are failing (within the last 5-10 minutes)
3847      and the current tunnel pool's configuration allows it, randomly build a
3848      zero hop tunnel to replace failed tunnels.
3849    * Enable postman's POP3 and SMTP tunnels by default
3850
38512005-02-16  jrandom
3852    * Added some error handling when the number of session tags exceeds the
3853      realistic capacity, dropping a random chunk of received tag sets and
3854      conducting some minor analysis of the remaining ones.  This is a part
3855      of a pretty serious error condition, and logs as CRIT (if/when people
3856      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3857      puts in the wrapper.log or /logs.jsp)
3858    * Update the addressbook to only write to the published hosts location
3859      if the addressbook's config contains "should_publish=true" (by default,
3860      it contains "should_publish=false")
3861
38622005-02-16  jrandom
3863    * (Merged the 0.5-pre branch back into CVS HEAD)
3864    * Replaced the old tunnel routing crypto with the one specified in
3865      router/doc/tunnel-alt.html, including updates to the web console to view
3866      and tweak it. 
3867    * Provide the means for routers to reject tunnel requests with a wider
3868      range of responses:
3869        probabalistic rejection, due to approaching overload
3870        transient rejection, due to temporary overload
3871        bandwidth rejection, due to persistent bandwidth overload
3872        critical rejection, due to general router fault (or imminent shutdown)
3873      The different responses are factored into the profiles accordingly.
3874    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3875      with a series of new properties, relevent to the new tunnel routing code:
3876        inbound.nickname (used on the console)
3877        inbound.quantity (# of tunnels to use in any leaseSets)
3878        inbound.backupQuantity (# of tunnels to keep in the ready)
3879        inbound.length (# of remote peers in the tunnel)
3880        inbound.lengthVariance (if > 0, permute the length by adding a random #
3881                                up to the variance.  if < 0, permute the length
3882                                by adding or subtracting a random # up to the
3883                                variance)
3884        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3885                    in that client's pool)
3886      There are other options, and more will be added later, but the above are
3887      the most relevent ones.
3888    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3889    * Compress all profile data on disk.
3890    * Adjust the reseeding functionality to work even when the JVM's http proxy
3891      is set.
3892    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3893      max window size.
3894    * Reduced the default streaming lib max message size to 16KB (though still
3895      configurable by the user), also doubling the default maximum window
3896      size.
3897    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3898    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3899      the first byte of the SHA256.
3900    * Added a new "netId" flag to let routers drop references to other routers
3901      who we won't be able to talk to.
3902    * Extended the timestamper to get a second (or third) opinion whenever it
3903      wants to actually adjust the clock offset.
3904    * Replaced that kludge of a timestamp I2NP message with a full blown
3905      DateMessage.
3906    * Substantial memory optimizations within the router and the SDK to reduce
3907      GC churn.  Client apps and the streaming libs have not been tuned,
3908      however.
3909    * More bugfixes than you can shake a stick at.
3910
39112005-02-13  jrandom
3912    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3913      only contains 32bit versions, so build your own, placing libjbigi.so in
3914      your install dir if necessary.  (thanks mule!)
3915    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3916      (thanks spaetz!)
3917
39182005-02-10  smeghead
3919    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3920      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3921      Pants are still non-functional at this time so don't mess with it yet
3922      unless you want to potentially mangle your working copy of CVS.
3923
39242005-02-09  duck
3925    * Allow an unneeded newline in the SAM client connection without
3926      disconnecting.
3927
39282005-02-07  jrandom
3929    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3930
39312005-02-06  Sugadude
3932    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3933
39342005-02-03  smeghead
3935    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3936      library from GNU Crypto's CVS HEAD sources.
3937
39382005-01-26  smeghead
3939    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3940      packages and installed to $i2pinstalldir/scripts.
3941    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3942      using gij + libgcj, and --sourcedir to run them from the source tree
3943      instead of the installation directory.
3944    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3945      causing gcj to toss a compilation warning (jrandom++).
3946
39472005-01-26  smeghead
3948    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3949      tests and benchmarks.
3950    * Routerconsole now builds under gcj 3.4.3.
3951    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3952
39532005-01-25  smeghead
3954    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3955      supporting apps (except for the routerconsole which is still being
3956      investigated).
3957
39582005-01-24  smeghead
3959    * C#-ification of sam-sharp: interface greatly simplified using delegates
3960      and events; SamBaseEventHandler provides basic implementation and helper
3961      methods but is now optional.
3962    * NAnt buildfile and README added for sam-sharp.
3963
39642005-01-23  smeghead
3965    * Port the java SAM client library to mono/C# and released into the
3966      public domain.  The 0.1 version of this port is available in CVS as
3967      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3968      library has been removed.
3969
39702005-01-21  Jhor
3971    * Updated jbigi build scripts for OSX.
3972
39732005-01-21  jrandom
3974    * Added support for OSX to the NativeBigInteger code so that it will look
3975      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3976      is not bundled with the shipped jbigi.jar yet though.
3977
39782005-01-18  jrandom
3979    * Increased the max # session tags maintained and decreased slightly the
3980      period over which they are gathered.
3981
39822005-01-17  jrandom
3983    * Added meaningful support for adjusting the preferred message size in the
3984      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3985      whatever).  The other side will mimic a reduction (but never an increase).
3986    * Always make sure to use distinct ConnectionOption objects for each
3987      connection (duh)
3988    * Reduced the default ACK delay to 500ms on in the streaming lib
3989    * Only shrink the streaming window once per window
3990    * Don't bundle a new jetty.xml with updates
3991    * Catch another local routerInfo corruption issue on startup.
3992
39932005-01-15  cervantes
3994    * Added support to the eepproxy for URLs such as
3995      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3996      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3997
39982005-01-15  jrandom
3999    * Caught a series of (previously unhandled) errors caused by requeueing
4000      messages that had timed out on the TCP transport (thanks mae^!)
4001    * Reduce the barrier to dropping session tags on streaming lib resends -
4002      every fourth send should drop the tags, forcing ElGamal encryption.  This
4003      will help speed up the recovery after a disconnect, rather than the drop
4004      every fifth send.
4005
4006* 2005-01-06  0.4.2.6 released
4007
40082005-01-06  jrandom
4009    * Added a startup message to the addressbook, printing its version number
4010      to stdout (which is sent to wrapper.config) when it loads.
4011    * Updated the addressbook to reread the config file periodically
4012    * Added orion.i2p to the list of eepsites on the default homepage
4013
40142005-01-05  jrandom
4015    * Handle unexpected network read errors more carefully (thanks parg!)
4016    * Added more methods to partially compare (DataHelper) and display
4017      arrays (Base64.encode).
4018    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
4019    * Be more generous on the throttle when just starting up the router
4020    * Fix a missing scheduled event in the streaming lib (caused after reset)
4021    * Add a new DisconnectListener on the I2PSocketManager to allow
4022      notification of session destruction.
4023    * Make sure our own router identity is valid, and if it isn't, build a new
4024      one and restart the router.  Alternately, you can run the Router with
4025      the single command line argument "rebuild" and it will do the same.
4026
40272004-12-31  ragnarok
4028    * Integrated latest addressbook changes (2.0.3) which include support for
4029      deploying as a .war file with no existing addressbook configuration.
4030    * Updated main build process to bundle the addressbook.war in the
4031      i2pinstall.jar and i2pupdate.zip.
4032
40332004-12-31  jrandom
4034    * Speling fxi (thanks digum!)
4035    * Bugfix for the I2PTunnel web interface so that it now properly launches
4036      newly added tunnels that are defined to be run on startup (thanks ugha!)
4037
40382004-12-30  jrandom
4039    * Revised the I2PTunnel client and httpclient connection establishment
4040      throttles.  There is now a pool of threads that build the I2PSocket
4041      connections with a default size of 5, configurable via the I2PTunnel
4042      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
4043      not throttle the number of concurrent builders, but will launch a thread
4044      per socket during establishment).  In addition, sockets accepted but
4045      not yet allocated to one of the connection builders will be destroyed
4046      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
4047      0, it will wait indefinitely).
4048
40492004-12-29  jrandom
4050    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
4051      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
4052    * Don't treat connection inactivity closure as a connection error.
4053
40542004-12-29  jrandom
4055    * Add in a new keepalive event on each TCP connection, proactively sending
4056      a (tiny) time message every minute or two, as well as killing the
4057      connection if no message has been fully sent within 5 minutes or so. 
4058      This should help deal with hung connections from IP address changes.
4059
40602004-12-28  jrandom
4061    * Cleaned up the resending and choking algorithm in the streaming lib.
4062    * Removed the read timeout override for I2PTunnel's httpclient, allowing
4063      it to use the default for the streaming lib.
4064    * Revised ack triggers in the streaming lib.
4065    * Logging.
4066
4067* 2004-12-21  0.4.2.5 released
4068
40692004-12-21  jrandom
4070    * Track a new stat for expired client leases (client.leaseSetExpired).
4071
40722004-12-21  jrandom
4073    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
4074      and added windows info to the headless docs. (thanks ardvark!)
4075    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
4076      a stream (thanks frosk!)
4077    * Add a pair of new stats for monitoring tunnel participation -
4078      tunnel.participatingBytesProcessed (total # bytes transferred) and
4079      tunnel.participatingBytesProcessedActive (total # bytes transferred for
4080      tunnels whose byte count exceed the 10m average).  This should help
4081      further monitor congestion issues.
4082    * Made the NamingService factory property public (thanks susi!)
4083
40842004-12-20  jrandom
4085    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
4086    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
4087      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
4088      reasoning is gone.
4089
40902004-12-19  jrandom
4091    * Fix for a race on startup wrt the new stats (thanks susi!)
4092
40932004-12-19  jrandom
4094    * Added three new stats - router.activePeers, router.fastPeers, and
4095      router.highCapacityPeers, updated every minute
4096
40972004-12-19  jrandom
4098    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
4099      hostname should be sent to the webserver.  By default, new installs will
4100      have an httpserver pointing at their jetty instance with the spoofed
4101      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
4102
41032004-12-19  scintilla
4104    * Convert native jcpuid code from C++ to C. This should alleviate build
4105      problems experienced by some users.
4106
4107* 2004-12-18  0.4.2.4 released
4108
41092004-12-16  jrandom
4110    * Catch another oddball case for a reset connection in the streaming lib.
4111    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
4112      dumps the current state of that peer's profile.  Instead of the full
4113      base64, you can pass in however many characters you have and it will
4114      return the first match found.
4115
41162004-12-16  jrandom
4117    * Remove the randomized factor in the tunnel rejection by bandwidth -
4118      we now accept the request if we've allocated less than our limit
4119      and reject it if we've allocated more.
4120    * Stick to the standard capacity scale on tunnel rejection, even for
4121      the 10m period.
4122    * Build the time message at the very last possible moment
4123
41242004-12-15  jrandom
4125    * Handle hard disconnects more gracefully within the streaming lib, and
4126      log unmonitored events more aggressively.
4127    * If we drop a peer after connection due to clock skew, log it to the
4128      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
4129      the stat 'tcp.disconnectAfterSkew'.
4130    * Fixed the formatting in the skew display
4131    * Added an ERROR message that is fired once after we run out of
4132      routerInfo files (thanks susi!)
4133    * Set the connect timeout equal to the streaming lib's disconnect timeout
4134      if not already specified (the I2PTunnel httpclient already enforces a
4135      60s connect timeout)
4136    * Fix for another connection startup problem in the streaming lib.
4137    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4138    * Adjust the capacity calculations so that tunnel failures alone in the
4139      last 10m will not trigger a 0 capacity rank.
4140
41412004-12-14  jrandom
4142    * Periodically send a message along all I2NP connections with the router's
4143      current time, allowing the receiving peer to determine that the clock
4144      has skewed too much, and hence, disconnect.  For backwards compatability
4145      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4146      next time we have a backwards compatability break, we can put in a proper
4147      message setup for it.
4148
41492004-12-14  jrandom
4150    * Reenable the probabalistic drop on the TCP queues to deal with good old
4151      fashioned bandwidth limiting.  However, by default the probability is
4152      rigged to reserve 0% of the queue free - meaning we just aggressively
4153      fail messages in the queue if we're transferring too slowly.  That
4154      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4155      (or whatever) and the drop code can be disabled with the parameter
4156      'tcp.dropProbabalistically=false'.
4157    * Still penalize a peer on tunnel failure, but don't immediately drop
4158      their capacity to 0.
4159    * More aggressively ACK duplicates
4160    * Randomize the timestamper period
4161    * Display the clock skew on the connection logs when a peer sends it.
4162    * Allow the timestamper to fix skews of up to 10 minutes
4163    * Logging
4164
41652004-12-13  jrandom
4166    * Added some error checking on the new client send job (thanks duck!)
4167    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4168      proportional to the bytes allocated in existing tunnels vs the bytes
4169      allowed through the bandwidth limiter).
4170    * Enable a new configuration parameter for triggering a tunnel rebuild
4171      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4172      before killing the tunnel (default 0).
4173    * Gather more data that we rank capacity by (now we monitor and balance the
4174      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4175    * Fix a truncation/type conversion problem on the long term capacity
4176      values (we were ignoring the daily stats outright)
4177
41782004-12-11  jrandom
4179    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4180      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4181      on .connect, but is unable to transfer any data in any direction.  We now
4182      detect that condition for the I2PTunnelHTTPClient and throw up the right
4183      error page.
4184    * Logging
4185
41862004-12-11  jrandom
4187    * Use a simpler and less memory intensive job for processing outbound
4188      client messages when the session is in mode=bestEffort.  We can
4189      immediately discard the data as soon as its sent the first time,
4190      rather than wait for an ack, since we will never internally resend.
4191    * Reduce some synchronization to avoid a rare deadlock
4192    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4193      case it within the tunnel controller.
4194    * Script cleanup for building jbigi/jcpuid
4195    * Logging
4196
4197* 2004-12-08  0.4.2.3 released
4198
41992004-12-08  jrandom
4200    * Revised the buffering when reading from the SAM client and writing
4201      to the stream.  Also added a thread (sigh) so we don't block the
4202      SAM client from giving us more messages for abnormally long periods
4203      of time.
4204    * Display the router version in the logs on startup (oft requested)
4205    * Fix a race during the closing of a messageOutputStream
4206
42072004-12-06  jrandom
4208    * Don't do a 'passive flush' while there are already outbound messages
4209      unacked.
4210    * Show the reseed link if up to 10 peers profiles are active (thanks
4211      dburton!)
4212
42132004-12-06  jrandom
4214    * Don't propogate streaming connection failures out to the SAM bridge as
4215      fatal errors.
4216    * Dont barf on repeated I2CP closure.
4217
42182004-12-05  jrandom
4219    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4220      getLocalhost call
4221
42222004-12-05  jrandom
4223    * Default the I2CP listener to localhost only, unless overridden by
4224      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4225    * More SAM fixes for things recently broken (whee)
4226
42272004-12-05  jrandom
4228    * Fix the recently broken SAM bridge (duh)
4229    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4230      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4231      StreamSink and StreamSend apps for transferring files.
4232    * Make the passive flush timer fire more frequently.
4233
42342004-12-05  jrandom
4235    * Fixed some links in the console (thanks ugha!) and the javadoc
4236      (thanks dinoman!)
4237    * Fix the stream's passive flush timer (oh, its supposed to work?)
4238
42392004-12-03  jrandom
4240    * Toss in a small pool of threads (3) to execute the events queued up with
4241      the SimpleTimer, as we do currently see the occational event
4242      notification spiking up to a second or so.
4243    * Implement a SAM client API in java, useful for event based streaming (or
4244      for testing the SAM bridge)
4245    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4246      bridge is being run outside of the router).
4247    * Include the SAM test code in the sam.jar
4248    * Remove an irrelevent warning message from SAM, which was caused by
4249      perfectly normal operation due to a session being closed.
4250    * Removed some unnecessary synchronization in the streaming lib's
4251      PacketQueue
4252    * More quickly clean up the memory used by the streaming lib by
4253      immediately killing each packet's resend job as soon as it is ACKed (or
4254      cancelled), so that there are no longer any valid pointers to the
4255      (potentially 32KB) packet.
4256    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4257    * Drop packets that would expand our inbound window beyond our maximum
4258      buffer size (default 32 messages)
4259    * Always read the ACK/NACK data from the verified packets received, even
4260      if we are going to drop them
4261    * Always adjust the window when there are messages ACKed, though do not
4262      change its size except as before.
4263    * Streamlined some synchronization in the router's I2CP handling
4264    * Streamlined some memory allocation in the SAM bridge
4265    * Default the streaming lib to disconnect on inactivity, rather than send
4266      an empty message.
4267
42682004-12-01  jrandom
4269    * Fix for a race in the streaming lib as caused by some odd SAM activity
4270
4271* 2004-12-01  0.4.2.2 released
4272
42732004-12-01  jrandom
4274    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4275      connections to work (thanks duck!)
4276    * Make sure we override the inactivity timeout too
4277
4278* 2004-12-01  0.4.2.1 released
4279
42802004-12-01  jrandom
4281    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4282      include the forged User-agent header.
4283    * Adjust the default read timeout on the eepproxy to 60s, unless
4284      overridden.
4285    * Minor tweak on stream shutdown.
4286
42872004-11-30  jrandom
4288    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4289    * Build in a simple timeout to flush data queued into the I2PSocket but
4290      not yet flushed.
4291    * Don't explicitly flush after each SAM stream write, but leave it up to
4292      the [nonblocking] passive flush.
4293    * Don't whine about 10-99 connection events occurring in a second
4294    * Don't wait for completion of packets that will not be ACKed (duh)
4295    * Adjust the congestion window, even if the packet was resent (duh)
4296    * Make sure to wake up any blocking read()'s when the MessageInputStream
4297      is close()ed (duh)
4298    * Never wait more than the disconnect timeout for a write to complete
4299
43002004-11-29  jrandom
4301    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4302
43032004-11-29  jrandom
4304    * Reduced contention for local client delivery
4305    * Drop the new code that munges the wrapper.config.  Instead, updates that
4306      need to change it will include their own wrapper.config in the
4307      i2pupdate.zip, overwriting the existing file.  If the file
4308      "wrapper.config.updated" is included, it is deleted at first opportunity
4309      and the router shut down, displaying a notice that the router must be
4310      started again cleanly to allow the changes to the wrapper.config to take
4311      effect.
4312    * Properly stop accept()ing I2PSocket connections if we close down the
4313      session (duh).
4314    * Make sure we cancel any outstanding Packets in flight when a connection
4315      is terminated (thanks susi!)
4316    * Split up the I2PTunnel closing a little further.
4317
43182004-11-28  jrandom
4319    * Accept IP address detection changes with a 2-out-of-3 minimum.
4320    * As long as the router is up, keep retrying to bind the I2CP listener.
4321    * Decrease the java service wrapper ping frequency to once every 10
4322      minutes, rather than once every 5 seconds.
4323
43242004-11-27  jrandom
4325    * Some cleanup and bugfixes for the IP address detection code where we
4326      only consider connections that have actually sent and received messages
4327      recently as active, rather than the mere presence of a TCP socket as
4328      activity.
4329
43302004-11-27  jrandom
4331    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4332      lib can do that (without an additional per-connection thread).
4333    * Close the I2PTunnel forwarder threads more aggressively
4334
43352004-11-27  jrandom
4336    * Fix for a fast loop caused by a race in the new streaming library (thanks
4337      DrWoo, frontier, pwk_, and thetower!)
4338    * Minor updates to the SimpleTimer and Connection to help track down a
4339      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4340      many events/tasks fire in a second)
4341    * Minor fixes for races on client disconnects (causing NPEs)
4342
4343* 2004-11-26  0.4.2 released
4344
43452004-11-26  jrandom
4346    * Enable the new streaming lib as the default.  That means, for any
4347      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4348
43492004-11-25  jrandom
4350    * Revised the installer to include start menu and desktop shortcuts for
4351      windows platforms, including pretty icons (thanks DrWoo!)
4352    * Allow clients specified in clients.config to have an explicit startup
4353      delay.
4354    * Update the default install to launch a browser pointing at the console
4355      whenever I2P starts up, rather than only the first time it starts up
4356      (configurable on /configservice.jsp, or in clients.config)
4357    * Bugfix to the clock skew checking code to monitor the delta between
4358      offsets, not the offset itself (duh)
4359    * Router console html update
4360    * New (and uuuuugly) code to verify that the wrapper.config contains
4361      the necessary classpath entries on update.  If it has to update the
4362      wrapper.config, it will stop the JVM and service completely, since the
4363      java service wrapper doesn't reread the wrapper.config on JVM restart -
4364      requiring the user to manually restart the service after an update.
4365    * Increase the TCP connection timeout to 30s (which is obscenely long)
4366
43672004-11-22  jrandom
4368    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4369    * New stat to keep track of slow jobs (ones that take more than a second
4370      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4371
43722004-11-21  jrandom
4373    * Update the I2PTunnel web interface to include an option for the new
4374      streaming lib (which is ignored until the 0.4.2 release).
4375    * Revised the I2PTunnel web interface to keep the I2CP options of client
4376      and httpclient tunnels in sync, as they all share the same I2CP session.
4377
43782004-11-21  jrandom
4379    * Only allow small clock skews after the first 10 minutes of operation
4380      (to prevent later network lag bouncing us way off course - yes, we
4381      really need an NTP impl to balance out the network burps...)
4382    * Revamp the I2PTunnel web interface startup process so that everything
4383      is shown immediately, so that different pieces hanging don't hang
4384      the rest, and other minor bugfixes.
4385    * Take note of SAM startup error (in case you're already running a SAM
4386      bridge...)
4387    * Increase the bandwidth limiter burst values available to 10-60s (or
4388      whatever is placed in /configadvanced.jsp, of course)
4389
43902004-11-21  jrandom
4391    * Allow end of line comments in the hosts.txt and other config files,
4392      using '#' to begin the comments (thanks susi!)
4393    * Add support to I2PTunnel's 'client' feature for picking between multiple
4394      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4395    * Add a quick link on the left hand nav to reseed if there aren't enough
4396      known peers, as well as link to the config page if there are no active
4397      peers.  Revised config page accordingly.
4398
43992004-11-21  jrandom
4400    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4401      rather that every 15 minutes, and increase the warning period in which
4402      we refresh tags from 30s to 2 minutes.
4403    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4404      to close the I2PSocket (leaving it to timeout).
4405
44062004-11-19  jrandom
4407    * Off-by-one fix to the tunnel pool management code, along side some
4408      explicit initialization.  This can affect clients whose lengths are
4409      shorter than the router's default (thanks duck!)
4410
44112004-11-17  jrandom
4412    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4413      Ragnarok!)
4414
44152004-11-17  jrandom
4416    * Minor logging update.
4417
44182004-11-16  jrandom
4419    * Clean up the propogation of i2psocket options so that various streaming
4420      libs can honor them more precisely
4421
44222004-11-16  jrandom
4423    * Minor logging update
4424
44252004-11-14  jrandom
4426    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4427    * Fix a leak injected into the SimpleTimer
4428    * Fix a race condition in the tunnel message handling
4429
44302004-11-13  jrandom
4431    * Added throttles on how many I2PTunnel client connections we open at once
4432    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4433      the streaming library used should take care of any buffering.
4434    * Added a cache for some objects used in I2PTunnel, especially useful when
4435      there are many short lived connections.
4436    * Trimmed the SimpleTimer's processing a bit
4437
44382004-11-10  jrandom
4439    * Allow loading the (mini)streaming connection options from the
4440      environment.
4441    * More defensive programming in the DSA implementation.
4442
44432004-11-08  jrandom
4444    * Remove spurious flush calls from I2PTunnel, and work with the
4445      I2PSocket's output stream directly (as the various implementations
4446      do their own buffering).
4447    * Another pass at a long standing JobQueue bug - dramatically simplify
4448      the job management synchronization since we dont need to deal with
4449      high contention (unlike last year when we had dozens of queue runners
4450      going at once).
4451    * Logging
4452
44532004-11-08  jrandom
4454    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4455
4456* 2004-11-06  0.4.1.4 released
4457
44582004-11-06  jrandom
4459    * Expose a drop down on the /configclients.jsp to enter the outbound
4460      tunnel depth.
4461    * Improved *hosts.txt loading
4462    * Explicitly override the JVM's timezone settings to use GMT so that
4463      any client applications which use timezones won't leak sensitive
4464      data (thanks gott!)
4465    * Bundle sam.jar in the update (thanks duck!)
4466
44672004-11-06  jrandom
4468    * Fix for a long standing synchronization bug in the SDK that in rare
4469      instances can add a few seconds of lag.
4470
44712004-11-05  jrandom
4472    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4473      parameters, verify proper operation after multiple session lifetimes,
4474      as well as some synchronization problems.
4475    * New properties method on the DataHelper class.
4476    * Address a race on fast disconnecting clients
4477
44782004-11-02  jrandom
4479    * Fix for a long standing synchronization bug in the JobQueue (and added
4480      some kooky flags to make sure it stays dead)
4481    * Update the ministreaming lib to force mode=guaranteed if the default
4482      lib is used, and mode=best_effort for all other libs.
4483
44842004-11-02  jrandom
4485    * Fixed up the configuration overrides for the streaming socket lib
4486      integration so that it properly honors env settings.
4487    * More memory usage streamlining (last major revamp for now, i promise)
4488
44892004-11-01  jrandom
4490    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4491    * Honor message expirations for some tunnel jobs that were prematurely
4492      expired.
4493    * Streamline memory usage with temporary object caches and more efficient
4494      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4495      message handling.
4496    * Fix some situations where we forward messages too eagerly.  For a
4497      request at the tunnel endpoint, if the tunnel is inbound and the target
4498      is remote, honor the message by tunnel routing the data rather than
4499      sending it directly to the requested location.
4500
45012004-10-30  jrandom
4502    * Cache the temporary objects used in the AES encryption/decryption
4503      process so that AES doesn't require any memory allocation to process
4504      data.
4505    * Dramatically reduce memory usage within various crypto implementations
4506      by avoiding unnecessary (though simplifying) buffers.
4507    * If we specify some tags to be sent in an I2CP message explicitly, use
4508      only those, not those plus a new set (otherwise we aren't sure on ACK
4509      which set was delivered)
4510    * Allow configuration for the partial send timeout (how long before
4511      resending a message down a different tunnel in a lease).  This can be
4512      updated with the "router.clientPartialSendTimeout" router config prop.
4513    * Logging
4514
45152004-10-29  jrandom
4516    * Strip the Referer, Via, and From headers completely, rather than
4517      inserting a bogus value ("i2p").  This should help with the use of
4518      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4519
45202004-10-27  jrandom
4521    * Fix a strange race condition on i2cp client disconnect.
4522    * win98 startup fixes (thanks tester-1 and ardvark!)
4523    * include build scripts for the new streaming lib (which is NOT ready
4524      for use yet, but you can hack around with it)
4525
45262004-10-24  jrandom
4527    * Allow explicit inclusion of session tags in the SDK, enabling the
4528      resending of tags bundled with messages that would not otherwise
4529      be ACKed.
4530    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4531      no DeliveryStatusMessage will be bundled (and as such, client apps using
4532      it will need to do their own session tag ack/nack).
4533    * Handle client errors when notifying them of message availability.
4534    * New StreamSinkSend which sends a file to a destination and disconnects.
4535    * Update the I2PSocketManagerFactory to build the specific
4536      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4537      containing the class name of the I2PSocketManager to instantiate.
4538
45392004-10-23  jrandom
4540    * Minor ministreaming lib refactoring to simplify integration of the full
4541      streaming lib.
4542    * Minor bugfixes to data structure serialization.
4543
4544* 2004-10-18  0.4.1.3 released
4545
45462004-10-18  jrandom
4547    * Allow sending messages with a section of a byte array.
4548    * Reduced stats published.
4549
45502004-10-17  jrandom
4551    * Don't b0rk on whitespace in the router address.
4552
45532004-10-16  jrandom
4554    * More aggressively reduce the capacity of peers if their tunnels are
4555      failing so that we move off them quicker.
4556    * Simplify some data structure serialization for reuse in the streaming
4557      lib, as well as add support for signing and verifying partial byte
4558      arrays.
4559    * Logging updates
4560
45612004-10-16  jrandom
4562    * Increased the default minimum tunnel test time to 5 seconds, since we
4563      still see the occational message processing time spike to 2 seconds.
4564    * Update the SimpleTimer to allow rescheduling a task thats already
4565      queued (useful for the new streaming lib).
4566
45672004-10-15  jrandom
4568    * Replaced old minimum tunnel test timeout of 1s with a configurable
4569      value (router.config property "router.tunnelTestMinimum", with the
4570      default of 2s).
4571
45722004-10-14  jrandom
4573    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4574      peer, so don't use it as a key point of the IsFailing calculator.
4575      We still use it as a key point of the Capacity calculator, however.
4576
45772004-10-14  jrandom
4578    * Allow for a configurable tunnel "growth factor", rather than trying
4579      to achieve a steady state.  This will let us grow gradually when
4580      the router is needed more, rather than blindly accepting the request
4581      or arbitrarily choking it at an averaged value.  Configure this with
4582      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4583    * Adjust the tunnel test timeouts dynamically - rather than the old
4584      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4585      test time (the deviation factor can be adjusted by setting
4586      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4587      find the 'good' tunnels.
4588    * Added some crazy debugging to try and track down an intermittent hang.
4589
45902004-10-13  jrandom
4591    * Fix the probabalistic tunnel reject (we always accepted everything,
4592      since the docs on java.util.Random.nextDouble() are wrong..)
4593    * Fixed a race on startup (thanks Quadn!)
4594
45952004-10-12  jrandom
4596    * Disable the probabalistic drop by default (enable via the router config
4597      property "tcp.dropProbabalistically=true")
4598    * Disable the actual watchdog shutdown by default, but keep track of more
4599      variables and log a lot more when it occurs (enable via the router
4600      config property "watchdog.haltOnHang=true")
4601    * Implement some tunnel participation smoothing by refusing requests
4602      probabalistically as our participating tunnel count exceeds the previous
4603      hour's, or when the 10 minute average tunnel test time exceeds the 60
4604      minute average tunnel test time.  The probabilities in both cases are
4605      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4606      and you had previously only participated in 50, you'll have a 25% chance
4607      of accepting a subsequent request.
4608
4609* 2004-10-10  0.4.1.2 released
4610
46112004-10-10  cervantes
4612    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4613      the request.
4614
46152004-10-09  jrandom
4616    * Added a watchdog timer to do some baseline liveliness checking to help
4617      debug some odd errors.
4618    * Added a pair of summary stats for bandwidth usage, allowing easy export
4619      with the other stats ("bw.sendBps" and "bw.receiveBps")
4620    * Trimmed another memory allocation on message reception.
4621
46222004-10-08  jrandom
4623    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4624      during its operation.
4625
46262004-10-08  jrandom
4627    * Don't kill the establisher threads during a soft restart.
4628    * Attempt to validate the peer's routerInfo earlier during handshaking.
4629    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4630      during its operation.
4631
46322004-10-07  jrandom
4633    * Reimplement the I2NP reading with less temporary memory allocation.
4634      There is still significant GC churn, especially under load, but this
4635      should help.
4636    * Catch some oddball errors in the transport (message timeout while
4637      establishing).
4638
46392004-10-07  jrandom
4640    * Expire queued messages even when the writer is blocked.
4641    * Reimplement most of the I2NP writing with less temporary memory
4642      allocations (I2NP reading still gobbles memory).
4643
46442004-10-06  jrandom
4645    * Implement an active queue management scheme on the TCP transports,
4646      dropping messages probabalistically as the queue fills up.  The
4647      estimated queue capacity is determined by the rate at which messages
4648      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4649      we exceed 1/2 of the estimated capacity, we drop messages throughout
4650      the queue probabalistically with regards to their size.  This is based
4651      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4652      estimated connection capacity.  We may want to consider using a send
4653      rate and queue size measured across all connections, to deal with our
4654      own local bandwidth saturation, but we'll try the per-con metrics first.
4655
46562004-10-06  jrandom
4657    * Enable explicit disabling of the systray entirely for windows machines
4658      with strange configurations: add -Dsystray.disable=true to the java
4659      command line.  (thanks mihi!)
4660
46612004-10-05  jrandom
4662    * Allow peers on the same LAN to communicate with each other safely even
4663      when they cannot talk to each other through the external address.
4664
46652004-10-05  jrandom
4666    * Display how much time is left before the graceful shutdown is complete.
4667    * Debug some improperly failed messages on timeout or disconnection.
4668
46692004-10-05  jrandom
4670    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4671      (thanks mule!)
4672    * Handle some more error conditions regarding abruptly closing sockets
4673      (thanks Jonva!)
4674
46752004-10-04  jrandom
4676    * Update the shitlist to reject a peer for an exponentially increasing
4677      period of time (with an upper bounds of an hour). 
4678    * Various minor stat and debugging fixes
4679
46802004-10-03  jrandom
4681    * Add a new stat logging component to optionally dump the raw stats to
4682      disk as they are generated, rather than rely upon the summarized data.
4683      By default, this is off, but the router property "stat.logFilters" can
4684      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4685      which will be written to the file "stats.log" (or whatever the property
4686      "stat.logFile" is set to).  This can also log profile related stats,
4687      such as "dbResponseTime" or "tunnelTestResponseTime".
4688
46892004-10-02  jrandom
4690    * Assure that we quickly fail messages bound for shitlisted peers.
4691    * Address a race on startup where the first peer contacted could hang the
4692      router (thanks Romster!)
4693    * Only whine about an intermittent inability to query the time server once
4694
46952004-10-02  jrandom
4696    * Command line utility to verify a peer's reachability - simply run
4697      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4698      will print out whether that peer is reachable or not (using a simple
4699      verification handshake).
4700
4701* 2004-10-01  0.4.1.1 released
4702
47032004-10-01  jrandom
4704    * Handle partial reseeds, caused by seeds going away before the download
4705      completes (thanks Sugadude!)
4706
47072004-10-01  jrandom
4708    * Explicitly refuse IPv6 addresses, since only some peers support
4709      them and we want fully reachable peers.
4710
47112004-10-01  jrandom
4712    * Additional error handling for a variety of transport layer errors.
4713
4714* 2004-09-30  0.4.1 released (not backwards compatible)
4715
47162004-09-30  jrandom
4717    * Bundle the configuration necessary to run an eepsite out of the box
4718      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4719      the key listed on the I2PTunnel configuration page, and its up.
4720    * Router console cleanup, and some (off by default) tunnels -
4721      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4722      irc.baffled.i2p (port 7661)
4723
47242004-09-29  jrandom
4725    * Always wipe the Jetty work directory on startup, so that web updates
4726      are reflected immediately (Jetty does not honor the cache across
4727      multiple executions)
4728
47292004-09-27  jrandom
4730    * Limit the number of connection tags saved to 10,000.  This is a huge
4731      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4732      randomly after reaching that size, forcing those dropped peers to use
4733      a full DH negotiation.
4734    * HTML cleanup in the console.
4735
47362004-09-26  jrandom
4737    * Complete rewrite of the TCP transport with IP autodetection and
4738      low CPU overhead reconnections.  More concise connectivity errors
4739      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4740      by listening to the first person who tells you what your IP address is
4741      when you have not defined one yourself and you have no other TCP
4742      connections.
4743    * Update to the I2NP message format to add transparent verification at
4744      the I2NP level (beyond standard TCP verification).
4745    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4746      implementation (rather than verifying with E(H(key)), we now verify with
4747      E(H(iv))).
4748    * The above changes are NOT BACKWARDS COMPATIBLE.
4749    * Removed all of the old unused PHTTP code.
4750    * Refactor various methods and clean up some javadoc.
4751
47522004-09-21  jrandom
4753    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4754      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4755      but values stored in the later take precedence.  Both are queried on
4756      lookup.
4757
47582004-09-16  jrandom
4759    * Refactor the TCP transport to deal with changing identities gracefully,
4760      and to prevent some wasted effort by keeping track of what host+port
4761      combinations we are connected to (rather than just the identities).  Also
4762      catch a few configuration errors earlier.
4763    * Removed no longer relevent methods from the Transport API that were
4764      exposing ideas that probably shouldn't be exposed.
4765    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4766      updates)
4767
47682004-09-13  jrandom
4769    * Update for the SDK reconnection to deal with overflow.
4770    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4771      rounding on lifetime bandwidth used [thanks gott!]).
4772
4773* 2004-09-08  0.4.0.1 released
4774
47752004-09-08  jrandom
4776    * Updated the "Active:" peer count to display the # of connections as well
4777      as the number of recently active router identities.
4778    * Implement some basic updating code - on startup, if there is a file named
4779      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4780      then restart.
4781    * Added an ugly little script to allow launching the router on win9x
4782      machines without a dos box (using javaw to run a .bat file).
4783    * Logging updates.
4784    * Updated VERSION constants to 0.4.0.1
4785
47862004-09-08  hypercubus
4787    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4788      hopefully any other affected *nix systems) now properly discards non-
4789      essential directories after installation.
4790    * Support for Win9x in the installer and postinstall.bat.
4791    * Changed the name of the default installation directory on all platforms
4792      from "I2P" to "i2p" in the installer.
4793    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4794      other configuration files.
4795
47962004-09-07  cervantes:
4797    * Proxy recursion disabled by default (strict)
4798    * Password Authentication for session commands
4799    * Support for http://path?i2paddresshelper=BASE64
4800    * Support for http://i2p/BASE64/path syntax
4801
48022004-09-07  jrandom
4803    * Make sure that peers placed in the 'fast' group are ones we both know
4804      how to reach and have been able to reach recently.  These peers may
4805      still be placed in the 'high capacity' group however (though that group
4806      is only queried if the 'fast' group is too small)
4807    * Include some updates to the ProgileOrganizer's CLI.
4808
48092004-09-07  jrandom
4810    * Disable the timestamper by default for all applications except the router
4811      (enable via -Dtime.disabled=false)
4812    * Simplify the retrieval of the full destination with text based browsers.
4813    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4814
48152004-09-07  jrandom
4816    * Write the native libraries to the current directory when they are loaded
4817      from a resource, and load them from that file on subsequent runs (in
4818      turn, we no longer *cough* delete the running libraries...)
4819    * Added support for a graceful restart.
4820    * Added new pseudo-shutdown hook specific to the router, allowing
4821      applications to request tasks to be run when the router shuts down.  We
4822      use this for integration with the service manager, since otherwise a
4823      graceful shutdown would cause a timeout, followed by a forced hard
4824      shutdown.
4825    * Made the capacity calculator a bit more dynamic by not outright ignoring
4826      the otherwise valid capacity data for a period with a single rejected
4827      tunnel (except for the 10 minute period).  In addition, peers with an
4828      equal capacity are ordered by speed rather than by their hashes.
4829    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4830      issues.
4831    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4832      associated session (unless there are other clients using it), and deal
4833      with a closed session when starting a new I2PTunnel instance.
4834    * Refactoring and logging.
4835
48362004-09-06  jrandom
4837    * Address a race condition in the key management code that would manifest
4838      itself as a corrupt router identity.
4839    * Properly clear old transport addresses from being displayed on the old
4840      console after soft restarts.
4841    * Properly refuse to load the client applications more than once in the
4842      same JVM.
4843    * Added support for a graceful restart (a graceful shutdown followed by a
4844      full JVM restart - useful for restarting client apps).
4845    * More defensive programming, HTML cleanup, logging
4846    * wrapper.config cleanup of duplicate lines
4847
48482004-09-04  jrandom
4849    * Added some basic guards to prevent multiple instances from running.
4850      Specifically, a file "router.ping" in the install directory which is
4851      written to once a minute - if that file exists and has been modified
4852      within the last minute, refuse to start up.  In turn, adjust the
4853      service wrapper to wait a minute before restarting a crashed JVM.
4854    * Create a "work" directory in the I2P install dir which Jetty will
4855      use for all of its temporary files.
4856    * Tell the browser not to cache most of the router console's pages.
4857
48582004-09-04  jrandom
4859    * Update the SDK to automatically reconnect indefinitely with an
4860      exponential delay on retries (capped at 5 minutes).
4861
4862* 2004-09-03  0.4 released
4863
48642004-09-03  jrandom
4865    * Updated default wrapper.config to deal with the hard restart option
4866    * Include the history.txt in the /help.jsp page
4867    * HTML updates (wrapper.log, and no more unix scripts)
4868    * Updated VERSION constants to 0.4
4869
48702004-09-03  hypercubus
4871    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4872    * Temporarily removed install_i2p_service_unix and
4873      uninstall_i2p_service_unix from distribution packages.
4874    * postinstall.bat/postinstall.sh cleans installation directory of all files
4875      not applicable to the host OS.
4876
48772004-09-03  oOo
4878    * Added some filters to the HTTP request, replacing the User-Agent,
4879      Referrer, Via, and From headers, which helps until we have a more
4880      comprehensive filtering system.
4881
48822004-09-03  jrandom
4883    * Disabled the old listener on port 7655.
4884
48852004-09-02  jrandom
4886    * Cleaned up the base build.xml, adding a new target ("updater") which
4887      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4888      existing installs.
4889
48902004-xx-xx  jrandom
4891    * Implemented the new web architecture and router console
4892    * Implemented I2PTunnel web interface, and revamped startup process.
4893    * Revamped peer selection code to address skew.
4894    * Removed all temporary threads from the router and the SDK.
4895    * Bugfix dealing with timeouts and resends.
4896    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4897
48982004-xx-xx  hypercubus
4899    * Implemented the new installation process.
4900    * Integrated systray
4901    * Integrated service manager
4902
49032004-xx-xx  oOo
4904    * Implemented ?i2paddresshelper= hook
4905    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4906
49072004-xx-xx  Nightblade
4908    * libSAM updates.
4909
49102004-xx-xx  cervantes
4911    * Imported i2pProxy.pac proxy script in with the build.
4912
4913* 2004-08-20  0.3.4.3 released
4914* 2004-08-12  0.3.4.2 released
4915* 2004-08-08  0.3.4.1 released
4916* 2004-07-29  0.3.4 released
4917* 2004-07-23  0.3.3 released
4918* 2004-07-16  0.3.2.3 released
4919* 2004-07-14  0.3.2.2 released
4920* 2004-07-11  0.3.2.1 released
4921* 2004-07-07  0.3.2 released
4922* 2004-06-25  0.3.1.5 released
4923* 2004-05-23  0.3.1.4 released
4924* 2004-05-20  0.3.1.3 released
4925* 2004-05-13  0.3.1.2 released
4926* 2004-05-07  0.3.1.1 released
4927* 2004-04-30  0.3.1 released
4928* 2004-04-20  0.3.0.4 released
4929* 2004-04-04  0.3.0.3 released
4930* 2004-03-30  0.3.0.2 released
4931* 2004-03-25  0.3.0.1 released
4932* 2004-03-21  0.3.0 released
4933* 2004-03-10  0.2.5.4 released
4934* 2004-03-04  0.2.5.3 released
4935* 2004-02-28  0.2.5.2 released
4936* 2004-02-27  0.2.5.1 released
4937* 2004-02-25  0.2.5 released
4938* 2004-02-19  0.2.4.2 released
4939* 2004-02-15  0.2.4.1 released
4940* 2004-02-14  0.2.4 released
4941* 2004-01-27  0.2.3.6 released
4942* 2004-01-21  0.2.3.5 released
4943* 2004-01-14  0.2.3.4 released
4944* 2003-12-29  0.2.3.3 released
4945* 2003-12-27  0.2.3.2 released
4946* 2003-12-25  0.2.3.1 released
4947* 2003-12-13  0.2.3 released
4948* 2003-12-01  0.2.2 released
4949* 2003-11-18  0.2.1.1 released
4950* 2003-11-12  0.2.1 released
4951* 2003-11-09  0.2.0.3 released
4952* 2003-11-08  0.2.0.2 released
4953* 2003-11-03  0.2.0.1 released
4954* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.