source: history.txt @ 9a2792e

Last change on this file since 9a2792e was 9a2792e, checked in by zzz <zzz@…>, 13 years ago
  • EepGet? command line: Fix byte counts after a failed resume
  • UpdateHandler?: Cleanup, clarify failure message
  • Property mode set to 100644
File size: 211.4 KB
Line 
12008-09-06 zzz
2    * EepGet command line: Fix byte counts after a failed resume
3    * NTCP: Mark unreachable on outbound connection timeout
4    * Shitlist: Fix partial shitlisting (still unused though)
5    * Summary Bar: Warn if firewalled and floodfill
6    * Throttle: Combine current and last bw measurement,
7      reduce default max tunnels to 2500 (was 3000)
8    * Tunnel BuildHandler: Logging cleanup
9    * UpdateHandler: Cleanup, clarify failure message
10    * DataHelper: Prepare for 999 day uptime :)
11
122008-08-29 zzz
13    * Tunnel BuildExecutor: Debug cleanup
14    * Profiles: Penalize capacity when tunnel build request times out
15    * Shutdown: Call the shutdown hooks before the router shutdown
16      rather than after
17    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
18
192008-08-27 zzz
20    * Floodfill Peer Selector: Prefer already-connected floodfill
21      peer for direct RouterInfo stores, to mimimize floodfill
22      connections
23    * Peer Profiles: Classify connected peers as "active",
24      which will help improve the fast pool
25    * Transport Manager: Add isEstablished(Hash)
26    * NTCP: Reduce max idle time from 20m to 15m
27    * NetDb stats: Post-0.6.3 clean up
28
29* 2008-08-24  0.6.3 released
30
312008-08-24 Complication
32    * Update versions, package release
33
342008-08-20 zzz
35    * Blocklists: Handle blank lines and \r\n in blocklist.txt
36    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
37      default is 500 (very high for now)
38    * Persistent data store: Increase write limit from 300 to 600
39      so floodfill routers don't get backed up
40
412008-08-13 zzz
42    * i2psnark: Fix OOM vulnerability by checking incoming message length
43      (thanks devzero!)
44
452008-08-04 zzz
46    * Floodfill Peer Selector:
47      - Avoid peers whose netdb is old, or have a recent failed store,
48        or are forever-shitlisted
49
502008-07-30 zzz
51    * Blocklists:
52      - New, disabled by default, except for blocking of
53        forever-shitlisted peers. See source for instructions
54        and file format.
55    * Transport - Reject peers from inbound connections:
56      - Check IP against blocklist
57      - Check router hash against forever-shitlist, then block IP
58
592008-07-16 zzz
60    * configpeer.jsp: New
61    * i2psnark: Open completed files read-only the first time
62    * profiles.jsp: Show bonuses, link to configpeer.jsp
63    * PRNG: Move logging from wrapper to router log
64    * SSU:
65        Don't proactively reconnect until 30m idle, so
66        we don't lose introducer tags prematurely
67
682008-07-16 Oldaris
69    * Imports cleanup
70
712008-07-07 zzz
72    * i2psnark:
73      - Repair corrupted files with wrong length rather than die
74      - Register shutdown hook to properly shutdown torrents when
75        the router shuts down, hopefully will reduce corruption
76      - Add Galen tracker
77      - Add a note about how to change directory
78    * HTTP Proxy: Don't show jump links for unknown jump hosts
79    * KeyManager:
80      - Don't write router key backup when leaseSet keys are updated
81      - Synchronize to prevent concurrent writes (thanks Galen!)
82      - Backup keys every 7 days instead of every 5 minutes
83    * LoadTestManager: Don't instantiate, it's disabled
84    * Router console: Flag placeholder pages as noncacheable
85    * Streaming lib:
86      - Change some logging from WARN to INFO
87      - Clean up toString()
88    * SSU:
89      - Try to pick better introducers by checking shitlist,
90        wasUnreachable list, failing list, and idle times
91      - To keep introducer connections up and valid,
92        periodically send a "ping" (a data packet with no data and no acks)
93        to everybody that has been an introducer in the last two hours
94      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
95      - Remove some 60s and 5m stats, leave only the 10m ones
96      - Narrow the range for the retransmit time after an allocation fail
97      - Adjust some logging
98
992008-06-30 zzz
100    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
101    * i2psnark:
102      - Fix NPE caused by race (thanks echelon!)
103      - Add mastertracker, remove de-ebook
104    * NTCP:
105      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
106      - Fix failsafe stats
107    * PersistentDataStore: More leaseSet code cleanup
108    * SimpleTimer: Change congestion message from error to warn
109
1102008-06-24 zzz
111    * FloodfillMonitorJob: Change range from 5-7 to 4-6
112    * NTCP: Remove getIsInbound(), duplicate of isInbound()
113    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
114    * Router console: add placeholder pages for i2psnark, i2ptunnel,
115      susidns, and susimail for use when the .wars are not running
116    * Streaming lib: Increase max window size to 128
117
1182008-06-22 welterde
119    * Optimize I2PDatagramDissector
120
1212008-06-20 zzz
122    * configclients.jsp: Add start button for clients and webapps.
123    * PRNG: Add two stats
124    * Summary bar:
125      - Display Warning for TCP private IP address
126      - Display PRNG stats
127    * OutNetMessage: Change cache logging from WARN to INFO
128
1292008-06-17 zzz
130    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
131    * Summary bar: Display helpful errror message when UDP bind fails
132    * UDP: Don't bid when UDP bind fails
133    * configclients.jsp: Implement saves for clients and webapps.
134
1352008-06-16 zzz
136    * UDP: Prevent 100% CPU when UDP bind fails;
137      change bind fail message from ERROR to CRIT
138    * Refactor LoadClientAppsJob.java, move some functions to new
139      ClientAppConfig.java, to make them easily available to
140      new configclients.jsp
141    * RouterConsoleRunner: Use a new config file, webapps.config,
142      to control which .wars in webapps/ get run. Apps are enabled
143      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
144      Config file is written if it does not exist.
145      Implement methods for use by new configclients.jsp.
146    * configclients.jsp: New. For both clients and webapps.
147      Saves are not yet implemented.
148
1492008-06-10 zzz
150    * Floodfill: Add new FloodfillMonitorJob, which tracks active
151      floodfills, and automatically enables/disables floodfill on
152      Class O routers to maintain 5-7 total active floodfills
153    * NetDb Stats:
154      - Remove several more stats
155      - Don't publish bw stats in first hour of uptime
156      - Publish floodfill stats even if other stats are disabled
157      - Changes not effective until 0.6.2.1 to provide cover.
158    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
159      startup, so peers don't list us as failing.
160    * graphs.jsp: Fix a bug where it tries to display the combined
161      bandwidth graph when it isn't available
162
1632008-06-09 zzz
164    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
165
1662008-06-09 zzz
167    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
168    * News:
169      - Add display of last updated and last checked time
170        on index.jsp and configupdate.jsp
171      - Add a function to get update version (unused for now)
172    * config.jsp: Add another warning
173
1742008-06-07 zzz
175    * NetDb: Tweak some logging on lease problems
176    * Shitlist:
177      - Add shitlistForever() and isShitlistedForever(), unused for now
178      - Sort the HTML output by router hash
179    * netdb.jsp:
180      - Sort the lease HTML output by dest hash, local first
181      - Sort the router HTML output by router hash
182
1832008-06-06 zzz
184    * LeaseSet:
185      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
186        to make later LeaseSet comparisons reliable. This cleans up the code too.
187      - Fix broken old vs. new LeaseSet comparison
188        in ClientConnectionRunner.requestLeaseSet(),
189        so that we only sign and publish a new LeaseSet when it's really new.
190        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
191        and floodfill router load, since locked_buildNewLeaseSet() generates
192        the same LeaseSet as before quite frequently, often just seconds apart.
193
1942008-06-05 zzz
195    * LeaseSet - code cleanup:
196      - Add exception to enforce max # of leases = 6, should be plenty
197      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
198        leases and then immediately remove them again, triggering
199        the new leaseSet size exception
200      - Remove the now unused LeaseSet.removeLease(lease) and
201        LeaseSet.removeLease(index)
202      - Store first and last expiration for efficiency
203    * Peer Profiles - Preparation for using bonuses:
204      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
205      - Persist CapacityBonus rather than ReachabilityBonus
206      - Include SpeedBonus in the Speed calculation
207      - Prevent negative values in Speed and Capacity when using bonuses
208      - Clean up SpeedCalculator.java
209    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
210    * Add some config files for a future small distribution
211    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
212
2132008-06-01 zzz
214    * Client Apps: Add new parameter for clients.config,
215        clientApp.x.startOnLoad=false, to disable loading
216        (for SAM for example). Defaults to true of course.
217    * Logging: Move common WARN output to DEBUG so we can ask users to
218        set the default log level to WARN without massive spewage
219    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
220      not just the Fast tier, since we don't use them for tunnels anyway
221    * SAM: Add some compiler flexibility to two obscure makefiles
222    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
223      (sponge's suggestion)
224    * summary bar:
225      - Hide ident, provide a tooltip and a link
226      - Add a warning if you are firewalled and class O
227
2282008-06-07 Complication
229    * Fix version in news.xml so it could be published
230
231* 2008-06-07  0.6.2 released
232
2332008-06-07 Complication
234    * Write announcement and prepare for release
235
2362008-05-29 zzz
237    * Fix up initialNews.xml
238
2392008-05-27 zzz
240    * Transport:
241      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
242      - UDP: Don't bid when IP address missing, mark unreachable
243
2442008-05-26 zzz
245    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
246    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
247    * build.xml:
248      - Add an updaterSmall target which includes only the essentials
249      - Add an updaterRouter target which includes only i2p.jar and router.jar
250      - Clean up the build file some
251      - Remove empty eepsite/ and subdirs from i2pupdate.zip
252    * configtunnels.jsp: Add warning
253    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
254    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
255
2562008-05-22 welterde
257    * Change jetty download location in build script
258
2592008-05-20 zzz
260    * Reachability:
261      - Call the previously unused profile.tunnelTestFailed()
262        (redefined to include a probability argument)
263        and severely downgrade a peer's capacity upon failures,
264        depending on tunnel length and direction.
265        This will help push unreachable and malicious peers
266        out of the High Capacity tier.
267      - Put recent fail rate on profiles.jsp
268    * ProfileOrganizer: Logging cleanup
269    * eepsite_index.html: Update add-host and jump links
270    * HTTP Proxy: Remove trevorreznik jump server from list
271
2722008-05-20 welterde
273    * implemented PrivateKeyFile
274
2752008-05-18 zzz
276    * Throttle: Reject tunnels for first 20m uptime (was 10m)
277    * TunnelPeerSelectors:
278       - Re-enable strict ordering of peers,
279         based on XOR distance from a random hash
280       - Restrict peers with uptime < 90m from tunnels (was 2h),
281         which is really 60m due to rounding in netDb publishing.
282    * i2psnark:
283       - Limit max pipelined requests from a single peer to 128KB
284         (was unlimited; i2p-bt default is 5 * 64KB)
285       - Increase max uploaders per torrent to 6 (was 4)
286       - Reduce max connections per torrent to 16 (was 24) to increase
287         unchoke time and reduce memory consumption
288       - Strictly enforce max connections per torrent
289       - Choke more gradually when over BW limit
290    * help.jsp: Add a link to the FAQ
291    * peers.jsp: Fix UDP direction indicators
292    * hosts.txt: Add update.postman.i2p
293
2942008-05-12 zzz
295    * Outbound message:
296      - Tweak the cache key for efficiency
297    * Stats:
298      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
299    * Summary bar:
300      - Add messages when dropping tunnel requests due to load
301    * Update Handler:
302      - Add postman to the list
303    * i2psnark:
304      - Randomize the PeerCheckerTask start times to make global limiting
305        work better
306      - Calculate bw limits using 40s rather than 4m averages to make
307        bw limiting work better
308      - Change default bw limit from uplimit/3 to uplimit/2 due to
309        overhead reduction from the leaseset bundling change
310    * libjbigi:
311      - Add documentation on dynamic build option
312      - Add two speed tests to the build script
313      - Clean up the build script, make it easier to build dynamic
314
3152008-05-10 zzz
316    * NetDb: Don't write the my.info file to disk, it isn't used for anything
317    * Stats:
318      - Simplify oldstats.jsp if no events in a stat
319      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
320        (caused by an SSU hack)
321    * Update Handler:
322      - Add option to download and verify only
323      - Add distinct error message if version check fails
324
3252008-05-09 welterde
326    * Add an update URL to the list
327
3282008-05-07 zzz
329    * Reachability:
330      - Restrict peers requiring introducers from inbound tunnels,
331        since it's slow and unreliable... and many of them advertise
332        NTCP, which seems unlikely to work
333      - Provide warning on summary bar if firewalled with inbound NTCP enabled
334    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
335      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
336      at startup (you didn't get any data unless you set the log level anyway)
337    * oldstats.jsp: Don't put 2 decimal places on integer event counts
338    * Remove the Internals link from the menu bar
339    * i2psnark: Extend startup delay from 1 to 3 minutes
340
3412008-05-06 welterde
342    * HTTP Proxy: Add i2jump.i2p jump service
343
3442008-05-05 zzz
345    * NetDb Stats: Cleanup of commented out stats
346    * Outbound message:
347      - Fix a couple of tunnel cache cleaning bugs
348      - Cache based on source+dest pairs rather than just dest
349      - Send the reply leaseSet only when necessary,
350        rather than all the time (big savings in overhead)
351      - Enable persistent lease selection again
352      - Logging tweaks
353    * Reachability:
354      - Restrict <= .32 SSU-only peers from inbound tunnels,
355        since they don't know if they are unreachable
356      - Have SSU bid aggressively when it has less than 3 peers, so
357        we can determine our IP address and do peer testing.
358        Otherwise a router may never determine its IP address or reachability status.
359    * Summary bar:
360      - Add reachability status
361      - Add participating tunnel acceptance status
362    * Throttle: Reject tunnels for first 10m uptime
363    * I2PTunnel: Change default outproxy to false.i2p
364    * profiles.jsp: Add router version
365
366* 2008-04-26  0.6.1.33 released
367
3682008-04-20 zzz
369    * Outbound message/Reachability:
370      - Fix a bug from -19 causing the persistent lease selection
371        removed in -17 to be back again
372      - Use netDb-listed-unreachable instead of detected-unreachable
373        for exclusion of unreachable peers from selected leases,
374        as there are potential anonymity problems with using
375        detected-unreachable
376      - Tweak logging some more
377    * NetDb stats: Remove a couple more including the inefficient stat_identities
378
3792008-04-17 zzz
380    * Reachability:
381      - Track unreachable peers persistently
382        (i.e. separately from shitlist, and not cleared when they contact us)
383      - Exclude detected unreachable peers from inbound tunnels
384      - Exclude detected unreachable peers from selected leases
385      - Exclude detected unreachable floodfill peers from lookups
386      - Show unreachable status on profiles.jsp
387
3882008-04-16 zzz
389    * SSU/Reachability:
390      - Extend shitlist time from 4-8m to 40-60m
391      - Add some shitlist logging
392      - Don't shitlist twice when unreachable on all transports
393      - Exclude netDb-listed unreachable peers from inbound tunnels;
394        this won't help much since there are very few of these now
395      - Remove 10s delay on inbound UDP connections used for the
396        0.6.1.10 transition
397      - Track and display UDP connection direction on peers.jsp
398      - Show shitlist status in-line on profiles.jsp
399
4002008-04-15 zzz
401    * SSU Reachability/PeerTestManager:
402      - Back out strict peer ordering until we fix SSU
403      - Back out persistent lease selection until we fix SSU
404      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
405      - Increase known Charlie time to 10m; 3m wasn't enough
406      - Don't continue retransmitting peer test if we know Charlie
407      - Don't run multiple peer tests at once
408      - Tighten test frequency range to 6.5-19.5m, was 0-26m
409
4102008-04-12 zzz
411    * Addressbook: Disallow '.-' and '-.' in host names
412    * NTCP: Don't drop a connection unless both directions are idle;
413            Fix idle time for outbound connections
414    * Outbound message: Make sure cached lease is in current leaseSet
415    * Stats: Put all NetworkDatabase stats in same group
416    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
417    * i2psnark: Add locking to prevent two I2CP connections
418
4192008-04-07 zzz
420    * i2psnark:
421      - Implement upstream bandwidth limiting
422      - Fix a rare NPE at startup/shutdown
423      - Really increase retries for .torrent fetch
424    * profiles.jsp: Minor cleanup
425    * DataHelper: Only format < 5s as ms
426    * Eepget: Fix percentage output on command line eepget retries
427    * Lower partipating message priority from 400 to 200
428    * NTCP: Add a debug message
429    * Outbound message: Minor cleanup
430
4312008-03-30 zzz
432    * ExploratoryPeerSelector: Try NonFailing even more
433    * HostsTxtNamingService: Add reverse lookup support
434    * Outbound message: Minor cleanup
435    * i2psnark TrackerClient: Minor cleanup
436    * checklist.txt: Minor edit
437    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
438    * i2ptunnel.config: Change CVS client to mtn
439    * netdb.jsp: Show leaseSet destinations using reverse lookup
440    * profiles.jsp: First cut at showing floodfill data
441
4422008-03-27 zzz
443    * Send messages for the same destination to the same inbound
444      lease to reduce out-of-order delivery.
445    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
446      for now, as it prevents speed rating of those peers
447
4482008-03-26 zzz
449    * ReseedHandler: Support multiple urls,
450      add netdb.i2p2.de as a 2nd default
451
4522008-03-25 zzz
453    * i2psnark:
454      - Add support for secondary open trackers
455      - Refactor and simplify the TrackerClient code
456      - Add welterde's tracker to the default list
457      - Don't have eepget retry announces
458      - Slow down tracker contacts if they've failed for a while
459      - Add some debug support showing connections (?p=2)
460    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
461
4622008-03-22 zzz
463    * NewsFetcher: Fix bug causing fetch every 10m
464
4652008-03-22 zzz
466    * Tunnel Testing:
467      - Fix counting so it really takes 4 consecutive failures
468        rather than 4 total to remove a tunnel
469      - Credit or blame goes to the exploratory tunnel as well
470        as the tunnel being tested
471      - Adjust tunnel test timeout based on tunnel length
472    * ExploratoryPeerSelector: Tweak logging
473    * ProfileOrganizer: Adjust integration calculation again
474    * build.xml: Add to help
475    * checklist.txt: Tweak
476    * readme.html: Fix forum links
477    * netDb: Remove tunnel.testFailedTime
478
4792008-03-19 zzz
480    * ExploratoryPeerSelector:
481      - Exclude floodfill peers
482      - Tweak the HighCap vs. NonFailing decision; try NonFailing
483        at least a minimum % of the time
484    * i2psnark: Increase retries for .torrent fetch
485    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
486      containing an IP
487    * readme.html: Reorder some items
488    * Stats: Add some more required stats
489    * Streaming lib: Fix slow start to be exponential growth,
490      fix congestion avoidance to be linear growth.
491      Should speed up local connections a lot, and remote
492      connections a little.
493
4942008-03-14 zzz
495    * Floodfill Search:
496       - Prefer heard-from, unfailing, unshitlisted floodfill peers
497
4982008-03-14 zzz
499    * ProfileOrganizer:
500       - Use more recent stats to calculate integration
501       - Show that fast peers are also high-capacity on profiles.jsp
502    * readme.html: Update Syndie link
503    * TunnelPool: Update comments
504    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
505      get rid of the 60s tunnel stats
506      (effective as of .33 to provide cover)
507
5082008-03-13 zzz
509    * Floodfill Search:
510       - Fix a bug that caused a single FloodfillOnlySearchJob
511         instance to be run multiple times, with unpredictable
512         results
513       - Select ff peers randomly to improve reliability
514       - Add some bulletproofing
515
5162008-03-11 zzz
517    * ProfileOrganizer:
518       - Don't require a peer to be high-capacity to be
519         well-integrated (not used for anything right now,
520         but want to get it right for possible floodfill verification)
521       - Don't fall back to median for high-capacity threshold
522         if the mean is higher than the median, this prevents
523         frequent large high-capacity counts
524       - Fix high-capacity selector that picked one too many
525    * Console: put well-integrated count back in the summary
526
5272008-03-10 zzz
528    * EepGet: Fix byte count for bytesTransferred status listeners
529      (fixes command line status)
530    * UpdateHandler:
531       - Fix byte count display
532       - Display final status on router console
533       - Don't allow multiple update jobs to queue up
534       - Increase max retries
535       - Code cleanup
536       - Don't show 'check for update' button when update in progress
537       - Enhance error messages
538    * NetDb: Comment out published netDb stats disabled for .32
539
5402008-03-08 zzz
541    * TunnelPeerSelectors: Implement strict ordering of peers,
542      based on XOR distance from a random hash
543      separately generated for each tunnel pool
544
5452008-03-07 zzz
546    * Naming: Optimize lookups for a destkey
547    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
548      - Prevent peers with matching IPs from joining same tunnel.
549        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
550        Default is 2 (disallow routers in same /16).
551        Set with router.defaultPool.IPRestriction=x
552      - Comment out unused RebuildPeriod pool setting
553      - Add random key to pool in preparation for XOR peer ordering
554    * SusiMail: Add 'Create Account' link
555    * TunnelDispatcher: Change a common wtf error to a warn
556
5572008-03-05 zzz
558    * Naming: Make HostsTxt the sole default NamingService
559      (was Meta = PetName + HostsTxt)
560    * Naming: Add two new experimental NamingServices, EepGet and Exec,
561      not enabled by default -
562      see source comments in core/java/src/net/i2p/client/naming
563      for configuration instructions
564    * i2psnark: Don't do a naming lookup for Base64 destkeys
565    * i2psnark: Add a StartAll button
566    * Stats: Add code to disable most stats to save memory.
567      Set on configstats.jsp or set stat.full=false to disable the stats.
568      (true by default for now)
569
5702008-03-09 Complication
571    * Give the Jetty build file ability to ask permission
572      before downloading the Jetty archive from the web,
573      and to verify its SHA1 + MD5 hashes. Adjust the main build file
574      in accordance with this change.
575    * Improve the release checklist.
576
577* 2008-03-09  0.6.1.32 released
578
5792008-03-07 zzz
580    * Update news and version numbers
581
5822008-03-01 zzz
583    * Fix netdb.knownLeaseSets count reported by floodfill routers
584      (was broken by -3)
585
5862008-02-27 zzz
587    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
588    * i2psnark: Remove orion and gaytorrents from default tracker list
589    * Remove orion from jump list and from eepsite_index.html
590    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
591    * Capitalize OutboundMessageDistributor job name
592    * TunnelPool: Add a warning if all tunnels are backlogged
593
5942008-02-26 zzz
595    * Reintroduce NTCP backlog pushback, with switch back to
596      previous tunnel when no longer backlogged
597    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
598    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
599
6002008-02-21 zzz
601    * Raise inbound default bandwidth to 32KBps
602    * Fix config.jsp that showed 0KBps share bandwidth by default
603
6042008-02-19 zzz
605    * Addressbook: Disallow '--' in host names except in IDN,
606      add some reserved host names
607    * I2PTunnel: Clarify edit form
608    * NetDb: Remove many stats from netDb, effective as of .32
609    * profiles.jsp: Display capabilities
610    * Tunnels: Enforce max tunnel length of 8, catch an index error
611      http://forum.i2p/viewtopic.php?t=2561
612
6132008-02-16 zzz
614    * Fix race in TunnelDispatcher which caused
615      participating tunnel count to seesaw -
616      should increase network capacity
617    * Leave participating tunnels in 10s batches for efficiency
618    * Update participating tunnel ratestat when leaving a tunnel too,
619      to generate a smoother graph
620    * Fix tunnel.participatingMessageCount stat to include all
621      participating tunnels, not just outbound endpoints
622    * Simplify Expire Tunnel job name
623
6242008-02-13 zzz
625    * PersistentDataStore: Write out 300 records every 10 min
626      rather than 1 every 10 sec;
627      Don't store leasesets to disk or read them in
628    * Combine rates for pools with the same length setting
629      in the new tunnel build algorithm
630    * Clarify a log message in the UpdateHandler
631
6322008-02-13 zzz
633    * Make graphs clickable to get larger graphs
634    * Change SimpleTimer CRIT to a WARN, increase threshold
635    * Checklist update
636
6372008-02-11 welterde
638    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
639
6402008-02-10 zzz
641    * Add new tunnel build algorithm (preliminary)
642    * Change NTCP backlogged message from error to warning
643    * Checklist updates
644
645* 2008-02-10  0.6.1.31 released
646
6472008-02-10 Complication
648    * Update news and version numbers
649
6502008-02-06 zzz
651    * build.xml: Add some apps to javadoc
652    * checklist.txt: Add some things
653    * news.xml: make links relative
654    * runplain.sh: Add some comments
655    * wrapper.config: Add some comments
656
6572008-02-05 Complication
658    * Change the dates too (sorry for such forgetfulness!)
659
6602008-02-04 Complication
661    * Also use the new key for checking, and add it into news.xml
662
6632008-02-04 Complication
664    * Added my release signing key into TrustedUpdate.java
665
6662008-01-31 zzz
667    * NewsFetcher: Change fetch failed from error to warning
668    * installer: Fix URL and "email"
669    * checklist.txt: New release checklist
670
6712008-01-29 zzz
672    * Addressbook: Change default subscription
673    * ConfigUpdateHandler: Change default news URL
674    * initialNews.xml: Update version to .31
675    * news.xml: More updates
676    * hosts.txt: Add i2p-projekt.i2p
677    * readme.html: More URL updates
678    * SusiDNS: Change references to default subscription
679
6802008-01-28 zzz
681    * news.xml: Updates, still preliminary
682    * ReseedHandler: Change default URL
683    * i2ptunnel.config: Change default outproxies
684    * readme.html: Change *.i2p.net URLs
685    * help.jsp: Change *.i2p.net URLs
686    * eepsite_index.html: Change stats.i2p addressbook subscription URL
687    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
688
689* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
690
6912008-01-08 zzz
692    * addressbook: Limit size of subscribed hosts.txt,
693        don't save old etag or last-modified data
694    * EepGet: Add some logging,
695        enforce size limits even when size not in returned header,
696        don't return old etag or last-modified data,
697        don't call transferFailed listener more than once
698    * Sign my update signing key
699    * NewsFetcher: add last-modified support, reduce number of retries
700    * Error pages: add icon and logo,
701        clarify 'destination not found' and 'proxy not found' pages
702
7032008-01-07 zzz
704    * profiles.jsp formatting cleanup
705    * NTCP: Reduce max idle time from 60m to 20m
706    * NTCP: Fix idle time on connections with zero messages,
707      correctly drop these connections
708
7092008-01-03 zzz
710    * addressbook: Do basic validation of hostnames and destkeys
711    * susidns: Add support for the private addressbook,
712      update the text and links somewhat
713
7142008-01-02 zzz
715    * Add stats.i2p to the jump list
716    * Impose 20MB limit on POSTs and catch OOMs in POST
717    * eepsite_index.html: add stats.i2p services
718    * addressbook: log source of new keys; disallow dests > 516 bytes
719    * addressbook: convert hostnames to lower case to prevent duplicates
720    * susidns: generalize references to orion
721
7222007-12-29 zzz
723    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
724    * Allow commas in router.trustedUpdateKeys and router.updateURL again
725    * Change default news host from dev.i2p.net to dev.i2p
726    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
727
7282007-12-28 zzz
729    * Add zzz's update signing key
730
7312007-12-26 Complication
732    * Improve reseed handler (less repetitive code,
733      avoid reporting errors when less than 10% of fetches fail)
734
7352007-12-26 Complication
736    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
737      and unescape them in DataHelper.loadProps() to support
738      saving and loading config properties with line breaks
739    * Change the update URLs textbox into a textarea like keys have,
740      so different URLs go on different lines
741    * Modify TrustedUpdate to provide a method which supplies a key list
742      delimited with CR LF line breaks
743    * Modify DEFAULT_UPDATE_URL to supply a default URL list
744      delimited with CR LF line breaks
745    * Modify selectUpdateURL() to handle URL lists
746      delimited by any kind of line breaks
747    * Start saving trusted update keys
748    * Improve formatting on configupdate.jsp
749
7502007-12-22 zzz
751    * Add support for multiple update URLs
752    * Change default for update to use i2p proxy,
753      add several URLs as defaults
754    * Enable trusted key form on configupdate.jsp
755    * Clarify the 'destination not found' error page
756
7572007-12-16 zzz
758    * i2psnark: remove anonymitytracker from default list
759
7602007-12-10 zzz
761    * Fix NPE in CLI TrustedUpdate keygen
762
7632007-12-02 Complication
764    * Commit SAM v2 patch from mkvore (thank you!)
765    * Minor reformatting to preserve consistent whitespace
766      in old SAM classes (new classes unaltered)
767
7682007-12-01 Complication
769    * Separate the checks "does Jetty .zip file need downloading"
770      and "does Jetty .zip file need extracting" in the Jetty buildfile.
771      First download (unless already done), then extract (unless done).
772
7732007-11-26 zzz
774    * i2psnark: add timeout for receive inactivity
775
7762007-11-24 zzz
777    * i2psnark: increase streaming lib write timeout to 240 sec and change
778      timeout action from "ping" to "disconect", as the fix in .30 to
779      honor options on outbound connections led to hung outbound connections
780      (bitfield never transmitted, connection never dropped)
781
7822007-11-06 jrandom
783    * add i2host.i2p to the jump list
784
7852007-10-11 zzz
786    * IRC Proxy: Fix several possible anonymity holes:
787      - Block CTCP in NOTICE messages
788      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
789      - Check for lower case commands
790    (Thanks sponge!)
791
7922007-10-07  jrandom
793    * back out the NTCP backlog pushback, as it could be used to mount an
794      active anonymity attack.
795
796* 2007-10-07  0.6.1.30 released
797
7982007-10-07  Complication
799    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
800      broke retrying.
801
8022007-09-27  zzz
803    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
804    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
805      fix some of the sorting
806
8072007-09-22  zzz
808    * Send messages for the same destination out the same outbound
809      tunnel to reduce out-of-order delivery.
810
8112007-09-19  zzz
812    * i2psnark: Fix broken multifile torrent Delete;
813        cleanup Storage resources in AddTorrent;
814        don't autostart torrent after Create
815
8162007-09-18  zzz
817    * eepsite_index.html: Add links to trevorreznik address book
818    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
819    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
820    * i2psnark: Don't make outbound connections to already-connected peers
821    * i2psnark: Debug logging cleanup
822
8232007-09-14  zzz
824    * eepget: Increase header timeout to 45s
825    * HTTP proxy: Return a better error message for localhost requests
826    * tunnels: Fix PooledTunnelCreatorConfig memory leak
827
8282007-09-09  zzz
829    * eepget: Add support for Last-Modified and If-Modified-Since
830    * addressbook: Finish incomplete support for Last-Modified
831
8322007-09-08  zzz
833    * eepget: Copy over SocketTimeout.java file from syndie
834
8352007-09-07  jrandom
836    * eepget: Merge timeout support from syndie
837
838* 2007-08-23  0.6.1.29 released
839
8402007-08-12  zzz
841    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
842      tweak the eepsite and troubleshooting sections
843
8442007-08-11  zzz
845    * Add stats for individual tunnel rates (nice when graphed)
846    * i2psnark: Fix outbound tunnel nickname
847
8482007-08-05  Complication
849    * Update the sharing calculator on config.jsp
850      and explain the trade-off even more thoroughly.
851
8522007-08-04  Complication
853    * Lower the threshold between the K and L bandwidth class,
854      so that K is now < 12 KB/s, instead of <= 16 KB/s.
855      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
856      participate in routing, if they keep the default share percentage.
857
8582007-07-16  zzz
859    * i2psnark: Add tooltip info for choked/uninterested
860
8612007-07-16  zzz
862    * Make selection of graphed data configurable via configstats.jsp,
863      remove most of the default graphs to save some memory
864
8652007-07-15  zzz
866    * Add current values to graph legends
867    * Fix up previous Rate fix to check for divide by zero
868
8692007-07-14  Complication
870    * Take the post-download routerInfo size check back out of ReseedHandler,
871      since it wasn't helpful, and a lower limit caused false warnings.
872    * Give EepGet ability to enforce a min/max HTTP response size.
873    * Enforce a maximum response size of 8 MB when ReseedHandler
874      downloads into a ByteArrayOutputStream.
875    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
876      change invocation from RouterConsoleRunner accordingly.
877    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
878      provide status reports to indicate the progress of reseeding.
879    * Enable icon for default eepsite, and the index page
880      of the router console (more later).
881
8822007-07-14  zzz
883    * Clean up graphs.jsp - set K=1024 where appropriate,
884      output image sizes in html, catch ooms, other minor tweaks
885    * Fix current event count truncation which fixes graphs with low
886      60-sec event counts displaying high values
887      (bw.* and router.* graphs for example were 1.5x too high)
888      Affects all "events per period" (non-lifetime) counts.
889
8902007-07-09  zzz
891    * i2psnark: give a better error message for a non-i2p torrent
892
8932007-07-07  zzz
894    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
895      SSU will notify/restart NTCP when the external address changes.
896      Now you can enable inbound TCP without a static IP or dyndns service.
897
8982007-07-04  zzz
899    * Display calculated share bandwidth and remove load testing
900      on config.jsp
901
9022007-07-01  zzz
903    * Replace broken option i2np.udp.alwaysPreferred with
904      i2np.udp.preferred and adjust UDP bids; possible settings are
905      "false" (default), "true", and "always".
906      Default setting results in same behavior as before
907      (NTCP is preferred unless it isn't established and UDP is established).
908      Use to compare NTCP and UDP transports.
909
9102007-06-27  jrandom
911    * fix for a streaming lib bug that could leave a thread waiting
912      indefinitely (thanks Complication!)
913
9142007-06-16  Complication
915    * First pass on EepGet and ReseedHandler improvements,
916      please avoid use on routers which matter!
917    * Give EepGet ability of downloading into an OutputStream,
918      such as the ByteArrayOutputStream of ReseedHandler.
919    * Detect failure to reseed better, report it persistently
920      and more verbosely, provide a link to logs
921      and suggest manual reseed.
922
9232007-05-06  Complication
924    * Fix the build.xml file, so the preppkg build target won't try copying files
925      which became deprecated with the old Syndie (thanks for alerting, itsu!)
926
9272007-03-31  zzz
928    * Add trevorreznik jump server to the http proxy error page
929    * Add anonymity to the trackers supporting details links in i2psnark
930
9312007-03-24  zzz
932    * Remove Syndie from build targets and navbar
933
9342007-03-22  zzz
935    * i2psnark tracker handling tweaks:
936    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
937    -   Add Base URL to tracker list configuration
938    -   Web page links built from tracker list Base URLs
939    -   Only build and sort tracker list once
940    -   Add anonymityWeb tracker to default list
941    -   Add tooltip info for TrackerErrs
942    -   Stop torrent if not registered with tracker
943    -   Mark temp files as delete on exit
944
9452007-03-18  zzz
946    * i2psnark: Cleanup some handling of saved partial pieces
947    * i2psnark: Put bit counting in Bitfield.java for efficiency
948    * i2psnark: Save torrent completion state in i2psnark.config
949
950* 2007-03-17  0.6.1.28 released
951
9522007-03-13  zzz
953    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
954
9552007-03-12  jrandom
956    * dodge a race on startup (thanks zzz!)
957
9582007-03-10  zzz
959    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
960      (RFC 2988) to reduce early RTO values
961
9622007-03-08  zzz
963    * i2psnark changes to improve upload performance:
964    *  Implement total uploader limit (10)
965    *  Don't timeout non-piece messages out
966    *  Change chunk size to 32K (was 64K)
967    *  Change request limit to 64K (was 256K)
968    * i2psnark: Disconnect from seeds when complete
969
9702007-03-07  zzz
971    * Remove dynamic router keys from config.jsp
972
9732007-03-07  zzz
974    * Streaming lib changes to improve upstream performance during congestion:
975    *   Change min window size from 12 to 1
976    *   Change max timeout from 10 to 45 sec
977    *   Change initial timeout from 10 to 15 sec
978    *   Change intial window size for i2psnark from 12 to 1
979    *   Change slow start growth rate for i2psnark from 1/2 to 1
980
9812007-03-04  zzz
982    * Update eepsite_index.html
983
9842007-03-03  zzz
985    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
986    * Add a updaterWithJetty build target
987
9882007-03-03  zzz
989    * Implement priority sending for NTCP
990    * Disable trimForOverload() in tunnel BuildExecutor which
991      was preventing tunnel builds when outbound traffic was high
992      (i.e. most of the time when running i2psnark)
993
9942007-02-28  zzz
995    * i2psnark: File reopen cleanup
996
9972007-02-28  zzz
998    * i2psnark: Add peer details to web page
999
1000* 2007-02-15  0.6.1.27 released
1001
10022007-02-15  jrandom
1003    * Limit the whispering floodfill sends to at most 3 randomly
1004      chosen from the known floodfill peers
1005
10062007-02-14  jrandom
1007    * Don't filter out KICK and H(ide oper status) IRC messages
1008      (thanks Takk and postman!)
1009
10102007-02-13  jrandom
1011    * Tell our peers about who we know in the floodfill netDb every
1012      6 hours or so, mitigating the situation where peers lose track
1013      of floodfill routers.
1014    * Disable the Syndie updater (people should use the new Syndie,
1015      not this one)
1016    * Disable the eepsite tunnel by default
1017
10182007-01-30  zzz
1019    * i2psnark: Don't hold _snarks lock while checking a snark,
1020      so web page is responsive at startup
1021
10222007-01-29  zzz
1023    * i2psnark: Add NickyB tracker
1024
10252007-01-28  zzz
1026    * i2psnark: Don't hold sendQueue lock while flushing output,
1027      to make everything run smoother
1028
10292007-01-27  zzz
1030    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
1031
10322007-01-20  Complication
1033    * Drop overlooked comment
1034
10352007-01-20  Complication
1036    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
1037      instead of System, so setting a reseed URL in advanced configuration has effect.
1038    * Clean out obsolete reseed code from ConfigNetHandler.
1039
10402007-01-20  zzz
1041    * i2psnark: More choking rotation tweaks
1042    * Improve performance by not reading in the whole
1043      piece from disk for each request. A huge memory savings
1044      on 1MB torrents with many peers.
1045
10462007-01-17  zzz
1047    * Add new HTTP Proxy error message for non-http protocols
1048
10492007-01-17  zzz
1050    * Add note on Syndie index.html steering people to new Syndie
1051
10522007-01-16  zzz
1053    * i2psnark: Fix crash when autostart off and
1054      tcrrent started manually
1055
10562007-01-16  zzz
1057    * i2psnark: Fix bug caused by last i2psnark checkin
1058      (ConnectionAcceptor not started)
1059    * Don't start PeerCoordinator, ConnectionAcceptor,
1060      and TrackerClient unless starting torrent
1061
10622007-01-15  jrandom
1063    * small guard against unnecessary streaming lib reset packets
1064      (thanks Complication!)
1065
10662007-01-15  zzz
1067    * i2psnark: Add 'Stop All' link on web page
1068    * Add some links to trackers and forum on web page
1069    * Don't start tunnel if 'Autostart' unchecked
1070    * Fix torrent restart bug by reopening file descriptors
1071
10722007-01-14  zzz
1073    * i2psnark: Improvements for torrents with > 4 leechers:
1074      choke based on upload rate when seeding, and
1075      be smarter and fairer about rotating choked peers.
1076    * Handle two common i2psnark OOM situations rather
1077      than shutting down the whole thing.
1078    * Fix reporting to tracker of remaining bytes for
1079      torrents > 4GB (but ByteMonsoon still has a bug)
1080
10812006-10-29  zzz
1082    * i2psnark: Fix and enable generation of multifile torrents,
1083      print error if no tracker selected at create-torrent,
1084      fix stopping a torrent that hasn't started successfully,
1085      add eBook and GayTorrents trackers to form,
1086      web page formatting tweaks
1087
1088* 2006-10-10  0.6.1.26 released
1089
10902006-10-29  Complication
1091    * Ensure we get NTP samples from more diverse sources
1092      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1093    * Discard median-based peer skew calculator as framed average works,
1094      and adjusting its percentage can make it behave median-like
1095    * Require more data points (from at least 20 peers)
1096      before considering a peer skew measurement reliable
1097
10982006-10-10  jrandom
1099    * Removed the status display from the console, as its more confusing
1100      than informative (though the content is still displayed in the HTML)
1101
11022006-10-08  Complication
1103    * Add a framed average peer clock skew calculator
1104    * Add config property "router.clockOffsetSanityCheck" to determine
1105      if NTP-suggested clock offsets get sanity checked (default "true")
1106    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1107      by more than 5 seconds, or make it more than 20 seconds total
1108    * Decrease log level in getMedianPeerClockSkew()
1109
11102006-09-29  zzz
1111    * i2psnark: Second try at synchronization fix - synch addRequest()
1112      completely rather than just portions of it and requestNextPiece()
1113
11142006-09-27  jrandom
1115    * added HMAC-SHA256
1116    * properly use CRLF with EepPost
1117    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1118    * PBE session key generation (with 1000 rounds of SHA256)
1119    * misc SDK helper functions
1120
11212006-09-26  Complication
1122    * Take back another inadverent logging change in NTCPConnection
1123
11242006-09-26  Complication
1125    * Take back an accidental log level change
1126
11272006-09-26  Complication
1128    * Subclass from Clock a RouterClock which can access router transports,
1129      with the goal of developing it to second-guess NTP results
1130    * Make transports report clock skew in seconds
1131    * Adjust renderStatusHTML() methods accordingly
1132    * Show average for NTCP clock skews too
1133    * Give transports a getClockSkews() method to report clock skews
1134    * Give transport manager a getClockSkews() method to aggregate results
1135    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1136      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1137    * Extra explicitness in NTCP classes to denote unit of time.
1138    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1139
11402006-09-25  zzz
1141    * i2psnark: Paranoid copy before writing pieces,
1142      recheck files on completion, redownload bad pieces
1143    * i2psnark: Don't contact tracker as often when seeding
1144
11452006-09-24  zzz
1146    * i2psnark: Add some synchronization to prevent rare problem
1147      after restoring orphan piece
1148
11492006-09-20  zzz
1150    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1151      rapid choke/unchokes
1152    * i2psnark: Truncate long TrackerErr messages on web page
1153
11542006-09-16  zzz
1155    * i2psnark: Implement retransmission of requests. This
1156      eliminates one cause of complete stalls with a peer.
1157      This problem is common on torrents with a small number of
1158      active peers where there are no choke/unchokes to kickstart things.
1159
11602006-09-13  zzz
1161    * i2psnark: Fix restoral of partial pieces broken by last patch
1162
11632006-09-13  zzz
1164    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1165      preventing premature end game
1166    * i2psnark: Randomize selection of next piece during end game
1167    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1168    * i2psnark: strip ".torrent" on web page
1169    * i2psnark: Limit piece size in generated torrent to 1MB max
1170
11712006-09-09  zzz
1172    * i2psnark: Add "Stalled" indication and stat totals on web page
1173
11742006-09-09  zzz
1175    * i2psnark: Fix bug where new peers would always be sent an "interested"
1176      regardless of actual interest
1177    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1178      memory and efficiency problems
1179
1180* 2006-09-09  0.6.1.25 released
1181
11822006-09-08  jrandom
1183    * Tweak the PRNG logging so it only displays error messages if there are
1184      problems
1185    * Disable dynamic router keys for the time being, as they don't offer
1186      meaningful security, may hurt the router, and makes it harder to
1187      determine the network health.  The code to restart on SSU IP change is
1188      still enabled however.
1189    * Disable tunnel load testing, leaning back on the tiered selection for
1190      the time being.
1191    * Spattering of bugfixes
1192
11932006-09-07  zzz
1194    * i2psnark: Increase output timeout from 2 min to 4 min
1195    * i2psnark: Orphan debug msg cleanup
1196    * i2psnark: More web rate report cleanup
1197
11982006-09-05  zzz
1199    * i2psnark: Implement basic partial-piece saves across connections
1200    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1201      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1202      code in i2psnark ineffective. Will have to research why there is transmit but
1203      not receive inactivity code. With the current connection limit of 24 peers
1204      we aren't in any danger of keeping out new peers by keeping inactive ones.
1205    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1206    * i2psnark: Fix dropped chunk handling
1207    * i2psnark: Web rate report cleanup
1208
12092006-09-04  zzz
1210    * i2psnark: Report cleared trackerErr immediately
1211    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1212    * i2psnark: Set up new connections more quickly
1213    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1214    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1215
12162006-09-04  zzz
1217    * Enable pipelining in i2psnark
1218    * Make i2psnark tunnel default be 1 + 0-1
1219
12202006-09-03  zzz
1221    * Add rate reporting to i2psnark
1222
12232006-09-03  Complication
1224    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1225    * Print messages about addressbook size to give better overview
1226    * Enable delete function in published addressbook
1227
12282006-08-21  Complication
1229    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1230
12312006-08-03  jrandom
1232    * Decrease the recently modified tunnel building timeout, though keep
1233      the scaling on their processing
1234
12352006-07-31  jrandom
1236    * Increase the tunnel building timeout
1237    * Avoid a rare race (thanks bar!)
1238    * Fix the bandwidth capacity publishing code to factor in share percentage
1239      and outbound throttling (oops)
1240
12412006-07-29  Complication
1242    * Treat NTP responses from unexpected stratums like failures
1243
1244* 2006-07-28  0.6.1.24 released
1245
12462006-07-28  jrandom
1247    * Don't try to reverify too many netDb entries at once (thanks
1248      cervantes and Complication!)
1249
12502006-07-28  jrandom
1251    * Actually fix the threading deadlock issue in the netDb (removing
1252      the synchronized access to individual kbuckets while validating
1253      individual entries) (thanks cervantes, postman, frosk, et al!)
1254
1255* 2006-07-27  0.6.1.23 released
1256
12572006-07-27  jrandom
1258    * Cut down NTCP connection establishments once we know the peer is skewed
1259      (rather than wait for full establishment before verifying)
1260    * Removed a lock on the stats framework when accessing rates, which
1261      shouldn't be a problem, assuming rates are created (pretty much) all at
1262      once and merely updated during the lifetime of the jvm.
1263
12642006-07-27  jrandom
1265    * Further NTCP write status cleanup
1266    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1267
12682006-07-26  jrandom
1269    * When dropping a netDb router reference, only accept newer
1270      references as part of the update check
1271    * If we have been up for a while, don't accept really old
1272      router references (published 2 or more days ago)
1273    * Drop router references once they are no longer valid, even if
1274      they were allowed in due to the lax restrictions on startup
1275
12762006-07-26  jrandom
1277    * Every time we create a new router identity, add an entry to the
1278      new "identlog.txt" text file in the I2P install directory.  For
1279      debugging purposes, publish the count of how many identities the
1280      router has cycled through, though not the identities itself.
1281    * Cleaned up the way the multitransport shitlisting worked, and
1282      added per-transport shitlists
1283    * When dropping a router reference locally, first fire a netDb
1284      lookup for the entry
1285    * Take the peer selection filters into account when organizing the
1286      profiles (thanks Complication!)
1287    * Avoid some obvious configuration errors for the NTCP transport
1288      (invalid ports, "null" ip, etc)
1289    * Deal with some small NTCP bugs found in the wild (unresolveable
1290      hosts, strange network discons, etc)
1291    * Send our netDb info to peers we have direct NTCP connections to
1292      after each 6-12 hours of connection uptime
1293    * Clean up the NTCP reading and writing queue logic to avoid some
1294      potential delays
1295    * Allow people to specify the IP that the SSU transport binds on
1296      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1297
1298* 2006-07-18  0.6.1.22 released
1299
13002006-07-18  jrandom
1301    * Add a failsafe to the NTCP transport to make sure we keep
1302      pumping writes when we should.
1303    * Properly reallow 16-32KBps routers in the default config
1304      (thanks Complication!)
1305
13062006-07-16  Complication
1307    * Collect tunnel build agree/reject/expire statistics
1308      for each bandwidth tier of peers (and peers of unknown tiers,
1309      even if those shouldn't exist)
1310
13112006-07-14  jrandom
1312    * Improve the multitransport shitlisting (thanks Complication!)
1313    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1314      the default configuration (thanks for the stats Complication!)
1315    * Properly allow older router references to load on startup
1316      (thanks bar, Complication, et al!)
1317    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1318      hopefully today's changes should make this unnecessary (thanks void!)
1319    * Improved NTCP buffering
1320    * Close NTCP connections if we are too backlogged when writing to them
1321
13222006-07-04  jrandom
1323    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1324      connections only.  Those who configure their NAT/firewall to allow
1325      inbound connections and specify the external host and port
1326      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1327      SSU is still enabled for use by default for all users as a fallback.
1328    * Substantial bugfix to the tunnel gateway processing to transfer
1329      messages sequentially instead of interleaved
1330    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1331      GNU/Classpath based JVMs
1332    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1333      refill with a background thread to refill the output buffer
1334    * Add per-transport support for the shitlist
1335    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1336      contention
1337
13382006-07-01  Complication
1339    * Ensure that the I2PTunnel web interface won't update tunnel settings
1340      for shared clients when a non-shared client is modified
1341      (thanks for spotting, BarkerJr!)
1342
13432006-06-14  cervantes
1344    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1345      that use Bitstream Vera fonts @ 96 dpi
1346
1347* 2006-06-14  0.6.1.21 released
1348
13492006-06-13  jrandom
1350    * Use a minimum uptime of 2 hours, not 4 (oops)
1351
13522006-06-13  jrandom
1353    * Cut down the proactive rejections due to queue size - if we are
1354      at the point of having decrypted the request off the queue, might
1355      as well let it through, rather than waste that decryption
1356
13572006-06-11  Kloug
1358    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1359      outstanding pings/pongs
1360
13612006-06-10  jrandom
1362    * Further reduction in proactive rejections
1363
13642006-06-09  jrandom
1365    * Don't let the pending tunnel request queue grow beyond reason
1366      (letting things sit for up to 30s when they fail after 10s
1367      seems a bit... off)
1368
13692006-06-08  jrandom
1370    * Be more conservative in the proactive rejections
1371
13722006-06-04  Complication
1373    * Trim out sending a blank line before USER in susimail.
1374      Seemed to break in rare cases, thanks for reporting, Brachtus!
1375
1376* 2006-06-04  0.6.1.20 released
1377
13782006-06-04  jrandom
1379    * Reduce the SSU ack frequency
1380    * Tweaked the tunnel rejection settings to reject less aggressively
1381
13822006-05-31  jrandom
1383    * Only send netDb searches to the floodfill peers for the time being
1384    * Add some proof of concept filters for tunnel participation.  By default,
1385      it will skip peers with an advertised bandwith of less than 32KBps or
1386      an advertised uptime of less than 2 hours.  If this is sufficient, a
1387      safer implementation of these filters will be implemented.
1388
1389* 2006-05-18  0.6.1.19 released
1390
13912006-05-18  jrandom
1392    * Made the SSU ACKs less frequent when possible
1393
13942006-05-17  Complication
1395    * Fix some oversights in my previous changes:
1396      adjust some loglevels, make a few statements less wasteful,
1397      make one comparison less confusing and more likely to log unexpected values
1398
13992006-05-17  jrandom
1400    * Make the peer page sortable
1401    * SSU modifications to cut down on unnecessary connection failures
1402
14032006-05-16  jrandom
1404    * Further shitlist randomizations
1405    * Adjust the stats monitored for detecting cpu overload when dropping new
1406      tunnel requests
1407
14082006-05-15  jrandom
1409    * Add a load dependent throttle on the pending inbound tunnel request
1410      backlog
1411    * Increased the tunnel test failure slack before killing a tunnel
1412
14132006-05-13  Complication
1414    * Separate growth factors for tunnel count and tunnel test time
1415    * Reduce growth factors, so probabalistic throttle would activate
1416    * Square probAccept values to decelerate stronger when far from average
1417    * Create a bandwidth stat with approximately 15-second half life
1418    * Make allowTunnel() check the 1-second bandwidth for overload
1419      before doing allowance calculations using 15-second bandwidth
1420    * Tweak the overload detector in BuildExecutor to be more sensitive
1421      for rising edges, add ability to initiate tunnel drops
1422    * Add a function to seek and drop the highest-rate participating tunnel,
1423      keeping a fixed+random grace period between such drops.
1424      It doesn't seem very effective, so disabled by default
1425      ("router.dropTunnelsOnOverload=true" to enable)
1426
14272006-05-11  jrandom
1428    * PRNG bugfix (thanks cervantes and Complication!)
1429
1430* 2006-05-09  0.6.1.18 released
1431
14322006-05-09  jrandom
1433    * Further tunnel creation timeout revamp
1434
14352006-05-07  Complication
1436    * Fix problem whereby repeated calls to allowed() would make
1437      the 1-tunnel exception permit more than one concurrent build
1438
14392006-05-06  jrandom
1440    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1441      while tracking the extended timeout events.
1442
14432006-05-04  jrandom
1444    * Short circuit a highly congested part of the stat logging unless its
1445      required (may or may not help with a synchronization issue reported by
1446      andreas)
1447
14482006-05-03  Complication
1449    * Allow a single build attempt to proceed despite 1-minute overload
1450      only if the 1-second rate shows enough spare bandwidth
1451      (e.g. overload has already eased)
1452
14532006-05-02  Complication
1454    * Correct a misnamed property in SummaryHelper.java
1455      to avoid confusion
1456    * Make the maximum allowance of our own concurrent
1457      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1458      within the fixed range 2..10
1459    * While overloaded, try to avoid completely choking our own build attempts,
1460      instead prefer limiting them to 1
1461
14622006-05-01  jrandom
1463    * Adjust the tunnel build timeouts to cut down on expirations, and
1464      increased the SSU connection establishment retransmission rate to
1465      something less glacial.
1466    * For the first 5 minutes of uptime, be less aggressive with tunnel
1467      exploration, opting for more reliable peers to start with.
1468
14692006-05-01  jrandom
1470    * Fix for a netDb lookup race (thanks cervantes!)
1471
14722006-04-27  jrandom
1473    * Avoid a race in the message reply registry (thanks cervantes!)
1474
14752006-04-27  jrandom
1476    * Fixed the tunnel expiration desync code (thanks Complication!)
1477
1478* 2006-04-23  0.6.1.17 released
1479
14802006-04-19  jrandom
1481    * Adjust how we pick high capacity peers to allow the inclusion of fast
1482      peers (the previous filter assumed an old usage pattern)
1483    * New set of stats to help track per-packet-type bandwidth usage better
1484    * Cut out the proactive tail drop from the SSU transport, for now
1485    * Reduce the frequency of tunnel build attempts while we're saturated
1486    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1487
1488* 2006-04-15  0.6.1.16 released
1489
14902006-04-15  jrandom
1491    * Adjust the proactive tunnel request dropping so we will reject what we
1492      can instead of dropping so much (but still dropping if we get too far
1493      overloaded)
1494
14952006-04-14  jrandom
1496    * 0 isn't very random
1497    * Adjust the tunnel drop to be more reasonable
1498
14992006-04-14  jrandom
1500    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1501    * Made the bw-related tunnel join throttle much simpler
1502
15032006-04-14  jrandom
1504    * Make some more stats graphable, and allow some internal tweaking on the
1505      tunnel pairing for creation and testing.
1506
1507* 2006-04-13  0.6.1.15 released
1508
15092006-04-12  jrandom
1510    * Added a further failsafe against trying to queue up too many messages to
1511      a peer.
1512
15132006-04-12  jrandom
1514    * Watch out for failed syndie index fetches (thanks bar!)
1515
15162006-04-11  jrandom
1517    * Throttling improvements on SSU - throttle all transmissions to a peer
1518      when we are retransmitting, not just retransmissions.  Also, if
1519      we're already retransmitting to a peer, probabalistically tail drop new
1520      messages targetting that peer, based on the estimated wait time before
1521      transmission.
1522    * Fixed the rounding error in the inbound tunnel drop probability.
1523
15242006-04-10  jrandom
1525    * Include a combined send/receive graph (good idea cervantes!)
1526    * Proactively drop inbound tunnel requests probabalistically as the
1527      estimated queue time approaches our limit, rather than letting them all
1528      through up to that limit.
1529
15302006-04-08  jrandom
1531    * Stat summarization fix (removing the occational holes in the jrobin
1532      graphs)
1533
15342006-04-08  jrandom
1535    * Process inbound tunnel requests more efficiently
1536    * Proactively drop inbound tunnel requests if the queue before we'd
1537      process it in is too long (dynamically adjusted by cpu load)
1538    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1539      proactively drop too many requests.
1540    * Display the number of pending inbound tunnel join requests on the router
1541      console (as the "handle backlog")
1542    * Include a few more stats in the default set of graphs
1543
15442006-04-06  jrandom
1545    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1546
15472006-04-06  jrandom
1548    * Fixed a typo in the reply cleanup code
1549
1550* 2006-04-05  0.6.1.14 released
1551
15522006-04-05  jrandom
1553    * Cut down on the time that we allow a tunnel creation request to sit by
1554      without response, and reject tunnel creation requests that are lagged
1555      locally.  Also switch to a bounded FIFO instead of a LIFO
1556    * Threading tweaks for the message handling (thanks bar!)
1557    * Don't add addresses to syndie with blank names (thanks Complication!)
1558    * Further ban clearance
1559
15602006-04-05  jrandom
1561    * Fix during the ssu handshake to avoid an unnecessary failure on
1562      packet retransmission (thanks ripple!)
1563    * Fix during the SSU handshake to use the negotiated session key asap,
1564      rather than using the intro key for more than we should (thanks ripple!)
1565    * Fixes to the message reply registry (thanks Complication!)
1566    * More comprehensive syndie banning (for repeated pushes)
1567    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1568      testing purposes
1569    * Put a floor back on the capacity threshold, so too many failing peers
1570      won't cause us to pick very bad peers (unless we have very few good
1571      ones)
1572    * Bugfix to cut down on peers using introducers unneessarily (thanks
1573      Complication!)
1574    * Reduced the default streaming lib message size to fit into a single
1575      tunnel message, rather than require 5 tunnel messages to be transferred
1576      without loss before recomposition.  This reduces throughput, but should
1577      increase reliability, at least for the time being.
1578    * Misc small bugfixes in the router (thanks all!)
1579    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1580
15812006-04-01  jrandom
1582    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1583    * Filter the IRC ping/pong messages, as some clients send unsafe
1584      information in them (thanks aardvax and dust!)
1585
15862006-03-30  jrandom
1587    * Substantially reduced the lock contention in the message registry (a
1588      major hotspot that can choke most threads).  Also reworked the locking
1589      so we don't need per-message timer events
1590    * No need to have additional per-peer message clearing, as they are
1591      either unregistered individually or expired.
1592    * Include some of the more transient tunnel throttling
1593
1594* 2006-03-26  0.6.1.13 released
1595
15962006-03-25  jrandom
1597    * Added a simple purge and ban of syndie authors, shown as the
1598      "Purge and ban" button on the addressbook for authors that are already
1599      on the ignore list.  All of their entries and metadata are deleted from
1600      the archive, and the are transparently filtered from any remote
1601      syndication (so no user on the syndie instance will pull any new posts
1602      from them)
1603    * More strict tunnel join throtting when congested
1604
16052006-03-24  jrandom
1606    * Try to desync tunnel building near startup (thanks Complication!)
1607    * If we are highly congested, fall back on only querying the floodfill
1608      netDb peers, and only storing to those peers too
1609    * Cleaned up the floodfill-only queries
1610
16112006-03-21  jrandom
1612    * Avoid a very strange (unconfirmed) bug that people using the systray's
1613      browser picker dialog could cause by disabling the GUI-based browser
1614      picker.
1615    * Cut down on subsequent streaming lib reset packets transmitted
1616    * Use a larger MTU more often
1617    * Allow netDb searches to query shitlisted peers, as the queries are
1618      indirect.
1619    * Add an option to disable non-floodfill netDb searches (non-floodfill
1620      searches are used by default, but can be disabled by adding
1621      netDb.floodfillOnly=true to the advanced config)
1622
16232006-03-20  jrandom
1624    * Fix to allow for some slack when coalescing stats
1625    * Workaround some oddball errors
1626
16272006-03-18  jrandom
1628    * Added a new graphs.jsp page to show all of the stats being harvested
1629
16302006-03-18  jrandom
1631    * Made the netDb search load limitations a little less stringent
1632    * Add support for specifying the number of periods to be plotted on the
1633      graphs - e.g. to plot only the last hour of a stat that is averaged at
1634      the 60 second period, add &periodCount=60
1635
16362006-03-17  jrandom
1637    * Add support for graphing the event count as well as the average stat
1638      value (done by adding &showEvents=true to the URL).  Also supports
1639      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1640      the title (&hideTitle=true).
1641    * Removed an unnecessary arbitrary filter on the profile organizer so we
1642      can pick high capacity and fast peers more appropriately
1643
16442006-03-16  jrandom
1645    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1646      console.  Selected stats can be harvested automatically and fed into
1647      in-memory RRD databases, and those databases can be served up either as
1648      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1649      details).  A base set of stats are harvested by default, but an
1650      alternate list can be specified by setting the 'stat.summaries' list on
1651      the advanced config.  For instance:
1652      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1653    * HTML tweaking for the general config page (thanks void!)
1654    * Odd NPE fix (thanks Complication!)
1655
16562006-03-15  Complication
1657    * Trim out an old, inactive IP second-guessing method
1658      (thanks for spotting, Anonymous!)
1659
16602006-03-15  jrandom
1661    * Further stat cleanup
1662    * Keep track of how many peers we are actively trying to communicate with,
1663      beyond those who are just trying to communicate with us.
1664    * Further router tunnel participation throttle revisions to avoid spurious
1665      rejections
1666    * Rate stat display cleanup (thanks ripple!)
1667    * Don't even try to send messages that have been queued too long
1668
16692006-03-05  zzz
1670    * Remove the +++--- from the logs on i2psnark startup
1671
16722006-03-05  jrandom
1673    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1674    * Give netDb lookups to floodfill peers more time, as they are much more
1675      likely to succeed (thereby cutting down on the unnecessary netDb
1676      searches outside the floodfill set)
1677    * Fix to the SSU IP detection code so we won't use introducers when we
1678      don't need them (thanks Complication!)
1679    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1680      peers given to it
1681    * Don't let netDb searches wander across too many peers
1682    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1683      as its too volatile to have much meaning.
1684    * Don't bork if a Syndie post is missing an entry.sml
1685
16862006-03-05  Complication
1687    * Reduce exposed statistical information,
1688      to make build and uptime tracking more expensive
1689
16902006-03-04  Complication
1691    * Fix the announce URL of orion's tracker in Snark sources
1692
16932006-03-03  Complication
1694    * Explicit check for an index out of bounds exception while parsing
1695      an inbound IRC command (implicit check was there already)
1696
16972006-03-01  jrandom
1698    * More aggressive tunnel throttling as we approach our bandwidth limit,
1699      and throttle based off periods wider than 1 second.
1700    * Included Doubtful Salmon's syndie stylings (thanks!)
1701
17022006-02-27  zzz
1703    * Update error page templates to add \r, Connection: close, and
1704      Proxy-connection: close to headers.
1705
1706* 2006-02-27  0.6.1.12 released
1707
17082006-02-27  jrandom
1709    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1710      machines, rather than the generic jbigi (until we have an athlon64
1711      optimized version)
1712
17132006-02-26  jrandom
1714    * Switch from the bouncycastle to the gnu-crypto implementation for
1715      SHA256, as benchmarks show a 10-30% speedup.
1716    * Removed some unnecessary object caches
1717    * Don't close i2psnark streams prematurely
1718
17192006-02-25  jrandom
1720    * Made the Syndie permalinks in the thread view point to the blog view
1721    * Disabled TCP again (since the live net seems to be doing well w/out it)
1722    * Fix the message time on inbound SSU establishment (thanks zzz!)
1723    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1724      just starts up
1725
17262006-02-24  jrandom
1727    * Rounding calculation cleanup in the stats, and avoid an uncontested
1728      mutex (thanks ripple!)
1729    * SSU handshake cleanup to help force incompatible peers to stop nagging
1730      us by both not giving them an updated reference to us and by dropping
1731      future handshake packets from them.
1732
17332006-02-23  jrandom
1734    * Increase the SSU retransmit ceiling (for slow links)
1735    * Estimate the sender's SSU MTU (to help see if we agree)
1736
17372006-02-22  jrandom
1738    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1739    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1740      links
1741    * Further class validator refactorings
1742
17432006-02-22  jrandom
1744    * Handle a rare race under high bandwidth situations in the SSU transport
1745    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1746
17472006-02-21  Complication
1748    * Reactivate TCP tranport by default, in addition to re-allowing
1749
1750* 2006-02-21  0.6.1.11 released
1751
17522006-02-21  jrandom
1753    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1754      heap when backlogged (and so that the messages queued up on it don't sit
1755      there forever)
1756    * Further SSU memory cleanup
1757    * Clean up the address regeneration code so it knows when to rebuild the
1758      local info more precisely.
1759
17602006-02-20  jrandom
1761    * Properly enable TCP this time (oops)
1762    * Deal with multiple form handlers on the same page in the console without
1763      being too annoying (thanks blubb and bd_!)
1764
17652006-02-20  jrandom
1766    * Reenable the TCP transport as a fallback (we'll continue to muck with
1767      debugging SSU-only elsewhere)
1768
17692006-02-20  jrandom
1770    * Major SSU and router tuning to reduce contention, memory usage, and GC
1771      churn.  There are still issues to be worked out, but this should be a
1772      substantial improvement.
1773    * Modified the optional netDb harvester task to support choosing whether
1774      to use (non-anonymous) direct connections or (anonymous) exploratory
1775      tunnels to do the harvesting.  Harvesting itself is enabled via the
1776      advanced config "netDb.shouldHarvest=true" (default is false) and the
1777      connection type can be chosen via "netDb.harvestDirectly=false" (default
1778      is false).
1779
17802006-02-19  dust
1781    * Added pruning of suckers history (it used to grow indefinitely).
1782
17832006-02-19  jrandom
1784    * Moved the current net's reseed URL to a different location than where
1785      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1786    * More aggressively expire inbound messages (on receive, not just on send)
1787    * Add in a hook for breaking backwards compatibility in the SSU wire
1788      protocol directly by including a version as part of the handshake.  The
1789      version is currently set to 0, however, so the wire protocol from this
1790      build is compatible with all earlier SSU implementations.
1791    * Increased the number of complete message readers, cutting down
1792      substantially on the delay processing inbound messages.
1793    * Delete the message history file on startup
1794    * Reworked the restart/shutdown display on the console (thanks bd_!)
1795
17962006-02-18  jrandom
1797    * Migrate the outbound packets from a central component to the individual
1798      per-peer components, substantially cutting down on lock contention when
1799      dealing with higher degrees.
1800    * Load balance the outbound SSU transfers evenly across peers, rather than
1801      across messages (so peers with few messages won't be starved by peers
1802      with many).
1803    * Reduce the frequency of router info rebuilds (thanks bar!)
1804
18052006-02-18  jrandom
1806    * Add a new AIMD throttle in SSU to control the number of concurrent
1807      messages being sent to a given peer, in addition to the throttle on the
1808      number of concurrent bytes to that peer.
1809    * Adjust the existing SSU outbound queue to throttle based on the queue's
1810      lag, not an arbitrary number of packets.
1811
18122006-02-17  jrandom
1813    * Properly fix the build request queue throttling, using queue age to
1814      detect congestion, rather than queue size.
1815
18162006-02-17  jrandom
1817    * Disable the message history log file by default (duh - feel free to
1818      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1819    * Limit the size of the inbound tunnel build request queue so we don't
1820      get an insane backlog of requests that we're bound to reject, and adjust
1821      the queue processing so we keep on churning through them when we've got
1822      a backlog.
1823    * Small fixes for the multiuser syndie operation (thanks Complication!)
1824    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1825      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1826
1827* 2006-02-16  0.6.1.10 released
1828
18292006-02-16  jrandom
1830    * Add a new toggle to the web config to enable/disable the load testing
1831
18322006-02-16  jrandom
1833    * Dropped much of the abandonware from the apps/ directory
1834
18352006-02-16  jrandom
1836    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1837    * Initial sucker refactoring to simplify reuse of the html parsing
1838    * Beginnings of hooks to push imported rss/atom out to remote syndie
1839      archives automatically (though not enabled currently)
1840    * Further SSU peer test cleanup
1841
18422006-02-15  jrandom
1843    * Add in per-blog RSS feeds to Syndie
1844    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1845      with the posts, marking additional attachments as Media RSS enclosures
1846      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1847      per item.
1848    * Don't allow the default syndie user to be set to something invalid if
1849      its in single user mode.
1850
18512006-02-15  jrandom
1852    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1853      longer backwards compatible (and should not be used until 0.6.1.1 is
1854      out)
1855
18562006-02-14  jrandom
1857    * Syndie ui bugfixes (thanks all!)
1858
18592006-02-13  jrandom
1860    * Use the current directory for some temporary I2PSnark files, rather than
1861      the OS default temp dir (thanks anon!)
1862    * Increase the base streaming lib window size (still shrinks to 1 on
1863      retransmission though, of course)
1864    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1865    * Implement fast retransmit in the streaming lib (fires at most once per
1866      packet), and increased the default ack delay to 2 seconds (from .5s)
1867    * Don't ask for garlic level message acks for end to end messages unless
1868      they're useful (e.g. to ack session tags)
1869
18702006-02-12  cervantes
1871    * Use a different santisation method for some SML attributes
1872    * Make router console update config save button actually save.
1873    * Fix console bandwidth limiter burst rate dropdowns, so the display
1874      relates to what is saved in the config.
1875   
18762006-02-12  cervantes
1877    * SML is now stricter in it's formatting (attributes should only use
1878      double quotes instead of being allowed to mix with singles).
1879    * Using apostrophes in SML attributes will no longer invalidate the tag.
1880    * Some instances of [blog] tag description were not being displayed
1881      correctly.
1882
18832006-02-12  jrandom
1884    * Further SSU peer test throttling
1885    * Put the most common router console features on the main index page too
1886
18872006-02-11  jrandom
1888    * Be more careful about SSU peer test floods
1889
18902006-02-09  jrandom
1891    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1892
18932006-02-08  jrandom
1894    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1895      bundled a precompiled libjbigi.so in the jbigi.jar
1896    * Cleaned up the synchronization for some SSU packet handling code
1897    * Allow explicit rejection of more lagged tunnel build requests, rather
1898      than dropping them outright
1899    * Use lighter load testing
1900
19012006-02-07  jrandom
1902    * Handle HTTP headers without any values (thanks Sugadude!)
1903    * Don't show the option to make Syndie multiuser, since very few people
1904      need it, and multiuser mode is a lot more complex to use.  Geeks can
1905      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1906      (or in the router's advanced config, for the embedded Syndie)
1907    * When a peer rejects participation in a tunnel, they mean it (duh)
1908    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1909    * Remove a throttle on the size of the SSU active outbound pool, since
1910      it was essentially arbitrary
1911    * Use a more appropriate SSU bloom filter size
1912    * Don't "proactively" drop SSU connections if we have partially received
1913      inbound messages (duh)
1914    * Migrate most of the message state across SSU connection reestablishment
1915
19162006-02-06  jrandom
1917    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
1918      piggybacked
1919
19202006-02-05  jrandom
1921    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
1922      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
1923      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
1924    * Enable the messageHistory.txt by default, for debugging
1925
19262006-02-05  jrandom
1927    * Substantial bugfix for the duplicate message detection in the transport
1928      layer
1929    * Handle tunnel build responses ASAP, rather than queueing them up to wait
1930      in line (processing them is really fast - just a few AES loops)
1931    * Don't bother handling build requests that we have queued up for a while
1932      locally, as the requestor will have timed it out anyway (perhaps we
1933      should reply regardless, but with a backoff instead?)
1934
19352006-02-04  jrandom
1936    * Further tunnel test cleanup and disabling of the old tunnel creation
1937      code
1938
19392006-02-04  jrandom
1940    * Clean up and reenable the tunnel testing for the new tunnel system.
1941
19422006-02-04  jrandom
1943    * Don't cache the archive.txt in syndie when fetching it through the web
1944      interface.
1945    * Logging updates
1946
19472006-02-03  jrandom
1948    * Added further replay prevention on the tunnel build requests
1949    * More aggressive streaming lib closing on reset
1950
19512006-02-03  jrandom
1952    * More aggressive refusal of peers from the wrong network (oops)
1953
19542006-02-01  jrandom
1955    * Instruct the router to reseed against a new URL, for migration purposes:
1956      http://dev.i2p.net/i2pdb2/
1957    * Aggressive error handling during UDP packet creation (thanks cervantes)
1958
19592006-02-01  jrandom
1960    * Fix the new tunnel creation crypto, including the addition of a 4 byte
1961      "next message ID" to the encrypted request structure in the spec.
1962    * Backwards incompatible change, using the new tunnel creation crypto, the
1963      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
1964      with the old incompatible network).
1965    * Reworked the leaseSet request process to handle a race condition
1966    * Disable the TCP transport
1967    * Run four separate threads on the job queue to cut down on job lag
1968
19692006-01-28  jrandom
1970    * Removed a race that could show up in leaseSet requesting with the new
1971      tunnel building process
1972
19732006-01-25  jrandom
1974    * Run the peer profile coalescing/reorganization outside the job queue
1975      (on one of the timers), to cut down on some job queue congestion.  Also,
1976      trim old profiles while running, not just when starting up.
1977    * Slightly more sane intra-floodfill-node netDb activity (only flood new
1978      entries)
1979    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
1980      source of the bug is not yet addressed)
1981    * Better I2PSnark reconnection handling
1982    * Further cleanup in the new tunnel build process
1983    * Make sure we expire old participants properly
1984    * Remove much of the transient overload throttling (it wasn't using a good
1985      metric)
1986
19872006-01-25  dust
1988    * Fix IRC client proxy to use ISO-8859-1.
1989
19902006-01-22  jrandom
1991    * New tunnel build process - does not use the new crypto or new peer
1992      selection strategies.  However, it does drop the fallback tunnel
1993      procedure, except for tunnels who are configured to allow them, or for
1994      the exploratory pool during bootstrapping or after a catastrophic
1995      failure.  This new process prefers to fail rather than use too-short
1996      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
1997      it may expose more tunnel failures to the user.
1998    * Always prefer normal tunnels to fallback tunnels.
1999    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
2000      bar!)
2001    * Do all of the netDb entry writing in a separate thread, avoiding
2002      duplicates and batching them up.
2003
20042006-01-19  Complication
2005    * Explain better where eepsite's destkey can be found
2006
20072006-01-18  cervantes
2008    * Add title attributes to all external links in Syndie, so we can rollover
2009      and quickly see if it's worth clicking on.
2010    * Fixed a minor compiler warning.
2011
20122006-01-17  jrandom
2013    * First pass of the new tunnel creation crypto, specified in the new
2014      router/doc/tunnel-alt-creation.html (referenced in the current
2015      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
2016      than in the test code, but the code verifies the technical viability, so
2017      further scrutiny would be warranted.
2018
20192006-01-16  cervantes
2020    * Dragged I2P kicking and screaming into 2006 (Oops)
2021
20222006-01-14  cervantes
2023    * Removed entirely misleading memory status from the console summary.
2024       
20252006-01-13  cervantes
2026    * Further Syndie layout hardening and typeface balancing.
2027
2028* 2006-01-12  0.6.1.9 released
2029
20302006-01-12  jrandom
2031    * Only create the loadtest.log if requested to do so (thanks zzz!)
2032    * Make sure we cleanly take into consideration the appropriate data
2033      points when filtering out duplicate messages in the message validator,
2034      and report the right bloom filter false positives rate (not used for
2035      anything except debugging)
2036
20372006-01-12  cervantes
2038    * Syndie CSS tweaks to removed some redundant declarations, improve font
2039      scaling and layout robustness. Improved cross browser compatibility
2040      (in other words "kicked IE"). Tightened the look of the blog template
2041      a little.
2042
20432006-01-11  Complication
2044    * CSS comment fixes
2045
20462006-01-11  jrandom
2047    * Include the attachments/blogs/etc for comments on the blog view
2048    * Syndie HTML fixes (thanks cervantes!)
2049    * Make sure we fully reset the objects going into our cache before we
2050      reuse them (thanks zzz!)
2051
20522006-01-10  jrandom
2053    * Added the per-post list of attachments/blogs/etc to the blog view in
2054      Syndie (though this does not yet include comments or some further
2055      refinements)
2056    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2057      removing the dox box (though also removes the restart functionality...)
2058    * Give the i2p.exe the correct java.library.path to support the systray
2059      dll (thanks Bobcat, Sugadude, anon!)
2060
20612006-01-09  jrandom
2062    * Removed a longstanding bug that had caused unnecessary router identity
2063      churn due to clock skew
2064    * Temporarily sanity check within the streaming lib for long pending
2065      writes
2066    * Added support for a blog-wide logo to Syndie, and automated the pushing
2067      of updated extended blog info data along side the metadata.
2068
20692006-01-09  jrandom
2070    * Bugfix for a rare SSU error (thanks cervantes!)
2071    * More progress on the blog interface, allowing customizable blog-wide
2072      links.
2073
20742006-01-08  jrandom
2075    * First pass of the new blog interface, though without much of the useful
2076      customization features (coming soon)
2077
20782006-01-04  jrandom
2079    * Rather than profile individual tunnels for throughput over their
2080      lifetime, do so at 1 minute intervals (allowing less frequently active
2081      tunnels to be more fairly measured).
2082    * Run the live tunnel load test across two tunnels at a time, by default.
2083      The load test runs for a random period from 90s to the tunnel lifetime,
2084      self paced.  This should help gathering data for profiling peers that
2085      are in exploratory tunnels.
2086
20872006-01-03  jrandom
2088    * Calculate the overall peer throughput across the 3 fastest one minute
2089      tunnel throughput values, rather than the single fastest throughput.
2090    * Degrade the profiled throughput data over time (cutting the profiled
2091      peaks in half once a day, on average)
2092    * Enable yet another new speed calculation for profiling peers, using the
2093      peak throughput from individual tunnels that a peer is participating in,
2094      rather than across all tunnels they are participating in.  This helps
2095      gather a fairer peer throughput measurement, since it won't allow a slow
2096      high capacity peer seem to have a higher throughput (pushing a little
2097      data across many tunnels at once, as opposed to lots of data across a
2098      single tunnel).  This degrades over time like the other.
2099    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2100      precompiled OS/2 library)
2101
21022006-01-01  jrandom
2103    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2104      (though it can still seed and participate in multifile swarms)
2105    * Enable a new speed calculation for profiling peers, using their peak
2106      1 minute average tunnel throughput as their speed.
2107
21082005-12-31  jrandom
2109    * Include a simple torrent creator in the I2PSnark web UI
2110    * Further streaming lib closing improvements
2111    * Refactored the load test components to run off live tunnels (though,
2112      still not safe for normal/anonymous load testing)
2113
21142005-12-30  jrandom
2115    * Close streams more gracefully
2116
21172005-12-30  jrandom
2118    * Small streaming lib bugfixes for the modified timeouts
2119    * Minor Syndie/Sucker RSS html fix
2120    * Small synchronization fix in I2PSnark (thanks fsm!)
2121
21222005-12-30  jrandom
2123    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2124      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2125      some distros (e.g. mandriva)
2126
21272005-12-29  jrandom
2128    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2129      actually correct
2130
21312005-12-27  jrandom
2132    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2133      the clock is too skewed to do anything useful (check the year and month,
2134      not just the hour and minute).
2135    * Fixed the read/write timeouts in the streaming lib (so that it actually
2136      honors them now)
2137    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2138      torrent closing)
2139    * Handle an oddball tunnel creation failure (thanks Xunk)
2140
21412005-12-26  Complication
2142    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2143    * HTML readability cosmetics on "Peers" page
2144
2145* 2005-12-22  0.6.1.8 released
2146
21472005-12-22  jrandom
2148    * Bundle the standalone I2PSnark launcher in the installer and update
2149      process (launch as "java -jar launch-i2psnark.jar", viewing the
2150      interface on http://localhost:8002/)
2151    * Don't autostart swarming torrents by default so that you can run a
2152      standalone I2PSnark from the I2P install dir and not have the embedded
2153      I2PSnark autolaunch the torrents that the standalone instance is running
2154    * Fixed a rare streaming lib bug that could let a blocking call wait
2155      forever.
2156
21572005-12-22  jrandom
2158    * Cleaned up some buffer synchronization issues in I2PSnark that could
2159      cause blockage.
2160
21612005-12-21  jrandom
2162    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2163      behavior)
2164    * Fixed the I2PSnark bug that would lose track of live peers
2165
21662005-12-20  jrandom
2167    * Enabled the control in I2PSnark to toggle whether torrents should be
2168      started automatically or not
2169    * Hopefully finished the last hook to close down torrents completely when
2170      they're stopped.
2171
21722005-12-19  jrandom
2173    * Fix for old Syndie blog bookmarks (thanks Complication!)
2174    * Fix for I2PSnark to accept incoming connections again (oops)
2175    * Randomize the order that peers from the tracker are contacted
2176
21772005-12-19  jrandom
2178    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2179      memory usage reduction, better OOM handling, and a shared connection
2180      acceptor.
2181    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2182      blog from the blog page shows threads started by the selected author,
2183      not those that they merely participate in)
2184
21852005-12-18  jrandom
2186    * Added a standalone runner for the I2PSnark web ui (build with the
2187      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2188      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2189    * Further I2PSnark error handling
2190
21912005-12-17  jrandom
2192    * Let multiuser accounts authorize themselves to access the remote
2193      functionality again (thanks Ch0Hag!)
2194    * Adjust the JVM heap size to 128MB for new installs (existing users can
2195      accomplish this by editing wrapper.config, adding the line
2196      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2197      of the router).  This is relevent for heavy usage of I2PSnark in the
2198      router console.
2199
22002005-12-17  jrandom
2201    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2202      'piece' sizes grow larger than before.
2203
22042005-12-16  jrandom
2205    * Added some I2PSnark sanity checks, an OOMListener when running
2206      standalone, and a guard against keeping memory tied up indefinitely.
2207    * Sanity check on the watchdog (thanks zzz!)
2208    * Handle invalid HTTP requests in I2PTunnel a little better
2209
22102005-12-16  jrandom
2211    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2212      properly (thanks Complication!)
2213    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2214      b0rking in the DirMonitor, etc)
2215
22162005-12-16  jrandom
2217    * Try to run a torrent in readonly mode if we can't write to the file, and
2218      handle failures a little more gracefully (thanks polecat!)
2219
22202005-12-16  jrandom
2221    * Refuse torrents with too many files (128), avoiding ulimit errors.
2222    * Remove an fd leak in I2PSnark
2223    * Further I2PSnark web UI cleanup
2224
22252005-12-15  jrandom
2226    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2227
22282005-12-15  jrandom
2229    * Added multitorrent support to I2PSnark, accessible currently by running
2230      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2231      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2232      their data in that directory as well.  Removing the .torrent file stops
2233      participation, and it is currently set to seed indefinitely.  Completion
2234      is logged to the logger and standard output, with further UI interaction
2235      left to the (work in progress) web UI.
2236
22372005-12-14  jrandom
2238    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2239    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2240      (thanks Complication!)
2241
22422005-12-13  zzz
2243    * Don't test tunnels expiring within 90 seconds
2244    * Defer Test Tunnel jobs if job lag too large
2245    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2246      job lag for tunnel build backoff, allowing for more agile handling
2247      (since the stat is only updated once a minute)
2248    * Use tunnel length override if all tunnels are expiring within one
2249      minute.
2250
22512005-12-13  jrandom
2252    * Fixed I2PSnark's handling of some torrent files to deal with those
2253      created by Azureus and I2PRufus (it didn't know how to deal with
2254      additional meta info, such as path.utf-8 or name.utf-8).
2255
22562005-12-09  zzz
2257    * Create different strategies for exploratory tunnels (which are difficult
2258      to create) and client tunnels (which are much easier)
2259    * Gradually increase number of parallel build attempts as tunnel expiry
2260      nears.
2261    * Temporarily shorten attempted build tunnel length if builds using
2262      configured tunnel length are unsuccessful
2263    * React more aggressively to tunnel failure than routine tunnel
2264      replacement
2265    * Make tunnel creation times randomized - there is existing code to
2266      randomize the tunnels but it isn't effective due to the tunnel creation
2267      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2268      to 3 minutes before expiration. The patch fixes this by fixing the
2269      randomization, and by changing the overlap time (with old tunnels) to a
2270      range of 2 to 4 minutes.
2271    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2272      to overlapping calls. Just about anything generated a call which could
2273      build many tunnels all at once, even if tunnel building was already in
2274      process.
2275    * Miscellaneous router console enhancements
2276
22772005-12-08  jrandom
2278    * Minor bugfix in SSU for dealing with corrupt packets
2279    * Added some hooks for load testing
2280
22812005-12-07  jrandom
2282    * Added a first pass at a blog view in Syndie
2283
22842005-12-07  jrandom
2285    * Expand the thread we're viewing to its leaf
2286    * Bugfix on intraday ordering (children are always newer than parents)
2287
22882005-12-05  jrandom
2289    * Added an RDF and XML thread export to Syndie, reachable at
2290      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2291      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2292      displays all threads.
2293
22942005-12-04  TLorD
2295    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2296
22972005-12-04  jrandom
2298    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2299    * Always include ourselves in the favorite authors (since we don't
2300      bookmark ourselves)
2301
23022005-12-03  jrandom
2303    * Use newgroup-like tags by default in Syndie's interface
2304
23052005-12-03  jrandom
2306    * Added support for a 'most recent posts' view that CofE requested, which
2307      includes the ability to filter by age (e.g. posts by your favorite
2308      authors in the last 5 days).
2309
23102005-12-03  jrandom
2311    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2312      displays a a single thread path at a time - from root to leaf - rather
2313      than a depth first traversal.
2314
23152005-12-03  jrandom
2316    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2317      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2318      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2319      running a single user Syndie instance (by default).  It also creates a
2320      default subscription to syndiemedia without any anonymity (using no
2321      proxy).  Upgrades can be done by just replacing the syndie.war with the
2322      one from I2P.
2323
2324* 2005-12-01  0.6.1.7 released
2325
23262005-12-01  jrandom
2327    * Add a new criteria to the tunnel join throttle, backing off people if we
2328      are failing to talk to our peers more than usual.
2329
23302005-11-30  jrandom
2331    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2332      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2333      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2334      separate jdom or rome, as they're inside syndie.war.
2335
23362005-11-30  jrandom
2337    * Don't let the TCP transport alone shitlist a peer, since other
2338      transports may be working.  Also display whether TCP connections are
2339      inbound or outbound on the peers page.
2340    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2341      talk to anyone who didn't expose an IP (even if they had introducers),
2342      among other goofy things.
2343    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2344      rather than sending one a packet at 3s, then another a packet at 6s,
2345      and a third a packet at 9s.
2346    * Fixed Syndie attachments (oops)
2347
23482005-11-29  zzz
2349    * Added a link to orion's jump page on the 'key not found' error page.
2350
23512005-11-29  jrandom
2352    * Further Syndie UI cleanup
2353    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2354      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2355      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2356      will be removed as soon as its integrated into Jetty.  This patch allows
2357      posting content in various character sets.
2358      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2359    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2360      isn't pushed as part of the update yet, as there aren't any critical
2361      bugs.
2362
23632005-11-29  jrandom
2364    * Added back in the OSX jbigi, which was accidentally removed a few revs
2365      back (thanks for the bug report stoerte!)  New installs will get the
2366      full jbigi, or you can pull the jbigi.jar from CVS by going to
2367      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2368      and clicking on the first "download" link, saving that jbigi.jar to
2369      lib/jbigi.jar in your I2P installation directory.  After restarting your
2370      router, it should load up fine.
2371
23722005-11-27  jrandom
2373    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2374      because firefox [and others?] delay rendering until they fetch the css).
2375    * Make sure we fire the shutdown tasks when regenerating a new identity
2376      (thanks picsou!)
2377    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2378    * Don't drop SSU sessions if they're still transmitting data successfully,
2379      even if there are transmission failures
2380    * Adjusted the time summarization to display hours after 119m, not 90m
2381    * Further EepGet cleanup (grr)
2382
2383* 2005-11-26 0.6.1.6 released
2384
23852005-11-26  jrandom
2386    * Update the sorting in Syndie to consider children 'newer' than parents,
2387      even if they have the same message ID (duh)
2388    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2389    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2390    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2391      better)
2392
23932005-11-26  jrandom
2394    * Be more explicit about what messages we will handle through a client
2395      tunnel, and how we will handle them.  This cuts off a set of attacks
2396      that an active adversary could mount, though they're probably nonobvious
2397      and would require at least some sophistication.
2398
23992005-11-26  Raccoon23
2400    * Added support for 'dynamic keys' mode, where the router creates a new
2401      router identity whenever it detects a substantial change in its public
2402      address (read: SSU IP or port).  This only offers minimal additional
2403      protection against trivial attackers, but should provide functional
2404      improvement for people who have periodic IP changes, since their new
2405      router address would not be shitlisted while their old one would be.
2406    * Added further infrastructure for restricted route operation, but its use
2407      is not recommended.
2408
24092005-11-25  jrandom
2410    * Further Syndie UI cleanups
2411    * Logging cleanup
2412    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2413
24142005-11-25  jrandom
2415    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2416    * Cleaned up the syndie threaded display to show the last updated date for
2417      a subthread, and to highlight threads updated in the last two days.
2418
24192005-11-24  jrandom
2420    * Fix to save syndication settings in Syndie (thanks spaetz!)
2421
24222005-11-23  jrandom
2423    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2424    * Streamlined the tunnel batching to schedule batch transmissions more
2425      appropriately.
2426    * Default tunnel pool variance to 2 +0-1 hops
2427
24282005-11-21  jrandom
2429    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2430      within I2PTunnel.
2431    * Increase the maximum SSU retransmission timeout to accomodate slower or
2432      more congested links (though SSU's RTO calculation will usually use a
2433      much lower timeout)
2434    * Moved the streaming lib timed events off the main timer queues and onto
2435      a streaming lib specific set of timer queues.  Streaming lib timed
2436      events are more likely to have lock contention on the I2CP socket while
2437      other timed events in the router are (largely) independent.
2438    * Fixed a case sensitive lookup bug (thanks tino!)
2439    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2440      links (thanks tino!)
2441
24422005-11-19  jrandom
2443    * Implemented a trivial pure java PMTU backoff strategy, switching between
2444      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2445    * Fixed new user registration in Syndie (thanks Complication!)
2446
24472005-11-17  jrandom
2448    * More cautious file handling in Syndie
2449
24502005-11-16  jrandom
2451    * More aggressive I2PTunnel content encoding munging to work around some
2452      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2453      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2454      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2455      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2456      or X-Accept-encoding headers.  Eepsite operators who do not know to
2457      check for X-Accept-encoding will simply use the identity encoding.
2458
2459* 2005-11-15  0.6.1.5 released
2460
24612005-11-14  jrandom
2462    * Migrate to the new Syndie interface
2463
24642005-11-11  jrandom
2465    * Add filtering threads by author to Syndie, populated with authors in the
2466      user's addressbook
2467    * When creating the default user, add
2468      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2469      configured to automatically pull updates.  (what other archives should
2470      be included?)
2471    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2472      the installer/resources/themes/** into ./docs/themes/** on both install
2473      and update.
2474
24752005-11-11  cervantes
2476    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2477      being progressively rolled out to other sections at later dates.
2478      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2479      layout and styling.
2480    * Implemented console themes. Users can create their own themes by
2481      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2482      and activating it using the routerconsole.theme={themename} advanced
2483      config property. Look at the example incomplete "defCon1" theme.
2484      Note: This is very much a work in progress. Folks might want to hold-off
2485      creating their own skins until the markup has solidified.
2486    * Added "routerconsole.javascript.disabled=true" to disable console
2487      client-side scripting and "routerconsole.css.disabled=true" to remove
2488      css styling (only rolled out in the i2ptunnel interface currently)
2489    * Fixed long standing bug with i2ptunnel client and server edit screens
2490      where tunnel count and depth properties would fail to save. Added
2491      backup quantity and variance configuration options.
2492    * Added basic accessibility support (key shortcuts, linear markup, alt and
2493      title information and form labels).
2494    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2495
24962005-11-11  jrandom
2497    * Default Syndie to single user mode, and automatically log into a default
2498      user account (additional accounts can be logged into with the 'switch'
2499      or login pages, and new accounts can be created with the register page).
2500    * Disable the 'automated' column on the Syndie addressbook unless the user
2501      is appropriately authorized (good idea Polecat!)
2502
25032005-11-10  jrandom
2504    * First pass to a new threaded Syndie interface, which isn't enabled by
2505      default, as its not done yet.
2506
25072005-11-06  jrandom
2508    * Include SSU establishment failure in the peer profile as a commError,
2509      as we do for TCP establishment failures.
2510    * Don't throttle the initial transmission of a message because of ongoing
2511      retransmissions to a peer, since the initial transmission of a message
2512      is more valuable than a retransmission (since it has less latency).
2513    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2514
25152005-11-05  jrandom
2516    * Include the most recent ACKs with packets, rather than only sending an
2517      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2518      increasing sequence numbers, while each message ID in SSU is random, so
2519      we don't get the benefit of later ACKs implicitly ACKing earlier
2520      messages.
2521    * Reduced the max retransmission timeout for SSU
2522    * Don't try to send messages queued up for a long time waiting for
2523      establishment.
2524
25252005-11-05  dust
2526    * Fix sucker to delete its temporary files.
2527    * Improve sucker's sml output some.
2528    * Fix Exception in SMLParser for weird sml.
2529
25302005-11-03  zzz
2531    * Added a new error page to the eepproxy to differentiate the full 60
2532      second timeout from the immediate "I don't know this base64" failure.
2533
25342005-11-01  jrandom
2535    * Added a few more css elements (thanks identiguy!)
2536
25372005-10-31  jrandom
2538    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2539    * Removed a potentially infinitely recursive call (oops)
2540
25412005-10-30  dust
2542    * Merge sucker into syndie with a rssimport.jsp page.
2543    * Add getContentType() to EepGet.
2544    * Make chunked transfer work (better) with EepGet.
2545    * Do replaceAll("<","&lt;") for logs.
2546
2547* 2005-10-29  0.6.1.4 released
2548
25492005-10-29  jrandom
2550    * Improved the bandwidth throtting on tunnel participation, especially for
2551      low bandwidth peers.
2552    * Improved failure handling in SSU with proactive reestablishment of
2553      failing idle peers, and rather than shitlisting a peer who failed too
2554      much, drop the SSU session and allow a new attempt (which, if it fails,
2555      will cause a shitlisting)
2556    * Clarify the cause of the shitlist on the profiles page, and include
2557      bandwidth limiter info at the bottom of the peers page.
2558
25592005-10-26  jrandom
2560    * In Syndie, propogate the subject and tags in a reply, and show the parent
2561      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2562    * Streamline some netDb query handling to run outside the jobqueue -
2563      which means they'll run on the particular SSU thread that handles the
2564      message.  This should help out heavily loaded netDb peers.
2565
25662005-10-25  jrandom
2567    * Defer netDb searches for newly referenced peers until we actually want
2568      them
2569    * Ignore netDb references to peers on our shitlist
2570    * Set the timeout for end to end client messages to the max delay after
2571      finding the leaseSet, so we don't have as many expired messages floating
2572      around.
2573    * Add a floor to the streaming lib window size
2574    * When we need to send a streaming lib ACK, try to retransmit one of the
2575      unacked packets instead (with updated ACK/NACK fields, of course).  The
2576      bandwidth cost of an unnecessary retransmission should be minor as
2577      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2578      the probability of a necessary retransmission.
2579    * Adjust the streaming lib cwin algorithm to allow growth after a full
2580      cwin messages if the rtt is trending downwards.  If it is not, use the
2581      existing algorithm.
2582    * Increased the maximum rto size in the streaming lib.
2583    * Load balancing bugfix on end to end messages to distribute across
2584      tunnels more evenly.
2585
25862005-10-22  jrandom
2587    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2588      ./prngseed.rnd (if they exist), and reseeding it with data out of
2589      various crypto operations (unused bits in a DH exchange, intermediary
2590      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2591      The Fortuna implementation under gnu.crypto.prng has been modified to
2592      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2593      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2594      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2595      wrapper around it is, of course, public domain.
2596
25972005-10-20  dust
2598    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2599      always shared. (thx for info Ragnarok)
2600    * Fix crash in Sucker with some bad html.
2601
26022005-10-20  jrandom
2603    * Workaround a bug in GCJ's Calendar implementation
2604    * Propery throw an exception in the streaming lib if we try to write to a
2605      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2606      GregorK!)
2607
26082005-10-19  jrandom
2609    * Ported the snark bittorrent client to I2P such that it is compatible
2610      with i2p-bt and azneti2p.  For usage information, grab an update and run
2611      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2612      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2613    * Don't allow leaseSets expiring too far in the future (thanks postman)
2614
26152005-10-19  jrandom
2616    * Bugfix for the auto-update code to handle different usage patterns
2617    * Decreased the addressbook recheck frequency to once every 12 hours
2618      instead of hourly.
2619    * Handle dynamically changing the HMAC size (again, unless your nym is
2620      toad or jrandom, ignore this ;)
2621    * Cleaned up some synchronization/locking code
2622
26232005-10-17  dust
2624    * Exchange the remaining URL with EepGet in Sucker.
2625    * Allow /TOPIC irc command.
2626
26272005-10-17  jrandom
2628    * Allow an env prop to configure whether we want to use the backwards
2629      compatible (but not standards compliant) HMAC-MD5, or whether we want
2630      to use the not-backwards compatible (but standards compliant) one.  No
2631      one should touch this setting, unless your name is toad or jrandom ;)
2632    * Added some new dummy facades
2633    * Be more aggressive on loading up the router.config before building the
2634      router context
2635    * Added new hooks for apps to deal with previously undefined I2NP message
2636      types without having to modify any code.
2637    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2638
26392005-10-14  jrandom
2640    * More explicit filter for linux/PPC building (thanks anon!)
2641    * Fixed Syndie's Sucker to not explicitly reference something only found
2642      in sun's JVM (thanks cervantes!)
2643    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2644
2645* 2005-10-14  0.6.1.3 released
2646
26472005-10-14  jrandom
2648    * Added a key explaining peers.jsp a bit (thanks tethra!)
2649
26502005-10-13  dust
2651    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2652      then be injected into Syndie with the Syndie CLI.
2653    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2654      RSS/Atom parsing.
2655
26562005-10-13  jrandom
2657    * SSU retransmission choke bugfix (== != !=)
2658    * Include initial transmissions in the retransmission choke, so that
2659      if we are already retransmitting a message, we won't send anything
2660      to that peer other than that message (or ACKs, if necessary)
2661
26622005-10-12  jrandom
2663    * Choke SSU retransmissions to a peer while there is already a
2664      retransmission in flight to them.  This currently lets other initial
2665      transmissions through, since packet loss is often sporadic, but maybe
2666      this should block initial transmissions as well?
2667    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2668    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2669
26702005-10-11  jrandom
2671    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2672      compatible.
2673    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2674      just the blurb before the cut.
2675
26762005-10-11  jrandom
2677    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2678      yet piggybacked).  This is backwards compatible.
2679    * SML parser cleanup in Syndie
2680
26812005-10-10  dust
2682    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2683      outbound IRC commands for anonymity and security purposes, removing all
2684      CTCP messages except ACTION, as well as stripping the hostname from the
2685      USER message (while leaving the nick and 'full name').  The IRC proxy
2686      doesn't use this by default, but you can enable it by creating a new
2687      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2688      to "ircclient" in i2ptunnel.config.
2689
26902005-10-10  jrandom
2691    * I2PTunnel http client config cleanup and stats
2692    * Minor SSU congestion tweaks and stats
2693    * Reduced netDb exploration period
2694
26952005-10-09  jrandom
2696    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2697      java -jar lib/syndie.jar
2698    * Beginnings of the Syndie logging cleanup
2699    * Delete corrupt Syndie posts
2700
27012005-10-09  jrandom
2702    * Now that the streaming lib works reasonably, set the default inactivity
2703      event to send a 0 byte keepalive payload, rather than disconnecting the
2704      stream.  This should cut the irc netsplits and help out with other long
2705      lived streams.  The default timeout is now less than the old timeout as
2706      well, so the keepalive will be sent before earlier builds fire their
2707      fatal timeouts.
2708
27092005-10-08  jrandom
2710    * Use the OS clock for stat timing, since it doesn't jump around (though
2711      still use the NTP'ed clock for display)
2712    * Added new DH stats
2713
2714* 2005-10-07  0.6.1.2 released
2715
27162005-10-07  jrandom
2717    * Include the 1 second bandwidth usage on the console rather than the
2718      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2719      issues.
2720
27212005-10-07  jrandom
2722    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2723      HTTP response quicker, and initialize the streaming lib's cwin more
2724      carefully.
2725    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2726      as a user authorized to use the remote archive funtionality, you can
2727      request remote archives in your address book to be automatically pulled
2728      down by checking the "scheduled?" checkbox.
2729
27302005-10-05  jrandom
2731    * Allow the first few packets in the stream to fill in their IDs during
2732      handshake (thanks cervantes, Complication, et al!)  This should fix at
2733      least some of the intermittent HTTP POST issues.
2734
27352005-10-04  jrandom
2736    * Syndie patch for single user remote archives (thanks nickless_head!)
2737    * Handle an invalid netDb store (thanks Complication!)
2738
27392005-10-04  jrandom
2740    * Further reduction in unnecessary streaming packets.
2741
27422005-10-03  jrandom
2743    * Properly reject unroutable IP addresses *cough*
2744
27452005-10-03  rangarok
2746    * Changed default update delay to twelve hours, and enforced a minimum
2747      delay of one hour.
2748
27492005-10-03  ragnarok
2750    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2751      from selected syndie archives.  To try it out, add
2752      syndie.updateArchives=<comma seperated list of syndie archives> to your
2753      syndie.config.  Archives must be specified as the full url to archive.txt
2754      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2755      for new posts every hour.  This can be modified by setting
2756      syndie.updateDelay=<delay in hours> also in syndie.config.
2757
2758* 2005-10-01  0.6.1.1 released
2759
27602005-09-30  ragnarok
2761    * Implemented conditional get for syndie remote archive imports.
2762
27632005-09-30  jrandom
2764    * Killed three more streaming lib bugs, one of which caused excess packets
2765      to be transmitted (dupacking dupacks), one that was the root of many of
2766      the old hung streams (shrinking highest received), and another that was
2767      releasing data too soon.
2768
27692005-09-30  jrandom
2770    * Only allow autodetection of our IP address if we haven't received an
2771      inbound connection in the last two minutes.
2772    * Increase the default max streaming resends to 8 from 5 (and down from
2773      the earlier 10)
2774
27752005-09-29  ragnarok
2776    * Export petnames from syndie to the router's petname db instead of
2777      userhosts.txt.
2778
27792005-09-29  jrandom
2780    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2781      reseeding - useful on OSes that make it hard to create dot files. 
2782      Thanks Complication (and anon)!
2783    * Fixed the installer version string (thanks Frontier!)
2784    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2785      us invalid IP addresses, verify again that we are not sending invalid IP
2786      addresses, and log an error if it happens. (Thanks Complication, ptm,
2787      and adab!)
2788
2789* 2005-09-29  0.6.1 released
2790
27912005-09-29  jrandom
2792    * Let syndie users modify their metadata.
2793    * Reseed the router on startup if there aren't enough peer references
2794      known locally.  This can be disabled by creating the file .i2pnoreseed
2795      in your home directory, and the existing detection and reseed handling
2796      on the web interface is unchanged.
2797
27982005-09-28  jrandom
2799    * Fix for at least some (all?) of the wrong stream errors in the streaming
2800      lib
2801
28022005-09-27  jrandom
2803    * Properly suggest filenames for attachments in Syndie (thanks all!)
2804    * Fixed the Syndie authorization scheme for single user vs. multiuser
2805
28062005-09-27  jrandom
2807    * I2PTunnel bugfix (thanks Complication!)
2808    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2809      instead of k/cwin)
2810    * Limit the number of inbound SSU sessions being built at once (using
2811      half of the i2np.udp.maxConcurrentEstablish config prop)
2812    * Don't shitlist on a message send failure alone (unless there aren't any
2813      common transports).
2814    * More careful bandwidth bursting
2815
28162005-09-26  jrandom
2817    * Reworded the SSU introductions config section (thanks duck!)
2818    * Force identity content encoding for I2PTunnel httpserver requests
2819      (thanks redzara!)
2820    * Further x-i2p-gzip bugfixes for the end of streams
2821    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2822      I2P's performance at 3KBps is another issue)
2823    * Cleaned up some streaming lib structures
2824
28252005-09-25  jrandom
2826    * Allow reseeding on the console if the netDb knows less than 30 peers,
2827      rather than less than 10 (without internet connectivity, we keep the
2828      last 15 router references)
2829    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2830      more aggressively.
2831    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2832    * Reduced the default maximum number of streaming lib resends of a packet
2833      (10 retransmits is a bit much with a reasonable RTO)
2834
28352005-09-25  Complication
2836    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2837      conflict resolution page if the i2paddresshelper parameter differs from
2838      an existing name to destination mapping.
2839
28402005-09-25  jrandom
2841    * Fix a long standing streaming lib bug (in the inactivity detection code)
2842    * Improved handling of initial streaming lib packet retransmissions to
2843      kill the "lost first packet" bug (where a page shows up with the first
2844      few KB missing)
2845    * Add support for initial window sizes greater than 1 - useful for
2846      eepsites to transmit e.g. 4 packets full of data along with the initial
2847      ACK, thereby cutting down on the rtt latency.  The congestion window
2848      size can and does still shrink down to 1 packet though.
2849    * Adjusted the streaming lib retransmission calculation algorithm to be
2850      more TCP-like.
2851
28522005-09-21  redzara
2853    * Use ISO-8859-1 for the susidns xml
2854
28552005-09-21  susi
2856    * Bugfix in susidns for deleting entries
2857
28582005-09-21  jrandom
2859    * Add support for HTTP POST to EepGet
2860    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2861      put in that URL.
2862
28632005-09-18  jrandom
2864    * Added support for pure 64bit linux with jbigi and the java service
2865      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2866      et al for help testing!
2867    * UI cleanup in Syndie (thanks gloin and bar!)
2868
28692005-09-18  Ragnarok
2870    * Made MetaNamingService the default naming service.
2871
28722005-09-17  Ragnarok
2873    * Implemented a naming service using Syndie's petname db.  It's not enabled
2874      by default, but you can try it out by setting
2875      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2876      router.config.
2877    * Implemented a meta naming service that will first lookup names in the
2878      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2879      naming services are checked and in which order is specified by
2880      i2p.nameservicelist.  This will probably become the default naming service
2881      so please help test it out by setting
2882      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2883     
2884* 2005-09-17  0.6.0.6 released
2885
28862005-09-17  jrandom
2887    * Clean up syndie a bit more and bundle a default introductory post with
2888      both new installs and updates.
2889    * Typo fixes on the console (thanks bar!)
2890
28912005-09-17  jrandom
2892    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2893      steady state rate, plus a new limit on how fast we transfer when
2894      bursting.  This is different from the old "burst as fast as possible
2895      until we're out of tokens" policy, and should help those with congested
2896      networks.  See /config.jsp to manage this rate.
2897    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2898      old posts just didn't show up).
2899    * Log properly in EepPost
2900
29012005-09-17  jrandom
2902    * Added the natively compiled jbigi and patched java service wrapper for
2903      OS X.  Thanks Bill Dorsey for letting me use your machine!
2904    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2905      don't bundle the binutils necessary (and there'd be a naming conflict
2906      if we did).
2907    * Added 'single user' functionality to syndie - if the single user
2908      checkbox on the admin page is checked, all users are allowed to control
2909      the instance and sync up with remote syndie nodes.
2910    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2911      debugged.
2912
29132005-09-16  jrandom
2914    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
2915      you have i2np.udp.allowLocal=true defined - useful for private nets)
2916
29172005-09-16  jrandom
2918    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
2919      (just specify the spoofed host as an empty string), allowing them to
2920      honor x-i2p-gzip encoding.
2921    * Let windows users build the exes too (thanks bar and redzara!)
2922    * Allow I2PTunnel httpserver operators to disable gzip compression on
2923      individual tunnels with the i2ptunnel.gzip=false client option
2924      (good idea susi!)
2925
29262005-09-16  jrandom
2927    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
2928    * Added runplain.sh for *nix/osx users having problems using the java
2929      service wrapper (called from the install dir as: sh runplain.sh)
2930    * Bundle susidns and syndie, with links on the top nav
2931    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
2932      content-encoding (if offered), reducing the payload size before it
2933      reaches the streaming lib.  The existing compression is at the i2cp
2934      level, so we've been packetizing 4KB of uncompressed data and then
2935      compressing those messages, rather than compressing and then packetizing
2936      4KB of compressed data.  This should reduce the number of round trips
2937      to fetch web pages substantially.
2938    * Adjust the startup and timing of the addressbook so that susidns always
2939      has config to work off, and expose a method for susidns to tell it to
2940      reload its config and rerun.
2941
29422005-09-15  jrandom
2943    * Error handling for failed intro packets (thanks red.hand!)
2944    * More carefully verify intro addresses
2945
29462005-09-13  jrandom
2947    * More careful error handling with introductions (thanks dust!)
2948    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
2949    * Hide the shitlist on the summary so it doesn't confuse new users.
2950
29512005-09-12  comwiz
2952    * Migrated the router tests to junit
2953
29542005-09-12  jrandom
2955    * Removed guaranteed delivery mode entirely (so existing i2phex clients
2956      using it can get the benefits of mode=best_effort).  Guaranteed delivery
2957      is offered at the streaming lib level.
2958    * Improve the peer selection code for peer testing, as everyone now
2959      supports tests.
2960    * Give the watchdog its fangs - if it detects obscene job lag or if
2961      clients have been unable to get a leaseSet for more than 5 minutes,
2962      restart the router.  This was disabled a year ago due to spurious
2963      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
2964      cause of the spurious restarts should be gone.
2965
29662005-09-12  jrandom
2967    * Bugfix for skewed store which could kill a UDP thread (causing complete
2968      comm failure and eventual OOM)
2969
29702005-09-12  jrandom
2971    * More aggressively publish updated routerInfo.
2972    * Expose the flag to force SSU introductions on the router console
2973    * Don't give people the option to disable SNTP time sync, at least not
2974      through the router console, because there is no reason to disable it.
2975      No, not even if your OS is "ntp synced", because chances are, its not.
2976
29772005-09-10  jrandom
2978    * Test the router's reachability earlier and more aggressively
2979    * Use the low level bandwidth limiter's rates for the router console, and
2980      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
2981      the logger config, keep track of the 1 second transfer rates as the stat
2982      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
2983      behavior.
2984
29852005-09-09  jrandom
2986    * Added preliminary support for NAT hole punching through SSU introducers
2987    * Honor peer test results from peers that we have an SSU session with if
2988      those sessions are idle for 3 minutes or more.
2989
29902005-09-09  cervantes
2991    * New build due to change in build number :P (thanks ugha!)
2992
29932005-09-07  BarkerJr
2994    * HTML cleanup for the router console (thanks!)
2995
29962005-09-07  jrandom
2997    * Lay the foundation for 'client routers' - the ability for peers to opt
2998      out of participating in tunnels entirely due to firewall/NAT issues. 
2999      Individual routers have control over where those peers are used in
3000      tunnels - in outbound or inbound, exploratory or client tunnels, or
3001      none at all.  The defaults with this build are to simply act as before -
3002      placing everyone as potential participants in any tunnel.
3003    * Another part of the foundation includes the option for netDb
3004      participants to refuse to answer queries regarding peers who are marked
3005      as unreachable, though this too is disabled by default (meaning the
3006      routerInfo is retrievable from the netDb).
3007
30082005-09-05  jrandom
3009    * Expose the HTTP headers to EepGet status listeners
3010    * Handle DSA key failures properly (if the signature is not invertable, it
3011      is obviously invalid)
3012
30132005-09-04  jrandom
3014    * Don't persist peer profiles until we are shutting down, as the
3015      persistence process gobbles RAM and wall time.
3016    * Bugfix to allow you to check/uncheck the sharedClient setting on the
3017      I2PTunnel web interface (thanks BarkerJr!)
3018    * Be more careful when expiring a failed tunnel message fragment so we
3019      don't drop the data while attempting to read it.
3020
3021* 2005-09-02  0.6.0.5 released
3022
30232005-09-02  jrandom
3024    * Don't refuse to send a netDb store if the targetted peer has failed a
3025      bit (the value was an arbitrary amount).
3026    * Logging changes
3027
3028* 2005-09-01  0.6.0.4 released
3029
30302005-09-01  jrandom
3031    * Don't send out a netDb store of a router if it is more than a few hours
3032      old, even if someone asked us for it.
3033
30342005-08-31  jrandom
3035    * Don't publish leaseSets to the netDb if they will never be looked for -
3036      namely, if they are for destinations that only establish outbound
3037      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
3038      modified to tell the router that it doesn't need to publish their
3039      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
3040      to 'true').
3041    * Don't publish the top 10 peer rankings of each router in the netdb, as
3042      it isn't being watched right now.
3043
30442005-08-29  jrandom
3045    * Added the new test Floodfill netDb
3046
30472005-08-27  jrandom
3048    * Minor logging and optimization tweaks in the router and SDK
3049    * Use ISO-8859-1 in the XML files (thanks redzara!)
3050    * The consolePassword config property can now be used to bypass the router
3051      console's nonce checking, allowing CLI restarts
3052
30532005-08-24  jrandom
3054    * Catch errors with corrupt tunnel messages more gracefully (no need to
3055      kill the thread and cause an OOM...)
3056    * Don't skip shitlisted peers for netDb store messages, as they aren't
3057      necessarily shitlisted by other people (though they probably are).
3058    * Adjust the netDb store per-peer timeout based on each particular peer's
3059      profile (timeout = 4x their average netDb store response time)   
3060    * Don't republish leaseSets to *failed* peers - send them to peers who
3061      replied but just didn't know the value.
3062    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3063      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3064      sent entirely within the first streaming packet anyway, so this won't be
3065      a problem.
3066    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3067      prevent any clients from accessing the server if the handlers get
3068      blocked by the streaming lib or other issues.
3069    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3070      Unknown.
3071
30722005-08-23  jrandom
3073    * Removed the concept of "no bandwidth limit" - if none is specified, its
3074      16KBps in/out.
3075    * Include ack packets in the per-peer cwin throttle (they were part of the
3076      bandwidth limit though).
3077    * Tweak the SSU cwin operation to get more accurrate estimates under
3078      congestions.
3079    * SSU improvements to resend more efficiently.
3080    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3081
3082* 2005-08-21  0.6.0.3 released
3083
30842005-08-21  jrandom
3085    * If we already have an established SSU session with the Charlie helping
3086      test us, cancel the test with the status of "unknown".
3087
30882005-08-17  jrandom
3089    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3090      viability before agreeing to Alice's request.  This doesn't work with
3091      older SSU peer test builds, but is backwards compatible (older nodes
3092      won't ask newer nodes to participate in tests, and newer nodes won't
3093      ask older nodes to either).
3094
30952005-08-12  jrandom
3096    * Keep detailed stats on the peer testing, publishing the results in the
3097      netDb.
3098    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3099      status in a while.
3100    * Make sure to avoid shitlisted peers for peer testing.
3101    * When we get an unknown result to a peer test, try again soon afterwards.
3102    * When a peer tells us that our address is different from what we expect,
3103      if we've done a recent peer test with a result of OK, fire off a peer
3104      test to make sure our IP/port is still valid.  If our test is old or the
3105      result was not OK, accept their suggestion, but queue up a peer test for
3106      later.
3107    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3108      we monitor netDb store progress (to clear up the high netDb.storePeers
3109      stat)
3110
31112005-08-10  jrandom
3112    * Deployed the peer testing implementation to be run every few minutes on
3113      each router, as well as any time the user requests a test manually.  The
3114      tests do not reconfigure the ports at the moment, merely determine under
3115      what conditions the local router is reachable.  The status shown in the
3116      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3117      differently for different peers, "ERR-Reject" if the router cannot
3118      receive unsolicited packets or the peer helping test could not find a 
3119      collaborator, "Unknown" if the test has not been run or the test
3120      participants were unreachable, or "OK" if the router can receive
3121      unsolicited connections and those connections use the same IP and port.
3122
3123* 2005-08-08  0.6.0.2 released
3124
31252005-08-08  jrandom
3126    * Add a configurable throttle to the number of concurrent outbound SSU
3127      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3128      may help those with slow connections to get integrated at the start.
3129    * Further fixlets to the streaming lib
3130
31312005-08-07  Complication
3132    * Display the average clock skew for both SSU and TCP connections
3133
31342005-08-07  jrandom
3135    * Fixed the long standing streaming lib bug where we could lose the first
3136      packet on retransmission.
3137    * Avoid an NPE when a message expires on the SSU queue.
3138    * Adjust the streaming lib's window growth factor with an additional
3139      Vegas-esque congestion detection algorithm.
3140    * Removed an unnecessary SSU session drop
3141    * Reduced the MTU (until we get a working PMTU lib)
3142    * Deferr tunnel acceptance until we know how to reach the next hop,
3143      rejecting it if we can't find them in time.
3144    * If our netDb store of our leaseSet fails, give it a few seconds before
3145      republishing.
3146
3147* 2005-08-03  0.6.0.1 released
3148
31492005-08-03  jrandom
3150    * Backed out an inadvertant change to the netDb store redundancy factor.
3151    * Verify tunnel participant caching.
3152    * Logging cleanup
3153
31542005-08-01  duck
3155    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3156
31572005-08-01  duck
3158    * Fix an addressbook NPE when a new hostname from the master addressbook
3159      didn't exist in the router addressbook.
3160    * Fix an addressbook bug which caused subscriptions not to be parsed at
3161      all. (Oops!)
3162
31632005-07-31  jrandom
3164    * Adjust the netDb search and store per peer timeouts to match the average
3165      measured per peer success times, rather than huge fixed values.
3166    * Optimized and reverified the netDb peer selection / retrieval process
3167      within the kbuckets.
3168    * Drop TCP connections that don't have any useful activity in 10 minutes.
3169    * If i2np.udp.fixedPort=true, never change the externally published port,
3170      even if we are autodetecting the IP address.
3171
3172* 2005-07-27  0.6 released
3173
31742005-07-27  jrandom
3175    * Enabled SSU as the default top priority transport, adjusting the
3176      config.jsp page accordingly.
3177    * Add verification fields to the SSU and TCP connection negotiation (not
3178      compatible with previous builds)
3179    * Enable the backwards incompatible tunnel crypto change as documented in
3180      tunnel-alt.html (have each hop encrypt the received IV before using it,
3181      then encrypt it again before sending it on)
3182    * Disable the I2CP encryption, leaving in place the end to end garlic
3183      encryption (another backwards incompatible change)
3184    * Adjust the protocol versions on the TCP and SSU transports so that they
3185      won't talk to older routers.
3186    * Fix up the config stats handling again
3187    * Fix a rare off-by-one in the SSU fragmentation
3188    * Reduce some unnecessary netDb resending by inluding the peers queried
3189      successfully in the store redundancy count.
3190
31912005-07-22  jrandom
3192    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3193      I2PTunnelServer)
3194    * Minor memory churn reduction in I2CP
3195    * Small stats update
3196
31972005-07-21  jrandom
3198    * Fix in the SDK for a bug which would manifest itself as misrouted
3199      streaming packets when a destination has many concurrent streaming
3200      connections (thanks duck!)
3201    * No more "Graceful shutdown in -18140121441141s"
3202
32032005-07-20  jrandom
3204    * Allow the user to specify an external port # for SSU even if the external
3205      host isn't specified (thanks duck!)
3206
32072005-07-19  jrandom
3208    * Further preparation for removing I2CP crypto
3209    * Added some validation to the DH key agreement (thanks $anon)
3210    * Validate tunnel data message expirations (though not really a problem,
3211      since tunnels expire)
3212    * Minor PRNG threading cleanup
3213
32142005-07-15  cervantes
3215    * Added workaround for an odd win32 bug in the stats configuration console
3216      page which meant only the first checkbox selection was saved.
3217
32182005-07-15  Romster
3219    * Added per group selection toggles in the stats configuration console
3220      page.
3221
32222005-07-13  jrandom
3223    * Fixed a recently injected bug in the multitransport bidding which had
3224      allowed an essentially arbitrary choice of transports, rather than the
3225      properly ordered choice.
3226
32272005-07-13  jrandom
3228    * Fixed a long standing bug where we weren't properly comparing session
3229      tags but instead largely depending upon comparing their hashCode,
3230      causing intermittent decryption errors.
3231
32322005-07-12  jrandom
3233    * Add some data duplication to avoid a recently injected concurrency
3234      problem in the session tag manager (thanks redzara and romster).
3235
32362005-07-11  jrandom
3237    * Reduced the growth factor on the slow start and congestion avoidance for
3238      the streaming lib.
3239    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3240      handlers, rather than launching off new threads which then immediately
3241      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3242    * Don't persist session keys / session tags (not worth it, for now)
3243    * Added some detection and handling code for duplicate session tags being
3244      delivered (root cause still not addressed)
3245    * Make the PRNG's buffer size configurable (via the config property
3246      "i2p.prng.totalBufferSizeKB=4096")
3247    * Disable SSU flooding by default (duh)
3248    * Updates to the StreamSink apps for better throttling tests.
3249
32502005-07-05  jrandom
3251    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3252      buffer, rather than the underlying PRNG's (likely small) one, which in
3253      turn reduces the frequency of recalcing.
3254    * More tuning to reduce temporary allocation churn
3255
32562005-07-04  jrandom
3257    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3258      rather than the IV by itself, preventing an attack that would let
3259      colluding internal adversaries tag a message to determine that they are
3260      in the same tunnel.  Thanks dvorak for the catch!
3261    * Drop long inactive profiles on startup and shutdown
3262    * /configstats.jsp: web interface to pick what stats to log
3263    * Deliver more session tags to account for wider window sizes
3264    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3265    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3266    * UrlLauncher: adjust the browser selection order
3267    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3268    * StreamSinkClient: add support for sending an unlimited amount of data
3269    * Migrate the tests out of the default build jars
3270
32712005-06-22  Comwiz
3272    * Migrate the core tests to junit
3273
32742005-05-25  duck
3275    * Fixed PRNG bug (bugzilla #107)
3276
32772005-05-01  jrandom
3278    * Added a substantial optimization to the AES engine by caching the
3279      prepared session keys (duh).
3280
32812005-05-01  jrandom
3282    * Cleaned up the peers page a bit more.
3283
32842005-04-30  jrandom
3285    * Added a small new page to the web console (/peers.jsp) which contains
3286      the peer connection information.  This will be cleaned up a lot more
3287      before 0.6 is out, but its a start.
3288
32892005-04-30  jrandom
3290    * Reduced some SimpleTimer churn
3291
32922005-04-29  jrandom
3293    * Reduce the peer profile stat coallesce overhead by inlining it with the
3294      reorganize.
3295    * Limit each transport to at most one address (any transport that requires
3296      multiple entry points can include those alternatives in the address).
3297
32982005-04-28  jrandom
3299    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3300    * Add back the code to handle bids from multiple transports (though there
3301      is still only one transport enabled by default)
3302    * Adjust the router's queueing of outbound client messages when under
3303      heavy load by running the preparatory job in the client's I2CP handler
3304      thread, thereby blocking additional outbound messages when the router is
3305      hosed.
3306    * No need to validate or persist a netDb entry if we already have it
3307
33082005-04-25  smeghead
3309    * Added button to router console for manual update checks.
3310    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3311      every time the form was submitted even if it hadn't changed.
3312
33132005-04-24  jrandom
3314    * Added a pool of PRNGs using a different synchronization technique,
3315      hopefully sufficient to work around IBM's PRNG bugs until we get our
3316      own Fortuna.
3317    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3318      size bound the not-yet-ready messages to the peer, not the unacked
3319      message count (not sure yet whether this is worthwile).
3320    * Many additions to the messageHistory log.
3321    * Handle out of order tunnel fragment delivery (not an issue on the live
3322      net with TCP, but critical with UDP).
3323
3324* 2005-04-20  0.5.0.7 released
3325
33262005-04-20  jrandom
3327    * In the SDK, we don't actually need to block when we're sending a message
3328      as BestEffort (and these days, we're always sending BestEffort).
3329    * Pass out client messages in fewer (larger) steps.
3330    * Have the InNetMessagePool short circuit dispatch requests.
3331    * Have the message validator take into account expiration to cut down on
3332      false positives at high transfer rates.
3333    * Allow configuration of the probabalistic window size growth rate in the
3334      streaming lib's slow start and congestion avoidance phases, and default
3335      them to a more conservative value (2), rather than the previous value
3336      (1).
3337    * Reduce the ack delay in the streaming lib to 500ms
3338    * Honor choke requests in the streaming lib (only affects those getting
3339      insanely high transfer rates)
3340    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3341      I2PTunnel client page (thanks maestro^!)
3342
33432005-04-17  sirup
3344    * Added the possibility for i2ptunnel client and httpclient instances to
3345      have their own i2p session (and hence, destination and tunnels).  By
3346      default, tunnels are shared, but that can be changed on the web
3347      interface or with the sharedClient config option in i2ptunnel.config.
3348
33492005-04-17  jrandom
3350    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3351      this?  If not, I want to drop it (lots of tiny details with lots of
3352      duplicated semantics).
3353
33542005-04-17  zzz
3355    * Added new user-editable eepproxy error page templates.
3356
33572005-04-17  jrandom
3358    * Revamp the tunnel building throttles, fixing a situation where the
3359      rebuild may not recover, and defaulting it to unthrottled (users with
3360      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3361      advanced router config)
3362
33632005-04-16  jrandom
3364    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3365
33662005-04-12  jrandom
3367    * Make sure we don't get cached updates (thanks smeghead!)
3368    * Clear out the callback for the TestJob after it passes (only affects the
3369      job timing accounting)
3370
33712005-04-08  smeghead
3372    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3373
33742005-04-08  smeghead
3375    * Security improvements to TrustedUpdate: signing and verification of the
3376      version string along with the data payload for signed update files
3377      (consequently the positions of the DSA signature and version string fields
3378      have been swapped in the spec for the update file's header); router will
3379      no longer perform a trusted update if the signed update's version is lower
3380      than or equal to the currently running router's version.
3381    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3382    * Extended TrustedUpdate public API for use by third party applications.
3383
3384* 2005-04-06  0.5.0.6 released
3385
33862005-04-05  jrandom
3387    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3388      client or httpclient tunnel.
3389    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3390
33912005-04-05  jrandom
3392    * After a successfull netDb search for a leaseSet, republish it to all of
3393      the peers we have tried so far who did not give us the key (up to 10),
3394      rather than the old K closest (which may include peers who had given us
3395      the key)
3396    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3397      republish it every 5 minutes, republish it every 3.  In addition, always
3398      republish as soon as the leaseSet changes (duh^2).
3399    * Minor fix for oddball startup race (thanks travis_bickle!)
3400    * Minor AES update to allow in-place decryption.
3401
34022005-04-03  jrandom
3403    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3404      feeding the NewsFetcher)
3405
34062005-04-01  jrandom
3407    * Allow editing I2PTunnel server instances with five digit ports
3408      (thanks nickless_head!)
3409    * More NewsFetcher debugging for reported weirdness
3410
34112005-04-01  jrandom
3412    * Fix to check for missing news file (thanks smeghead!)
3413    * Added destination display CLI:
3414      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3415    * Added destination display to the web interface (thanks pnspns)
3416    * Installed CIA backdoor
3417
3418* 2005-03-29  0.5.0.5 released
3419
34202005-03-29  jrandom
3421    * Decreased the initial RTT estimate to 10s to allow more retries.
3422    * Increased the default netDb store replication factor from 2 to 6 to take
3423      into consideration tunnel failures.
3424    * Address some statistical anonymity attacks against the netDb that could
3425      be mounted by an active internal adversary by only answering lookups for
3426      leaseSets we received through an unsolicited store.
3427    * Don't throttle lookup responses (we throttle enough elsewhere)
3428    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3429      the file (thanks nickster!)
3430    * Updated the I2PTunnel HTML (thanks postman!)
3431    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3432      which, if matched against the router.config "i2ptunnel.passphrase" value,
3433      skips the nonce check.  If the config prop doesn't exist or is blank, no
3434      passphrase is accepted.
3435    * Implemented HMAC-SHA256.
3436    * Enable the tunnel batching with a 500ms delay by default
3437    * Dropped compatability with 0.5.0.3 and earlier releases
3438
34392005-03-26  jrandom
3440    * Added some error handling and fairly safe to cache data to the streaming
3441      lib (good call Tom!)
3442
34432005-03-25  jrandom
3444    * Fixed up building dependencies for the routerconsole on some more
3445      aggressive compilers (thanks polecat!)
3446
3447* 2005-03-24  0.5.0.4 released
3448
34492005-03-23  jrandom
3450    * Added more intelligent version checking in news.xml, in case we have a
3451      version newer than the one specified.
3452
34532005-03-23  jrandom
3454    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3455      cvsweb.cgi doesn't puke on us.
3456
34572005-03-23  Connelly
3458    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3459      stream send data to not be sent if STREAM CLOSE is issued too fast.
3460
34612005-03-23  jrandom
3462    * Implemented the news fetch / update policy code, as configurated on
3463      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3464      doesn't exist yet, on startup).  No action is taken however, though if
3465      the news.xml specifies that a new release is available, an option to
3466      update will be shown on the router console.
3467    * New initialNews.xml delivered with new installs, and moved news.xml out
3468      of the i2pwww module and into the i2p module so that we can bundle it
3469      within each update.
3470
34712005-03-23  jrandom
3472    * New /configupdate.jsp page for controlling the update / notification
3473      process, as well as various minor related updates.  Note that not all
3474      options are exposed yet, and the update detection code isn't in place
3475      in this commit - it currently says there is always an update available.
3476    * New EepGet component for reliable downloading, with a CLI exposed in
3477      java -cp lib/i2p.jar net.i2p.util.EepGet url
3478    * Added a default signing key to the TrustedUpdate component to be used
3479      for verifying updates.  This signing key can be authenticated via
3480      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3481    * New public domain SHA1 implementation for the DSA code so that we can
3482      handle signing streams of arbitrary size without excess memory usage
3483      (thanks P.Verdy!)
3484    * Added some helpers to the TrustedUpdate to work off streams and to offer
3485      a minimal CLI:
3486          TrustedUpdate keygen pubKeyFile privKeyFile
3487          TrustedUpdate sign origFile signedFile privKeyFile
3488          TrustedUpdate verify signedFile
3489
34902005-03-22  smeghead
3491    * New TrustedUpdate component for signing/verifying files with a DSA
3492      signature.
3493
34942005-03-21  jrandom
3495    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3496      in a single message properly (rather than release the buffer into the
3497      cache after processing the first one) (duh!)
3498    * Added the batching preprocessor which will bundle together multiple
3499      small messages inside a single tunnel message by delaying their delivery
3500      up to .5s, or whenever the pending data will fill a full message,
3501      whichever comes first.  This is disabled at the moment, since without the
3502      above bugfix widely deployed, lots and lots of messages would fail.
3503    * Within each tunnel pool, stick with a randomly selected peer for up to
3504      .5s before randomizing and selecting again, instead of randomizing the
3505      pool each time a tunnel is needed. 
3506
3507* 2005-03-18  0.5.0.3 released
3508
35092005-03-18  jrandom
3510    * Minor tweak to the timestamper to help reduce small skews
3511    * Adjust the stats published to include only the relevent ones
3512    * Only show the currently used speed calculation on the profile page
3513    * Allow the full max # resends to be sent, rather than piggybacking the
3514      RESET packet along side the final resend (duh)
3515    * Add irc.postman.i2p to the default list of IRC servers for new installs
3516    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3517      backwards compatability for users running 0.5.0.2.
3518
35192005-03-18  jrandom
3520    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3521    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3522
35232005-03-17  jrandom
3524    * Update the old speed calculator and associated profile data points to
3525      use a non-tiered moving average of the tunnel test time, avoiding the
3526      freshness issues of the old tiered speed stats.
3527    * Explicitly synchronize all of the methods on the PRNG, rather than just
3528      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3529      needs all of them synchronized).
3530    * Properly use the tunnel tests as part of the profile stats.
3531    * Don't flood the jobqueue with sequential persist profile tasks, but
3532      instead, inject a brief scheduling delay between them.
3533    * Reduce the TCP connection establishment timeout to 20s (which is still
3534      absurdly excessive)
3535    * Reduced the max resend delay to 30s so we can get some resends in when
3536      dealing with client apps that hang up early (e.g. wget)
3537    * Added more alternative socketManager factories (good call aum!)
3538
35392005-03-16  jrandom
3540    * Adjust the old speed calculator to include end to end RTT data in its
3541      estimates, and use that as the primary speed calculator again.
3542    * Use the mean of the high capacity speeds to determine the fast
3543      threshold, rather than the median.  Perhaps we should use the mean of
3544      all active non-failing peers?
3545    * Updated the profile page to sort by tier, then alphabetically.
3546    * Added some alternative socketManager factories (good call aum!)
3547
35482005-03-14  jrandom
3549    * New strict speed calculator that goes off the actual number of messages
3550      verifiably sent through the peer by way of tunnels.  Initially, this only
3551      contains the successful message count on inbound tunnels, but may be
3552      augmented later to include verified outbound messages, peers queried in
3553      the netDb, etc.  The speed calculation decays quickly, but should give
3554      a better differential than the previous stat (both values are shown on
3555      the /profiles.jsp page)
3556
35572005-03-11  jrandom
3558    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3559      minimum (increased on resends as before, of course).
3560    * Always prod the clock update listeners, even if just to tell them that
3561      the time hasn't changed much.
3562    * Added support for explicit peer selection for individual tunnel pools,
3563      which will be useful in debugging but not recommended for use by normal
3564      end users.
3565    * More aggressively search for the next hop's routerInfo on tunnel join.
3566    * Give messages received via inbound tunnels that are bound to remote
3567      locations sufficient time (taking into account clock skew).
3568    * Give alternate direct send messages sufficient time (10s min, not 5s)
3569    * Always give the end to end data message the explicit timeout (though the
3570      old default was sufficient before)
3571    * No need to give end to end messages an insane expiration (+2m), as we
3572      are already handling skew on the receiving side.
3573    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3574      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3575    * Properly keep the sendBps stat
3576    * When running the router with router.keepHistory=true, log more data to
3577      messageHistory.txt
3578    * Logging updates
3579    * Minor formatting updates
3580
35812005-03-08  jrandom
3582    * More aggressively adjust the clock
3583
35842005-03-07  jrandom
3585    * Fix the HTTP response header filter to allow multiple headers with the
3586      same name (thanks duck and spotteri!)
3587
3588* 2005-03-06  0.5.0.2 released
3589
35902005-03-06  jrandom
3591    * Allow the I2PTunnel web interface to select streaming lib options for
3592      individual client tunnels, rather than sharing them across all of them,
3593      as we do with the session options.  This way people can (and should) set
3594      the irc proxy to interactive and the eepproxy to bulk.
3595    * Added a startRouter.sh script to new installs which simply calls
3596      "sh i2prouter start".  This should make it clear how people should start
3597      I2P.
3598    * Properly expand the HTTP response header buffer (thanks shendaras!)
3599
36002005-03-04  jrandom
3601    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3602      so that broken (/malicious) webservers can't allow persistent
3603      connections.  All HTTP compliant browsers should now always close the
3604      socket.
3605    * Enabled the GZIPInputStream's cache (they weren't cached before)
3606    * Make sure our first send is always a SYN (duh)
3607    * Workaround for some buggy compilers
3608
36092005-03-03  jrandom
3610    * Loop while starting up the I2PTunnel instances, in case the I2CP
3611      listener isn't up yet (thanks detonate!)
3612    * Implement custom reusable GZIP streams to both reduce memory churn
3613      and prevent the exposure of data in the standard GZIP header (creation
3614      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3615      though has only been tested within the confines of I2P's compression use
3616      (DataHelper.[de]compress).
3617    * Preemptively support the next protocol version, so that after the 0.5.0.2
3618      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3619
36202005-03-02  jrandom
3621    * Fix one substantial OOM cause (session tag manager was only dropping
3622      tags once the critical limit was met, rather than honoring their
3623      expiration) (duh)
3624    * Lots of small memory fixes
3625    * Double the allowable concurrent outstanding tunnel build tasks (20)
3626
36272005-03-01  jrandom
3628    * Really disable the streaming lib packet caching
3629    * Synchronized a message handling point in the SDK (even though its use is
3630      already essentially single threaded, its better to play it safe)
3631    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3632      existing one (duh)
3633    * Throttle the number of concurrent pending tunnel builds across all
3634      pools, in addition to simply throttling the number of new requests per
3635      minute for each pool individually.  This should avoid the cascading
3636      failure when tunnel builds take too long, as no new builds will be
3637      created until the previous ones are handled.
3638    * Factored out and extended the DataHelper's unit tests for dealing with
3639      long and date formatting.
3640    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3641      alone doesn't address the bug where jetty asks for authentication too
3642      much.  (thanks orion!)
3643    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3644      them to the filesystem.
3645
36462005-02-27  jrandom
3647    * Don't rerequest leaseSets if there are already pending requests
3648    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3649      temporary disabled the streaming lib packet caching.
3650    * Reduced the resend RTT penalty to 10s
3651
36522005-02-26  jrandom
3653    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3654
36552005-02-26  jrandom
3656    * Further streaming lib caching improvements
3657    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3658      increase the RTT on resends.
3659    * Lower the default message size to 4KB from 16KB to further reduce the
3660      chance of failed fragmentation.
3661    * Extend tunnel rebuild throttling to include fallback rebuilds
3662    * If there are less than 20 routers known, don't drop the last 20 (to help
3663      avoid dropping all peers under catastrophic failures)
3664    * New stats for end to end messages - "client.leaseSetFoundLocally",
3665      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3666
36672005-02-24  jrandom
3668    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3669      overload under catastrophic failures (thanks Tracker and cervantes!)
3670    * Block the router startup process until we've initialized the clock
3671
36722005-02-24  jrandom
3673    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3674      data in the streaming lib.
3675    * Fixed a streaming lib bug where the connection initiator would fail the
3676      stream if the ACK to their SYN was lost.
3677
36782005-02-23  jrandom
3679    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3680      get stale tunnel pools, don't you think?
3681
3682* 2005-02-23  0.5.0.1 released
3683
36842005-02-22  jrandom
3685    * Reworked the tunnel (re)building process to remove the tokens and
3686      provide cleaner controls on the tunnels built.
3687    * Fixed situations where the timestamper wanted to test more servers than
3688      were provided (thanks Tracker!)
3689    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3690      (thanks Tracker!)
3691
36922005-02-22  jrandom
3693    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3694      try to automatically reconnect on accept()/connect(..)).
3695    * Loop check for expired lease republishing (just in case)
3696
36972005-02-22  jrandom
3698    * Adjusted (and fixed...) the timestamper change detection
3699    * Deal with a rare reordering bug at the beginning of a stream (so we
3700      don't drop it unnecessarily)
3701    * Cleaned up some dropped message handling in the router
3702    * Reduced job queue churn when dealing with a large number of tunnels by
3703      sharing an expiration job
3704    * Keep a separate list of the most recent CRIT messages (shown on the
3705      logs.jsp).  This way they don't get buried among any other messages.
3706    * For clarity, display the tunnel variance config as "Randomization" on
3707      the web console.
3708    * If lease republishing fails (boo! hiss!) try it again
3709    * Actually fix the negative jobLag in the right place (this time)
3710    * Allow reseeding when there are less than 10 known peer references
3711    * Lots of logging updates.
3712
37132005-02-20  jrandom
3714    * Allow the streaming lib resend frequency to drop down to 20s as the
3715      minimum, so that up to 2 retries can get sent on an http request.
3716    * Add further limits to failsafe tunnels.
3717    * Keep exploratory and client tunnel testing and building stats separate.
3718    * Only use the 60s period for throttling tunnel requests due to transient
3719      network overload.
3720    * Rebuild tunnels earlier (1-3m before expiration, by default)
3721    * Cache the next hop's routerInfo for participating tunnels so that the
3722      tunnel participation doesn't depend on the netDb.
3723    * Fixed a long standing bug in the streaming lib where we wouldn't always
3724      unchoke messages when the window size grows.
3725    * Make sure the window size never reaches 0 (duh)
3726
37272005-02-20  jrandom
3728    * Only build failsafe tunnels if we need them
3729    * Properly implement the selectNotFailingPeers so that we get a random
3730      selection of peers, rather than using the strictOrdering (thanks dm!)
3731    * Don't include too many "don't tell me about" peer references in the
3732      lookup message - only send the 10 peer references closest to the target.
3733
37342005-02-19  jrandom
3735    * Only build new extra tunnels on failure if we don't have enough
3736    * Fix a fencepost in the tunnel building so that e.g. a variance of
3737      2 means +/- 2, not +/- 1 (thanks dm!)
3738    * Avoid an NPE on client disconnect
3739    * Never select a shitlisted peer to participate in a tunnel
3740    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3741    * Keep session tags around for a little longer, just in case (grr)
3742    * Cleaned up some closing event issues on the streaming lib
3743    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3744      so that 0.4.* users will need to do a clean install, but we don't need
3745      to shove an additional 2MB in each update to those already on 0.5.
3746    * Imported the susimail css (oops, thanks susi!)
3747
3748* 2005-02-18  0.5 released
3749
37502005-02-17  jrandom
3751    * If the clock is adjusted during a job run, don't act as if the job took
3752      negative time.
3753
37542005-02-17  jrandom
3755    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3756
37572005-02-17  jrandom
3758    * Fixed the braindead tunnel testing logic
3759    * If a large number of tunnels are failing (within the last 5-10 minutes)
3760      and the current tunnel pool's configuration allows it, randomly build a
3761      zero hop tunnel to replace failed tunnels.
3762    * Enable postman's POP3 and SMTP tunnels by default
3763
37642005-02-16  jrandom
3765    * Added some error handling when the number of session tags exceeds the
3766      realistic capacity, dropping a random chunk of received tag sets and
3767      conducting some minor analysis of the remaining ones.  This is a part
3768      of a pretty serious error condition, and logs as CRIT (if/when people
3769      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3770      puts in the wrapper.log or /logs.jsp)
3771    * Update the addressbook to only write to the published hosts location
3772      if the addressbook's config contains "should_publish=true" (by default,
3773      it contains "should_publish=false")
3774
37752005-02-16  jrandom
3776    * (Merged the 0.5-pre branch back into CVS HEAD)
3777    * Replaced the old tunnel routing crypto with the one specified in
3778      router/doc/tunnel-alt.html, including updates to the web console to view
3779      and tweak it. 
3780    * Provide the means for routers to reject tunnel requests with a wider
3781      range of responses:
3782        probabalistic rejection, due to approaching overload
3783        transient rejection, due to temporary overload
3784        bandwidth rejection, due to persistent bandwidth overload
3785        critical rejection, due to general router fault (or imminent shutdown)
3786      The different responses are factored into the profiles accordingly.
3787    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3788      with a series of new properties, relevent to the new tunnel routing code:
3789        inbound.nickname (used on the console)
3790        inbound.quantity (# of tunnels to use in any leaseSets)
3791        inbound.backupQuantity (# of tunnels to keep in the ready)
3792        inbound.length (# of remote peers in the tunnel)
3793        inbound.lengthVariance (if > 0, permute the length by adding a random #
3794                                up to the variance.  if < 0, permute the length
3795                                by adding or subtracting a random # up to the
3796                                variance)
3797        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3798                    in that client's pool)
3799      There are other options, and more will be added later, but the above are
3800      the most relevent ones.
3801    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3802    * Compress all profile data on disk.
3803    * Adjust the reseeding functionality to work even when the JVM's http proxy
3804      is set.
3805    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3806      max window size.
3807    * Reduced the default streaming lib max message size to 16KB (though still
3808      configurable by the user), also doubling the default maximum window
3809      size.
3810    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3811    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3812      the first byte of the SHA256.
3813    * Added a new "netId" flag to let routers drop references to other routers
3814      who we won't be able to talk to.
3815    * Extended the timestamper to get a second (or third) opinion whenever it
3816      wants to actually adjust the clock offset.
3817    * Replaced that kludge of a timestamp I2NP message with a full blown
3818      DateMessage.
3819    * Substantial memory optimizations within the router and the SDK to reduce
3820      GC churn.  Client apps and the streaming libs have not been tuned,
3821      however.
3822    * More bugfixes than you can shake a stick at.
3823
38242005-02-13  jrandom
3825    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3826      only contains 32bit versions, so build your own, placing libjbigi.so in
3827      your install dir if necessary.  (thanks mule!)
3828    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3829      (thanks spaetz!)
3830
38312005-02-10  smeghead
3832    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3833      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3834      Pants are still non-functional at this time so don't mess with it yet
3835      unless you want to potentially mangle your working copy of CVS.
3836
38372005-02-09  duck
3838    * Allow an unneeded newline in the SAM client connection without
3839      disconnecting.
3840
38412005-02-07  jrandom
3842    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3843
38442005-02-06  Sugadude
3845    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3846
38472005-02-03  smeghead
3848    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3849      library from GNU Crypto's CVS HEAD sources.
3850
38512005-01-26  smeghead
3852    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3853      packages and installed to $i2pinstalldir/scripts.
3854    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3855      using gij + libgcj, and --sourcedir to run them from the source tree
3856      instead of the installation directory.
3857    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3858      causing gcj to toss a compilation warning (jrandom++).
3859
38602005-01-26  smeghead
3861    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3862      tests and benchmarks.
3863    * Routerconsole now builds under gcj 3.4.3.
3864    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3865
38662005-01-25  smeghead
3867    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3868      supporting apps (except for the routerconsole which is still being
3869      investigated).
3870
38712005-01-24  smeghead
3872    * C#-ification of sam-sharp: interface greatly simplified using delegates
3873      and events; SamBaseEventHandler provides basic implementation and helper
3874      methods but is now optional.
3875    * NAnt buildfile and README added for sam-sharp.
3876
38772005-01-23  smeghead
3878    * Port the java SAM client library to mono/C# and released into the
3879      public domain.  The 0.1 version of this port is available in CVS as
3880      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3881      library has been removed.
3882
38832005-01-21  Jhor
3884    * Updated jbigi build scripts for OSX.
3885
38862005-01-21  jrandom
3887    * Added support for OSX to the NativeBigInteger code so that it will look
3888      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3889      is not bundled with the shipped jbigi.jar yet though.
3890
38912005-01-18  jrandom
3892    * Increased the max # session tags maintained and decreased slightly the
3893      period over which they are gathered.
3894
38952005-01-17  jrandom
3896    * Added meaningful support for adjusting the preferred message size in the
3897      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3898      whatever).  The other side will mimic a reduction (but never an increase).
3899    * Always make sure to use distinct ConnectionOption objects for each
3900      connection (duh)
3901    * Reduced the default ACK delay to 500ms on in the streaming lib
3902    * Only shrink the streaming window once per window
3903    * Don't bundle a new jetty.xml with updates
3904    * Catch another local routerInfo corruption issue on startup.
3905
39062005-01-15  cervantes
3907    * Added support to the eepproxy for URLs such as
3908      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3909      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3910
39112005-01-15  jrandom
3912    * Caught a series of (previously unhandled) errors caused by requeueing
3913      messages that had timed out on the TCP transport (thanks mae^!)
3914    * Reduce the barrier to dropping session tags on streaming lib resends -
3915      every fourth send should drop the tags, forcing ElGamal encryption.  This
3916      will help speed up the recovery after a disconnect, rather than the drop
3917      every fifth send.
3918
3919* 2005-01-06  0.4.2.6 released
3920
39212005-01-06  jrandom
3922    * Added a startup message to the addressbook, printing its version number
3923      to stdout (which is sent to wrapper.config) when it loads.
3924    * Updated the addressbook to reread the config file periodically
3925    * Added orion.i2p to the list of eepsites on the default homepage
3926
39272005-01-05  jrandom
3928    * Handle unexpected network read errors more carefully (thanks parg!)
3929    * Added more methods to partially compare (DataHelper) and display
3930      arrays (Base64.encode).
3931    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
3932    * Be more generous on the throttle when just starting up the router
3933    * Fix a missing scheduled event in the streaming lib (caused after reset)
3934    * Add a new DisconnectListener on the I2PSocketManager to allow
3935      notification of session destruction.
3936    * Make sure our own router identity is valid, and if it isn't, build a new
3937      one and restart the router.  Alternately, you can run the Router with
3938      the single command line argument "rebuild" and it will do the same.
3939
39402004-12-31  ragnarok
3941    * Integrated latest addressbook changes (2.0.3) which include support for
3942      deploying as a .war file with no existing addressbook configuration.
3943    * Updated main build process to bundle the addressbook.war in the
3944      i2pinstall.jar and i2pupdate.zip.
3945
39462004-12-31  jrandom
3947    * Speling fxi (thanks digum!)
3948    * Bugfix for the I2PTunnel web interface so that it now properly launches
3949      newly added tunnels that are defined to be run on startup (thanks ugha!)
3950
39512004-12-30  jrandom
3952    * Revised the I2PTunnel client and httpclient connection establishment
3953      throttles.  There is now a pool of threads that build the I2PSocket
3954      connections with a default size of 5, configurable via the I2PTunnel
3955      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
3956      not throttle the number of concurrent builders, but will launch a thread
3957      per socket during establishment).  In addition, sockets accepted but
3958      not yet allocated to one of the connection builders will be destroyed
3959      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
3960      0, it will wait indefinitely).
3961
39622004-12-29  jrandom
3963    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
3964      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
3965    * Don't treat connection inactivity closure as a connection error.
3966
39672004-12-29  jrandom
3968    * Add in a new keepalive event on each TCP connection, proactively sending
3969      a (tiny) time message every minute or two, as well as killing the
3970      connection if no message has been fully sent within 5 minutes or so. 
3971      This should help deal with hung connections from IP address changes.
3972
39732004-12-28  jrandom
3974    * Cleaned up the resending and choking algorithm in the streaming lib.
3975    * Removed the read timeout override for I2PTunnel's httpclient, allowing
3976      it to use the default for the streaming lib.
3977    * Revised ack triggers in the streaming lib.
3978    * Logging.
3979
3980* 2004-12-21  0.4.2.5 released
3981
39822004-12-21  jrandom
3983    * Track a new stat for expired client leases (client.leaseSetExpired).
3984
39852004-12-21  jrandom
3986    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
3987      and added windows info to the headless docs. (thanks ardvark!)
3988    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
3989      a stream (thanks frosk!)
3990    * Add a pair of new stats for monitoring tunnel participation -
3991      tunnel.participatingBytesProcessed (total # bytes transferred) and
3992      tunnel.participatingBytesProcessedActive (total # bytes transferred for
3993      tunnels whose byte count exceed the 10m average).  This should help
3994      further monitor congestion issues.
3995    * Made the NamingService factory property public (thanks susi!)
3996
39972004-12-20  jrandom
3998    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
3999    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
4000      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
4001      reasoning is gone.
4002
40032004-12-19  jrandom
4004    * Fix for a race on startup wrt the new stats (thanks susi!)
4005
40062004-12-19  jrandom
4007    * Added three new stats - router.activePeers, router.fastPeers, and
4008      router.highCapacityPeers, updated every minute
4009
40102004-12-19  jrandom
4011    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
4012      hostname should be sent to the webserver.  By default, new installs will
4013      have an httpserver pointing at their jetty instance with the spoofed
4014      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
4015
40162004-12-19  scintilla
4017    * Convert native jcpuid code from C++ to C. This should alleviate build
4018      problems experienced by some users.
4019
4020* 2004-12-18  0.4.2.4 released
4021
40222004-12-16  jrandom
4023    * Catch another oddball case for a reset connection in the streaming lib.
4024    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
4025      dumps the current state of that peer's profile.  Instead of the full
4026      base64, you can pass in however many characters you have and it will
4027      return the first match found.
4028
40292004-12-16  jrandom
4030    * Remove the randomized factor in the tunnel rejection by bandwidth -
4031      we now accept the request if we've allocated less than our limit
4032      and reject it if we've allocated more.
4033    * Stick to the standard capacity scale on tunnel rejection, even for
4034      the 10m period.
4035    * Build the time message at the very last possible moment
4036
40372004-12-15  jrandom
4038    * Handle hard disconnects more gracefully within the streaming lib, and
4039      log unmonitored events more aggressively.
4040    * If we drop a peer after connection due to clock skew, log it to the
4041      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
4042      the stat 'tcp.disconnectAfterSkew'.
4043    * Fixed the formatting in the skew display
4044    * Added an ERROR message that is fired once after we run out of
4045      routerInfo files (thanks susi!)
4046    * Set the connect timeout equal to the streaming lib's disconnect timeout
4047      if not already specified (the I2PTunnel httpclient already enforces a
4048      60s connect timeout)
4049    * Fix for another connection startup problem in the streaming lib.
4050    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4051    * Adjust the capacity calculations so that tunnel failures alone in the
4052      last 10m will not trigger a 0 capacity rank.
4053
40542004-12-14  jrandom
4055    * Periodically send a message along all I2NP connections with the router's
4056      current time, allowing the receiving peer to determine that the clock
4057      has skewed too much, and hence, disconnect.  For backwards compatability
4058      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4059      next time we have a backwards compatability break, we can put in a proper
4060      message setup for it.
4061
40622004-12-14  jrandom
4063    * Reenable the probabalistic drop on the TCP queues to deal with good old
4064      fashioned bandwidth limiting.  However, by default the probability is
4065      rigged to reserve 0% of the queue free - meaning we just aggressively
4066      fail messages in the queue if we're transferring too slowly.  That
4067      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4068      (or whatever) and the drop code can be disabled with the parameter
4069      'tcp.dropProbabalistically=false'.
4070    * Still penalize a peer on tunnel failure, but don't immediately drop
4071      their capacity to 0.
4072    * More aggressively ACK duplicates
4073    * Randomize the timestamper period
4074    * Display the clock skew on the connection logs when a peer sends it.
4075    * Allow the timestamper to fix skews of up to 10 minutes
4076    * Logging
4077
40782004-12-13  jrandom
4079    * Added some error checking on the new client send job (thanks duck!)
4080    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4081      proportional to the bytes allocated in existing tunnels vs the bytes
4082      allowed through the bandwidth limiter).
4083    * Enable a new configuration parameter for triggering a tunnel rebuild
4084      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4085      before killing the tunnel (default 0).
4086    * Gather more data that we rank capacity by (now we monitor and balance the
4087      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4088    * Fix a truncation/type conversion problem on the long term capacity
4089      values (we were ignoring the daily stats outright)
4090
40912004-12-11  jrandom
4092    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4093      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4094      on .connect, but is unable to transfer any data in any direction.  We now
4095      detect that condition for the I2PTunnelHTTPClient and throw up the right
4096      error page.
4097    * Logging
4098
40992004-12-11  jrandom
4100    * Use a simpler and less memory intensive job for processing outbound
4101      client messages when the session is in mode=bestEffort.  We can
4102      immediately discard the data as soon as its sent the first time,
4103      rather than wait for an ack, since we will never internally resend.
4104    * Reduce some synchronization to avoid a rare deadlock
4105    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4106      case it within the tunnel controller.
4107    * Script cleanup for building jbigi/jcpuid
4108    * Logging
4109
4110* 2004-12-08  0.4.2.3 released
4111
41122004-12-08  jrandom
4113    * Revised the buffering when reading from the SAM client and writing
4114      to the stream.  Also added a thread (sigh) so we don't block the
4115      SAM client from giving us more messages for abnormally long periods
4116      of time.
4117    * Display the router version in the logs on startup (oft requested)
4118    * Fix a race during the closing of a messageOutputStream
4119
41202004-12-06  jrandom
4121    * Don't do a 'passive flush' while there are already outbound messages
4122      unacked.
4123    * Show the reseed link if up to 10 peers profiles are active (thanks
4124      dburton!)
4125
41262004-12-06  jrandom
4127    * Don't propogate streaming connection failures out to the SAM bridge as
4128      fatal errors.
4129    * Dont barf on repeated I2CP closure.
4130
41312004-12-05  jrandom
4132    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4133      getLocalhost call
4134
41352004-12-05  jrandom
4136    * Default the I2CP listener to localhost only, unless overridden by
4137      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4138    * More SAM fixes for things recently broken (whee)
4139
41402004-12-05  jrandom
4141    * Fix the recently broken SAM bridge (duh)
4142    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4143      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4144      StreamSink and StreamSend apps for transferring files.
4145    * Make the passive flush timer fire more frequently.
4146
41472004-12-05  jrandom
4148    * Fixed some links in the console (thanks ugha!) and the javadoc
4149      (thanks dinoman!)
4150    * Fix the stream's passive flush timer (oh, its supposed to work?)
4151
41522004-12-03  jrandom
4153    * Toss in a small pool of threads (3) to execute the events queued up with
4154      the SimpleTimer, as we do currently see the occational event
4155      notification spiking up to a second or so.
4156    * Implement a SAM client API in java, useful for event based streaming (or
4157      for testing the SAM bridge)
4158    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4159      bridge is being run outside of the router).
4160    * Include the SAM test code in the sam.jar
4161    * Remove an irrelevent warning message from SAM, which was caused by
4162      perfectly normal operation due to a session being closed.
4163    * Removed some unnecessary synchronization in the streaming lib's
4164      PacketQueue
4165    * More quickly clean up the memory used by the streaming lib by
4166      immediately killing each packet's resend job as soon as it is ACKed (or
4167      cancelled), so that there are no longer any valid pointers to the
4168      (potentially 32KB) packet.
4169    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4170    * Drop packets that would expand our inbound window beyond our maximum
4171      buffer size (default 32 messages)
4172    * Always read the ACK/NACK data from the verified packets received, even
4173      if we are going to drop them
4174    * Always adjust the window when there are messages ACKed, though do not
4175      change its size except as before.
4176    * Streamlined some synchronization in the router's I2CP handling
4177    * Streamlined some memory allocation in the SAM bridge
4178    * Default the streaming lib to disconnect on inactivity, rather than send
4179      an empty message.
4180
41812004-12-01  jrandom
4182    * Fix for a race in the streaming lib as caused by some odd SAM activity
4183
4184* 2004-12-01  0.4.2.2 released
4185
41862004-12-01  jrandom
4187    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4188      connections to work (thanks duck!)
4189    * Make sure we override the inactivity timeout too
4190
4191* 2004-12-01  0.4.2.1 released
4192
41932004-12-01  jrandom
4194    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4195      include the forged User-agent header.
4196    * Adjust the default read timeout on the eepproxy to 60s, unless
4197      overridden.
4198    * Minor tweak on stream shutdown.
4199
42002004-11-30  jrandom
4201    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4202    * Build in a simple timeout to flush data queued into the I2PSocket but
4203      not yet flushed.
4204    * Don't explicitly flush after each SAM stream write, but leave it up to
4205      the [nonblocking] passive flush.
4206    * Don't whine about 10-99 connection events occurring in a second
4207    * Don't wait for completion of packets that will not be ACKed (duh)
4208    * Adjust the congestion window, even if the packet was resent (duh)
4209    * Make sure to wake up any blocking read()'s when the MessageInputStream
4210      is close()ed (duh)
4211    * Never wait more than the disconnect timeout for a write to complete
4212
42132004-11-29  jrandom
4214    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4215
42162004-11-29  jrandom
4217    * Reduced contention for local client delivery
4218    * Drop the new code that munges the wrapper.config.  Instead, updates that
4219      need to change it will include their own wrapper.config in the
4220      i2pupdate.zip, overwriting the existing file.  If the file
4221      "wrapper.config.updated" is included, it is deleted at first opportunity
4222      and the router shut down, displaying a notice that the router must be
4223      started again cleanly to allow the changes to the wrapper.config to take
4224      effect.
4225    * Properly stop accept()ing I2PSocket connections if we close down the
4226      session (duh).
4227    * Make sure we cancel any outstanding Packets in flight when a connection
4228      is terminated (thanks susi!)
4229    * Split up the I2PTunnel closing a little further.
4230
42312004-11-28  jrandom
4232    * Accept IP address detection changes with a 2-out-of-3 minimum.
4233    * As long as the router is up, keep retrying to bind the I2CP listener.
4234    * Decrease the java service wrapper ping frequency to once every 10
4235      minutes, rather than once every 5 seconds.
4236
42372004-11-27  jrandom
4238    * Some cleanup and bugfixes for the IP address detection code where we
4239      only consider connections that have actually sent and received messages
4240      recently as active, rather than the mere presence of a TCP socket as
4241      activity.
4242
42432004-11-27  jrandom
4244    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4245      lib can do that (without an additional per-connection thread).
4246    * Close the I2PTunnel forwarder threads more aggressively
4247
42482004-11-27  jrandom
4249    * Fix for a fast loop caused by a race in the new streaming library (thanks
4250      DrWoo, frontier, pwk_, and thetower!)
4251    * Minor updates to the SimpleTimer and Connection to help track down a
4252      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4253      many events/tasks fire in a second)
4254    * Minor fixes for races on client disconnects (causing NPEs)
4255
4256* 2004-11-26  0.4.2 released
4257
42582004-11-26  jrandom
4259    * Enable the new streaming lib as the default.  That means, for any
4260      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4261
42622004-11-25  jrandom
4263    * Revised the installer to include start menu and desktop shortcuts for
4264      windows platforms, including pretty icons (thanks DrWoo!)
4265    * Allow clients specified in clients.config to have an explicit startup
4266      delay.
4267    * Update the default install to launch a browser pointing at the console
4268      whenever I2P starts up, rather than only the first time it starts up
4269      (configurable on /configservice.jsp, or in clients.config)
4270    * Bugfix to the clock skew checking code to monitor the delta between
4271      offsets, not the offset itself (duh)
4272    * Router console html update
4273    * New (and uuuuugly) code to verify that the wrapper.config contains
4274      the necessary classpath entries on update.  If it has to update the
4275      wrapper.config, it will stop the JVM and service completely, since the
4276      java service wrapper doesn't reread the wrapper.config on JVM restart -
4277      requiring the user to manually restart the service after an update.
4278    * Increase the TCP connection timeout to 30s (which is obscenely long)
4279
42802004-11-22  jrandom
4281    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4282    * New stat to keep track of slow jobs (ones that take more than a second
4283      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4284
42852004-11-21  jrandom
4286    * Update the I2PTunnel web interface to include an option for the new
4287      streaming lib (which is ignored until the 0.4.2 release).
4288    * Revised the I2PTunnel web interface to keep the I2CP options of client
4289      and httpclient tunnels in sync, as they all share the same I2CP session.
4290
42912004-11-21  jrandom
4292    * Only allow small clock skews after the first 10 minutes of operation
4293      (to prevent later network lag bouncing us way off course - yes, we
4294      really need an NTP impl to balance out the network burps...)
4295    * Revamp the I2PTunnel web interface startup process so that everything
4296      is shown immediately, so that different pieces hanging don't hang
4297      the rest, and other minor bugfixes.
4298    * Take note of SAM startup error (in case you're already running a SAM
4299      bridge...)
4300    * Increase the bandwidth limiter burst values available to 10-60s (or
4301      whatever is placed in /configadvanced.jsp, of course)
4302
43032004-11-21  jrandom
4304    * Allow end of line comments in the hosts.txt and other config files,
4305      using '#' to begin the comments (thanks susi!)
4306    * Add support to I2PTunnel's 'client' feature for picking between multiple
4307      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4308    * Add a quick link on the left hand nav to reseed if there aren't enough
4309      known peers, as well as link to the config page if there are no active
4310      peers.  Revised config page accordingly.
4311
43122004-11-21  jrandom
4313    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4314      rather that every 15 minutes, and increase the warning period in which
4315      we refresh tags from 30s to 2 minutes.
4316    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4317      to close the I2PSocket (leaving it to timeout).
4318
43192004-11-19  jrandom
4320    * Off-by-one fix to the tunnel pool management code, along side some
4321      explicit initialization.  This can affect clients whose lengths are
4322      shorter than the router's default (thanks duck!)
4323
43242004-11-17  jrandom
4325    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4326      Ragnarok!)
4327
43282004-11-17  jrandom
4329    * Minor logging update.
4330
43312004-11-16  jrandom
4332    * Clean up the propogation of i2psocket options so that various streaming
4333      libs can honor them more precisely
4334
43352004-11-16  jrandom
4336    * Minor logging update
4337
43382004-11-14  jrandom
4339    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4340    * Fix a leak injected into the SimpleTimer
4341    * Fix a race condition in the tunnel message handling
4342
43432004-11-13  jrandom
4344    * Added throttles on how many I2PTunnel client connections we open at once
4345    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4346      the streaming library used should take care of any buffering.
4347    * Added a cache for some objects used in I2PTunnel, especially useful when
4348      there are many short lived connections.
4349    * Trimmed the SimpleTimer's processing a bit
4350
43512004-11-10  jrandom
4352    * Allow loading the (mini)streaming connection options from the
4353      environment.
4354    * More defensive programming in the DSA implementation.
4355
43562004-11-08  jrandom
4357    * Remove spurious flush calls from I2PTunnel, and work with the
4358      I2PSocket's output stream directly (as the various implementations
4359      do their own buffering).
4360    * Another pass at a long standing JobQueue bug - dramatically simplify
4361      the job management synchronization since we dont need to deal with
4362      high contention (unlike last year when we had dozens of queue runners
4363      going at once).
4364    * Logging
4365
43662004-11-08  jrandom
4367    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4368
4369* 2004-11-06  0.4.1.4 released
4370
43712004-11-06  jrandom
4372    * Expose a drop down on the /configclients.jsp to enter the outbound
4373      tunnel depth.
4374    * Improved *hosts.txt loading
4375    * Explicitly override the JVM's timezone settings to use GMT so that
4376      any client applications which use timezones won't leak sensitive
4377      data (thanks gott!)
4378    * Bundle sam.jar in the update (thanks duck!)
4379
43802004-11-06  jrandom
4381    * Fix for a long standing synchronization bug in the SDK that in rare
4382      instances can add a few seconds of lag.
4383
43842004-11-05  jrandom
4385    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4386      parameters, verify proper operation after multiple session lifetimes,
4387      as well as some synchronization problems.
4388    * New properties method on the DataHelper class.
4389    * Address a race on fast disconnecting clients
4390
43912004-11-02  jrandom
4392    * Fix for a long standing synchronization bug in the JobQueue (and added
4393      some kooky flags to make sure it stays dead)
4394    * Update the ministreaming lib to force mode=guaranteed if the default
4395      lib is used, and mode=best_effort for all other libs.
4396
43972004-11-02  jrandom
4398    * Fixed up the configuration overrides for the streaming socket lib
4399      integration so that it properly honors env settings.
4400    * More memory usage streamlining (last major revamp for now, i promise)
4401
44022004-11-01  jrandom
4403    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4404    * Honor message expirations for some tunnel jobs that were prematurely
4405      expired.
4406    * Streamline memory usage with temporary object caches and more efficient
4407      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4408      message handling.
4409    * Fix some situations where we forward messages too eagerly.  For a
4410      request at the tunnel endpoint, if the tunnel is inbound and the target
4411      is remote, honor the message by tunnel routing the data rather than
4412      sending it directly to the requested location.
4413
44142004-10-30  jrandom
4415    * Cache the temporary objects used in the AES encryption/decryption
4416      process so that AES doesn't require any memory allocation to process
4417      data.
4418    * Dramatically reduce memory usage within various crypto implementations
4419      by avoiding unnecessary (though simplifying) buffers.
4420    * If we specify some tags to be sent in an I2CP message explicitly, use
4421      only those, not those plus a new set (otherwise we aren't sure on ACK
4422      which set was delivered)
4423    * Allow configuration for the partial send timeout (how long before
4424      resending a message down a different tunnel in a lease).  This can be
4425      updated with the "router.clientPartialSendTimeout" router config prop.
4426    * Logging
4427
44282004-10-29  jrandom
4429    * Strip the Referer, Via, and From headers completely, rather than
4430      inserting a bogus value ("i2p").  This should help with the use of
4431      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4432
44332004-10-27  jrandom
4434    * Fix a strange race condition on i2cp client disconnect.
4435    * win98 startup fixes (thanks tester-1 and ardvark!)
4436    * include build scripts for the new streaming lib (which is NOT ready
4437      for use yet, but you can hack around with it)
4438
44392004-10-24  jrandom
4440    * Allow explicit inclusion of session tags in the SDK, enabling the
4441      resending of tags bundled with messages that would not otherwise
4442      be ACKed.
4443    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4444      no DeliveryStatusMessage will be bundled (and as such, client apps using
4445      it will need to do their own session tag ack/nack).
4446    * Handle client errors when notifying them of message availability.
4447    * New StreamSinkSend which sends a file to a destination and disconnects.
4448    * Update the I2PSocketManagerFactory to build the specific
4449      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4450      containing the class name of the I2PSocketManager to instantiate.
4451
44522004-10-23  jrandom
4453    * Minor ministreaming lib refactoring to simplify integration of the full
4454      streaming lib.
4455    * Minor bugfixes to data structure serialization.
4456
4457* 2004-10-18  0.4.1.3 released
4458
44592004-10-18  jrandom
4460    * Allow sending messages with a section of a byte array.
4461    * Reduced stats published.
4462
44632004-10-17  jrandom
4464    * Don't b0rk on whitespace in the router address.
4465
44662004-10-16  jrandom
4467    * More aggressively reduce the capacity of peers if their tunnels are
4468      failing so that we move off them quicker.
4469    * Simplify some data structure serialization for reuse in the streaming
4470      lib, as well as add support for signing and verifying partial byte
4471      arrays.
4472    * Logging updates
4473
44742004-10-16  jrandom
4475    * Increased the default minimum tunnel test time to 5 seconds, since we
4476      still see the occational message processing time spike to 2 seconds.
4477    * Update the SimpleTimer to allow rescheduling a task thats already
4478      queued (useful for the new streaming lib).
4479
44802004-10-15  jrandom
4481    * Replaced old minimum tunnel test timeout of 1s with a configurable
4482      value (router.config property "router.tunnelTestMinimum", with the
4483      default of 2s).
4484
44852004-10-14  jrandom
4486    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4487      peer, so don't use it as a key point of the IsFailing calculator.
4488      We still use it as a key point of the Capacity calculator, however.
4489
44902004-10-14  jrandom
4491    * Allow for a configurable tunnel "growth factor", rather than trying
4492      to achieve a steady state.  This will let us grow gradually when
4493      the router is needed more, rather than blindly accepting the request
4494      or arbitrarily choking it at an averaged value.  Configure this with
4495      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4496    * Adjust the tunnel test timeouts dynamically - rather than the old
4497      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4498      test time (the deviation factor can be adjusted by setting
4499      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4500      find the 'good' tunnels.
4501    * Added some crazy debugging to try and track down an intermittent hang.
4502
45032004-10-13  jrandom
4504    * Fix the probabalistic tunnel reject (we always accepted everything,
4505      since the docs on java.util.Random.nextDouble() are wrong..)
4506    * Fixed a race on startup (thanks Quadn!)
4507
45082004-10-12  jrandom
4509    * Disable the probabalistic drop by default (enable via the router config
4510      property "tcp.dropProbabalistically=true")
4511    * Disable the actual watchdog shutdown by default, but keep track of more
4512      variables and log a lot more when it occurs (enable via the router
4513      config property "watchdog.haltOnHang=true")
4514    * Implement some tunnel participation smoothing by refusing requests
4515      probabalistically as our participating tunnel count exceeds the previous
4516      hour's, or when the 10 minute average tunnel test time exceeds the 60
4517      minute average tunnel test time.  The probabilities in both cases are
4518      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4519      and you had previously only participated in 50, you'll have a 25% chance
4520      of accepting a subsequent request.
4521
4522* 2004-10-10  0.4.1.2 released
4523
45242004-10-10  cervantes
4525    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4526      the request.
4527
45282004-10-09  jrandom
4529    * Added a watchdog timer to do some baseline liveliness checking to help
4530      debug some odd errors.
4531    * Added a pair of summary stats for bandwidth usage, allowing easy export
4532      with the other stats ("bw.sendBps" and "bw.receiveBps")
4533    * Trimmed another memory allocation on message reception.
4534
45352004-10-08  jrandom
4536    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4537      during its operation.
4538
45392004-10-08  jrandom
4540    * Don't kill the establisher threads during a soft restart.
4541    * Attempt to validate the peer's routerInfo earlier during handshaking.
4542    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4543      during its operation.
4544
45452004-10-07  jrandom
4546    * Reimplement the I2NP reading with less temporary memory allocation.
4547      There is still significant GC churn, especially under load, but this
4548      should help.
4549    * Catch some oddball errors in the transport (message timeout while
4550      establishing).
4551
45522004-10-07  jrandom
4553    * Expire queued messages even when the writer is blocked.
4554    * Reimplement most of the I2NP writing with less temporary memory
4555      allocations (I2NP reading still gobbles memory).
4556
45572004-10-06  jrandom
4558    * Implement an active queue management scheme on the TCP transports,
4559      dropping messages probabalistically as the queue fills up.  The
4560      estimated queue capacity is determined by the rate at which messages
4561      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4562      we exceed 1/2 of the estimated capacity, we drop messages throughout
4563      the queue probabalistically with regards to their size.  This is based
4564      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4565      estimated connection capacity.  We may want to consider using a send
4566      rate and queue size measured across all connections, to deal with our
4567      own local bandwidth saturation, but we'll try the per-con metrics first.
4568
45692004-10-06  jrandom
4570    * Enable explicit disabling of the systray entirely for windows machines
4571      with strange configurations: add -Dsystray.disable=true to the java
4572      command line.  (thanks mihi!)
4573
45742004-10-05  jrandom
4575    * Allow peers on the same LAN to communicate with each other safely even
4576      when they cannot talk to each other through the external address.
4577
45782004-10-05  jrandom
4579    * Display how much time is left before the graceful shutdown is complete.
4580    * Debug some improperly failed messages on timeout or disconnection.
4581
45822004-10-05  jrandom
4583    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4584      (thanks mule!)
4585    * Handle some more error conditions regarding abruptly closing sockets
4586      (thanks Jonva!)
4587
45882004-10-04  jrandom
4589    * Update the shitlist to reject a peer for an exponentially increasing
4590      period of time (with an upper bounds of an hour). 
4591    * Various minor stat and debugging fixes
4592
45932004-10-03  jrandom
4594    * Add a new stat logging component to optionally dump the raw stats to
4595      disk as they are generated, rather than rely upon the summarized data.
4596      By default, this is off, but the router property "stat.logFilters" can
4597      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4598      which will be written to the file "stats.log" (or whatever the property
4599      "stat.logFile" is set to).  This can also log profile related stats,
4600      such as "dbResponseTime" or "tunnelTestResponseTime".
4601
46022004-10-02  jrandom
4603    * Assure that we quickly fail messages bound for shitlisted peers.
4604    * Address a race on startup where the first peer contacted could hang the
4605      router (thanks Romster!)
4606    * Only whine about an intermittent inability to query the time server once
4607
46082004-10-02  jrandom
4609    * Command line utility to verify a peer's reachability - simply run
4610      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4611      will print out whether that peer is reachable or not (using a simple
4612      verification handshake).
4613
4614* 2004-10-01  0.4.1.1 released
4615
46162004-10-01  jrandom
4617    * Handle partial reseeds, caused by seeds going away before the download
4618      completes (thanks Sugadude!)
4619
46202004-10-01  jrandom
4621    * Explicitly refuse IPv6 addresses, since only some peers support
4622      them and we want fully reachable peers.
4623
46242004-10-01  jrandom
4625    * Additional error handling for a variety of transport layer errors.
4626
4627* 2004-09-30  0.4.1 released (not backwards compatible)
4628
46292004-09-30  jrandom
4630    * Bundle the configuration necessary to run an eepsite out of the box
4631      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4632      the key listed on the I2PTunnel configuration page, and its up.
4633    * Router console cleanup, and some (off by default) tunnels -
4634      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4635      irc.baffled.i2p (port 7661)
4636
46372004-09-29  jrandom
4638    * Always wipe the Jetty work directory on startup, so that web updates
4639      are reflected immediately (Jetty does not honor the cache across
4640      multiple executions)
4641
46422004-09-27  jrandom
4643    * Limit the number of connection tags saved to 10,000.  This is a huge
4644      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4645      randomly after reaching that size, forcing those dropped peers to use
4646      a full DH negotiation.
4647    * HTML cleanup in the console.
4648
46492004-09-26  jrandom
4650    * Complete rewrite of the TCP transport with IP autodetection and
4651      low CPU overhead reconnections.  More concise connectivity errors
4652      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4653      by listening to the first person who tells you what your IP address is
4654      when you have not defined one yourself and you have no other TCP
4655      connections.
4656    * Update to the I2NP message format to add transparent verification at
4657      the I2NP level (beyond standard TCP verification).
4658    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4659      implementation (rather than verifying with E(H(key)), we now verify with
4660      E(H(iv))).
4661    * The above changes are NOT BACKWARDS COMPATIBLE.
4662    * Removed all of the old unused PHTTP code.
4663    * Refactor various methods and clean up some javadoc.
4664
46652004-09-21  jrandom
4666    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4667      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4668      but values stored in the later take precedence.  Both are queried on
4669      lookup.
4670
46712004-09-16  jrandom
4672    * Refactor the TCP transport to deal with changing identities gracefully,
4673      and to prevent some wasted effort by keeping track of what host+port
4674      combinations we are connected to (rather than just the identities).  Also
4675      catch a few configuration errors earlier.
4676    * Removed no longer relevent methods from the Transport API that were
4677      exposing ideas that probably shouldn't be exposed.
4678    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4679      updates)
4680
46812004-09-13  jrandom
4682    * Update for the SDK reconnection to deal with overflow.
4683    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4684      rounding on lifetime bandwidth used [thanks gott!]).
4685
4686* 2004-09-08  0.4.0.1 released
4687
46882004-09-08  jrandom
4689    * Updated the "Active:" peer count to display the # of connections as well
4690      as the number of recently active router identities.
4691    * Implement some basic updating code - on startup, if there is a file named
4692      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4693      then restart.
4694    * Added an ugly little script to allow launching the router on win9x
4695      machines without a dos box (using javaw to run a .bat file).
4696    * Logging updates.
4697    * Updated VERSION constants to 0.4.0.1
4698
46992004-09-08  hypercubus
4700    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4701      hopefully any other affected *nix systems) now properly discards non-
4702      essential directories after installation.
4703    * Support for Win9x in the installer and postinstall.bat.
4704    * Changed the name of the default installation directory on all platforms
4705      from "I2P" to "i2p" in the installer.
4706    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4707      other configuration files.
4708
47092004-09-07  cervantes:
4710    * Proxy recursion disabled by default (strict)
4711    * Password Authentication for session commands
4712    * Support for http://path?i2paddresshelper=BASE64
4713    * Support for http://i2p/BASE64/path syntax
4714
47152004-09-07  jrandom
4716    * Make sure that peers placed in the 'fast' group are ones we both know
4717      how to reach and have been able to reach recently.  These peers may
4718      still be placed in the 'high capacity' group however (though that group
4719      is only queried if the 'fast' group is too small)
4720    * Include some updates to the ProgileOrganizer's CLI.
4721
47222004-09-07  jrandom
4723    * Disable the timestamper by default for all applications except the router
4724      (enable via -Dtime.disabled=false)
4725    * Simplify the retrieval of the full destination with text based browsers.
4726    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4727
47282004-09-07  jrandom
4729    * Write the native libraries to the current directory when they are loaded
4730      from a resource, and load them from that file on subsequent runs (in
4731      turn, we no longer *cough* delete the running libraries...)
4732    * Added support for a graceful restart.
4733    * Added new pseudo-shutdown hook specific to the router, allowing
4734      applications to request tasks to be run when the router shuts down.  We
4735      use this for integration with the service manager, since otherwise a
4736      graceful shutdown would cause a timeout, followed by a forced hard
4737      shutdown.
4738    * Made the capacity calculator a bit more dynamic by not outright ignoring
4739      the otherwise valid capacity data for a period with a single rejected
4740      tunnel (except for the 10 minute period).  In addition, peers with an
4741      equal capacity are ordered by speed rather than by their hashes.
4742    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4743      issues.
4744    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4745      associated session (unless there are other clients using it), and deal
4746      with a closed session when starting a new I2PTunnel instance.
4747    * Refactoring and logging.
4748
47492004-09-06  jrandom
4750    * Address a race condition in the key management code that would manifest
4751      itself as a corrupt router identity.
4752    * Properly clear old transport addresses from being displayed on the old
4753      console after soft restarts.
4754    * Properly refuse to load the client applications more than once in the
4755      same JVM.
4756    * Added support for a graceful restart (a graceful shutdown followed by a
4757      full JVM restart - useful for restarting client apps).
4758    * More defensive programming, HTML cleanup, logging
4759    * wrapper.config cleanup of duplicate lines
4760
47612004-09-04  jrandom
4762    * Added some basic guards to prevent multiple instances from running.
4763      Specifically, a file "router.ping" in the install directory which is
4764      written to once a minute - if that file exists and has been modified
4765      within the last minute, refuse to start up.  In turn, adjust the
4766      service wrapper to wait a minute before restarting a crashed JVM.
4767    * Create a "work" directory in the I2P install dir which Jetty will
4768      use for all of its temporary files.
4769    * Tell the browser not to cache most of the router console's pages.
4770
47712004-09-04  jrandom
4772    * Update the SDK to automatically reconnect indefinitely with an
4773      exponential delay on retries (capped at 5 minutes).
4774
4775* 2004-09-03  0.4 released
4776
47772004-09-03  jrandom
4778    * Updated default wrapper.config to deal with the hard restart option
4779    * Include the history.txt in the /help.jsp page
4780    * HTML updates (wrapper.log, and no more unix scripts)
4781    * Updated VERSION constants to 0.4
4782
47832004-09-03  hypercubus
4784    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4785    * Temporarily removed install_i2p_service_unix and
4786      uninstall_i2p_service_unix from distribution packages.
4787    * postinstall.bat/postinstall.sh cleans installation directory of all files
4788      not applicable to the host OS.
4789
47902004-09-03  oOo
4791    * Added some filters to the HTTP request, replacing the User-Agent,
4792      Referrer, Via, and From headers, which helps until we have a more
4793      comprehensive filtering system.
4794
47952004-09-03  jrandom
4796    * Disabled the old listener on port 7655.
4797
47982004-09-02  jrandom
4799    * Cleaned up the base build.xml, adding a new target ("updater") which
4800      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4801      existing installs.
4802
48032004-xx-xx  jrandom
4804    * Implemented the new web architecture and router console
4805    * Implemented I2PTunnel web interface, and revamped startup process.
4806    * Revamped peer selection code to address skew.
4807    * Removed all temporary threads from the router and the SDK.
4808    * Bugfix dealing with timeouts and resends.
4809    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4810
48112004-xx-xx  hypercubus
4812    * Implemented the new installation process.
4813    * Integrated systray
4814    * Integrated service manager
4815
48162004-xx-xx  oOo
4817    * Implemented ?i2paddresshelper= hook
4818    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4819
48202004-xx-xx  Nightblade
4821    * libSAM updates.
4822
48232004-xx-xx  cervantes
4824    * Imported i2pProxy.pac proxy script in with the build.
4825
4826* 2004-08-20  0.3.4.3 released
4827* 2004-08-12  0.3.4.2 released
4828* 2004-08-08  0.3.4.1 released
4829* 2004-07-29  0.3.4 released
4830* 2004-07-23  0.3.3 released
4831* 2004-07-16  0.3.2.3 released
4832* 2004-07-14  0.3.2.2 released
4833* 2004-07-11  0.3.2.1 released
4834* 2004-07-07  0.3.2 released
4835* 2004-06-25  0.3.1.5 released
4836* 2004-05-23  0.3.1.4 released
4837* 2004-05-20  0.3.1.3 released
4838* 2004-05-13  0.3.1.2 released
4839* 2004-05-07  0.3.1.1 released
4840* 2004-04-30  0.3.1 released
4841* 2004-04-20  0.3.0.4 released
4842* 2004-04-04  0.3.0.3 released
4843* 2004-03-30  0.3.0.2 released
4844* 2004-03-25  0.3.0.1 released
4845* 2004-03-21  0.3.0 released
4846* 2004-03-10  0.2.5.4 released
4847* 2004-03-04  0.2.5.3 released
4848* 2004-02-28  0.2.5.2 released
4849* 2004-02-27  0.2.5.1 released
4850* 2004-02-25  0.2.5 released
4851* 2004-02-19  0.2.4.2 released
4852* 2004-02-15  0.2.4.1 released
4853* 2004-02-14  0.2.4 released
4854* 2004-01-27  0.2.3.6 released
4855* 2004-01-21  0.2.3.5 released
4856* 2004-01-14  0.2.3.4 released
4857* 2003-12-29  0.2.3.3 released
4858* 2003-12-27  0.2.3.2 released
4859* 2003-12-25  0.2.3.1 released
4860* 2003-12-13  0.2.3 released
4861* 2003-12-01  0.2.2 released
4862* 2003-11-18  0.2.1.1 released
4863* 2003-11-12  0.2.1 released
4864* 2003-11-09  0.2.0.3 released
4865* 2003-11-08  0.2.0.2 released
4866* 2003-11-03  0.2.0.1 released
4867* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.