source: history.txt @ 62bf269

Last change on this file since 62bf269 was 62bf269, checked in by zzz <zzz@…>, 13 years ago
  • Profiles: Penalize capacity when tunnel build request times out
  • Tunnel BuildExecutor?: Debug cleanup
  • Property mode set to 100644
File size: 210.9 KB
Line 
12008-08-29 zzz
2    * Tunnel BuildExecutor: Debug cleanup
3    * Profiles: Penalize capacity when tunnel build request times out
4    * Shutdown: Call the shutdown hooks before the router shutdown
5      rather than after
6    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
7
82008-08-27 zzz
9    * Floodfill Peer Selector: Prefer already-connected floodfill
10      peer for direct RouterInfo stores, to mimimize floodfill
11      connections
12    * Peer Profiles: Classify connected peers as "active",
13      which will help improve the fast pool
14    * Transport Manager: Add isEstablished(Hash)
15    * NTCP: Reduce max idle time from 20m to 15m
16    * NetDb stats: Post-0.6.3 clean up
17
18* 2008-08-24  0.6.3 released
19
202008-08-24 Complication
21    * Update versions, package release
22
232008-08-20 zzz
24    * Blocklists: Handle blank lines and \r\n in blocklist.txt
25    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
26      default is 500 (very high for now)
27    * Persistent data store: Increase write limit from 300 to 600
28      so floodfill routers don't get backed up
29
302008-08-13 zzz
31    * i2psnark: Fix OOM vulnerability by checking incoming message length
32      (thanks devzero!)
33
342008-08-04 zzz
35    * Floodfill Peer Selector:
36      - Avoid peers whose netdb is old, or have a recent failed store,
37        or are forever-shitlisted
38
392008-07-30 zzz
40    * Blocklists:
41      - New, disabled by default, except for blocking of
42        forever-shitlisted peers. See source for instructions
43        and file format.
44    * Transport - Reject peers from inbound connections:
45      - Check IP against blocklist
46      - Check router hash against forever-shitlist, then block IP
47
482008-07-16 zzz
49    * configpeer.jsp: New
50    * i2psnark: Open completed files read-only the first time
51    * profiles.jsp: Show bonuses, link to configpeer.jsp
52    * PRNG: Move logging from wrapper to router log
53    * SSU:
54        Don't proactively reconnect until 30m idle, so
55        we don't lose introducer tags prematurely
56
572008-07-16 Oldaris
58    * Imports cleanup
59
602008-07-07 zzz
61    * i2psnark:
62      - Repair corrupted files with wrong length rather than die
63      - Register shutdown hook to properly shutdown torrents when
64        the router shuts down, hopefully will reduce corruption
65      - Add Galen tracker
66      - Add a note about how to change directory
67    * HTTP Proxy: Don't show jump links for unknown jump hosts
68    * KeyManager:
69      - Don't write router key backup when leaseSet keys are updated
70      - Synchronize to prevent concurrent writes (thanks Galen!)
71      - Backup keys every 7 days instead of every 5 minutes
72    * LoadTestManager: Don't instantiate, it's disabled
73    * Router console: Flag placeholder pages as noncacheable
74    * Streaming lib:
75      - Change some logging from WARN to INFO
76      - Clean up toString()
77    * SSU:
78      - Try to pick better introducers by checking shitlist,
79        wasUnreachable list, failing list, and idle times
80      - To keep introducer connections up and valid,
81        periodically send a "ping" (a data packet with no data and no acks)
82        to everybody that has been an introducer in the last two hours
83      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
84      - Remove some 60s and 5m stats, leave only the 10m ones
85      - Narrow the range for the retransmit time after an allocation fail
86      - Adjust some logging
87
882008-06-30 zzz
89    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
90    * i2psnark:
91      - Fix NPE caused by race (thanks echelon!)
92      - Add mastertracker, remove de-ebook
93    * NTCP:
94      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
95      - Fix failsafe stats
96    * PersistentDataStore: More leaseSet code cleanup
97    * SimpleTimer: Change congestion message from error to warn
98
992008-06-24 zzz
100    * FloodfillMonitorJob: Change range from 5-7 to 4-6
101    * NTCP: Remove getIsInbound(), duplicate of isInbound()
102    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
103    * Router console: add placeholder pages for i2psnark, i2ptunnel,
104      susidns, and susimail for use when the .wars are not running
105    * Streaming lib: Increase max window size to 128
106
1072008-06-22 welterde
108    * Optimize I2PDatagramDissector
109
1102008-06-20 zzz
111    * configclients.jsp: Add start button for clients and webapps.
112    * PRNG: Add two stats
113    * Summary bar:
114      - Display Warning for TCP private IP address
115      - Display PRNG stats
116    * OutNetMessage: Change cache logging from WARN to INFO
117
1182008-06-17 zzz
119    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
120    * Summary bar: Display helpful errror message when UDP bind fails
121    * UDP: Don't bid when UDP bind fails
122    * configclients.jsp: Implement saves for clients and webapps.
123
1242008-06-16 zzz
125    * UDP: Prevent 100% CPU when UDP bind fails;
126      change bind fail message from ERROR to CRIT
127    * Refactor LoadClientAppsJob.java, move some functions to new
128      ClientAppConfig.java, to make them easily available to
129      new configclients.jsp
130    * RouterConsoleRunner: Use a new config file, webapps.config,
131      to control which .wars in webapps/ get run. Apps are enabled
132      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
133      Config file is written if it does not exist.
134      Implement methods for use by new configclients.jsp.
135    * configclients.jsp: New. For both clients and webapps.
136      Saves are not yet implemented.
137
1382008-06-10 zzz
139    * Floodfill: Add new FloodfillMonitorJob, which tracks active
140      floodfills, and automatically enables/disables floodfill on
141      Class O routers to maintain 5-7 total active floodfills
142    * NetDb Stats:
143      - Remove several more stats
144      - Don't publish bw stats in first hour of uptime
145      - Publish floodfill stats even if other stats are disabled
146      - Changes not effective until 0.6.2.1 to provide cover.
147    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
148      startup, so peers don't list us as failing.
149    * graphs.jsp: Fix a bug where it tries to display the combined
150      bandwidth graph when it isn't available
151
1522008-06-09 zzz
153    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
154
1552008-06-09 zzz
156    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
157    * News:
158      - Add display of last updated and last checked time
159        on index.jsp and configupdate.jsp
160      - Add a function to get update version (unused for now)
161    * config.jsp: Add another warning
162
1632008-06-07 zzz
164    * NetDb: Tweak some logging on lease problems
165    * Shitlist:
166      - Add shitlistForever() and isShitlistedForever(), unused for now
167      - Sort the HTML output by router hash
168    * netdb.jsp:
169      - Sort the lease HTML output by dest hash, local first
170      - Sort the router HTML output by router hash
171
1722008-06-06 zzz
173    * LeaseSet:
174      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
175        to make later LeaseSet comparisons reliable. This cleans up the code too.
176      - Fix broken old vs. new LeaseSet comparison
177        in ClientConnectionRunner.requestLeaseSet(),
178        so that we only sign and publish a new LeaseSet when it's really new.
179        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
180        and floodfill router load, since locked_buildNewLeaseSet() generates
181        the same LeaseSet as before quite frequently, often just seconds apart.
182
1832008-06-05 zzz
184    * LeaseSet - code cleanup:
185      - Add exception to enforce max # of leases = 6, should be plenty
186      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
187        leases and then immediately remove them again, triggering
188        the new leaseSet size exception
189      - Remove the now unused LeaseSet.removeLease(lease) and
190        LeaseSet.removeLease(index)
191      - Store first and last expiration for efficiency
192    * Peer Profiles - Preparation for using bonuses:
193      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
194      - Persist CapacityBonus rather than ReachabilityBonus
195      - Include SpeedBonus in the Speed calculation
196      - Prevent negative values in Speed and Capacity when using bonuses
197      - Clean up SpeedCalculator.java
198    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
199    * Add some config files for a future small distribution
200    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
201
2022008-06-01 zzz
203    * Client Apps: Add new parameter for clients.config,
204        clientApp.x.startOnLoad=false, to disable loading
205        (for SAM for example). Defaults to true of course.
206    * Logging: Move common WARN output to DEBUG so we can ask users to
207        set the default log level to WARN without massive spewage
208    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
209      not just the Fast tier, since we don't use them for tunnels anyway
210    * SAM: Add some compiler flexibility to two obscure makefiles
211    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
212      (sponge's suggestion)
213    * summary bar:
214      - Hide ident, provide a tooltip and a link
215      - Add a warning if you are firewalled and class O
216
2172008-06-07 Complication
218    * Fix version in news.xml so it could be published
219
220* 2008-06-07  0.6.2 released
221
2222008-06-07 Complication
223    * Write announcement and prepare for release
224
2252008-05-29 zzz
226    * Fix up initialNews.xml
227
2282008-05-27 zzz
229    * Transport:
230      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
231      - UDP: Don't bid when IP address missing, mark unreachable
232
2332008-05-26 zzz
234    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
235    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
236    * build.xml:
237      - Add an updaterSmall target which includes only the essentials
238      - Add an updaterRouter target which includes only i2p.jar and router.jar
239      - Clean up the build file some
240      - Remove empty eepsite/ and subdirs from i2pupdate.zip
241    * configtunnels.jsp: Add warning
242    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
243    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
244
2452008-05-22 welterde
246    * Change jetty download location in build script
247
2482008-05-20 zzz
249    * Reachability:
250      - Call the previously unused profile.tunnelTestFailed()
251        (redefined to include a probability argument)
252        and severely downgrade a peer's capacity upon failures,
253        depending on tunnel length and direction.
254        This will help push unreachable and malicious peers
255        out of the High Capacity tier.
256      - Put recent fail rate on profiles.jsp
257    * ProfileOrganizer: Logging cleanup
258    * eepsite_index.html: Update add-host and jump links
259    * HTTP Proxy: Remove trevorreznik jump server from list
260
2612008-05-20 welterde
262    * implemented PrivateKeyFile
263
2642008-05-18 zzz
265    * Throttle: Reject tunnels for first 20m uptime (was 10m)
266    * TunnelPeerSelectors:
267       - Re-enable strict ordering of peers,
268         based on XOR distance from a random hash
269       - Restrict peers with uptime < 90m from tunnels (was 2h),
270         which is really 60m due to rounding in netDb publishing.
271    * i2psnark:
272       - Limit max pipelined requests from a single peer to 128KB
273         (was unlimited; i2p-bt default is 5 * 64KB)
274       - Increase max uploaders per torrent to 6 (was 4)
275       - Reduce max connections per torrent to 16 (was 24) to increase
276         unchoke time and reduce memory consumption
277       - Strictly enforce max connections per torrent
278       - Choke more gradually when over BW limit
279    * help.jsp: Add a link to the FAQ
280    * peers.jsp: Fix UDP direction indicators
281    * hosts.txt: Add update.postman.i2p
282
2832008-05-12 zzz
284    * Outbound message:
285      - Tweak the cache key for efficiency
286    * Stats:
287      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
288    * Summary bar:
289      - Add messages when dropping tunnel requests due to load
290    * Update Handler:
291      - Add postman to the list
292    * i2psnark:
293      - Randomize the PeerCheckerTask start times to make global limiting
294        work better
295      - Calculate bw limits using 40s rather than 4m averages to make
296        bw limiting work better
297      - Change default bw limit from uplimit/3 to uplimit/2 due to
298        overhead reduction from the leaseset bundling change
299    * libjbigi:
300      - Add documentation on dynamic build option
301      - Add two speed tests to the build script
302      - Clean up the build script, make it easier to build dynamic
303
3042008-05-10 zzz
305    * NetDb: Don't write the my.info file to disk, it isn't used for anything
306    * Stats:
307      - Simplify oldstats.jsp if no events in a stat
308      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
309        (caused by an SSU hack)
310    * Update Handler:
311      - Add option to download and verify only
312      - Add distinct error message if version check fails
313
3142008-05-09 welterde
315    * Add an update URL to the list
316
3172008-05-07 zzz
318    * Reachability:
319      - Restrict peers requiring introducers from inbound tunnels,
320        since it's slow and unreliable... and many of them advertise
321        NTCP, which seems unlikely to work
322      - Provide warning on summary bar if firewalled with inbound NTCP enabled
323    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
324      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
325      at startup (you didn't get any data unless you set the log level anyway)
326    * oldstats.jsp: Don't put 2 decimal places on integer event counts
327    * Remove the Internals link from the menu bar
328    * i2psnark: Extend startup delay from 1 to 3 minutes
329
3302008-05-06 welterde
331    * HTTP Proxy: Add i2jump.i2p jump service
332
3332008-05-05 zzz
334    * NetDb Stats: Cleanup of commented out stats
335    * Outbound message:
336      - Fix a couple of tunnel cache cleaning bugs
337      - Cache based on source+dest pairs rather than just dest
338      - Send the reply leaseSet only when necessary,
339        rather than all the time (big savings in overhead)
340      - Enable persistent lease selection again
341      - Logging tweaks
342    * Reachability:
343      - Restrict <= .32 SSU-only peers from inbound tunnels,
344        since they don't know if they are unreachable
345      - Have SSU bid aggressively when it has less than 3 peers, so
346        we can determine our IP address and do peer testing.
347        Otherwise a router may never determine its IP address or reachability status.
348    * Summary bar:
349      - Add reachability status
350      - Add participating tunnel acceptance status
351    * Throttle: Reject tunnels for first 10m uptime
352    * I2PTunnel: Change default outproxy to false.i2p
353    * profiles.jsp: Add router version
354
355* 2008-04-26  0.6.1.33 released
356
3572008-04-20 zzz
358    * Outbound message/Reachability:
359      - Fix a bug from -19 causing the persistent lease selection
360        removed in -17 to be back again
361      - Use netDb-listed-unreachable instead of detected-unreachable
362        for exclusion of unreachable peers from selected leases,
363        as there are potential anonymity problems with using
364        detected-unreachable
365      - Tweak logging some more
366    * NetDb stats: Remove a couple more including the inefficient stat_identities
367
3682008-04-17 zzz
369    * Reachability:
370      - Track unreachable peers persistently
371        (i.e. separately from shitlist, and not cleared when they contact us)
372      - Exclude detected unreachable peers from inbound tunnels
373      - Exclude detected unreachable peers from selected leases
374      - Exclude detected unreachable floodfill peers from lookups
375      - Show unreachable status on profiles.jsp
376
3772008-04-16 zzz
378    * SSU/Reachability:
379      - Extend shitlist time from 4-8m to 40-60m
380      - Add some shitlist logging
381      - Don't shitlist twice when unreachable on all transports
382      - Exclude netDb-listed unreachable peers from inbound tunnels;
383        this won't help much since there are very few of these now
384      - Remove 10s delay on inbound UDP connections used for the
385        0.6.1.10 transition
386      - Track and display UDP connection direction on peers.jsp
387      - Show shitlist status in-line on profiles.jsp
388
3892008-04-15 zzz
390    * SSU Reachability/PeerTestManager:
391      - Back out strict peer ordering until we fix SSU
392      - Back out persistent lease selection until we fix SSU
393      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
394      - Increase known Charlie time to 10m; 3m wasn't enough
395      - Don't continue retransmitting peer test if we know Charlie
396      - Don't run multiple peer tests at once
397      - Tighten test frequency range to 6.5-19.5m, was 0-26m
398
3992008-04-12 zzz
400    * Addressbook: Disallow '.-' and '-.' in host names
401    * NTCP: Don't drop a connection unless both directions are idle;
402            Fix idle time for outbound connections
403    * Outbound message: Make sure cached lease is in current leaseSet
404    * Stats: Put all NetworkDatabase stats in same group
405    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
406    * i2psnark: Add locking to prevent two I2CP connections
407
4082008-04-07 zzz
409    * i2psnark:
410      - Implement upstream bandwidth limiting
411      - Fix a rare NPE at startup/shutdown
412      - Really increase retries for .torrent fetch
413    * profiles.jsp: Minor cleanup
414    * DataHelper: Only format < 5s as ms
415    * Eepget: Fix percentage output on command line eepget retries
416    * Lower partipating message priority from 400 to 200
417    * NTCP: Add a debug message
418    * Outbound message: Minor cleanup
419
4202008-03-30 zzz
421    * ExploratoryPeerSelector: Try NonFailing even more
422    * HostsTxtNamingService: Add reverse lookup support
423    * Outbound message: Minor cleanup
424    * i2psnark TrackerClient: Minor cleanup
425    * checklist.txt: Minor edit
426    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
427    * i2ptunnel.config: Change CVS client to mtn
428    * netdb.jsp: Show leaseSet destinations using reverse lookup
429    * profiles.jsp: First cut at showing floodfill data
430
4312008-03-27 zzz
432    * Send messages for the same destination to the same inbound
433      lease to reduce out-of-order delivery.
434    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
435      for now, as it prevents speed rating of those peers
436
4372008-03-26 zzz
438    * ReseedHandler: Support multiple urls,
439      add netdb.i2p2.de as a 2nd default
440
4412008-03-25 zzz
442    * i2psnark:
443      - Add support for secondary open trackers
444      - Refactor and simplify the TrackerClient code
445      - Add welterde's tracker to the default list
446      - Don't have eepget retry announces
447      - Slow down tracker contacts if they've failed for a while
448      - Add some debug support showing connections (?p=2)
449    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
450
4512008-03-22 zzz
452    * NewsFetcher: Fix bug causing fetch every 10m
453
4542008-03-22 zzz
455    * Tunnel Testing:
456      - Fix counting so it really takes 4 consecutive failures
457        rather than 4 total to remove a tunnel
458      - Credit or blame goes to the exploratory tunnel as well
459        as the tunnel being tested
460      - Adjust tunnel test timeout based on tunnel length
461    * ExploratoryPeerSelector: Tweak logging
462    * ProfileOrganizer: Adjust integration calculation again
463    * build.xml: Add to help
464    * checklist.txt: Tweak
465    * readme.html: Fix forum links
466    * netDb: Remove tunnel.testFailedTime
467
4682008-03-19 zzz
469    * ExploratoryPeerSelector:
470      - Exclude floodfill peers
471      - Tweak the HighCap vs. NonFailing decision; try NonFailing
472        at least a minimum % of the time
473    * i2psnark: Increase retries for .torrent fetch
474    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
475      containing an IP
476    * readme.html: Reorder some items
477    * Stats: Add some more required stats
478    * Streaming lib: Fix slow start to be exponential growth,
479      fix congestion avoidance to be linear growth.
480      Should speed up local connections a lot, and remote
481      connections a little.
482
4832008-03-14 zzz
484    * Floodfill Search:
485       - Prefer heard-from, unfailing, unshitlisted floodfill peers
486
4872008-03-14 zzz
488    * ProfileOrganizer:
489       - Use more recent stats to calculate integration
490       - Show that fast peers are also high-capacity on profiles.jsp
491    * readme.html: Update Syndie link
492    * TunnelPool: Update comments
493    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
494      get rid of the 60s tunnel stats
495      (effective as of .33 to provide cover)
496
4972008-03-13 zzz
498    * Floodfill Search:
499       - Fix a bug that caused a single FloodfillOnlySearchJob
500         instance to be run multiple times, with unpredictable
501         results
502       - Select ff peers randomly to improve reliability
503       - Add some bulletproofing
504
5052008-03-11 zzz
506    * ProfileOrganizer:
507       - Don't require a peer to be high-capacity to be
508         well-integrated (not used for anything right now,
509         but want to get it right for possible floodfill verification)
510       - Don't fall back to median for high-capacity threshold
511         if the mean is higher than the median, this prevents
512         frequent large high-capacity counts
513       - Fix high-capacity selector that picked one too many
514    * Console: put well-integrated count back in the summary
515
5162008-03-10 zzz
517    * EepGet: Fix byte count for bytesTransferred status listeners
518      (fixes command line status)
519    * UpdateHandler:
520       - Fix byte count display
521       - Display final status on router console
522       - Don't allow multiple update jobs to queue up
523       - Increase max retries
524       - Code cleanup
525       - Don't show 'check for update' button when update in progress
526       - Enhance error messages
527    * NetDb: Comment out published netDb stats disabled for .32
528
5292008-03-08 zzz
530    * TunnelPeerSelectors: Implement strict ordering of peers,
531      based on XOR distance from a random hash
532      separately generated for each tunnel pool
533
5342008-03-07 zzz
535    * Naming: Optimize lookups for a destkey
536    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
537      - Prevent peers with matching IPs from joining same tunnel.
538        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
539        Default is 2 (disallow routers in same /16).
540        Set with router.defaultPool.IPRestriction=x
541      - Comment out unused RebuildPeriod pool setting
542      - Add random key to pool in preparation for XOR peer ordering
543    * SusiMail: Add 'Create Account' link
544    * TunnelDispatcher: Change a common wtf error to a warn
545
5462008-03-05 zzz
547    * Naming: Make HostsTxt the sole default NamingService
548      (was Meta = PetName + HostsTxt)
549    * Naming: Add two new experimental NamingServices, EepGet and Exec,
550      not enabled by default -
551      see source comments in core/java/src/net/i2p/client/naming
552      for configuration instructions
553    * i2psnark: Don't do a naming lookup for Base64 destkeys
554    * i2psnark: Add a StartAll button
555    * Stats: Add code to disable most stats to save memory.
556      Set on configstats.jsp or set stat.full=false to disable the stats.
557      (true by default for now)
558
5592008-03-09 Complication
560    * Give the Jetty build file ability to ask permission
561      before downloading the Jetty archive from the web,
562      and to verify its SHA1 + MD5 hashes. Adjust the main build file
563      in accordance with this change.
564    * Improve the release checklist.
565
566* 2008-03-09  0.6.1.32 released
567
5682008-03-07 zzz
569    * Update news and version numbers
570
5712008-03-01 zzz
572    * Fix netdb.knownLeaseSets count reported by floodfill routers
573      (was broken by -3)
574
5752008-02-27 zzz
576    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
577    * i2psnark: Remove orion and gaytorrents from default tracker list
578    * Remove orion from jump list and from eepsite_index.html
579    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
580    * Capitalize OutboundMessageDistributor job name
581    * TunnelPool: Add a warning if all tunnels are backlogged
582
5832008-02-26 zzz
584    * Reintroduce NTCP backlog pushback, with switch back to
585      previous tunnel when no longer backlogged
586    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
587    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
588
5892008-02-21 zzz
590    * Raise inbound default bandwidth to 32KBps
591    * Fix config.jsp that showed 0KBps share bandwidth by default
592
5932008-02-19 zzz
594    * Addressbook: Disallow '--' in host names except in IDN,
595      add some reserved host names
596    * I2PTunnel: Clarify edit form
597    * NetDb: Remove many stats from netDb, effective as of .32
598    * profiles.jsp: Display capabilities
599    * Tunnels: Enforce max tunnel length of 8, catch an index error
600      http://forum.i2p/viewtopic.php?t=2561
601
6022008-02-16 zzz
603    * Fix race in TunnelDispatcher which caused
604      participating tunnel count to seesaw -
605      should increase network capacity
606    * Leave participating tunnels in 10s batches for efficiency
607    * Update participating tunnel ratestat when leaving a tunnel too,
608      to generate a smoother graph
609    * Fix tunnel.participatingMessageCount stat to include all
610      participating tunnels, not just outbound endpoints
611    * Simplify Expire Tunnel job name
612
6132008-02-13 zzz
614    * PersistentDataStore: Write out 300 records every 10 min
615      rather than 1 every 10 sec;
616      Don't store leasesets to disk or read them in
617    * Combine rates for pools with the same length setting
618      in the new tunnel build algorithm
619    * Clarify a log message in the UpdateHandler
620
6212008-02-13 zzz
622    * Make graphs clickable to get larger graphs
623    * Change SimpleTimer CRIT to a WARN, increase threshold
624    * Checklist update
625
6262008-02-11 welterde
627    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
628
6292008-02-10 zzz
630    * Add new tunnel build algorithm (preliminary)
631    * Change NTCP backlogged message from error to warning
632    * Checklist updates
633
634* 2008-02-10  0.6.1.31 released
635
6362008-02-10 Complication
637    * Update news and version numbers
638
6392008-02-06 zzz
640    * build.xml: Add some apps to javadoc
641    * checklist.txt: Add some things
642    * news.xml: make links relative
643    * runplain.sh: Add some comments
644    * wrapper.config: Add some comments
645
6462008-02-05 Complication
647    * Change the dates too (sorry for such forgetfulness!)
648
6492008-02-04 Complication
650    * Also use the new key for checking, and add it into news.xml
651
6522008-02-04 Complication
653    * Added my release signing key into TrustedUpdate.java
654
6552008-01-31 zzz
656    * NewsFetcher: Change fetch failed from error to warning
657    * installer: Fix URL and "email"
658    * checklist.txt: New release checklist
659
6602008-01-29 zzz
661    * Addressbook: Change default subscription
662    * ConfigUpdateHandler: Change default news URL
663    * initialNews.xml: Update version to .31
664    * news.xml: More updates
665    * hosts.txt: Add i2p-projekt.i2p
666    * readme.html: More URL updates
667    * SusiDNS: Change references to default subscription
668
6692008-01-28 zzz
670    * news.xml: Updates, still preliminary
671    * ReseedHandler: Change default URL
672    * i2ptunnel.config: Change default outproxies
673    * readme.html: Change *.i2p.net URLs
674    * help.jsp: Change *.i2p.net URLs
675    * eepsite_index.html: Change stats.i2p addressbook subscription URL
676    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
677
678* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
679
6802008-01-08 zzz
681    * addressbook: Limit size of subscribed hosts.txt,
682        don't save old etag or last-modified data
683    * EepGet: Add some logging,
684        enforce size limits even when size not in returned header,
685        don't return old etag or last-modified data,
686        don't call transferFailed listener more than once
687    * Sign my update signing key
688    * NewsFetcher: add last-modified support, reduce number of retries
689    * Error pages: add icon and logo,
690        clarify 'destination not found' and 'proxy not found' pages
691
6922008-01-07 zzz
693    * profiles.jsp formatting cleanup
694    * NTCP: Reduce max idle time from 60m to 20m
695    * NTCP: Fix idle time on connections with zero messages,
696      correctly drop these connections
697
6982008-01-03 zzz
699    * addressbook: Do basic validation of hostnames and destkeys
700    * susidns: Add support for the private addressbook,
701      update the text and links somewhat
702
7032008-01-02 zzz
704    * Add stats.i2p to the jump list
705    * Impose 20MB limit on POSTs and catch OOMs in POST
706    * eepsite_index.html: add stats.i2p services
707    * addressbook: log source of new keys; disallow dests > 516 bytes
708    * addressbook: convert hostnames to lower case to prevent duplicates
709    * susidns: generalize references to orion
710
7112007-12-29 zzz
712    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
713    * Allow commas in router.trustedUpdateKeys and router.updateURL again
714    * Change default news host from dev.i2p.net to dev.i2p
715    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
716
7172007-12-28 zzz
718    * Add zzz's update signing key
719
7202007-12-26 Complication
721    * Improve reseed handler (less repetitive code,
722      avoid reporting errors when less than 10% of fetches fail)
723
7242007-12-26 Complication
725    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
726      and unescape them in DataHelper.loadProps() to support
727      saving and loading config properties with line breaks
728    * Change the update URLs textbox into a textarea like keys have,
729      so different URLs go on different lines
730    * Modify TrustedUpdate to provide a method which supplies a key list
731      delimited with CR LF line breaks
732    * Modify DEFAULT_UPDATE_URL to supply a default URL list
733      delimited with CR LF line breaks
734    * Modify selectUpdateURL() to handle URL lists
735      delimited by any kind of line breaks
736    * Start saving trusted update keys
737    * Improve formatting on configupdate.jsp
738
7392007-12-22 zzz
740    * Add support for multiple update URLs
741    * Change default for update to use i2p proxy,
742      add several URLs as defaults
743    * Enable trusted key form on configupdate.jsp
744    * Clarify the 'destination not found' error page
745
7462007-12-16 zzz
747    * i2psnark: remove anonymitytracker from default list
748
7492007-12-10 zzz
750    * Fix NPE in CLI TrustedUpdate keygen
751
7522007-12-02 Complication
753    * Commit SAM v2 patch from mkvore (thank you!)
754    * Minor reformatting to preserve consistent whitespace
755      in old SAM classes (new classes unaltered)
756
7572007-12-01 Complication
758    * Separate the checks "does Jetty .zip file need downloading"
759      and "does Jetty .zip file need extracting" in the Jetty buildfile.
760      First download (unless already done), then extract (unless done).
761
7622007-11-26 zzz
763    * i2psnark: add timeout for receive inactivity
764
7652007-11-24 zzz
766    * i2psnark: increase streaming lib write timeout to 240 sec and change
767      timeout action from "ping" to "disconect", as the fix in .30 to
768      honor options on outbound connections led to hung outbound connections
769      (bitfield never transmitted, connection never dropped)
770
7712007-11-06 jrandom
772    * add i2host.i2p to the jump list
773
7742007-10-11 zzz
775    * IRC Proxy: Fix several possible anonymity holes:
776      - Block CTCP in NOTICE messages
777      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
778      - Check for lower case commands
779    (Thanks sponge!)
780
7812007-10-07  jrandom
782    * back out the NTCP backlog pushback, as it could be used to mount an
783      active anonymity attack.
784
785* 2007-10-07  0.6.1.30 released
786
7872007-10-07  Complication
788    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
789      broke retrying.
790
7912007-09-27  zzz
792    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
793    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
794      fix some of the sorting
795
7962007-09-22  zzz
797    * Send messages for the same destination out the same outbound
798      tunnel to reduce out-of-order delivery.
799
8002007-09-19  zzz
801    * i2psnark: Fix broken multifile torrent Delete;
802        cleanup Storage resources in AddTorrent;
803        don't autostart torrent after Create
804
8052007-09-18  zzz
806    * eepsite_index.html: Add links to trevorreznik address book
807    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
808    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
809    * i2psnark: Don't make outbound connections to already-connected peers
810    * i2psnark: Debug logging cleanup
811
8122007-09-14  zzz
813    * eepget: Increase header timeout to 45s
814    * HTTP proxy: Return a better error message for localhost requests
815    * tunnels: Fix PooledTunnelCreatorConfig memory leak
816
8172007-09-09  zzz
818    * eepget: Add support for Last-Modified and If-Modified-Since
819    * addressbook: Finish incomplete support for Last-Modified
820
8212007-09-08  zzz
822    * eepget: Copy over SocketTimeout.java file from syndie
823
8242007-09-07  jrandom
825    * eepget: Merge timeout support from syndie
826
827* 2007-08-23  0.6.1.29 released
828
8292007-08-12  zzz
830    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
831      tweak the eepsite and troubleshooting sections
832
8332007-08-11  zzz
834    * Add stats for individual tunnel rates (nice when graphed)
835    * i2psnark: Fix outbound tunnel nickname
836
8372007-08-05  Complication
838    * Update the sharing calculator on config.jsp
839      and explain the trade-off even more thoroughly.
840
8412007-08-04  Complication
842    * Lower the threshold between the K and L bandwidth class,
843      so that K is now < 12 KB/s, instead of <= 16 KB/s.
844      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
845      participate in routing, if they keep the default share percentage.
846
8472007-07-16  zzz
848    * i2psnark: Add tooltip info for choked/uninterested
849
8502007-07-16  zzz
851    * Make selection of graphed data configurable via configstats.jsp,
852      remove most of the default graphs to save some memory
853
8542007-07-15  zzz
855    * Add current values to graph legends
856    * Fix up previous Rate fix to check for divide by zero
857
8582007-07-14  Complication
859    * Take the post-download routerInfo size check back out of ReseedHandler,
860      since it wasn't helpful, and a lower limit caused false warnings.
861    * Give EepGet ability to enforce a min/max HTTP response size.
862    * Enforce a maximum response size of 8 MB when ReseedHandler
863      downloads into a ByteArrayOutputStream.
864    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
865      change invocation from RouterConsoleRunner accordingly.
866    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
867      provide status reports to indicate the progress of reseeding.
868    * Enable icon for default eepsite, and the index page
869      of the router console (more later).
870
8712007-07-14  zzz
872    * Clean up graphs.jsp - set K=1024 where appropriate,
873      output image sizes in html, catch ooms, other minor tweaks
874    * Fix current event count truncation which fixes graphs with low
875      60-sec event counts displaying high values
876      (bw.* and router.* graphs for example were 1.5x too high)
877      Affects all "events per period" (non-lifetime) counts.
878
8792007-07-09  zzz
880    * i2psnark: give a better error message for a non-i2p torrent
881
8822007-07-07  zzz
883    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
884      SSU will notify/restart NTCP when the external address changes.
885      Now you can enable inbound TCP without a static IP or dyndns service.
886
8872007-07-04  zzz
888    * Display calculated share bandwidth and remove load testing
889      on config.jsp
890
8912007-07-01  zzz
892    * Replace broken option i2np.udp.alwaysPreferred with
893      i2np.udp.preferred and adjust UDP bids; possible settings are
894      "false" (default), "true", and "always".
895      Default setting results in same behavior as before
896      (NTCP is preferred unless it isn't established and UDP is established).
897      Use to compare NTCP and UDP transports.
898
8992007-06-27  jrandom
900    * fix for a streaming lib bug that could leave a thread waiting
901      indefinitely (thanks Complication!)
902
9032007-06-16  Complication
904    * First pass on EepGet and ReseedHandler improvements,
905      please avoid use on routers which matter!
906    * Give EepGet ability of downloading into an OutputStream,
907      such as the ByteArrayOutputStream of ReseedHandler.
908    * Detect failure to reseed better, report it persistently
909      and more verbosely, provide a link to logs
910      and suggest manual reseed.
911
9122007-05-06  Complication
913    * Fix the build.xml file, so the preppkg build target won't try copying files
914      which became deprecated with the old Syndie (thanks for alerting, itsu!)
915
9162007-03-31  zzz
917    * Add trevorreznik jump server to the http proxy error page
918    * Add anonymity to the trackers supporting details links in i2psnark
919
9202007-03-24  zzz
921    * Remove Syndie from build targets and navbar
922
9232007-03-22  zzz
924    * i2psnark tracker handling tweaks:
925    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
926    -   Add Base URL to tracker list configuration
927    -   Web page links built from tracker list Base URLs
928    -   Only build and sort tracker list once
929    -   Add anonymityWeb tracker to default list
930    -   Add tooltip info for TrackerErrs
931    -   Stop torrent if not registered with tracker
932    -   Mark temp files as delete on exit
933
9342007-03-18  zzz
935    * i2psnark: Cleanup some handling of saved partial pieces
936    * i2psnark: Put bit counting in Bitfield.java for efficiency
937    * i2psnark: Save torrent completion state in i2psnark.config
938
939* 2007-03-17  0.6.1.28 released
940
9412007-03-13  zzz
942    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
943
9442007-03-12  jrandom
945    * dodge a race on startup (thanks zzz!)
946
9472007-03-10  zzz
948    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
949      (RFC 2988) to reduce early RTO values
950
9512007-03-08  zzz
952    * i2psnark changes to improve upload performance:
953    *  Implement total uploader limit (10)
954    *  Don't timeout non-piece messages out
955    *  Change chunk size to 32K (was 64K)
956    *  Change request limit to 64K (was 256K)
957    * i2psnark: Disconnect from seeds when complete
958
9592007-03-07  zzz
960    * Remove dynamic router keys from config.jsp
961
9622007-03-07  zzz
963    * Streaming lib changes to improve upstream performance during congestion:
964    *   Change min window size from 12 to 1
965    *   Change max timeout from 10 to 45 sec
966    *   Change initial timeout from 10 to 15 sec
967    *   Change intial window size for i2psnark from 12 to 1
968    *   Change slow start growth rate for i2psnark from 1/2 to 1
969
9702007-03-04  zzz
971    * Update eepsite_index.html
972
9732007-03-03  zzz
974    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
975    * Add a updaterWithJetty build target
976
9772007-03-03  zzz
978    * Implement priority sending for NTCP
979    * Disable trimForOverload() in tunnel BuildExecutor which
980      was preventing tunnel builds when outbound traffic was high
981      (i.e. most of the time when running i2psnark)
982
9832007-02-28  zzz
984    * i2psnark: File reopen cleanup
985
9862007-02-28  zzz
987    * i2psnark: Add peer details to web page
988
989* 2007-02-15  0.6.1.27 released
990
9912007-02-15  jrandom
992    * Limit the whispering floodfill sends to at most 3 randomly
993      chosen from the known floodfill peers
994
9952007-02-14  jrandom
996    * Don't filter out KICK and H(ide oper status) IRC messages
997      (thanks Takk and postman!)
998
9992007-02-13  jrandom
1000    * Tell our peers about who we know in the floodfill netDb every
1001      6 hours or so, mitigating the situation where peers lose track
1002      of floodfill routers.
1003    * Disable the Syndie updater (people should use the new Syndie,
1004      not this one)
1005    * Disable the eepsite tunnel by default
1006
10072007-01-30  zzz
1008    * i2psnark: Don't hold _snarks lock while checking a snark,
1009      so web page is responsive at startup
1010
10112007-01-29  zzz
1012    * i2psnark: Add NickyB tracker
1013
10142007-01-28  zzz
1015    * i2psnark: Don't hold sendQueue lock while flushing output,
1016      to make everything run smoother
1017
10182007-01-27  zzz
1019    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
1020
10212007-01-20  Complication
1022    * Drop overlooked comment
1023
10242007-01-20  Complication
1025    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
1026      instead of System, so setting a reseed URL in advanced configuration has effect.
1027    * Clean out obsolete reseed code from ConfigNetHandler.
1028
10292007-01-20  zzz
1030    * i2psnark: More choking rotation tweaks
1031    * Improve performance by not reading in the whole
1032      piece from disk for each request. A huge memory savings
1033      on 1MB torrents with many peers.
1034
10352007-01-17  zzz
1036    * Add new HTTP Proxy error message for non-http protocols
1037
10382007-01-17  zzz
1039    * Add note on Syndie index.html steering people to new Syndie
1040
10412007-01-16  zzz
1042    * i2psnark: Fix crash when autostart off and
1043      tcrrent started manually
1044
10452007-01-16  zzz
1046    * i2psnark: Fix bug caused by last i2psnark checkin
1047      (ConnectionAcceptor not started)
1048    * Don't start PeerCoordinator, ConnectionAcceptor,
1049      and TrackerClient unless starting torrent
1050
10512007-01-15  jrandom
1052    * small guard against unnecessary streaming lib reset packets
1053      (thanks Complication!)
1054
10552007-01-15  zzz
1056    * i2psnark: Add 'Stop All' link on web page
1057    * Add some links to trackers and forum on web page
1058    * Don't start tunnel if 'Autostart' unchecked
1059    * Fix torrent restart bug by reopening file descriptors
1060
10612007-01-14  zzz
1062    * i2psnark: Improvements for torrents with > 4 leechers:
1063      choke based on upload rate when seeding, and
1064      be smarter and fairer about rotating choked peers.
1065    * Handle two common i2psnark OOM situations rather
1066      than shutting down the whole thing.
1067    * Fix reporting to tracker of remaining bytes for
1068      torrents > 4GB (but ByteMonsoon still has a bug)
1069
10702006-10-29  zzz
1071    * i2psnark: Fix and enable generation of multifile torrents,
1072      print error if no tracker selected at create-torrent,
1073      fix stopping a torrent that hasn't started successfully,
1074      add eBook and GayTorrents trackers to form,
1075      web page formatting tweaks
1076
1077* 2006-10-10  0.6.1.26 released
1078
10792006-10-29  Complication
1080    * Ensure we get NTP samples from more diverse sources
1081      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1082    * Discard median-based peer skew calculator as framed average works,
1083      and adjusting its percentage can make it behave median-like
1084    * Require more data points (from at least 20 peers)
1085      before considering a peer skew measurement reliable
1086
10872006-10-10  jrandom
1088    * Removed the status display from the console, as its more confusing
1089      than informative (though the content is still displayed in the HTML)
1090
10912006-10-08  Complication
1092    * Add a framed average peer clock skew calculator
1093    * Add config property "router.clockOffsetSanityCheck" to determine
1094      if NTP-suggested clock offsets get sanity checked (default "true")
1095    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1096      by more than 5 seconds, or make it more than 20 seconds total
1097    * Decrease log level in getMedianPeerClockSkew()
1098
10992006-09-29  zzz
1100    * i2psnark: Second try at synchronization fix - synch addRequest()
1101      completely rather than just portions of it and requestNextPiece()
1102
11032006-09-27  jrandom
1104    * added HMAC-SHA256
1105    * properly use CRLF with EepPost
1106    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1107    * PBE session key generation (with 1000 rounds of SHA256)
1108    * misc SDK helper functions
1109
11102006-09-26  Complication
1111    * Take back another inadverent logging change in NTCPConnection
1112
11132006-09-26  Complication
1114    * Take back an accidental log level change
1115
11162006-09-26  Complication
1117    * Subclass from Clock a RouterClock which can access router transports,
1118      with the goal of developing it to second-guess NTP results
1119    * Make transports report clock skew in seconds
1120    * Adjust renderStatusHTML() methods accordingly
1121    * Show average for NTCP clock skews too
1122    * Give transports a getClockSkews() method to report clock skews
1123    * Give transport manager a getClockSkews() method to aggregate results
1124    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1125      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1126    * Extra explicitness in NTCP classes to denote unit of time.
1127    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1128
11292006-09-25  zzz
1130    * i2psnark: Paranoid copy before writing pieces,
1131      recheck files on completion, redownload bad pieces
1132    * i2psnark: Don't contact tracker as often when seeding
1133
11342006-09-24  zzz
1135    * i2psnark: Add some synchronization to prevent rare problem
1136      after restoring orphan piece
1137
11382006-09-20  zzz
1139    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1140      rapid choke/unchokes
1141    * i2psnark: Truncate long TrackerErr messages on web page
1142
11432006-09-16  zzz
1144    * i2psnark: Implement retransmission of requests. This
1145      eliminates one cause of complete stalls with a peer.
1146      This problem is common on torrents with a small number of
1147      active peers where there are no choke/unchokes to kickstart things.
1148
11492006-09-13  zzz
1150    * i2psnark: Fix restoral of partial pieces broken by last patch
1151
11522006-09-13  zzz
1153    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1154      preventing premature end game
1155    * i2psnark: Randomize selection of next piece during end game
1156    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1157    * i2psnark: strip ".torrent" on web page
1158    * i2psnark: Limit piece size in generated torrent to 1MB max
1159
11602006-09-09  zzz
1161    * i2psnark: Add "Stalled" indication and stat totals on web page
1162
11632006-09-09  zzz
1164    * i2psnark: Fix bug where new peers would always be sent an "interested"
1165      regardless of actual interest
1166    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1167      memory and efficiency problems
1168
1169* 2006-09-09  0.6.1.25 released
1170
11712006-09-08  jrandom
1172    * Tweak the PRNG logging so it only displays error messages if there are
1173      problems
1174    * Disable dynamic router keys for the time being, as they don't offer
1175      meaningful security, may hurt the router, and makes it harder to
1176      determine the network health.  The code to restart on SSU IP change is
1177      still enabled however.
1178    * Disable tunnel load testing, leaning back on the tiered selection for
1179      the time being.
1180    * Spattering of bugfixes
1181
11822006-09-07  zzz
1183    * i2psnark: Increase output timeout from 2 min to 4 min
1184    * i2psnark: Orphan debug msg cleanup
1185    * i2psnark: More web rate report cleanup
1186
11872006-09-05  zzz
1188    * i2psnark: Implement basic partial-piece saves across connections
1189    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1190      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1191      code in i2psnark ineffective. Will have to research why there is transmit but
1192      not receive inactivity code. With the current connection limit of 24 peers
1193      we aren't in any danger of keeping out new peers by keeping inactive ones.
1194    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1195    * i2psnark: Fix dropped chunk handling
1196    * i2psnark: Web rate report cleanup
1197
11982006-09-04  zzz
1199    * i2psnark: Report cleared trackerErr immediately
1200    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1201    * i2psnark: Set up new connections more quickly
1202    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1203    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1204
12052006-09-04  zzz
1206    * Enable pipelining in i2psnark
1207    * Make i2psnark tunnel default be 1 + 0-1
1208
12092006-09-03  zzz
1210    * Add rate reporting to i2psnark
1211
12122006-09-03  Complication
1213    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1214    * Print messages about addressbook size to give better overview
1215    * Enable delete function in published addressbook
1216
12172006-08-21  Complication
1218    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1219
12202006-08-03  jrandom
1221    * Decrease the recently modified tunnel building timeout, though keep
1222      the scaling on their processing
1223
12242006-07-31  jrandom
1225    * Increase the tunnel building timeout
1226    * Avoid a rare race (thanks bar!)
1227    * Fix the bandwidth capacity publishing code to factor in share percentage
1228      and outbound throttling (oops)
1229
12302006-07-29  Complication
1231    * Treat NTP responses from unexpected stratums like failures
1232
1233* 2006-07-28  0.6.1.24 released
1234
12352006-07-28  jrandom
1236    * Don't try to reverify too many netDb entries at once (thanks
1237      cervantes and Complication!)
1238
12392006-07-28  jrandom
1240    * Actually fix the threading deadlock issue in the netDb (removing
1241      the synchronized access to individual kbuckets while validating
1242      individual entries) (thanks cervantes, postman, frosk, et al!)
1243
1244* 2006-07-27  0.6.1.23 released
1245
12462006-07-27  jrandom
1247    * Cut down NTCP connection establishments once we know the peer is skewed
1248      (rather than wait for full establishment before verifying)
1249    * Removed a lock on the stats framework when accessing rates, which
1250      shouldn't be a problem, assuming rates are created (pretty much) all at
1251      once and merely updated during the lifetime of the jvm.
1252
12532006-07-27  jrandom
1254    * Further NTCP write status cleanup
1255    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1256
12572006-07-26  jrandom
1258    * When dropping a netDb router reference, only accept newer
1259      references as part of the update check
1260    * If we have been up for a while, don't accept really old
1261      router references (published 2 or more days ago)
1262    * Drop router references once they are no longer valid, even if
1263      they were allowed in due to the lax restrictions on startup
1264
12652006-07-26  jrandom
1266    * Every time we create a new router identity, add an entry to the
1267      new "identlog.txt" text file in the I2P install directory.  For
1268      debugging purposes, publish the count of how many identities the
1269      router has cycled through, though not the identities itself.
1270    * Cleaned up the way the multitransport shitlisting worked, and
1271      added per-transport shitlists
1272    * When dropping a router reference locally, first fire a netDb
1273      lookup for the entry
1274    * Take the peer selection filters into account when organizing the
1275      profiles (thanks Complication!)
1276    * Avoid some obvious configuration errors for the NTCP transport
1277      (invalid ports, "null" ip, etc)
1278    * Deal with some small NTCP bugs found in the wild (unresolveable
1279      hosts, strange network discons, etc)
1280    * Send our netDb info to peers we have direct NTCP connections to
1281      after each 6-12 hours of connection uptime
1282    * Clean up the NTCP reading and writing queue logic to avoid some
1283      potential delays
1284    * Allow people to specify the IP that the SSU transport binds on
1285      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1286
1287* 2006-07-18  0.6.1.22 released
1288
12892006-07-18  jrandom
1290    * Add a failsafe to the NTCP transport to make sure we keep
1291      pumping writes when we should.
1292    * Properly reallow 16-32KBps routers in the default config
1293      (thanks Complication!)
1294
12952006-07-16  Complication
1296    * Collect tunnel build agree/reject/expire statistics
1297      for each bandwidth tier of peers (and peers of unknown tiers,
1298      even if those shouldn't exist)
1299
13002006-07-14  jrandom
1301    * Improve the multitransport shitlisting (thanks Complication!)
1302    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1303      the default configuration (thanks for the stats Complication!)
1304    * Properly allow older router references to load on startup
1305      (thanks bar, Complication, et al!)
1306    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1307      hopefully today's changes should make this unnecessary (thanks void!)
1308    * Improved NTCP buffering
1309    * Close NTCP connections if we are too backlogged when writing to them
1310
13112006-07-04  jrandom
1312    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1313      connections only.  Those who configure their NAT/firewall to allow
1314      inbound connections and specify the external host and port
1315      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1316      SSU is still enabled for use by default for all users as a fallback.
1317    * Substantial bugfix to the tunnel gateway processing to transfer
1318      messages sequentially instead of interleaved
1319    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1320      GNU/Classpath based JVMs
1321    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1322      refill with a background thread to refill the output buffer
1323    * Add per-transport support for the shitlist
1324    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1325      contention
1326
13272006-07-01  Complication
1328    * Ensure that the I2PTunnel web interface won't update tunnel settings
1329      for shared clients when a non-shared client is modified
1330      (thanks for spotting, BarkerJr!)
1331
13322006-06-14  cervantes
1333    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1334      that use Bitstream Vera fonts @ 96 dpi
1335
1336* 2006-06-14  0.6.1.21 released
1337
13382006-06-13  jrandom
1339    * Use a minimum uptime of 2 hours, not 4 (oops)
1340
13412006-06-13  jrandom
1342    * Cut down the proactive rejections due to queue size - if we are
1343      at the point of having decrypted the request off the queue, might
1344      as well let it through, rather than waste that decryption
1345
13462006-06-11  Kloug
1347    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1348      outstanding pings/pongs
1349
13502006-06-10  jrandom
1351    * Further reduction in proactive rejections
1352
13532006-06-09  jrandom
1354    * Don't let the pending tunnel request queue grow beyond reason
1355      (letting things sit for up to 30s when they fail after 10s
1356      seems a bit... off)
1357
13582006-06-08  jrandom
1359    * Be more conservative in the proactive rejections
1360
13612006-06-04  Complication
1362    * Trim out sending a blank line before USER in susimail.
1363      Seemed to break in rare cases, thanks for reporting, Brachtus!
1364
1365* 2006-06-04  0.6.1.20 released
1366
13672006-06-04  jrandom
1368    * Reduce the SSU ack frequency
1369    * Tweaked the tunnel rejection settings to reject less aggressively
1370
13712006-05-31  jrandom
1372    * Only send netDb searches to the floodfill peers for the time being
1373    * Add some proof of concept filters for tunnel participation.  By default,
1374      it will skip peers with an advertised bandwith of less than 32KBps or
1375      an advertised uptime of less than 2 hours.  If this is sufficient, a
1376      safer implementation of these filters will be implemented.
1377
1378* 2006-05-18  0.6.1.19 released
1379
13802006-05-18  jrandom
1381    * Made the SSU ACKs less frequent when possible
1382
13832006-05-17  Complication
1384    * Fix some oversights in my previous changes:
1385      adjust some loglevels, make a few statements less wasteful,
1386      make one comparison less confusing and more likely to log unexpected values
1387
13882006-05-17  jrandom
1389    * Make the peer page sortable
1390    * SSU modifications to cut down on unnecessary connection failures
1391
13922006-05-16  jrandom
1393    * Further shitlist randomizations
1394    * Adjust the stats monitored for detecting cpu overload when dropping new
1395      tunnel requests
1396
13972006-05-15  jrandom
1398    * Add a load dependent throttle on the pending inbound tunnel request
1399      backlog
1400    * Increased the tunnel test failure slack before killing a tunnel
1401
14022006-05-13  Complication
1403    * Separate growth factors for tunnel count and tunnel test time
1404    * Reduce growth factors, so probabalistic throttle would activate
1405    * Square probAccept values to decelerate stronger when far from average
1406    * Create a bandwidth stat with approximately 15-second half life
1407    * Make allowTunnel() check the 1-second bandwidth for overload
1408      before doing allowance calculations using 15-second bandwidth
1409    * Tweak the overload detector in BuildExecutor to be more sensitive
1410      for rising edges, add ability to initiate tunnel drops
1411    * Add a function to seek and drop the highest-rate participating tunnel,
1412      keeping a fixed+random grace period between such drops.
1413      It doesn't seem very effective, so disabled by default
1414      ("router.dropTunnelsOnOverload=true" to enable)
1415
14162006-05-11  jrandom
1417    * PRNG bugfix (thanks cervantes and Complication!)
1418
1419* 2006-05-09  0.6.1.18 released
1420
14212006-05-09  jrandom
1422    * Further tunnel creation timeout revamp
1423
14242006-05-07  Complication
1425    * Fix problem whereby repeated calls to allowed() would make
1426      the 1-tunnel exception permit more than one concurrent build
1427
14282006-05-06  jrandom
1429    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1430      while tracking the extended timeout events.
1431
14322006-05-04  jrandom
1433    * Short circuit a highly congested part of the stat logging unless its
1434      required (may or may not help with a synchronization issue reported by
1435      andreas)
1436
14372006-05-03  Complication
1438    * Allow a single build attempt to proceed despite 1-minute overload
1439      only if the 1-second rate shows enough spare bandwidth
1440      (e.g. overload has already eased)
1441
14422006-05-02  Complication
1443    * Correct a misnamed property in SummaryHelper.java
1444      to avoid confusion
1445    * Make the maximum allowance of our own concurrent
1446      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1447      within the fixed range 2..10
1448    * While overloaded, try to avoid completely choking our own build attempts,
1449      instead prefer limiting them to 1
1450
14512006-05-01  jrandom
1452    * Adjust the tunnel build timeouts to cut down on expirations, and
1453      increased the SSU connection establishment retransmission rate to
1454      something less glacial.
1455    * For the first 5 minutes of uptime, be less aggressive with tunnel
1456      exploration, opting for more reliable peers to start with.
1457
14582006-05-01  jrandom
1459    * Fix for a netDb lookup race (thanks cervantes!)
1460
14612006-04-27  jrandom
1462    * Avoid a race in the message reply registry (thanks cervantes!)
1463
14642006-04-27  jrandom
1465    * Fixed the tunnel expiration desync code (thanks Complication!)
1466
1467* 2006-04-23  0.6.1.17 released
1468
14692006-04-19  jrandom
1470    * Adjust how we pick high capacity peers to allow the inclusion of fast
1471      peers (the previous filter assumed an old usage pattern)
1472    * New set of stats to help track per-packet-type bandwidth usage better
1473    * Cut out the proactive tail drop from the SSU transport, for now
1474    * Reduce the frequency of tunnel build attempts while we're saturated
1475    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1476
1477* 2006-04-15  0.6.1.16 released
1478
14792006-04-15  jrandom
1480    * Adjust the proactive tunnel request dropping so we will reject what we
1481      can instead of dropping so much (but still dropping if we get too far
1482      overloaded)
1483
14842006-04-14  jrandom
1485    * 0 isn't very random
1486    * Adjust the tunnel drop to be more reasonable
1487
14882006-04-14  jrandom
1489    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1490    * Made the bw-related tunnel join throttle much simpler
1491
14922006-04-14  jrandom
1493    * Make some more stats graphable, and allow some internal tweaking on the
1494      tunnel pairing for creation and testing.
1495
1496* 2006-04-13  0.6.1.15 released
1497
14982006-04-12  jrandom
1499    * Added a further failsafe against trying to queue up too many messages to
1500      a peer.
1501
15022006-04-12  jrandom
1503    * Watch out for failed syndie index fetches (thanks bar!)
1504
15052006-04-11  jrandom
1506    * Throttling improvements on SSU - throttle all transmissions to a peer
1507      when we are retransmitting, not just retransmissions.  Also, if
1508      we're already retransmitting to a peer, probabalistically tail drop new
1509      messages targetting that peer, based on the estimated wait time before
1510      transmission.
1511    * Fixed the rounding error in the inbound tunnel drop probability.
1512
15132006-04-10  jrandom
1514    * Include a combined send/receive graph (good idea cervantes!)
1515    * Proactively drop inbound tunnel requests probabalistically as the
1516      estimated queue time approaches our limit, rather than letting them all
1517      through up to that limit.
1518
15192006-04-08  jrandom
1520    * Stat summarization fix (removing the occational holes in the jrobin
1521      graphs)
1522
15232006-04-08  jrandom
1524    * Process inbound tunnel requests more efficiently
1525    * Proactively drop inbound tunnel requests if the queue before we'd
1526      process it in is too long (dynamically adjusted by cpu load)
1527    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1528      proactively drop too many requests.
1529    * Display the number of pending inbound tunnel join requests on the router
1530      console (as the "handle backlog")
1531    * Include a few more stats in the default set of graphs
1532
15332006-04-06  jrandom
1534    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1535
15362006-04-06  jrandom
1537    * Fixed a typo in the reply cleanup code
1538
1539* 2006-04-05  0.6.1.14 released
1540
15412006-04-05  jrandom
1542    * Cut down on the time that we allow a tunnel creation request to sit by
1543      without response, and reject tunnel creation requests that are lagged
1544      locally.  Also switch to a bounded FIFO instead of a LIFO
1545    * Threading tweaks for the message handling (thanks bar!)
1546    * Don't add addresses to syndie with blank names (thanks Complication!)
1547    * Further ban clearance
1548
15492006-04-05  jrandom
1550    * Fix during the ssu handshake to avoid an unnecessary failure on
1551      packet retransmission (thanks ripple!)
1552    * Fix during the SSU handshake to use the negotiated session key asap,
1553      rather than using the intro key for more than we should (thanks ripple!)
1554    * Fixes to the message reply registry (thanks Complication!)
1555    * More comprehensive syndie banning (for repeated pushes)
1556    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1557      testing purposes
1558    * Put a floor back on the capacity threshold, so too many failing peers
1559      won't cause us to pick very bad peers (unless we have very few good
1560      ones)
1561    * Bugfix to cut down on peers using introducers unneessarily (thanks
1562      Complication!)
1563    * Reduced the default streaming lib message size to fit into a single
1564      tunnel message, rather than require 5 tunnel messages to be transferred
1565      without loss before recomposition.  This reduces throughput, but should
1566      increase reliability, at least for the time being.
1567    * Misc small bugfixes in the router (thanks all!)
1568    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1569
15702006-04-01  jrandom
1571    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1572    * Filter the IRC ping/pong messages, as some clients send unsafe
1573      information in them (thanks aardvax and dust!)
1574
15752006-03-30  jrandom
1576    * Substantially reduced the lock contention in the message registry (a
1577      major hotspot that can choke most threads).  Also reworked the locking
1578      so we don't need per-message timer events
1579    * No need to have additional per-peer message clearing, as they are
1580      either unregistered individually or expired.
1581    * Include some of the more transient tunnel throttling
1582
1583* 2006-03-26  0.6.1.13 released
1584
15852006-03-25  jrandom
1586    * Added a simple purge and ban of syndie authors, shown as the
1587      "Purge and ban" button on the addressbook for authors that are already
1588      on the ignore list.  All of their entries and metadata are deleted from
1589      the archive, and the are transparently filtered from any remote
1590      syndication (so no user on the syndie instance will pull any new posts
1591      from them)
1592    * More strict tunnel join throtting when congested
1593
15942006-03-24  jrandom
1595    * Try to desync tunnel building near startup (thanks Complication!)
1596    * If we are highly congested, fall back on only querying the floodfill
1597      netDb peers, and only storing to those peers too
1598    * Cleaned up the floodfill-only queries
1599
16002006-03-21  jrandom
1601    * Avoid a very strange (unconfirmed) bug that people using the systray's
1602      browser picker dialog could cause by disabling the GUI-based browser
1603      picker.
1604    * Cut down on subsequent streaming lib reset packets transmitted
1605    * Use a larger MTU more often
1606    * Allow netDb searches to query shitlisted peers, as the queries are
1607      indirect.
1608    * Add an option to disable non-floodfill netDb searches (non-floodfill
1609      searches are used by default, but can be disabled by adding
1610      netDb.floodfillOnly=true to the advanced config)
1611
16122006-03-20  jrandom
1613    * Fix to allow for some slack when coalescing stats
1614    * Workaround some oddball errors
1615
16162006-03-18  jrandom
1617    * Added a new graphs.jsp page to show all of the stats being harvested
1618
16192006-03-18  jrandom
1620    * Made the netDb search load limitations a little less stringent
1621    * Add support for specifying the number of periods to be plotted on the
1622      graphs - e.g. to plot only the last hour of a stat that is averaged at
1623      the 60 second period, add &periodCount=60
1624
16252006-03-17  jrandom
1626    * Add support for graphing the event count as well as the average stat
1627      value (done by adding &showEvents=true to the URL).  Also supports
1628      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1629      the title (&hideTitle=true).
1630    * Removed an unnecessary arbitrary filter on the profile organizer so we
1631      can pick high capacity and fast peers more appropriately
1632
16332006-03-16  jrandom
1634    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1635      console.  Selected stats can be harvested automatically and fed into
1636      in-memory RRD databases, and those databases can be served up either as
1637      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1638      details).  A base set of stats are harvested by default, but an
1639      alternate list can be specified by setting the 'stat.summaries' list on
1640      the advanced config.  For instance:
1641      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1642    * HTML tweaking for the general config page (thanks void!)
1643    * Odd NPE fix (thanks Complication!)
1644
16452006-03-15  Complication
1646    * Trim out an old, inactive IP second-guessing method
1647      (thanks for spotting, Anonymous!)
1648
16492006-03-15  jrandom
1650    * Further stat cleanup
1651    * Keep track of how many peers we are actively trying to communicate with,
1652      beyond those who are just trying to communicate with us.
1653    * Further router tunnel participation throttle revisions to avoid spurious
1654      rejections
1655    * Rate stat display cleanup (thanks ripple!)
1656    * Don't even try to send messages that have been queued too long
1657
16582006-03-05  zzz
1659    * Remove the +++--- from the logs on i2psnark startup
1660
16612006-03-05  jrandom
1662    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1663    * Give netDb lookups to floodfill peers more time, as they are much more
1664      likely to succeed (thereby cutting down on the unnecessary netDb
1665      searches outside the floodfill set)
1666    * Fix to the SSU IP detection code so we won't use introducers when we
1667      don't need them (thanks Complication!)
1668    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1669      peers given to it
1670    * Don't let netDb searches wander across too many peers
1671    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1672      as its too volatile to have much meaning.
1673    * Don't bork if a Syndie post is missing an entry.sml
1674
16752006-03-05  Complication
1676    * Reduce exposed statistical information,
1677      to make build and uptime tracking more expensive
1678
16792006-03-04  Complication
1680    * Fix the announce URL of orion's tracker in Snark sources
1681
16822006-03-03  Complication
1683    * Explicit check for an index out of bounds exception while parsing
1684      an inbound IRC command (implicit check was there already)
1685
16862006-03-01  jrandom
1687    * More aggressive tunnel throttling as we approach our bandwidth limit,
1688      and throttle based off periods wider than 1 second.
1689    * Included Doubtful Salmon's syndie stylings (thanks!)
1690
16912006-02-27  zzz
1692    * Update error page templates to add \r, Connection: close, and
1693      Proxy-connection: close to headers.
1694
1695* 2006-02-27  0.6.1.12 released
1696
16972006-02-27  jrandom
1698    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1699      machines, rather than the generic jbigi (until we have an athlon64
1700      optimized version)
1701
17022006-02-26  jrandom
1703    * Switch from the bouncycastle to the gnu-crypto implementation for
1704      SHA256, as benchmarks show a 10-30% speedup.
1705    * Removed some unnecessary object caches
1706    * Don't close i2psnark streams prematurely
1707
17082006-02-25  jrandom
1709    * Made the Syndie permalinks in the thread view point to the blog view
1710    * Disabled TCP again (since the live net seems to be doing well w/out it)
1711    * Fix the message time on inbound SSU establishment (thanks zzz!)
1712    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1713      just starts up
1714
17152006-02-24  jrandom
1716    * Rounding calculation cleanup in the stats, and avoid an uncontested
1717      mutex (thanks ripple!)
1718    * SSU handshake cleanup to help force incompatible peers to stop nagging
1719      us by both not giving them an updated reference to us and by dropping
1720      future handshake packets from them.
1721
17222006-02-23  jrandom
1723    * Increase the SSU retransmit ceiling (for slow links)
1724    * Estimate the sender's SSU MTU (to help see if we agree)
1725
17262006-02-22  jrandom
1727    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1728    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1729      links
1730    * Further class validator refactorings
1731
17322006-02-22  jrandom
1733    * Handle a rare race under high bandwidth situations in the SSU transport
1734    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1735
17362006-02-21  Complication
1737    * Reactivate TCP tranport by default, in addition to re-allowing
1738
1739* 2006-02-21  0.6.1.11 released
1740
17412006-02-21  jrandom
1742    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1743      heap when backlogged (and so that the messages queued up on it don't sit
1744      there forever)
1745    * Further SSU memory cleanup
1746    * Clean up the address regeneration code so it knows when to rebuild the
1747      local info more precisely.
1748
17492006-02-20  jrandom
1750    * Properly enable TCP this time (oops)
1751    * Deal with multiple form handlers on the same page in the console without
1752      being too annoying (thanks blubb and bd_!)
1753
17542006-02-20  jrandom
1755    * Reenable the TCP transport as a fallback (we'll continue to muck with
1756      debugging SSU-only elsewhere)
1757
17582006-02-20  jrandom
1759    * Major SSU and router tuning to reduce contention, memory usage, and GC
1760      churn.  There are still issues to be worked out, but this should be a
1761      substantial improvement.
1762    * Modified the optional netDb harvester task to support choosing whether
1763      to use (non-anonymous) direct connections or (anonymous) exploratory
1764      tunnels to do the harvesting.  Harvesting itself is enabled via the
1765      advanced config "netDb.shouldHarvest=true" (default is false) and the
1766      connection type can be chosen via "netDb.harvestDirectly=false" (default
1767      is false).
1768
17692006-02-19  dust
1770    * Added pruning of suckers history (it used to grow indefinitely).
1771
17722006-02-19  jrandom
1773    * Moved the current net's reseed URL to a different location than where
1774      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1775    * More aggressively expire inbound messages (on receive, not just on send)
1776    * Add in a hook for breaking backwards compatibility in the SSU wire
1777      protocol directly by including a version as part of the handshake.  The
1778      version is currently set to 0, however, so the wire protocol from this
1779      build is compatible with all earlier SSU implementations.
1780    * Increased the number of complete message readers, cutting down
1781      substantially on the delay processing inbound messages.
1782    * Delete the message history file on startup
1783    * Reworked the restart/shutdown display on the console (thanks bd_!)
1784
17852006-02-18  jrandom
1786    * Migrate the outbound packets from a central component to the individual
1787      per-peer components, substantially cutting down on lock contention when
1788      dealing with higher degrees.
1789    * Load balance the outbound SSU transfers evenly across peers, rather than
1790      across messages (so peers with few messages won't be starved by peers
1791      with many).
1792    * Reduce the frequency of router info rebuilds (thanks bar!)
1793
17942006-02-18  jrandom
1795    * Add a new AIMD throttle in SSU to control the number of concurrent
1796      messages being sent to a given peer, in addition to the throttle on the
1797      number of concurrent bytes to that peer.
1798    * Adjust the existing SSU outbound queue to throttle based on the queue's
1799      lag, not an arbitrary number of packets.
1800
18012006-02-17  jrandom
1802    * Properly fix the build request queue throttling, using queue age to
1803      detect congestion, rather than queue size.
1804
18052006-02-17  jrandom
1806    * Disable the message history log file by default (duh - feel free to
1807      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1808    * Limit the size of the inbound tunnel build request queue so we don't
1809      get an insane backlog of requests that we're bound to reject, and adjust
1810      the queue processing so we keep on churning through them when we've got
1811      a backlog.
1812    * Small fixes for the multiuser syndie operation (thanks Complication!)
1813    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1814      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1815
1816* 2006-02-16  0.6.1.10 released
1817
18182006-02-16  jrandom
1819    * Add a new toggle to the web config to enable/disable the load testing
1820
18212006-02-16  jrandom
1822    * Dropped much of the abandonware from the apps/ directory
1823
18242006-02-16  jrandom
1825    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1826    * Initial sucker refactoring to simplify reuse of the html parsing
1827    * Beginnings of hooks to push imported rss/atom out to remote syndie
1828      archives automatically (though not enabled currently)
1829    * Further SSU peer test cleanup
1830
18312006-02-15  jrandom
1832    * Add in per-blog RSS feeds to Syndie
1833    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1834      with the posts, marking additional attachments as Media RSS enclosures
1835      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1836      per item.
1837    * Don't allow the default syndie user to be set to something invalid if
1838      its in single user mode.
1839
18402006-02-15  jrandom
1841    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1842      longer backwards compatible (and should not be used until 0.6.1.1 is
1843      out)
1844
18452006-02-14  jrandom
1846    * Syndie ui bugfixes (thanks all!)
1847
18482006-02-13  jrandom
1849    * Use the current directory for some temporary I2PSnark files, rather than
1850      the OS default temp dir (thanks anon!)
1851    * Increase the base streaming lib window size (still shrinks to 1 on
1852      retransmission though, of course)
1853    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1854    * Implement fast retransmit in the streaming lib (fires at most once per
1855      packet), and increased the default ack delay to 2 seconds (from .5s)
1856    * Don't ask for garlic level message acks for end to end messages unless
1857      they're useful (e.g. to ack session tags)
1858
18592006-02-12  cervantes
1860    * Use a different santisation method for some SML attributes
1861    * Make router console update config save button actually save.
1862    * Fix console bandwidth limiter burst rate dropdowns, so the display
1863      relates to what is saved in the config.
1864   
18652006-02-12  cervantes
1866    * SML is now stricter in it's formatting (attributes should only use
1867      double quotes instead of being allowed to mix with singles).
1868    * Using apostrophes in SML attributes will no longer invalidate the tag.
1869    * Some instances of [blog] tag description were not being displayed
1870      correctly.
1871
18722006-02-12  jrandom
1873    * Further SSU peer test throttling
1874    * Put the most common router console features on the main index page too
1875
18762006-02-11  jrandom
1877    * Be more careful about SSU peer test floods
1878
18792006-02-09  jrandom
1880    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1881
18822006-02-08  jrandom
1883    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1884      bundled a precompiled libjbigi.so in the jbigi.jar
1885    * Cleaned up the synchronization for some SSU packet handling code
1886    * Allow explicit rejection of more lagged tunnel build requests, rather
1887      than dropping them outright
1888    * Use lighter load testing
1889
18902006-02-07  jrandom
1891    * Handle HTTP headers without any values (thanks Sugadude!)
1892    * Don't show the option to make Syndie multiuser, since very few people
1893      need it, and multiuser mode is a lot more complex to use.  Geeks can
1894      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1895      (or in the router's advanced config, for the embedded Syndie)
1896    * When a peer rejects participation in a tunnel, they mean it (duh)
1897    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1898    * Remove a throttle on the size of the SSU active outbound pool, since
1899      it was essentially arbitrary
1900    * Use a more appropriate SSU bloom filter size
1901    * Don't "proactively" drop SSU connections if we have partially received
1902      inbound messages (duh)
1903    * Migrate most of the message state across SSU connection reestablishment
1904
19052006-02-06  jrandom
1906    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
1907      piggybacked
1908
19092006-02-05  jrandom
1910    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
1911      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
1912      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
1913    * Enable the messageHistory.txt by default, for debugging
1914
19152006-02-05  jrandom
1916    * Substantial bugfix for the duplicate message detection in the transport
1917      layer
1918    * Handle tunnel build responses ASAP, rather than queueing them up to wait
1919      in line (processing them is really fast - just a few AES loops)
1920    * Don't bother handling build requests that we have queued up for a while
1921      locally, as the requestor will have timed it out anyway (perhaps we
1922      should reply regardless, but with a backoff instead?)
1923
19242006-02-04  jrandom
1925    * Further tunnel test cleanup and disabling of the old tunnel creation
1926      code
1927
19282006-02-04  jrandom
1929    * Clean up and reenable the tunnel testing for the new tunnel system.
1930
19312006-02-04  jrandom
1932    * Don't cache the archive.txt in syndie when fetching it through the web
1933      interface.
1934    * Logging updates
1935
19362006-02-03  jrandom
1937    * Added further replay prevention on the tunnel build requests
1938    * More aggressive streaming lib closing on reset
1939
19402006-02-03  jrandom
1941    * More aggressive refusal of peers from the wrong network (oops)
1942
19432006-02-01  jrandom
1944    * Instruct the router to reseed against a new URL, for migration purposes:
1945      http://dev.i2p.net/i2pdb2/
1946    * Aggressive error handling during UDP packet creation (thanks cervantes)
1947
19482006-02-01  jrandom
1949    * Fix the new tunnel creation crypto, including the addition of a 4 byte
1950      "next message ID" to the encrypted request structure in the spec.
1951    * Backwards incompatible change, using the new tunnel creation crypto, the
1952      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
1953      with the old incompatible network).
1954    * Reworked the leaseSet request process to handle a race condition
1955    * Disable the TCP transport
1956    * Run four separate threads on the job queue to cut down on job lag
1957
19582006-01-28  jrandom
1959    * Removed a race that could show up in leaseSet requesting with the new
1960      tunnel building process
1961
19622006-01-25  jrandom
1963    * Run the peer profile coalescing/reorganization outside the job queue
1964      (on one of the timers), to cut down on some job queue congestion.  Also,
1965      trim old profiles while running, not just when starting up.
1966    * Slightly more sane intra-floodfill-node netDb activity (only flood new
1967      entries)
1968    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
1969      source of the bug is not yet addressed)
1970    * Better I2PSnark reconnection handling
1971    * Further cleanup in the new tunnel build process
1972    * Make sure we expire old participants properly
1973    * Remove much of the transient overload throttling (it wasn't using a good
1974      metric)
1975
19762006-01-25  dust
1977    * Fix IRC client proxy to use ISO-8859-1.
1978
19792006-01-22  jrandom
1980    * New tunnel build process - does not use the new crypto or new peer
1981      selection strategies.  However, it does drop the fallback tunnel
1982      procedure, except for tunnels who are configured to allow them, or for
1983      the exploratory pool during bootstrapping or after a catastrophic
1984      failure.  This new process prefers to fail rather than use too-short
1985      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
1986      it may expose more tunnel failures to the user.
1987    * Always prefer normal tunnels to fallback tunnels.
1988    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
1989      bar!)
1990    * Do all of the netDb entry writing in a separate thread, avoiding
1991      duplicates and batching them up.
1992
19932006-01-19  Complication
1994    * Explain better where eepsite's destkey can be found
1995
19962006-01-18  cervantes
1997    * Add title attributes to all external links in Syndie, so we can rollover
1998      and quickly see if it's worth clicking on.
1999    * Fixed a minor compiler warning.
2000
20012006-01-17  jrandom
2002    * First pass of the new tunnel creation crypto, specified in the new
2003      router/doc/tunnel-alt-creation.html (referenced in the current
2004      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
2005      than in the test code, but the code verifies the technical viability, so
2006      further scrutiny would be warranted.
2007
20082006-01-16  cervantes
2009    * Dragged I2P kicking and screaming into 2006 (Oops)
2010
20112006-01-14  cervantes
2012    * Removed entirely misleading memory status from the console summary.
2013       
20142006-01-13  cervantes
2015    * Further Syndie layout hardening and typeface balancing.
2016
2017* 2006-01-12  0.6.1.9 released
2018
20192006-01-12  jrandom
2020    * Only create the loadtest.log if requested to do so (thanks zzz!)
2021    * Make sure we cleanly take into consideration the appropriate data
2022      points when filtering out duplicate messages in the message validator,
2023      and report the right bloom filter false positives rate (not used for
2024      anything except debugging)
2025
20262006-01-12  cervantes
2027    * Syndie CSS tweaks to removed some redundant declarations, improve font
2028      scaling and layout robustness. Improved cross browser compatibility
2029      (in other words "kicked IE"). Tightened the look of the blog template
2030      a little.
2031
20322006-01-11  Complication
2033    * CSS comment fixes
2034
20352006-01-11  jrandom
2036    * Include the attachments/blogs/etc for comments on the blog view
2037    * Syndie HTML fixes (thanks cervantes!)
2038    * Make sure we fully reset the objects going into our cache before we
2039      reuse them (thanks zzz!)
2040
20412006-01-10  jrandom
2042    * Added the per-post list of attachments/blogs/etc to the blog view in
2043      Syndie (though this does not yet include comments or some further
2044      refinements)
2045    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2046      removing the dox box (though also removes the restart functionality...)
2047    * Give the i2p.exe the correct java.library.path to support the systray
2048      dll (thanks Bobcat, Sugadude, anon!)
2049
20502006-01-09  jrandom
2051    * Removed a longstanding bug that had caused unnecessary router identity
2052      churn due to clock skew
2053    * Temporarily sanity check within the streaming lib for long pending
2054      writes
2055    * Added support for a blog-wide logo to Syndie, and automated the pushing
2056      of updated extended blog info data along side the metadata.
2057
20582006-01-09  jrandom
2059    * Bugfix for a rare SSU error (thanks cervantes!)
2060    * More progress on the blog interface, allowing customizable blog-wide
2061      links.
2062
20632006-01-08  jrandom
2064    * First pass of the new blog interface, though without much of the useful
2065      customization features (coming soon)
2066
20672006-01-04  jrandom
2068    * Rather than profile individual tunnels for throughput over their
2069      lifetime, do so at 1 minute intervals (allowing less frequently active
2070      tunnels to be more fairly measured).
2071    * Run the live tunnel load test across two tunnels at a time, by default.
2072      The load test runs for a random period from 90s to the tunnel lifetime,
2073      self paced.  This should help gathering data for profiling peers that
2074      are in exploratory tunnels.
2075
20762006-01-03  jrandom
2077    * Calculate the overall peer throughput across the 3 fastest one minute
2078      tunnel throughput values, rather than the single fastest throughput.
2079    * Degrade the profiled throughput data over time (cutting the profiled
2080      peaks in half once a day, on average)
2081    * Enable yet another new speed calculation for profiling peers, using the
2082      peak throughput from individual tunnels that a peer is participating in,
2083      rather than across all tunnels they are participating in.  This helps
2084      gather a fairer peer throughput measurement, since it won't allow a slow
2085      high capacity peer seem to have a higher throughput (pushing a little
2086      data across many tunnels at once, as opposed to lots of data across a
2087      single tunnel).  This degrades over time like the other.
2088    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2089      precompiled OS/2 library)
2090
20912006-01-01  jrandom
2092    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2093      (though it can still seed and participate in multifile swarms)
2094    * Enable a new speed calculation for profiling peers, using their peak
2095      1 minute average tunnel throughput as their speed.
2096
20972005-12-31  jrandom
2098    * Include a simple torrent creator in the I2PSnark web UI
2099    * Further streaming lib closing improvements
2100    * Refactored the load test components to run off live tunnels (though,
2101      still not safe for normal/anonymous load testing)
2102
21032005-12-30  jrandom
2104    * Close streams more gracefully
2105
21062005-12-30  jrandom
2107    * Small streaming lib bugfixes for the modified timeouts
2108    * Minor Syndie/Sucker RSS html fix
2109    * Small synchronization fix in I2PSnark (thanks fsm!)
2110
21112005-12-30  jrandom
2112    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2113      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2114      some distros (e.g. mandriva)
2115
21162005-12-29  jrandom
2117    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2118      actually correct
2119
21202005-12-27  jrandom
2121    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2122      the clock is too skewed to do anything useful (check the year and month,
2123      not just the hour and minute).
2124    * Fixed the read/write timeouts in the streaming lib (so that it actually
2125      honors them now)
2126    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2127      torrent closing)
2128    * Handle an oddball tunnel creation failure (thanks Xunk)
2129
21302005-12-26  Complication
2131    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2132    * HTML readability cosmetics on "Peers" page
2133
2134* 2005-12-22  0.6.1.8 released
2135
21362005-12-22  jrandom
2137    * Bundle the standalone I2PSnark launcher in the installer and update
2138      process (launch as "java -jar launch-i2psnark.jar", viewing the
2139      interface on http://localhost:8002/)
2140    * Don't autostart swarming torrents by default so that you can run a
2141      standalone I2PSnark from the I2P install dir and not have the embedded
2142      I2PSnark autolaunch the torrents that the standalone instance is running
2143    * Fixed a rare streaming lib bug that could let a blocking call wait
2144      forever.
2145
21462005-12-22  jrandom
2147    * Cleaned up some buffer synchronization issues in I2PSnark that could
2148      cause blockage.
2149
21502005-12-21  jrandom
2151    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2152      behavior)
2153    * Fixed the I2PSnark bug that would lose track of live peers
2154
21552005-12-20  jrandom
2156    * Enabled the control in I2PSnark to toggle whether torrents should be
2157      started automatically or not
2158    * Hopefully finished the last hook to close down torrents completely when
2159      they're stopped.
2160
21612005-12-19  jrandom
2162    * Fix for old Syndie blog bookmarks (thanks Complication!)
2163    * Fix for I2PSnark to accept incoming connections again (oops)
2164    * Randomize the order that peers from the tracker are contacted
2165
21662005-12-19  jrandom
2167    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2168      memory usage reduction, better OOM handling, and a shared connection
2169      acceptor.
2170    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2171      blog from the blog page shows threads started by the selected author,
2172      not those that they merely participate in)
2173
21742005-12-18  jrandom
2175    * Added a standalone runner for the I2PSnark web ui (build with the
2176      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2177      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2178    * Further I2PSnark error handling
2179
21802005-12-17  jrandom
2181    * Let multiuser accounts authorize themselves to access the remote
2182      functionality again (thanks Ch0Hag!)
2183    * Adjust the JVM heap size to 128MB for new installs (existing users can
2184      accomplish this by editing wrapper.config, adding the line
2185      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2186      of the router).  This is relevent for heavy usage of I2PSnark in the
2187      router console.
2188
21892005-12-17  jrandom
2190    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2191      'piece' sizes grow larger than before.
2192
21932005-12-16  jrandom
2194    * Added some I2PSnark sanity checks, an OOMListener when running
2195      standalone, and a guard against keeping memory tied up indefinitely.
2196    * Sanity check on the watchdog (thanks zzz!)
2197    * Handle invalid HTTP requests in I2PTunnel a little better
2198
21992005-12-16  jrandom
2200    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2201      properly (thanks Complication!)
2202    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2203      b0rking in the DirMonitor, etc)
2204
22052005-12-16  jrandom
2206    * Try to run a torrent in readonly mode if we can't write to the file, and
2207      handle failures a little more gracefully (thanks polecat!)
2208
22092005-12-16  jrandom
2210    * Refuse torrents with too many files (128), avoiding ulimit errors.
2211    * Remove an fd leak in I2PSnark
2212    * Further I2PSnark web UI cleanup
2213
22142005-12-15  jrandom
2215    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2216
22172005-12-15  jrandom
2218    * Added multitorrent support to I2PSnark, accessible currently by running
2219      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2220      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2221      their data in that directory as well.  Removing the .torrent file stops
2222      participation, and it is currently set to seed indefinitely.  Completion
2223      is logged to the logger and standard output, with further UI interaction
2224      left to the (work in progress) web UI.
2225
22262005-12-14  jrandom
2227    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2228    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2229      (thanks Complication!)
2230
22312005-12-13  zzz
2232    * Don't test tunnels expiring within 90 seconds
2233    * Defer Test Tunnel jobs if job lag too large
2234    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2235      job lag for tunnel build backoff, allowing for more agile handling
2236      (since the stat is only updated once a minute)
2237    * Use tunnel length override if all tunnels are expiring within one
2238      minute.
2239
22402005-12-13  jrandom
2241    * Fixed I2PSnark's handling of some torrent files to deal with those
2242      created by Azureus and I2PRufus (it didn't know how to deal with
2243      additional meta info, such as path.utf-8 or name.utf-8).
2244
22452005-12-09  zzz
2246    * Create different strategies for exploratory tunnels (which are difficult
2247      to create) and client tunnels (which are much easier)
2248    * Gradually increase number of parallel build attempts as tunnel expiry
2249      nears.
2250    * Temporarily shorten attempted build tunnel length if builds using
2251      configured tunnel length are unsuccessful
2252    * React more aggressively to tunnel failure than routine tunnel
2253      replacement
2254    * Make tunnel creation times randomized - there is existing code to
2255      randomize the tunnels but it isn't effective due to the tunnel creation
2256      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2257      to 3 minutes before expiration. The patch fixes this by fixing the
2258      randomization, and by changing the overlap time (with old tunnels) to a
2259      range of 2 to 4 minutes.
2260    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2261      to overlapping calls. Just about anything generated a call which could
2262      build many tunnels all at once, even if tunnel building was already in
2263      process.
2264    * Miscellaneous router console enhancements
2265
22662005-12-08  jrandom
2267    * Minor bugfix in SSU for dealing with corrupt packets
2268    * Added some hooks for load testing
2269
22702005-12-07  jrandom
2271    * Added a first pass at a blog view in Syndie
2272
22732005-12-07  jrandom
2274    * Expand the thread we're viewing to its leaf
2275    * Bugfix on intraday ordering (children are always newer than parents)
2276
22772005-12-05  jrandom
2278    * Added an RDF and XML thread export to Syndie, reachable at
2279      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2280      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2281      displays all threads.
2282
22832005-12-04  TLorD
2284    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2285
22862005-12-04  jrandom
2287    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2288    * Always include ourselves in the favorite authors (since we don't
2289      bookmark ourselves)
2290
22912005-12-03  jrandom
2292    * Use newgroup-like tags by default in Syndie's interface
2293
22942005-12-03  jrandom
2295    * Added support for a 'most recent posts' view that CofE requested, which
2296      includes the ability to filter by age (e.g. posts by your favorite
2297      authors in the last 5 days).
2298
22992005-12-03  jrandom
2300    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2301      displays a a single thread path at a time - from root to leaf - rather
2302      than a depth first traversal.
2303
23042005-12-03  jrandom
2305    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2306      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2307      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2308      running a single user Syndie instance (by default).  It also creates a
2309      default subscription to syndiemedia without any anonymity (using no
2310      proxy).  Upgrades can be done by just replacing the syndie.war with the
2311      one from I2P.
2312
2313* 2005-12-01  0.6.1.7 released
2314
23152005-12-01  jrandom
2316    * Add a new criteria to the tunnel join throttle, backing off people if we
2317      are failing to talk to our peers more than usual.
2318
23192005-11-30  jrandom
2320    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2321      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2322      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2323      separate jdom or rome, as they're inside syndie.war.
2324
23252005-11-30  jrandom
2326    * Don't let the TCP transport alone shitlist a peer, since other
2327      transports may be working.  Also display whether TCP connections are
2328      inbound or outbound on the peers page.
2329    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2330      talk to anyone who didn't expose an IP (even if they had introducers),
2331      among other goofy things.
2332    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2333      rather than sending one a packet at 3s, then another a packet at 6s,
2334      and a third a packet at 9s.
2335    * Fixed Syndie attachments (oops)
2336
23372005-11-29  zzz
2338    * Added a link to orion's jump page on the 'key not found' error page.
2339
23402005-11-29  jrandom
2341    * Further Syndie UI cleanup
2342    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2343      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2344      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2345      will be removed as soon as its integrated into Jetty.  This patch allows
2346      posting content in various character sets.
2347      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2348    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2349      isn't pushed as part of the update yet, as there aren't any critical
2350      bugs.
2351
23522005-11-29  jrandom
2353    * Added back in the OSX jbigi, which was accidentally removed a few revs
2354      back (thanks for the bug report stoerte!)  New installs will get the
2355      full jbigi, or you can pull the jbigi.jar from CVS by going to
2356      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2357      and clicking on the first "download" link, saving that jbigi.jar to
2358      lib/jbigi.jar in your I2P installation directory.  After restarting your
2359      router, it should load up fine.
2360
23612005-11-27  jrandom
2362    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2363      because firefox [and others?] delay rendering until they fetch the css).
2364    * Make sure we fire the shutdown tasks when regenerating a new identity
2365      (thanks picsou!)
2366    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2367    * Don't drop SSU sessions if they're still transmitting data successfully,
2368      even if there are transmission failures
2369    * Adjusted the time summarization to display hours after 119m, not 90m
2370    * Further EepGet cleanup (grr)
2371
2372* 2005-11-26 0.6.1.6 released
2373
23742005-11-26  jrandom
2375    * Update the sorting in Syndie to consider children 'newer' than parents,
2376      even if they have the same message ID (duh)
2377    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2378    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2379    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2380      better)
2381
23822005-11-26  jrandom
2383    * Be more explicit about what messages we will handle through a client
2384      tunnel, and how we will handle them.  This cuts off a set of attacks
2385      that an active adversary could mount, though they're probably nonobvious
2386      and would require at least some sophistication.
2387
23882005-11-26  Raccoon23
2389    * Added support for 'dynamic keys' mode, where the router creates a new
2390      router identity whenever it detects a substantial change in its public
2391      address (read: SSU IP or port).  This only offers minimal additional
2392      protection against trivial attackers, but should provide functional
2393      improvement for people who have periodic IP changes, since their new
2394      router address would not be shitlisted while their old one would be.
2395    * Added further infrastructure for restricted route operation, but its use
2396      is not recommended.
2397
23982005-11-25  jrandom
2399    * Further Syndie UI cleanups
2400    * Logging cleanup
2401    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2402
24032005-11-25  jrandom
2404    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2405    * Cleaned up the syndie threaded display to show the last updated date for
2406      a subthread, and to highlight threads updated in the last two days.
2407
24082005-11-24  jrandom
2409    * Fix to save syndication settings in Syndie (thanks spaetz!)
2410
24112005-11-23  jrandom
2412    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2413    * Streamlined the tunnel batching to schedule batch transmissions more
2414      appropriately.
2415    * Default tunnel pool variance to 2 +0-1 hops
2416
24172005-11-21  jrandom
2418    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2419      within I2PTunnel.
2420    * Increase the maximum SSU retransmission timeout to accomodate slower or
2421      more congested links (though SSU's RTO calculation will usually use a
2422      much lower timeout)
2423    * Moved the streaming lib timed events off the main timer queues and onto
2424      a streaming lib specific set of timer queues.  Streaming lib timed
2425      events are more likely to have lock contention on the I2CP socket while
2426      other timed events in the router are (largely) independent.
2427    * Fixed a case sensitive lookup bug (thanks tino!)
2428    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2429      links (thanks tino!)
2430
24312005-11-19  jrandom
2432    * Implemented a trivial pure java PMTU backoff strategy, switching between
2433      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2434    * Fixed new user registration in Syndie (thanks Complication!)
2435
24362005-11-17  jrandom
2437    * More cautious file handling in Syndie
2438
24392005-11-16  jrandom
2440    * More aggressive I2PTunnel content encoding munging to work around some
2441      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2442      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2443      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2444      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2445      or X-Accept-encoding headers.  Eepsite operators who do not know to
2446      check for X-Accept-encoding will simply use the identity encoding.
2447
2448* 2005-11-15  0.6.1.5 released
2449
24502005-11-14  jrandom
2451    * Migrate to the new Syndie interface
2452
24532005-11-11  jrandom
2454    * Add filtering threads by author to Syndie, populated with authors in the
2455      user's addressbook
2456    * When creating the default user, add
2457      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2458      configured to automatically pull updates.  (what other archives should
2459      be included?)
2460    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2461      the installer/resources/themes/** into ./docs/themes/** on both install
2462      and update.
2463
24642005-11-11  cervantes
2465    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2466      being progressively rolled out to other sections at later dates.
2467      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2468      layout and styling.
2469    * Implemented console themes. Users can create their own themes by
2470      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2471      and activating it using the routerconsole.theme={themename} advanced
2472      config property. Look at the example incomplete "defCon1" theme.
2473      Note: This is very much a work in progress. Folks might want to hold-off
2474      creating their own skins until the markup has solidified.
2475    * Added "routerconsole.javascript.disabled=true" to disable console
2476      client-side scripting and "routerconsole.css.disabled=true" to remove
2477      css styling (only rolled out in the i2ptunnel interface currently)
2478    * Fixed long standing bug with i2ptunnel client and server edit screens
2479      where tunnel count and depth properties would fail to save. Added
2480      backup quantity and variance configuration options.
2481    * Added basic accessibility support (key shortcuts, linear markup, alt and
2482      title information and form labels).
2483    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2484
24852005-11-11  jrandom
2486    * Default Syndie to single user mode, and automatically log into a default
2487      user account (additional accounts can be logged into with the 'switch'
2488      or login pages, and new accounts can be created with the register page).
2489    * Disable the 'automated' column on the Syndie addressbook unless the user
2490      is appropriately authorized (good idea Polecat!)
2491
24922005-11-10  jrandom
2493    * First pass to a new threaded Syndie interface, which isn't enabled by
2494      default, as its not done yet.
2495
24962005-11-06  jrandom
2497    * Include SSU establishment failure in the peer profile as a commError,
2498      as we do for TCP establishment failures.
2499    * Don't throttle the initial transmission of a message because of ongoing
2500      retransmissions to a peer, since the initial transmission of a message
2501      is more valuable than a retransmission (since it has less latency).
2502    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2503
25042005-11-05  jrandom
2505    * Include the most recent ACKs with packets, rather than only sending an
2506      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2507      increasing sequence numbers, while each message ID in SSU is random, so
2508      we don't get the benefit of later ACKs implicitly ACKing earlier
2509      messages.
2510    * Reduced the max retransmission timeout for SSU
2511    * Don't try to send messages queued up for a long time waiting for
2512      establishment.
2513
25142005-11-05  dust
2515    * Fix sucker to delete its temporary files.
2516    * Improve sucker's sml output some.
2517    * Fix Exception in SMLParser for weird sml.
2518
25192005-11-03  zzz
2520    * Added a new error page to the eepproxy to differentiate the full 60
2521      second timeout from the immediate "I don't know this base64" failure.
2522
25232005-11-01  jrandom
2524    * Added a few more css elements (thanks identiguy!)
2525
25262005-10-31  jrandom
2527    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2528    * Removed a potentially infinitely recursive call (oops)
2529
25302005-10-30  dust
2531    * Merge sucker into syndie with a rssimport.jsp page.
2532    * Add getContentType() to EepGet.
2533    * Make chunked transfer work (better) with EepGet.
2534    * Do replaceAll("<","&lt;") for logs.
2535
2536* 2005-10-29  0.6.1.4 released
2537
25382005-10-29  jrandom
2539    * Improved the bandwidth throtting on tunnel participation, especially for
2540      low bandwidth peers.
2541    * Improved failure handling in SSU with proactive reestablishment of
2542      failing idle peers, and rather than shitlisting a peer who failed too
2543      much, drop the SSU session and allow a new attempt (which, if it fails,
2544      will cause a shitlisting)
2545    * Clarify the cause of the shitlist on the profiles page, and include
2546      bandwidth limiter info at the bottom of the peers page.
2547
25482005-10-26  jrandom
2549    * In Syndie, propogate the subject and tags in a reply, and show the parent
2550      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2551    * Streamline some netDb query handling to run outside the jobqueue -
2552      which means they'll run on the particular SSU thread that handles the
2553      message.  This should help out heavily loaded netDb peers.
2554
25552005-10-25  jrandom
2556    * Defer netDb searches for newly referenced peers until we actually want
2557      them
2558    * Ignore netDb references to peers on our shitlist
2559    * Set the timeout for end to end client messages to the max delay after
2560      finding the leaseSet, so we don't have as many expired messages floating
2561      around.
2562    * Add a floor to the streaming lib window size
2563    * When we need to send a streaming lib ACK, try to retransmit one of the
2564      unacked packets instead (with updated ACK/NACK fields, of course).  The
2565      bandwidth cost of an unnecessary retransmission should be minor as
2566      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2567      the probability of a necessary retransmission.
2568    * Adjust the streaming lib cwin algorithm to allow growth after a full
2569      cwin messages if the rtt is trending downwards.  If it is not, use the
2570      existing algorithm.
2571    * Increased the maximum rto size in the streaming lib.
2572    * Load balancing bugfix on end to end messages to distribute across
2573      tunnels more evenly.
2574
25752005-10-22  jrandom
2576    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2577      ./prngseed.rnd (if they exist), and reseeding it with data out of
2578      various crypto operations (unused bits in a DH exchange, intermediary
2579      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2580      The Fortuna implementation under gnu.crypto.prng has been modified to
2581      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2582      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2583      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2584      wrapper around it is, of course, public domain.
2585
25862005-10-20  dust
2587    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2588      always shared. (thx for info Ragnarok)
2589    * Fix crash in Sucker with some bad html.
2590
25912005-10-20  jrandom
2592    * Workaround a bug in GCJ's Calendar implementation
2593    * Propery throw an exception in the streaming lib if we try to write to a
2594      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2595      GregorK!)
2596
25972005-10-19  jrandom
2598    * Ported the snark bittorrent client to I2P such that it is compatible
2599      with i2p-bt and azneti2p.  For usage information, grab an update and run
2600      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2601      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2602    * Don't allow leaseSets expiring too far in the future (thanks postman)
2603
26042005-10-19  jrandom
2605    * Bugfix for the auto-update code to handle different usage patterns
2606    * Decreased the addressbook recheck frequency to once every 12 hours
2607      instead of hourly.
2608    * Handle dynamically changing the HMAC size (again, unless your nym is
2609      toad or jrandom, ignore this ;)
2610    * Cleaned up some synchronization/locking code
2611
26122005-10-17  dust
2613    * Exchange the remaining URL with EepGet in Sucker.
2614    * Allow /TOPIC irc command.
2615
26162005-10-17  jrandom
2617    * Allow an env prop to configure whether we want to use the backwards
2618      compatible (but not standards compliant) HMAC-MD5, or whether we want
2619      to use the not-backwards compatible (but standards compliant) one.  No
2620      one should touch this setting, unless your name is toad or jrandom ;)
2621    * Added some new dummy facades
2622    * Be more aggressive on loading up the router.config before building the
2623      router context
2624    * Added new hooks for apps to deal with previously undefined I2NP message
2625      types without having to modify any code.
2626    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2627
26282005-10-14  jrandom
2629    * More explicit filter for linux/PPC building (thanks anon!)
2630    * Fixed Syndie's Sucker to not explicitly reference something only found
2631      in sun's JVM (thanks cervantes!)
2632    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2633
2634* 2005-10-14  0.6.1.3 released
2635
26362005-10-14  jrandom
2637    * Added a key explaining peers.jsp a bit (thanks tethra!)
2638
26392005-10-13  dust
2640    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2641      then be injected into Syndie with the Syndie CLI.
2642    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2643      RSS/Atom parsing.
2644
26452005-10-13  jrandom
2646    * SSU retransmission choke bugfix (== != !=)
2647    * Include initial transmissions in the retransmission choke, so that
2648      if we are already retransmitting a message, we won't send anything
2649      to that peer other than that message (or ACKs, if necessary)
2650
26512005-10-12  jrandom
2652    * Choke SSU retransmissions to a peer while there is already a
2653      retransmission in flight to them.  This currently lets other initial
2654      transmissions through, since packet loss is often sporadic, but maybe
2655      this should block initial transmissions as well?
2656    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2657    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2658
26592005-10-11  jrandom
2660    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2661      compatible.
2662    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2663      just the blurb before the cut.
2664
26652005-10-11  jrandom
2666    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2667      yet piggybacked).  This is backwards compatible.
2668    * SML parser cleanup in Syndie
2669
26702005-10-10  dust
2671    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2672      outbound IRC commands for anonymity and security purposes, removing all
2673      CTCP messages except ACTION, as well as stripping the hostname from the
2674      USER message (while leaving the nick and 'full name').  The IRC proxy
2675      doesn't use this by default, but you can enable it by creating a new
2676      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2677      to "ircclient" in i2ptunnel.config.
2678
26792005-10-10  jrandom
2680    * I2PTunnel http client config cleanup and stats
2681    * Minor SSU congestion tweaks and stats
2682    * Reduced netDb exploration period
2683
26842005-10-09  jrandom
2685    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2686      java -jar lib/syndie.jar
2687    * Beginnings of the Syndie logging cleanup
2688    * Delete corrupt Syndie posts
2689
26902005-10-09  jrandom
2691    * Now that the streaming lib works reasonably, set the default inactivity
2692      event to send a 0 byte keepalive payload, rather than disconnecting the
2693      stream.  This should cut the irc netsplits and help out with other long
2694      lived streams.  The default timeout is now less than the old timeout as
2695      well, so the keepalive will be sent before earlier builds fire their
2696      fatal timeouts.
2697
26982005-10-08  jrandom
2699    * Use the OS clock for stat timing, since it doesn't jump around (though
2700      still use the NTP'ed clock for display)
2701    * Added new DH stats
2702
2703* 2005-10-07  0.6.1.2 released
2704
27052005-10-07  jrandom
2706    * Include the 1 second bandwidth usage on the console rather than the
2707      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2708      issues.
2709
27102005-10-07  jrandom
2711    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2712      HTTP response quicker, and initialize the streaming lib's cwin more
2713      carefully.
2714    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2715      as a user authorized to use the remote archive funtionality, you can
2716      request remote archives in your address book to be automatically pulled
2717      down by checking the "scheduled?" checkbox.
2718
27192005-10-05  jrandom
2720    * Allow the first few packets in the stream to fill in their IDs during
2721      handshake (thanks cervantes, Complication, et al!)  This should fix at
2722      least some of the intermittent HTTP POST issues.
2723
27242005-10-04  jrandom
2725    * Syndie patch for single user remote archives (thanks nickless_head!)
2726    * Handle an invalid netDb store (thanks Complication!)
2727
27282005-10-04  jrandom
2729    * Further reduction in unnecessary streaming packets.
2730
27312005-10-03  jrandom
2732    * Properly reject unroutable IP addresses *cough*
2733
27342005-10-03  rangarok
2735    * Changed default update delay to twelve hours, and enforced a minimum
2736      delay of one hour.
2737
27382005-10-03  ragnarok
2739    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2740      from selected syndie archives.  To try it out, add
2741      syndie.updateArchives=<comma seperated list of syndie archives> to your
2742      syndie.config.  Archives must be specified as the full url to archive.txt
2743      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2744      for new posts every hour.  This can be modified by setting
2745      syndie.updateDelay=<delay in hours> also in syndie.config.
2746
2747* 2005-10-01  0.6.1.1 released
2748
27492005-09-30  ragnarok
2750    * Implemented conditional get for syndie remote archive imports.
2751
27522005-09-30  jrandom
2753    * Killed three more streaming lib bugs, one of which caused excess packets
2754      to be transmitted (dupacking dupacks), one that was the root of many of
2755      the old hung streams (shrinking highest received), and another that was
2756      releasing data too soon.
2757
27582005-09-30  jrandom
2759    * Only allow autodetection of our IP address if we haven't received an
2760      inbound connection in the last two minutes.
2761    * Increase the default max streaming resends to 8 from 5 (and down from
2762      the earlier 10)
2763
27642005-09-29  ragnarok
2765    * Export petnames from syndie to the router's petname db instead of
2766      userhosts.txt.
2767
27682005-09-29  jrandom
2769    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2770      reseeding - useful on OSes that make it hard to create dot files. 
2771      Thanks Complication (and anon)!
2772    * Fixed the installer version string (thanks Frontier!)
2773    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2774      us invalid IP addresses, verify again that we are not sending invalid IP
2775      addresses, and log an error if it happens. (Thanks Complication, ptm,
2776      and adab!)
2777
2778* 2005-09-29  0.6.1 released
2779
27802005-09-29  jrandom
2781    * Let syndie users modify their metadata.
2782    * Reseed the router on startup if there aren't enough peer references
2783      known locally.  This can be disabled by creating the file .i2pnoreseed
2784      in your home directory, and the existing detection and reseed handling
2785      on the web interface is unchanged.
2786
27872005-09-28  jrandom
2788    * Fix for at least some (all?) of the wrong stream errors in the streaming
2789      lib
2790
27912005-09-27  jrandom
2792    * Properly suggest filenames for attachments in Syndie (thanks all!)
2793    * Fixed the Syndie authorization scheme for single user vs. multiuser
2794
27952005-09-27  jrandom
2796    * I2PTunnel bugfix (thanks Complication!)
2797    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2798      instead of k/cwin)
2799    * Limit the number of inbound SSU sessions being built at once (using
2800      half of the i2np.udp.maxConcurrentEstablish config prop)
2801    * Don't shitlist on a message send failure alone (unless there aren't any
2802      common transports).
2803    * More careful bandwidth bursting
2804
28052005-09-26  jrandom
2806    * Reworded the SSU introductions config section (thanks duck!)
2807    * Force identity content encoding for I2PTunnel httpserver requests
2808      (thanks redzara!)
2809    * Further x-i2p-gzip bugfixes for the end of streams
2810    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2811      I2P's performance at 3KBps is another issue)
2812    * Cleaned up some streaming lib structures
2813
28142005-09-25  jrandom
2815    * Allow reseeding on the console if the netDb knows less than 30 peers,
2816      rather than less than 10 (without internet connectivity, we keep the
2817      last 15 router references)
2818    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2819      more aggressively.
2820    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2821    * Reduced the default maximum number of streaming lib resends of a packet
2822      (10 retransmits is a bit much with a reasonable RTO)
2823
28242005-09-25  Complication
2825    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2826      conflict resolution page if the i2paddresshelper parameter differs from
2827      an existing name to destination mapping.
2828
28292005-09-25  jrandom
2830    * Fix a long standing streaming lib bug (in the inactivity detection code)
2831    * Improved handling of initial streaming lib packet retransmissions to
2832      kill the "lost first packet" bug (where a page shows up with the first
2833      few KB missing)
2834    * Add support for initial window sizes greater than 1 - useful for
2835      eepsites to transmit e.g. 4 packets full of data along with the initial
2836      ACK, thereby cutting down on the rtt latency.  The congestion window
2837      size can and does still shrink down to 1 packet though.
2838    * Adjusted the streaming lib retransmission calculation algorithm to be
2839      more TCP-like.
2840
28412005-09-21  redzara
2842    * Use ISO-8859-1 for the susidns xml
2843
28442005-09-21  susi
2845    * Bugfix in susidns for deleting entries
2846
28472005-09-21  jrandom
2848    * Add support for HTTP POST to EepGet
2849    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2850      put in that URL.
2851
28522005-09-18  jrandom
2853    * Added support for pure 64bit linux with jbigi and the java service
2854      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2855      et al for help testing!
2856    * UI cleanup in Syndie (thanks gloin and bar!)
2857
28582005-09-18  Ragnarok
2859    * Made MetaNamingService the default naming service.
2860
28612005-09-17  Ragnarok
2862    * Implemented a naming service using Syndie's petname db.  It's not enabled
2863      by default, but you can try it out by setting
2864      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2865      router.config.
2866    * Implemented a meta naming service that will first lookup names in the
2867      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2868      naming services are checked and in which order is specified by
2869      i2p.nameservicelist.  This will probably become the default naming service
2870      so please help test it out by setting
2871      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2872     
2873* 2005-09-17  0.6.0.6 released
2874
28752005-09-17  jrandom
2876    * Clean up syndie a bit more and bundle a default introductory post with
2877      both new installs and updates.
2878    * Typo fixes on the console (thanks bar!)
2879
28802005-09-17  jrandom
2881    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2882      steady state rate, plus a new limit on how fast we transfer when
2883      bursting.  This is different from the old "burst as fast as possible
2884      until we're out of tokens" policy, and should help those with congested
2885      networks.  See /config.jsp to manage this rate.
2886    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2887      old posts just didn't show up).
2888    * Log properly in EepPost
2889
28902005-09-17  jrandom
2891    * Added the natively compiled jbigi and patched java service wrapper for
2892      OS X.  Thanks Bill Dorsey for letting me use your machine!
2893    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2894      don't bundle the binutils necessary (and there'd be a naming conflict
2895      if we did).
2896    * Added 'single user' functionality to syndie - if the single user
2897      checkbox on the admin page is checked, all users are allowed to control
2898      the instance and sync up with remote syndie nodes.
2899    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2900      debugged.
2901
29022005-09-16  jrandom
2903    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
2904      you have i2np.udp.allowLocal=true defined - useful for private nets)
2905
29062005-09-16  jrandom
2907    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
2908      (just specify the spoofed host as an empty string), allowing them to
2909      honor x-i2p-gzip encoding.
2910    * Let windows users build the exes too (thanks bar and redzara!)
2911    * Allow I2PTunnel httpserver operators to disable gzip compression on
2912      individual tunnels with the i2ptunnel.gzip=false client option
2913      (good idea susi!)
2914
29152005-09-16  jrandom
2916    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
2917    * Added runplain.sh for *nix/osx users having problems using the java
2918      service wrapper (called from the install dir as: sh runplain.sh)
2919    * Bundle susidns and syndie, with links on the top nav
2920    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
2921      content-encoding (if offered), reducing the payload size before it
2922      reaches the streaming lib.  The existing compression is at the i2cp
2923      level, so we've been packetizing 4KB of uncompressed data and then
2924      compressing those messages, rather than compressing and then packetizing
2925      4KB of compressed data.  This should reduce the number of round trips
2926      to fetch web pages substantially.
2927    * Adjust the startup and timing of the addressbook so that susidns always
2928      has config to work off, and expose a method for susidns to tell it to
2929      reload its config and rerun.
2930
29312005-09-15  jrandom
2932    * Error handling for failed intro packets (thanks red.hand!)
2933    * More carefully verify intro addresses
2934
29352005-09-13  jrandom
2936    * More careful error handling with introductions (thanks dust!)
2937    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
2938    * Hide the shitlist on the summary so it doesn't confuse new users.
2939
29402005-09-12  comwiz
2941    * Migrated the router tests to junit
2942
29432005-09-12  jrandom
2944    * Removed guaranteed delivery mode entirely (so existing i2phex clients
2945      using it can get the benefits of mode=best_effort).  Guaranteed delivery
2946      is offered at the streaming lib level.
2947    * Improve the peer selection code for peer testing, as everyone now
2948      supports tests.
2949    * Give the watchdog its fangs - if it detects obscene job lag or if
2950      clients have been unable to get a leaseSet for more than 5 minutes,
2951      restart the router.  This was disabled a year ago due to spurious
2952      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
2953      cause of the spurious restarts should be gone.
2954
29552005-09-12  jrandom
2956    * Bugfix for skewed store which could kill a UDP thread (causing complete
2957      comm failure and eventual OOM)
2958
29592005-09-12  jrandom
2960    * More aggressively publish updated routerInfo.
2961    * Expose the flag to force SSU introductions on the router console
2962    * Don't give people the option to disable SNTP time sync, at least not
2963      through the router console, because there is no reason to disable it.
2964      No, not even if your OS is "ntp synced", because chances are, its not.
2965
29662005-09-10  jrandom
2967    * Test the router's reachability earlier and more aggressively
2968    * Use the low level bandwidth limiter's rates for the router console, and
2969      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
2970      the logger config, keep track of the 1 second transfer rates as the stat
2971      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
2972      behavior.
2973
29742005-09-09  jrandom
2975    * Added preliminary support for NAT hole punching through SSU introducers
2976    * Honor peer test results from peers that we have an SSU session with if
2977      those sessions are idle for 3 minutes or more.
2978
29792005-09-09  cervantes
2980    * New build due to change in build number :P (thanks ugha!)
2981
29822005-09-07  BarkerJr
2983    * HTML cleanup for the router console (thanks!)
2984
29852005-09-07  jrandom
2986    * Lay the foundation for 'client routers' - the ability for peers to opt
2987      out of participating in tunnels entirely due to firewall/NAT issues. 
2988      Individual routers have control over where those peers are used in
2989      tunnels - in outbound or inbound, exploratory or client tunnels, or
2990      none at all.  The defaults with this build are to simply act as before -
2991      placing everyone as potential participants in any tunnel.
2992    * Another part of the foundation includes the option for netDb
2993      participants to refuse to answer queries regarding peers who are marked
2994      as unreachable, though this too is disabled by default (meaning the
2995      routerInfo is retrievable from the netDb).
2996
29972005-09-05  jrandom
2998    * Expose the HTTP headers to EepGet status listeners
2999    * Handle DSA key failures properly (if the signature is not invertable, it
3000      is obviously invalid)
3001
30022005-09-04  jrandom
3003    * Don't persist peer profiles until we are shutting down, as the
3004      persistence process gobbles RAM and wall time.
3005    * Bugfix to allow you to check/uncheck the sharedClient setting on the
3006      I2PTunnel web interface (thanks BarkerJr!)
3007    * Be more careful when expiring a failed tunnel message fragment so we
3008      don't drop the data while attempting to read it.
3009
3010* 2005-09-02  0.6.0.5 released
3011
30122005-09-02  jrandom
3013    * Don't refuse to send a netDb store if the targetted peer has failed a
3014      bit (the value was an arbitrary amount).
3015    * Logging changes
3016
3017* 2005-09-01  0.6.0.4 released
3018
30192005-09-01  jrandom
3020    * Don't send out a netDb store of a router if it is more than a few hours
3021      old, even if someone asked us for it.
3022
30232005-08-31  jrandom
3024    * Don't publish leaseSets to the netDb if they will never be looked for -
3025      namely, if they are for destinations that only establish outbound
3026      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
3027      modified to tell the router that it doesn't need to publish their
3028      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
3029      to 'true').
3030    * Don't publish the top 10 peer rankings of each router in the netdb, as
3031      it isn't being watched right now.
3032
30332005-08-29  jrandom
3034    * Added the new test Floodfill netDb
3035
30362005-08-27  jrandom
3037    * Minor logging and optimization tweaks in the router and SDK
3038    * Use ISO-8859-1 in the XML files (thanks redzara!)
3039    * The consolePassword config property can now be used to bypass the router
3040      console's nonce checking, allowing CLI restarts
3041
30422005-08-24  jrandom
3043    * Catch errors with corrupt tunnel messages more gracefully (no need to
3044      kill the thread and cause an OOM...)
3045    * Don't skip shitlisted peers for netDb store messages, as they aren't
3046      necessarily shitlisted by other people (though they probably are).
3047    * Adjust the netDb store per-peer timeout based on each particular peer's
3048      profile (timeout = 4x their average netDb store response time)   
3049    * Don't republish leaseSets to *failed* peers - send them to peers who
3050      replied but just didn't know the value.
3051    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3052      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3053      sent entirely within the first streaming packet anyway, so this won't be
3054      a problem.
3055    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3056      prevent any clients from accessing the server if the handlers get
3057      blocked by the streaming lib or other issues.
3058    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3059      Unknown.
3060
30612005-08-23  jrandom
3062    * Removed the concept of "no bandwidth limit" - if none is specified, its
3063      16KBps in/out.
3064    * Include ack packets in the per-peer cwin throttle (they were part of the
3065      bandwidth limit though).
3066    * Tweak the SSU cwin operation to get more accurrate estimates under
3067      congestions.
3068    * SSU improvements to resend more efficiently.
3069    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3070
3071* 2005-08-21  0.6.0.3 released
3072
30732005-08-21  jrandom
3074    * If we already have an established SSU session with the Charlie helping
3075      test us, cancel the test with the status of "unknown".
3076
30772005-08-17  jrandom
3078    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3079      viability before agreeing to Alice's request.  This doesn't work with
3080      older SSU peer test builds, but is backwards compatible (older nodes
3081      won't ask newer nodes to participate in tests, and newer nodes won't
3082      ask older nodes to either).
3083
30842005-08-12  jrandom
3085    * Keep detailed stats on the peer testing, publishing the results in the
3086      netDb.
3087    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3088      status in a while.
3089    * Make sure to avoid shitlisted peers for peer testing.
3090    * When we get an unknown result to a peer test, try again soon afterwards.
3091    * When a peer tells us that our address is different from what we expect,
3092      if we've done a recent peer test with a result of OK, fire off a peer
3093      test to make sure our IP/port is still valid.  If our test is old or the
3094      result was not OK, accept their suggestion, but queue up a peer test for
3095      later.
3096    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3097      we monitor netDb store progress (to clear up the high netDb.storePeers
3098      stat)
3099
31002005-08-10  jrandom
3101    * Deployed the peer testing implementation to be run every few minutes on
3102      each router, as well as any time the user requests a test manually.  The
3103      tests do not reconfigure the ports at the moment, merely determine under
3104      what conditions the local router is reachable.  The status shown in the
3105      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3106      differently for different peers, "ERR-Reject" if the router cannot
3107      receive unsolicited packets or the peer helping test could not find a 
3108      collaborator, "Unknown" if the test has not been run or the test
3109      participants were unreachable, or "OK" if the router can receive
3110      unsolicited connections and those connections use the same IP and port.
3111
3112* 2005-08-08  0.6.0.2 released
3113
31142005-08-08  jrandom
3115    * Add a configurable throttle to the number of concurrent outbound SSU
3116      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3117      may help those with slow connections to get integrated at the start.
3118    * Further fixlets to the streaming lib
3119
31202005-08-07  Complication
3121    * Display the average clock skew for both SSU and TCP connections
3122
31232005-08-07  jrandom
3124    * Fixed the long standing streaming lib bug where we could lose the first
3125      packet on retransmission.
3126    * Avoid an NPE when a message expires on the SSU queue.
3127    * Adjust the streaming lib's window growth factor with an additional
3128      Vegas-esque congestion detection algorithm.
3129    * Removed an unnecessary SSU session drop
3130    * Reduced the MTU (until we get a working PMTU lib)
3131    * Deferr tunnel acceptance until we know how to reach the next hop,
3132      rejecting it if we can't find them in time.
3133    * If our netDb store of our leaseSet fails, give it a few seconds before
3134      republishing.
3135
3136* 2005-08-03  0.6.0.1 released
3137
31382005-08-03  jrandom
3139    * Backed out an inadvertant change to the netDb store redundancy factor.
3140    * Verify tunnel participant caching.
3141    * Logging cleanup
3142
31432005-08-01  duck
3144    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3145
31462005-08-01  duck
3147    * Fix an addressbook NPE when a new hostname from the master addressbook
3148      didn't exist in the router addressbook.
3149    * Fix an addressbook bug which caused subscriptions not to be parsed at
3150      all. (Oops!)
3151
31522005-07-31  jrandom
3153    * Adjust the netDb search and store per peer timeouts to match the average
3154      measured per peer success times, rather than huge fixed values.
3155    * Optimized and reverified the netDb peer selection / retrieval process
3156      within the kbuckets.
3157    * Drop TCP connections that don't have any useful activity in 10 minutes.
3158    * If i2np.udp.fixedPort=true, never change the externally published port,
3159      even if we are autodetecting the IP address.
3160
3161* 2005-07-27  0.6 released
3162
31632005-07-27  jrandom
3164    * Enabled SSU as the default top priority transport, adjusting the
3165      config.jsp page accordingly.
3166    * Add verification fields to the SSU and TCP connection negotiation (not
3167      compatible with previous builds)
3168    * Enable the backwards incompatible tunnel crypto change as documented in
3169      tunnel-alt.html (have each hop encrypt the received IV before using it,
3170      then encrypt it again before sending it on)
3171    * Disable the I2CP encryption, leaving in place the end to end garlic
3172      encryption (another backwards incompatible change)
3173    * Adjust the protocol versions on the TCP and SSU transports so that they
3174      won't talk to older routers.
3175    * Fix up the config stats handling again
3176    * Fix a rare off-by-one in the SSU fragmentation
3177    * Reduce some unnecessary netDb resending by inluding the peers queried
3178      successfully in the store redundancy count.
3179
31802005-07-22  jrandom
3181    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3182      I2PTunnelServer)
3183    * Minor memory churn reduction in I2CP
3184    * Small stats update
3185
31862005-07-21  jrandom
3187    * Fix in the SDK for a bug which would manifest itself as misrouted
3188      streaming packets when a destination has many concurrent streaming
3189      connections (thanks duck!)
3190    * No more "Graceful shutdown in -18140121441141s"
3191
31922005-07-20  jrandom
3193    * Allow the user to specify an external port # for SSU even if the external
3194      host isn't specified (thanks duck!)
3195
31962005-07-19  jrandom
3197    * Further preparation for removing I2CP crypto
3198    * Added some validation to the DH key agreement (thanks $anon)
3199    * Validate tunnel data message expirations (though not really a problem,
3200      since tunnels expire)
3201    * Minor PRNG threading cleanup
3202
32032005-07-15  cervantes
3204    * Added workaround for an odd win32 bug in the stats configuration console
3205      page which meant only the first checkbox selection was saved.
3206
32072005-07-15  Romster
3208    * Added per group selection toggles in the stats configuration console
3209      page.
3210
32112005-07-13  jrandom
3212    * Fixed a recently injected bug in the multitransport bidding which had
3213      allowed an essentially arbitrary choice of transports, rather than the
3214      properly ordered choice.
3215
32162005-07-13  jrandom
3217    * Fixed a long standing bug where we weren't properly comparing session
3218      tags but instead largely depending upon comparing their hashCode,
3219      causing intermittent decryption errors.
3220
32212005-07-12  jrandom
3222    * Add some data duplication to avoid a recently injected concurrency
3223      problem in the session tag manager (thanks redzara and romster).
3224
32252005-07-11  jrandom
3226    * Reduced the growth factor on the slow start and congestion avoidance for
3227      the streaming lib.
3228    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3229      handlers, rather than launching off new threads which then immediately
3230      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3231    * Don't persist session keys / session tags (not worth it, for now)
3232    * Added some detection and handling code for duplicate session tags being
3233      delivered (root cause still not addressed)
3234    * Make the PRNG's buffer size configurable (via the config property
3235      "i2p.prng.totalBufferSizeKB=4096")
3236    * Disable SSU flooding by default (duh)
3237    * Updates to the StreamSink apps for better throttling tests.
3238
32392005-07-05  jrandom
3240    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3241      buffer, rather than the underlying PRNG's (likely small) one, which in
3242      turn reduces the frequency of recalcing.
3243    * More tuning to reduce temporary allocation churn
3244
32452005-07-04  jrandom
3246    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3247      rather than the IV by itself, preventing an attack that would let
3248      colluding internal adversaries tag a message to determine that they are
3249      in the same tunnel.  Thanks dvorak for the catch!
3250    * Drop long inactive profiles on startup and shutdown
3251    * /configstats.jsp: web interface to pick what stats to log
3252    * Deliver more session tags to account for wider window sizes
3253    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3254    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3255    * UrlLauncher: adjust the browser selection order
3256    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3257    * StreamSinkClient: add support for sending an unlimited amount of data
3258    * Migrate the tests out of the default build jars
3259
32602005-06-22  Comwiz
3261    * Migrate the core tests to junit
3262
32632005-05-25  duck
3264    * Fixed PRNG bug (bugzilla #107)
3265
32662005-05-01  jrandom
3267    * Added a substantial optimization to the AES engine by caching the
3268      prepared session keys (duh).
3269
32702005-05-01  jrandom
3271    * Cleaned up the peers page a bit more.
3272
32732005-04-30  jrandom
3274    * Added a small new page to the web console (/peers.jsp) which contains
3275      the peer connection information.  This will be cleaned up a lot more
3276      before 0.6 is out, but its a start.
3277
32782005-04-30  jrandom
3279    * Reduced some SimpleTimer churn
3280
32812005-04-29  jrandom
3282    * Reduce the peer profile stat coallesce overhead by inlining it with the
3283      reorganize.
3284    * Limit each transport to at most one address (any transport that requires
3285      multiple entry points can include those alternatives in the address).
3286
32872005-04-28  jrandom
3288    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3289    * Add back the code to handle bids from multiple transports (though there
3290      is still only one transport enabled by default)
3291    * Adjust the router's queueing of outbound client messages when under
3292      heavy load by running the preparatory job in the client's I2CP handler
3293      thread, thereby blocking additional outbound messages when the router is
3294      hosed.
3295    * No need to validate or persist a netDb entry if we already have it
3296
32972005-04-25  smeghead
3298    * Added button to router console for manual update checks.
3299    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3300      every time the form was submitted even if it hadn't changed.
3301
33022005-04-24  jrandom
3303    * Added a pool of PRNGs using a different synchronization technique,
3304      hopefully sufficient to work around IBM's PRNG bugs until we get our
3305      own Fortuna.
3306    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3307      size bound the not-yet-ready messages to the peer, not the unacked
3308      message count (not sure yet whether this is worthwile).
3309    * Many additions to the messageHistory log.
3310    * Handle out of order tunnel fragment delivery (not an issue on the live
3311      net with TCP, but critical with UDP).
3312
3313* 2005-04-20  0.5.0.7 released
3314
33152005-04-20  jrandom
3316    * In the SDK, we don't actually need to block when we're sending a message
3317      as BestEffort (and these days, we're always sending BestEffort).
3318    * Pass out client messages in fewer (larger) steps.
3319    * Have the InNetMessagePool short circuit dispatch requests.
3320    * Have the message validator take into account expiration to cut down on
3321      false positives at high transfer rates.
3322    * Allow configuration of the probabalistic window size growth rate in the
3323      streaming lib's slow start and congestion avoidance phases, and default
3324      them to a more conservative value (2), rather than the previous value
3325      (1).
3326    * Reduce the ack delay in the streaming lib to 500ms
3327    * Honor choke requests in the streaming lib (only affects those getting
3328      insanely high transfer rates)
3329    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3330      I2PTunnel client page (thanks maestro^!)
3331
33322005-04-17  sirup
3333    * Added the possibility for i2ptunnel client and httpclient instances to
3334      have their own i2p session (and hence, destination and tunnels).  By
3335      default, tunnels are shared, but that can be changed on the web
3336      interface or with the sharedClient config option in i2ptunnel.config.
3337
33382005-04-17  jrandom
3339    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3340      this?  If not, I want to drop it (lots of tiny details with lots of
3341      duplicated semantics).
3342
33432005-04-17  zzz
3344    * Added new user-editable eepproxy error page templates.
3345
33462005-04-17  jrandom
3347    * Revamp the tunnel building throttles, fixing a situation where the
3348      rebuild may not recover, and defaulting it to unthrottled (users with
3349      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3350      advanced router config)
3351
33522005-04-16  jrandom
3353    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3354
33552005-04-12  jrandom
3356    * Make sure we don't get cached updates (thanks smeghead!)
3357    * Clear out the callback for the TestJob after it passes (only affects the
3358      job timing accounting)
3359
33602005-04-08  smeghead
3361    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3362
33632005-04-08  smeghead
3364    * Security improvements to TrustedUpdate: signing and verification of the
3365      version string along with the data payload for signed update files
3366      (consequently the positions of the DSA signature and version string fields
3367      have been swapped in the spec for the update file's header); router will
3368      no longer perform a trusted update if the signed update's version is lower
3369      than or equal to the currently running router's version.
3370    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3371    * Extended TrustedUpdate public API for use by third party applications.
3372
3373* 2005-04-06  0.5.0.6 released
3374
33752005-04-05  jrandom
3376    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3377      client or httpclient tunnel.
3378    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3379
33802005-04-05  jrandom
3381    * After a successfull netDb search for a leaseSet, republish it to all of
3382      the peers we have tried so far who did not give us the key (up to 10),
3383      rather than the old K closest (which may include peers who had given us
3384      the key)
3385    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3386      republish it every 5 minutes, republish it every 3.  In addition, always
3387      republish as soon as the leaseSet changes (duh^2).
3388    * Minor fix for oddball startup race (thanks travis_bickle!)
3389    * Minor AES update to allow in-place decryption.
3390
33912005-04-03  jrandom
3392    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3393      feeding the NewsFetcher)
3394
33952005-04-01  jrandom
3396    * Allow editing I2PTunnel server instances with five digit ports
3397      (thanks nickless_head!)
3398    * More NewsFetcher debugging for reported weirdness
3399
34002005-04-01  jrandom
3401    * Fix to check for missing news file (thanks smeghead!)
3402    * Added destination display CLI:
3403      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3404    * Added destination display to the web interface (thanks pnspns)
3405    * Installed CIA backdoor
3406
3407* 2005-03-29  0.5.0.5 released
3408
34092005-03-29  jrandom
3410    * Decreased the initial RTT estimate to 10s to allow more retries.
3411    * Increased the default netDb store replication factor from 2 to 6 to take
3412      into consideration tunnel failures.
3413    * Address some statistical anonymity attacks against the netDb that could
3414      be mounted by an active internal adversary by only answering lookups for
3415      leaseSets we received through an unsolicited store.
3416    * Don't throttle lookup responses (we throttle enough elsewhere)
3417    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3418      the file (thanks nickster!)
3419    * Updated the I2PTunnel HTML (thanks postman!)
3420    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3421      which, if matched against the router.config "i2ptunnel.passphrase" value,
3422      skips the nonce check.  If the config prop doesn't exist or is blank, no
3423      passphrase is accepted.
3424    * Implemented HMAC-SHA256.
3425    * Enable the tunnel batching with a 500ms delay by default
3426    * Dropped compatability with 0.5.0.3 and earlier releases
3427
34282005-03-26  jrandom
3429    * Added some error handling and fairly safe to cache data to the streaming
3430      lib (good call Tom!)
3431
34322005-03-25  jrandom
3433    * Fixed up building dependencies for the routerconsole on some more
3434      aggressive compilers (thanks polecat!)
3435
3436* 2005-03-24  0.5.0.4 released
3437
34382005-03-23  jrandom
3439    * Added more intelligent version checking in news.xml, in case we have a
3440      version newer than the one specified.
3441
34422005-03-23  jrandom
3443    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3444      cvsweb.cgi doesn't puke on us.
3445
34462005-03-23  Connelly
3447    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3448      stream send data to not be sent if STREAM CLOSE is issued too fast.
3449
34502005-03-23  jrandom
3451    * Implemented the news fetch / update policy code, as configurated on
3452      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3453      doesn't exist yet, on startup).  No action is taken however, though if
3454      the news.xml specifies that a new release is available, an option to
3455      update will be shown on the router console.
3456    * New initialNews.xml delivered with new installs, and moved news.xml out
3457      of the i2pwww module and into the i2p module so that we can bundle it
3458      within each update.
3459
34602005-03-23  jrandom
3461    * New /configupdate.jsp page for controlling the update / notification
3462      process, as well as various minor related updates.  Note that not all
3463      options are exposed yet, and the update detection code isn't in place
3464      in this commit - it currently says there is always an update available.
3465    * New EepGet component for reliable downloading, with a CLI exposed in
3466      java -cp lib/i2p.jar net.i2p.util.EepGet url
3467    * Added a default signing key to the TrustedUpdate component to be used
3468      for verifying updates.  This signing key can be authenticated via
3469      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3470    * New public domain SHA1 implementation for the DSA code so that we can
3471      handle signing streams of arbitrary size without excess memory usage
3472      (thanks P.Verdy!)
3473    * Added some helpers to the TrustedUpdate to work off streams and to offer
3474      a minimal CLI:
3475          TrustedUpdate keygen pubKeyFile privKeyFile
3476          TrustedUpdate sign origFile signedFile privKeyFile
3477          TrustedUpdate verify signedFile
3478
34792005-03-22  smeghead
3480    * New TrustedUpdate component for signing/verifying files with a DSA
3481      signature.
3482
34832005-03-21  jrandom
3484    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3485      in a single message properly (rather than release the buffer into the
3486      cache after processing the first one) (duh!)
3487    * Added the batching preprocessor which will bundle together multiple
3488      small messages inside a single tunnel message by delaying their delivery
3489      up to .5s, or whenever the pending data will fill a full message,
3490      whichever comes first.  This is disabled at the moment, since without the
3491      above bugfix widely deployed, lots and lots of messages would fail.
3492    * Within each tunnel pool, stick with a randomly selected peer for up to
3493      .5s before randomizing and selecting again, instead of randomizing the
3494      pool each time a tunnel is needed. 
3495
3496* 2005-03-18  0.5.0.3 released
3497
34982005-03-18  jrandom
3499    * Minor tweak to the timestamper to help reduce small skews
3500    * Adjust the stats published to include only the relevent ones
3501    * Only show the currently used speed calculation on the profile page
3502    * Allow the full max # resends to be sent, rather than piggybacking the
3503      RESET packet along side the final resend (duh)
3504    * Add irc.postman.i2p to the default list of IRC servers for new installs
3505    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3506      backwards compatability for users running 0.5.0.2.
3507
35082005-03-18  jrandom
3509    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3510    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3511
35122005-03-17  jrandom
3513    * Update the old speed calculator and associated profile data points to
3514      use a non-tiered moving average of the tunnel test time, avoiding the
3515      freshness issues of the old tiered speed stats.
3516    * Explicitly synchronize all of the methods on the PRNG, rather than just
3517      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3518      needs all of them synchronized).
3519    * Properly use the tunnel tests as part of the profile stats.
3520    * Don't flood the jobqueue with sequential persist profile tasks, but
3521      instead, inject a brief scheduling delay between them.
3522    * Reduce the TCP connection establishment timeout to 20s (which is still
3523      absurdly excessive)
3524    * Reduced the max resend delay to 30s so we can get some resends in when
3525      dealing with client apps that hang up early (e.g. wget)
3526    * Added more alternative socketManager factories (good call aum!)
3527
35282005-03-16  jrandom
3529    * Adjust the old speed calculator to include end to end RTT data in its
3530      estimates, and use that as the primary speed calculator again.
3531    * Use the mean of the high capacity speeds to determine the fast
3532      threshold, rather than the median.  Perhaps we should use the mean of
3533      all active non-failing peers?
3534    * Updated the profile page to sort by tier, then alphabetically.
3535    * Added some alternative socketManager factories (good call aum!)
3536
35372005-03-14  jrandom
3538    * New strict speed calculator that goes off the actual number of messages
3539      verifiably sent through the peer by way of tunnels.  Initially, this only
3540      contains the successful message count on inbound tunnels, but may be
3541      augmented later to include verified outbound messages, peers queried in
3542      the netDb, etc.  The speed calculation decays quickly, but should give
3543      a better differential than the previous stat (both values are shown on
3544      the /profiles.jsp page)
3545
35462005-03-11  jrandom
3547    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3548      minimum (increased on resends as before, of course).
3549    * Always prod the clock update listeners, even if just to tell them that
3550      the time hasn't changed much.
3551    * Added support for explicit peer selection for individual tunnel pools,
3552      which will be useful in debugging but not recommended for use by normal
3553      end users.
3554    * More aggressively search for the next hop's routerInfo on tunnel join.
3555    * Give messages received via inbound tunnels that are bound to remote
3556      locations sufficient time (taking into account clock skew).
3557    * Give alternate direct send messages sufficient time (10s min, not 5s)
3558    * Always give the end to end data message the explicit timeout (though the
3559      old default was sufficient before)
3560    * No need to give end to end messages an insane expiration (+2m), as we
3561      are already handling skew on the receiving side.
3562    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3563      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3564    * Properly keep the sendBps stat
3565    * When running the router with router.keepHistory=true, log more data to
3566      messageHistory.txt
3567    * Logging updates
3568    * Minor formatting updates
3569
35702005-03-08  jrandom
3571    * More aggressively adjust the clock
3572
35732005-03-07  jrandom
3574    * Fix the HTTP response header filter to allow multiple headers with the
3575      same name (thanks duck and spotteri!)
3576
3577* 2005-03-06  0.5.0.2 released
3578
35792005-03-06  jrandom
3580    * Allow the I2PTunnel web interface to select streaming lib options for
3581      individual client tunnels, rather than sharing them across all of them,
3582      as we do with the session options.  This way people can (and should) set
3583      the irc proxy to interactive and the eepproxy to bulk.
3584    * Added a startRouter.sh script to new installs which simply calls
3585      "sh i2prouter start".  This should make it clear how people should start
3586      I2P.
3587    * Properly expand the HTTP response header buffer (thanks shendaras!)
3588
35892005-03-04  jrandom
3590    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3591      so that broken (/malicious) webservers can't allow persistent
3592      connections.  All HTTP compliant browsers should now always close the
3593      socket.
3594    * Enabled the GZIPInputStream's cache (they weren't cached before)
3595    * Make sure our first send is always a SYN (duh)
3596    * Workaround for some buggy compilers
3597
35982005-03-03  jrandom
3599    * Loop while starting up the I2PTunnel instances, in case the I2CP
3600      listener isn't up yet (thanks detonate!)
3601    * Implement custom reusable GZIP streams to both reduce memory churn
3602      and prevent the exposure of data in the standard GZIP header (creation
3603      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3604      though has only been tested within the confines of I2P's compression use
3605      (DataHelper.[de]compress).
3606    * Preemptively support the next protocol version, so that after the 0.5.0.2
3607      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3608
36092005-03-02  jrandom
3610    * Fix one substantial OOM cause (session tag manager was only dropping
3611      tags once the critical limit was met, rather than honoring their
3612      expiration) (duh)
3613    * Lots of small memory fixes
3614    * Double the allowable concurrent outstanding tunnel build tasks (20)
3615
36162005-03-01  jrandom
3617    * Really disable the streaming lib packet caching
3618    * Synchronized a message handling point in the SDK (even though its use is
3619      already essentially single threaded, its better to play it safe)
3620    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3621      existing one (duh)
3622    * Throttle the number of concurrent pending tunnel builds across all
3623      pools, in addition to simply throttling the number of new requests per
3624      minute for each pool individually.  This should avoid the cascading
3625      failure when tunnel builds take too long, as no new builds will be
3626      created until the previous ones are handled.
3627    * Factored out and extended the DataHelper's unit tests for dealing with
3628      long and date formatting.
3629    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3630      alone doesn't address the bug where jetty asks for authentication too
3631      much.  (thanks orion!)
3632    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3633      them to the filesystem.
3634
36352005-02-27  jrandom
3636    * Don't rerequest leaseSets if there are already pending requests
3637    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3638      temporary disabled the streaming lib packet caching.
3639    * Reduced the resend RTT penalty to 10s
3640
36412005-02-26  jrandom
3642    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3643
36442005-02-26  jrandom
3645    * Further streaming lib caching improvements
3646    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3647      increase the RTT on resends.
3648    * Lower the default message size to 4KB from 16KB to further reduce the
3649      chance of failed fragmentation.
3650    * Extend tunnel rebuild throttling to include fallback rebuilds
3651    * If there are less than 20 routers known, don't drop the last 20 (to help
3652      avoid dropping all peers under catastrophic failures)
3653    * New stats for end to end messages - "client.leaseSetFoundLocally",
3654      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3655
36562005-02-24  jrandom
3657    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3658      overload under catastrophic failures (thanks Tracker and cervantes!)
3659    * Block the router startup process until we've initialized the clock
3660
36612005-02-24  jrandom
3662    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3663      data in the streaming lib.
3664    * Fixed a streaming lib bug where the connection initiator would fail the
3665      stream if the ACK to their SYN was lost.
3666
36672005-02-23  jrandom
3668    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3669      get stale tunnel pools, don't you think?
3670
3671* 2005-02-23  0.5.0.1 released
3672
36732005-02-22  jrandom
3674    * Reworked the tunnel (re)building process to remove the tokens and
3675      provide cleaner controls on the tunnels built.
3676    * Fixed situations where the timestamper wanted to test more servers than
3677      were provided (thanks Tracker!)
3678    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3679      (thanks Tracker!)
3680
36812005-02-22  jrandom
3682    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3683      try to automatically reconnect on accept()/connect(..)).
3684    * Loop check for expired lease republishing (just in case)
3685
36862005-02-22  jrandom
3687    * Adjusted (and fixed...) the timestamper change detection
3688    * Deal with a rare reordering bug at the beginning of a stream (so we
3689      don't drop it unnecessarily)
3690    * Cleaned up some dropped message handling in the router
3691    * Reduced job queue churn when dealing with a large number of tunnels by
3692      sharing an expiration job
3693    * Keep a separate list of the most recent CRIT messages (shown on the
3694      logs.jsp).  This way they don't get buried among any other messages.
3695    * For clarity, display the tunnel variance config as "Randomization" on
3696      the web console.
3697    * If lease republishing fails (boo! hiss!) try it again
3698    * Actually fix the negative jobLag in the right place (this time)
3699    * Allow reseeding when there are less than 10 known peer references
3700    * Lots of logging updates.
3701
37022005-02-20  jrandom
3703    * Allow the streaming lib resend frequency to drop down to 20s as the
3704      minimum, so that up to 2 retries can get sent on an http request.
3705    * Add further limits to failsafe tunnels.
3706    * Keep exploratory and client tunnel testing and building stats separate.
3707    * Only use the 60s period for throttling tunnel requests due to transient
3708      network overload.
3709    * Rebuild tunnels earlier (1-3m before expiration, by default)
3710    * Cache the next hop's routerInfo for participating tunnels so that the
3711      tunnel participation doesn't depend on the netDb.
3712    * Fixed a long standing bug in the streaming lib where we wouldn't always
3713      unchoke messages when the window size grows.
3714    * Make sure the window size never reaches 0 (duh)
3715
37162005-02-20  jrandom
3717    * Only build failsafe tunnels if we need them
3718    * Properly implement the selectNotFailingPeers so that we get a random
3719      selection of peers, rather than using the strictOrdering (thanks dm!)
3720    * Don't include too many "don't tell me about" peer references in the
3721      lookup message - only send the 10 peer references closest to the target.
3722
37232005-02-19  jrandom
3724    * Only build new extra tunnels on failure if we don't have enough
3725    * Fix a fencepost in the tunnel building so that e.g. a variance of
3726      2 means +/- 2, not +/- 1 (thanks dm!)
3727    * Avoid an NPE on client disconnect
3728    * Never select a shitlisted peer to participate in a tunnel
3729    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3730    * Keep session tags around for a little longer, just in case (grr)
3731    * Cleaned up some closing event issues on the streaming lib
3732    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3733      so that 0.4.* users will need to do a clean install, but we don't need
3734      to shove an additional 2MB in each update to those already on 0.5.
3735    * Imported the susimail css (oops, thanks susi!)
3736
3737* 2005-02-18  0.5 released
3738
37392005-02-17  jrandom
3740    * If the clock is adjusted during a job run, don't act as if the job took
3741      negative time.
3742
37432005-02-17  jrandom
3744    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3745
37462005-02-17  jrandom
3747    * Fixed the braindead tunnel testing logic
3748    * If a large number of tunnels are failing (within the last 5-10 minutes)
3749      and the current tunnel pool's configuration allows it, randomly build a
3750      zero hop tunnel to replace failed tunnels.
3751    * Enable postman's POP3 and SMTP tunnels by default
3752
37532005-02-16  jrandom
3754    * Added some error handling when the number of session tags exceeds the
3755      realistic capacity, dropping a random chunk of received tag sets and
3756      conducting some minor analysis of the remaining ones.  This is a part
3757      of a pretty serious error condition, and logs as CRIT (if/when people
3758      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3759      puts in the wrapper.log or /logs.jsp)
3760    * Update the addressbook to only write to the published hosts location
3761      if the addressbook's config contains "should_publish=true" (by default,
3762      it contains "should_publish=false")
3763
37642005-02-16  jrandom
3765    * (Merged the 0.5-pre branch back into CVS HEAD)
3766    * Replaced the old tunnel routing crypto with the one specified in
3767      router/doc/tunnel-alt.html, including updates to the web console to view
3768      and tweak it. 
3769    * Provide the means for routers to reject tunnel requests with a wider
3770      range of responses:
3771        probabalistic rejection, due to approaching overload
3772        transient rejection, due to temporary overload
3773        bandwidth rejection, due to persistent bandwidth overload
3774        critical rejection, due to general router fault (or imminent shutdown)
3775      The different responses are factored into the profiles accordingly.
3776    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3777      with a series of new properties, relevent to the new tunnel routing code:
3778        inbound.nickname (used on the console)
3779        inbound.quantity (# of tunnels to use in any leaseSets)
3780        inbound.backupQuantity (# of tunnels to keep in the ready)
3781        inbound.length (# of remote peers in the tunnel)
3782        inbound.lengthVariance (if > 0, permute the length by adding a random #
3783                                up to the variance.  if < 0, permute the length
3784                                by adding or subtracting a random # up to the
3785                                variance)
3786        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3787                    in that client's pool)
3788      There are other options, and more will be added later, but the above are
3789      the most relevent ones.
3790    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3791    * Compress all profile data on disk.
3792    * Adjust the reseeding functionality to work even when the JVM's http proxy
3793      is set.
3794    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3795      max window size.
3796    * Reduced the default streaming lib max message size to 16KB (though still
3797      configurable by the user), also doubling the default maximum window
3798      size.
3799    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3800    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3801      the first byte of the SHA256.
3802    * Added a new "netId" flag to let routers drop references to other routers
3803      who we won't be able to talk to.
3804    * Extended the timestamper to get a second (or third) opinion whenever it
3805      wants to actually adjust the clock offset.
3806    * Replaced that kludge of a timestamp I2NP message with a full blown
3807      DateMessage.
3808    * Substantial memory optimizations within the router and the SDK to reduce
3809      GC churn.  Client apps and the streaming libs have not been tuned,
3810      however.
3811    * More bugfixes than you can shake a stick at.
3812
38132005-02-13  jrandom
3814    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3815      only contains 32bit versions, so build your own, placing libjbigi.so in
3816      your install dir if necessary.  (thanks mule!)
3817    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3818      (thanks spaetz!)
3819
38202005-02-10  smeghead
3821    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3822      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3823      Pants are still non-functional at this time so don't mess with it yet
3824      unless you want to potentially mangle your working copy of CVS.
3825
38262005-02-09  duck
3827    * Allow an unneeded newline in the SAM client connection without
3828      disconnecting.
3829
38302005-02-07  jrandom
3831    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3832
38332005-02-06  Sugadude
3834    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3835
38362005-02-03  smeghead
3837    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3838      library from GNU Crypto's CVS HEAD sources.
3839
38402005-01-26  smeghead
3841    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3842      packages and installed to $i2pinstalldir/scripts.
3843    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3844      using gij + libgcj, and --sourcedir to run them from the source tree
3845      instead of the installation directory.
3846    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3847      causing gcj to toss a compilation warning (jrandom++).
3848
38492005-01-26  smeghead
3850    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3851      tests and benchmarks.
3852    * Routerconsole now builds under gcj 3.4.3.
3853    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3854
38552005-01-25  smeghead
3856    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3857      supporting apps (except for the routerconsole which is still being
3858      investigated).
3859
38602005-01-24  smeghead
3861    * C#-ification of sam-sharp: interface greatly simplified using delegates
3862      and events; SamBaseEventHandler provides basic implementation and helper
3863      methods but is now optional.
3864    * NAnt buildfile and README added for sam-sharp.
3865
38662005-01-23  smeghead
3867    * Port the java SAM client library to mono/C# and released into the
3868      public domain.  The 0.1 version of this port is available in CVS as
3869      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3870      library has been removed.
3871
38722005-01-21  Jhor
3873    * Updated jbigi build scripts for OSX.
3874
38752005-01-21  jrandom
3876    * Added support for OSX to the NativeBigInteger code so that it will look
3877      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3878      is not bundled with the shipped jbigi.jar yet though.
3879
38802005-01-18  jrandom
3881    * Increased the max # session tags maintained and decreased slightly the
3882      period over which they are gathered.
3883
38842005-01-17  jrandom
3885    * Added meaningful support for adjusting the preferred message size in the
3886      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3887      whatever).  The other side will mimic a reduction (but never an increase).
3888    * Always make sure to use distinct ConnectionOption objects for each
3889      connection (duh)
3890    * Reduced the default ACK delay to 500ms on in the streaming lib
3891    * Only shrink the streaming window once per window
3892    * Don't bundle a new jetty.xml with updates
3893    * Catch another local routerInfo corruption issue on startup.
3894
38952005-01-15  cervantes
3896    * Added support to the eepproxy for URLs such as
3897      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3898      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3899
39002005-01-15  jrandom
3901    * Caught a series of (previously unhandled) errors caused by requeueing
3902      messages that had timed out on the TCP transport (thanks mae^!)
3903    * Reduce the barrier to dropping session tags on streaming lib resends -
3904      every fourth send should drop the tags, forcing ElGamal encryption.  This
3905      will help speed up the recovery after a disconnect, rather than the drop
3906      every fifth send.
3907
3908* 2005-01-06  0.4.2.6 released
3909
39102005-01-06  jrandom
3911    * Added a startup message to the addressbook, printing its version number
3912      to stdout (which is sent to wrapper.config) when it loads.
3913    * Updated the addressbook to reread the config file periodically
3914    * Added orion.i2p to the list of eepsites on the default homepage
3915
39162005-01-05  jrandom
3917    * Handle unexpected network read errors more carefully (thanks parg!)
3918    * Added more methods to partially compare (DataHelper) and display
3919      arrays (Base64.encode).
3920    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
3921    * Be more generous on the throttle when just starting up the router
3922    * Fix a missing scheduled event in the streaming lib (caused after reset)
3923    * Add a new DisconnectListener on the I2PSocketManager to allow
3924      notification of session destruction.
3925    * Make sure our own router identity is valid, and if it isn't, build a new
3926      one and restart the router.  Alternately, you can run the Router with
3927      the single command line argument "rebuild" and it will do the same.
3928
39292004-12-31  ragnarok
3930    * Integrated latest addressbook changes (2.0.3) which include support for
3931      deploying as a .war file with no existing addressbook configuration.
3932    * Updated main build process to bundle the addressbook.war in the
3933      i2pinstall.jar and i2pupdate.zip.
3934
39352004-12-31  jrandom
3936    * Speling fxi (thanks digum!)
3937    * Bugfix for the I2PTunnel web interface so that it now properly launches
3938      newly added tunnels that are defined to be run on startup (thanks ugha!)
3939
39402004-12-30  jrandom
3941    * Revised the I2PTunnel client and httpclient connection establishment
3942      throttles.  There is now a pool of threads that build the I2PSocket
3943      connections with a default size of 5, configurable via the I2PTunnel
3944      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
3945      not throttle the number of concurrent builders, but will launch a thread
3946      per socket during establishment).  In addition, sockets accepted but
3947      not yet allocated to one of the connection builders will be destroyed
3948      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
3949      0, it will wait indefinitely).
3950
39512004-12-29  jrandom
3952    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
3953      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
3954    * Don't treat connection inactivity closure as a connection error.
3955
39562004-12-29  jrandom
3957    * Add in a new keepalive event on each TCP connection, proactively sending
3958      a (tiny) time message every minute or two, as well as killing the
3959      connection if no message has been fully sent within 5 minutes or so. 
3960      This should help deal with hung connections from IP address changes.
3961
39622004-12-28  jrandom
3963    * Cleaned up the resending and choking algorithm in the streaming lib.
3964    * Removed the read timeout override for I2PTunnel's httpclient, allowing
3965      it to use the default for the streaming lib.
3966    * Revised ack triggers in the streaming lib.
3967    * Logging.
3968
3969* 2004-12-21  0.4.2.5 released
3970
39712004-12-21  jrandom
3972    * Track a new stat for expired client leases (client.leaseSetExpired).
3973
39742004-12-21  jrandom
3975    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
3976      and added windows info to the headless docs. (thanks ardvark!)
3977    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
3978      a stream (thanks frosk!)
3979    * Add a pair of new stats for monitoring tunnel participation -
3980      tunnel.participatingBytesProcessed (total # bytes transferred) and
3981      tunnel.participatingBytesProcessedActive (total # bytes transferred for
3982      tunnels whose byte count exceed the 10m average).  This should help
3983      further monitor congestion issues.
3984    * Made the NamingService factory property public (thanks susi!)
3985
39862004-12-20  jrandom
3987    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
3988    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
3989      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
3990      reasoning is gone.
3991
39922004-12-19  jrandom
3993    * Fix for a race on startup wrt the new stats (thanks susi!)
3994
39952004-12-19  jrandom
3996    * Added three new stats - router.activePeers, router.fastPeers, and
3997      router.highCapacityPeers, updated every minute
3998
39992004-12-19  jrandom
4000    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
4001      hostname should be sent to the webserver.  By default, new installs will
4002      have an httpserver pointing at their jetty instance with the spoofed
4003      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
4004
40052004-12-19  scintilla
4006    * Convert native jcpuid code from C++ to C. This should alleviate build
4007      problems experienced by some users.
4008
4009* 2004-12-18  0.4.2.4 released
4010
40112004-12-16  jrandom
4012    * Catch another oddball case for a reset connection in the streaming lib.
4013    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
4014      dumps the current state of that peer's profile.  Instead of the full
4015      base64, you can pass in however many characters you have and it will
4016      return the first match found.
4017
40182004-12-16  jrandom
4019    * Remove the randomized factor in the tunnel rejection by bandwidth -
4020      we now accept the request if we've allocated less than our limit
4021      and reject it if we've allocated more.
4022    * Stick to the standard capacity scale on tunnel rejection, even for
4023      the 10m period.
4024    * Build the time message at the very last possible moment
4025
40262004-12-15  jrandom
4027    * Handle hard disconnects more gracefully within the streaming lib, and
4028      log unmonitored events more aggressively.
4029    * If we drop a peer after connection due to clock skew, log it to the
4030      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
4031      the stat 'tcp.disconnectAfterSkew'.
4032    * Fixed the formatting in the skew display
4033    * Added an ERROR message that is fired once after we run out of
4034      routerInfo files (thanks susi!)
4035    * Set the connect timeout equal to the streaming lib's disconnect timeout
4036      if not already specified (the I2PTunnel httpclient already enforces a
4037      60s connect timeout)
4038    * Fix for another connection startup problem in the streaming lib.
4039    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4040    * Adjust the capacity calculations so that tunnel failures alone in the
4041      last 10m will not trigger a 0 capacity rank.
4042
40432004-12-14  jrandom
4044    * Periodically send a message along all I2NP connections with the router's
4045      current time, allowing the receiving peer to determine that the clock
4046      has skewed too much, and hence, disconnect.  For backwards compatability
4047      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4048      next time we have a backwards compatability break, we can put in a proper
4049      message setup for it.
4050
40512004-12-14  jrandom
4052    * Reenable the probabalistic drop on the TCP queues to deal with good old
4053      fashioned bandwidth limiting.  However, by default the probability is
4054      rigged to reserve 0% of the queue free - meaning we just aggressively
4055      fail messages in the queue if we're transferring too slowly.  That
4056      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4057      (or whatever) and the drop code can be disabled with the parameter
4058      'tcp.dropProbabalistically=false'.
4059    * Still penalize a peer on tunnel failure, but don't immediately drop
4060      their capacity to 0.
4061    * More aggressively ACK duplicates
4062    * Randomize the timestamper period
4063    * Display the clock skew on the connection logs when a peer sends it.
4064    * Allow the timestamper to fix skews of up to 10 minutes
4065    * Logging
4066
40672004-12-13  jrandom
4068    * Added some error checking on the new client send job (thanks duck!)
4069    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4070      proportional to the bytes allocated in existing tunnels vs the bytes
4071      allowed through the bandwidth limiter).
4072    * Enable a new configuration parameter for triggering a tunnel rebuild
4073      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4074      before killing the tunnel (default 0).
4075    * Gather more data that we rank capacity by (now we monitor and balance the
4076      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4077    * Fix a truncation/type conversion problem on the long term capacity
4078      values (we were ignoring the daily stats outright)
4079
40802004-12-11  jrandom
4081    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4082      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4083      on .connect, but is unable to transfer any data in any direction.  We now
4084      detect that condition for the I2PTunnelHTTPClient and throw up the right
4085      error page.
4086    * Logging
4087
40882004-12-11  jrandom
4089    * Use a simpler and less memory intensive job for processing outbound
4090      client messages when the session is in mode=bestEffort.  We can
4091      immediately discard the data as soon as its sent the first time,
4092      rather than wait for an ack, since we will never internally resend.
4093    * Reduce some synchronization to avoid a rare deadlock
4094    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4095      case it within the tunnel controller.
4096    * Script cleanup for building jbigi/jcpuid
4097    * Logging
4098
4099* 2004-12-08  0.4.2.3 released
4100
41012004-12-08  jrandom
4102    * Revised the buffering when reading from the SAM client and writing
4103      to the stream.  Also added a thread (sigh) so we don't block the
4104      SAM client from giving us more messages for abnormally long periods
4105      of time.
4106    * Display the router version in the logs on startup (oft requested)
4107    * Fix a race during the closing of a messageOutputStream
4108
41092004-12-06  jrandom
4110    * Don't do a 'passive flush' while there are already outbound messages
4111      unacked.
4112    * Show the reseed link if up to 10 peers profiles are active (thanks
4113      dburton!)
4114
41152004-12-06  jrandom
4116    * Don't propogate streaming connection failures out to the SAM bridge as
4117      fatal errors.
4118    * Dont barf on repeated I2CP closure.
4119
41202004-12-05  jrandom
4121    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4122      getLocalhost call
4123
41242004-12-05  jrandom
4125    * Default the I2CP listener to localhost only, unless overridden by
4126      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4127    * More SAM fixes for things recently broken (whee)
4128
41292004-12-05  jrandom
4130    * Fix the recently broken SAM bridge (duh)
4131    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4132      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4133      StreamSink and StreamSend apps for transferring files.
4134    * Make the passive flush timer fire more frequently.
4135
41362004-12-05  jrandom
4137    * Fixed some links in the console (thanks ugha!) and the javadoc
4138      (thanks dinoman!)
4139    * Fix the stream's passive flush timer (oh, its supposed to work?)
4140
41412004-12-03  jrandom
4142    * Toss in a small pool of threads (3) to execute the events queued up with
4143      the SimpleTimer, as we do currently see the occational event
4144      notification spiking up to a second or so.
4145    * Implement a SAM client API in java, useful for event based streaming (or
4146      for testing the SAM bridge)
4147    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4148      bridge is being run outside of the router).
4149    * Include the SAM test code in the sam.jar
4150    * Remove an irrelevent warning message from SAM, which was caused by
4151      perfectly normal operation due to a session being closed.
4152    * Removed some unnecessary synchronization in the streaming lib's
4153      PacketQueue
4154    * More quickly clean up the memory used by the streaming lib by
4155      immediately killing each packet's resend job as soon as it is ACKed (or
4156      cancelled), so that there are no longer any valid pointers to the
4157      (potentially 32KB) packet.
4158    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4159    * Drop packets that would expand our inbound window beyond our maximum
4160      buffer size (default 32 messages)
4161    * Always read the ACK/NACK data from the verified packets received, even
4162      if we are going to drop them
4163    * Always adjust the window when there are messages ACKed, though do not
4164      change its size except as before.
4165    * Streamlined some synchronization in the router's I2CP handling
4166    * Streamlined some memory allocation in the SAM bridge
4167    * Default the streaming lib to disconnect on inactivity, rather than send
4168      an empty message.
4169
41702004-12-01  jrandom
4171    * Fix for a race in the streaming lib as caused by some odd SAM activity
4172
4173* 2004-12-01  0.4.2.2 released
4174
41752004-12-01  jrandom
4176    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4177      connections to work (thanks duck!)
4178    * Make sure we override the inactivity timeout too
4179
4180* 2004-12-01  0.4.2.1 released
4181
41822004-12-01  jrandom
4183    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4184      include the forged User-agent header.
4185    * Adjust the default read timeout on the eepproxy to 60s, unless
4186      overridden.
4187    * Minor tweak on stream shutdown.
4188
41892004-11-30  jrandom
4190    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4191    * Build in a simple timeout to flush data queued into the I2PSocket but
4192      not yet flushed.
4193    * Don't explicitly flush after each SAM stream write, but leave it up to
4194      the [nonblocking] passive flush.
4195    * Don't whine about 10-99 connection events occurring in a second
4196    * Don't wait for completion of packets that will not be ACKed (duh)
4197    * Adjust the congestion window, even if the packet was resent (duh)
4198    * Make sure to wake up any blocking read()'s when the MessageInputStream
4199      is close()ed (duh)
4200    * Never wait more than the disconnect timeout for a write to complete
4201
42022004-11-29  jrandom
4203    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4204
42052004-11-29  jrandom
4206    * Reduced contention for local client delivery
4207    * Drop the new code that munges the wrapper.config.  Instead, updates that
4208      need to change it will include their own wrapper.config in the
4209      i2pupdate.zip, overwriting the existing file.  If the file
4210      "wrapper.config.updated" is included, it is deleted at first opportunity
4211      and the router shut down, displaying a notice that the router must be
4212      started again cleanly to allow the changes to the wrapper.config to take
4213      effect.
4214    * Properly stop accept()ing I2PSocket connections if we close down the
4215      session (duh).
4216    * Make sure we cancel any outstanding Packets in flight when a connection
4217      is terminated (thanks susi!)
4218    * Split up the I2PTunnel closing a little further.
4219
42202004-11-28  jrandom
4221    * Accept IP address detection changes with a 2-out-of-3 minimum.
4222    * As long as the router is up, keep retrying to bind the I2CP listener.
4223    * Decrease the java service wrapper ping frequency to once every 10
4224      minutes, rather than once every 5 seconds.
4225
42262004-11-27  jrandom
4227    * Some cleanup and bugfixes for the IP address detection code where we
4228      only consider connections that have actually sent and received messages
4229      recently as active, rather than the mere presence of a TCP socket as
4230      activity.
4231
42322004-11-27  jrandom
4233    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4234      lib can do that (without an additional per-connection thread).
4235    * Close the I2PTunnel forwarder threads more aggressively
4236
42372004-11-27  jrandom
4238    * Fix for a fast loop caused by a race in the new streaming library (thanks
4239      DrWoo, frontier, pwk_, and thetower!)
4240    * Minor updates to the SimpleTimer and Connection to help track down a
4241      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4242      many events/tasks fire in a second)
4243    * Minor fixes for races on client disconnects (causing NPEs)
4244
4245* 2004-11-26  0.4.2 released
4246
42472004-11-26  jrandom
4248    * Enable the new streaming lib as the default.  That means, for any
4249      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4250
42512004-11-25  jrandom
4252    * Revised the installer to include start menu and desktop shortcuts for
4253      windows platforms, including pretty icons (thanks DrWoo!)
4254    * Allow clients specified in clients.config to have an explicit startup
4255      delay.
4256    * Update the default install to launch a browser pointing at the console
4257      whenever I2P starts up, rather than only the first time it starts up
4258      (configurable on /configservice.jsp, or in clients.config)
4259    * Bugfix to the clock skew checking code to monitor the delta between
4260      offsets, not the offset itself (duh)
4261    * Router console html update
4262    * New (and uuuuugly) code to verify that the wrapper.config contains
4263      the necessary classpath entries on update.  If it has to update the
4264      wrapper.config, it will stop the JVM and service completely, since the
4265      java service wrapper doesn't reread the wrapper.config on JVM restart -
4266      requiring the user to manually restart the service after an update.
4267    * Increase the TCP connection timeout to 30s (which is obscenely long)
4268
42692004-11-22  jrandom
4270    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4271    * New stat to keep track of slow jobs (ones that take more than a second
4272      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4273
42742004-11-21  jrandom
4275    * Update the I2PTunnel web interface to include an option for the new
4276      streaming lib (which is ignored until the 0.4.2 release).
4277    * Revised the I2PTunnel web interface to keep the I2CP options of client
4278      and httpclient tunnels in sync, as they all share the same I2CP session.
4279
42802004-11-21  jrandom
4281    * Only allow small clock skews after the first 10 minutes of operation
4282      (to prevent later network lag bouncing us way off course - yes, we
4283      really need an NTP impl to balance out the network burps...)
4284    * Revamp the I2PTunnel web interface startup process so that everything
4285      is shown immediately, so that different pieces hanging don't hang
4286      the rest, and other minor bugfixes.
4287    * Take note of SAM startup error (in case you're already running a SAM
4288      bridge...)
4289    * Increase the bandwidth limiter burst values available to 10-60s (or
4290      whatever is placed in /configadvanced.jsp, of course)
4291
42922004-11-21  jrandom
4293    * Allow end of line comments in the hosts.txt and other config files,
4294      using '#' to begin the comments (thanks susi!)
4295    * Add support to I2PTunnel's 'client' feature for picking between multiple
4296      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4297    * Add a quick link on the left hand nav to reseed if there aren't enough
4298      known peers, as well as link to the config page if there are no active
4299      peers.  Revised config page accordingly.
4300
43012004-11-21  jrandom
4302    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4303      rather that every 15 minutes, and increase the warning period in which
4304      we refresh tags from 30s to 2 minutes.
4305    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4306      to close the I2PSocket (leaving it to timeout).
4307
43082004-11-19  jrandom
4309    * Off-by-one fix to the tunnel pool management code, along side some
4310      explicit initialization.  This can affect clients whose lengths are
4311      shorter than the router's default (thanks duck!)
4312
43132004-11-17  jrandom
4314    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4315      Ragnarok!)
4316
43172004-11-17  jrandom
4318    * Minor logging update.
4319
43202004-11-16  jrandom
4321    * Clean up the propogation of i2psocket options so that various streaming
4322      libs can honor them more precisely
4323
43242004-11-16  jrandom
4325    * Minor logging update
4326
43272004-11-14  jrandom
4328    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4329    * Fix a leak injected into the SimpleTimer
4330    * Fix a race condition in the tunnel message handling
4331
43322004-11-13  jrandom
4333    * Added throttles on how many I2PTunnel client connections we open at once
4334    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4335      the streaming library used should take care of any buffering.
4336    * Added a cache for some objects used in I2PTunnel, especially useful when
4337      there are many short lived connections.
4338    * Trimmed the SimpleTimer's processing a bit
4339
43402004-11-10  jrandom
4341    * Allow loading the (mini)streaming connection options from the
4342      environment.
4343    * More defensive programming in the DSA implementation.
4344
43452004-11-08  jrandom
4346    * Remove spurious flush calls from I2PTunnel, and work with the
4347      I2PSocket's output stream directly (as the various implementations
4348      do their own buffering).
4349    * Another pass at a long standing JobQueue bug - dramatically simplify
4350      the job management synchronization since we dont need to deal with
4351      high contention (unlike last year when we had dozens of queue runners
4352      going at once).
4353    * Logging
4354
43552004-11-08  jrandom
4356    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4357
4358* 2004-11-06  0.4.1.4 released
4359
43602004-11-06  jrandom
4361    * Expose a drop down on the /configclients.jsp to enter the outbound
4362      tunnel depth.
4363    * Improved *hosts.txt loading
4364    * Explicitly override the JVM's timezone settings to use GMT so that
4365      any client applications which use timezones won't leak sensitive
4366      data (thanks gott!)
4367    * Bundle sam.jar in the update (thanks duck!)
4368
43692004-11-06  jrandom
4370    * Fix for a long standing synchronization bug in the SDK that in rare
4371      instances can add a few seconds of lag.
4372
43732004-11-05  jrandom
4374    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4375      parameters, verify proper operation after multiple session lifetimes,
4376      as well as some synchronization problems.
4377    * New properties method on the DataHelper class.
4378    * Address a race on fast disconnecting clients
4379
43802004-11-02  jrandom
4381    * Fix for a long standing synchronization bug in the JobQueue (and added
4382      some kooky flags to make sure it stays dead)
4383    * Update the ministreaming lib to force mode=guaranteed if the default
4384      lib is used, and mode=best_effort for all other libs.
4385
43862004-11-02  jrandom
4387    * Fixed up the configuration overrides for the streaming socket lib
4388      integration so that it properly honors env settings.
4389    * More memory usage streamlining (last major revamp for now, i promise)
4390
43912004-11-01  jrandom
4392    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4393    * Honor message expirations for some tunnel jobs that were prematurely
4394      expired.
4395    * Streamline memory usage with temporary object caches and more efficient
4396      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4397      message handling.
4398    * Fix some situations where we forward messages too eagerly.  For a
4399      request at the tunnel endpoint, if the tunnel is inbound and the target
4400      is remote, honor the message by tunnel routing the data rather than
4401      sending it directly to the requested location.
4402
44032004-10-30  jrandom
4404    * Cache the temporary objects used in the AES encryption/decryption
4405      process so that AES doesn't require any memory allocation to process
4406      data.
4407    * Dramatically reduce memory usage within various crypto implementations
4408      by avoiding unnecessary (though simplifying) buffers.
4409    * If we specify some tags to be sent in an I2CP message explicitly, use
4410      only those, not those plus a new set (otherwise we aren't sure on ACK
4411      which set was delivered)
4412    * Allow configuration for the partial send timeout (how long before
4413      resending a message down a different tunnel in a lease).  This can be
4414      updated with the "router.clientPartialSendTimeout" router config prop.
4415    * Logging
4416
44172004-10-29  jrandom
4418    * Strip the Referer, Via, and From headers completely, rather than
4419      inserting a bogus value ("i2p").  This should help with the use of
4420      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4421
44222004-10-27  jrandom
4423    * Fix a strange race condition on i2cp client disconnect.
4424    * win98 startup fixes (thanks tester-1 and ardvark!)
4425    * include build scripts for the new streaming lib (which is NOT ready
4426      for use yet, but you can hack around with it)
4427
44282004-10-24  jrandom
4429    * Allow explicit inclusion of session tags in the SDK, enabling the
4430      resending of tags bundled with messages that would not otherwise
4431      be ACKed.
4432    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4433      no DeliveryStatusMessage will be bundled (and as such, client apps using
4434      it will need to do their own session tag ack/nack).
4435    * Handle client errors when notifying them of message availability.
4436    * New StreamSinkSend which sends a file to a destination and disconnects.
4437    * Update the I2PSocketManagerFactory to build the specific
4438      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4439      containing the class name of the I2PSocketManager to instantiate.
4440
44412004-10-23  jrandom
4442    * Minor ministreaming lib refactoring to simplify integration of the full
4443      streaming lib.
4444    * Minor bugfixes to data structure serialization.
4445
4446* 2004-10-18  0.4.1.3 released
4447
44482004-10-18  jrandom
4449    * Allow sending messages with a section of a byte array.
4450    * Reduced stats published.
4451
44522004-10-17  jrandom
4453    * Don't b0rk on whitespace in the router address.
4454
44552004-10-16  jrandom
4456    * More aggressively reduce the capacity of peers if their tunnels are
4457      failing so that we move off them quicker.
4458    * Simplify some data structure serialization for reuse in the streaming
4459      lib, as well as add support for signing and verifying partial byte
4460      arrays.
4461    * Logging updates
4462
44632004-10-16  jrandom
4464    * Increased the default minimum tunnel test time to 5 seconds, since we
4465      still see the occational message processing time spike to 2 seconds.
4466    * Update the SimpleTimer to allow rescheduling a task thats already
4467      queued (useful for the new streaming lib).
4468
44692004-10-15  jrandom
4470    * Replaced old minimum tunnel test timeout of 1s with a configurable
4471      value (router.config property "router.tunnelTestMinimum", with the
4472      default of 2s).
4473
44742004-10-14  jrandom
4475    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4476      peer, so don't use it as a key point of the IsFailing calculator.
4477      We still use it as a key point of the Capacity calculator, however.
4478
44792004-10-14  jrandom
4480    * Allow for a configurable tunnel "growth factor", rather than trying
4481      to achieve a steady state.  This will let us grow gradually when
4482      the router is needed more, rather than blindly accepting the request
4483      or arbitrarily choking it at an averaged value.  Configure this with
4484      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4485    * Adjust the tunnel test timeouts dynamically - rather than the old
4486      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4487      test time (the deviation factor can be adjusted by setting
4488      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4489      find the 'good' tunnels.
4490    * Added some crazy debugging to try and track down an intermittent hang.
4491
44922004-10-13  jrandom
4493    * Fix the probabalistic tunnel reject (we always accepted everything,
4494      since the docs on java.util.Random.nextDouble() are wrong..)
4495    * Fixed a race on startup (thanks Quadn!)
4496
44972004-10-12  jrandom
4498    * Disable the probabalistic drop by default (enable via the router config
4499      property "tcp.dropProbabalistically=true")
4500    * Disable the actual watchdog shutdown by default, but keep track of more
4501      variables and log a lot more when it occurs (enable via the router
4502      config property "watchdog.haltOnHang=true")
4503    * Implement some tunnel participation smoothing by refusing requests
4504      probabalistically as our participating tunnel count exceeds the previous
4505      hour's, or when the 10 minute average tunnel test time exceeds the 60
4506      minute average tunnel test time.  The probabilities in both cases are
4507      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4508      and you had previously only participated in 50, you'll have a 25% chance
4509      of accepting a subsequent request.
4510
4511* 2004-10-10  0.4.1.2 released
4512
45132004-10-10  cervantes
4514    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4515      the request.
4516
45172004-10-09  jrandom
4518    * Added a watchdog timer to do some baseline liveliness checking to help
4519      debug some odd errors.
4520    * Added a pair of summary stats for bandwidth usage, allowing easy export
4521      with the other stats ("bw.sendBps" and "bw.receiveBps")
4522    * Trimmed another memory allocation on message reception.
4523
45242004-10-08  jrandom
4525    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4526      during its operation.
4527
45282004-10-08  jrandom
4529    * Don't kill the establisher threads during a soft restart.
4530    * Attempt to validate the peer's routerInfo earlier during handshaking.
4531    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4532      during its operation.
4533
45342004-10-07  jrandom
4535    * Reimplement the I2NP reading with less temporary memory allocation.
4536      There is still significant GC churn, especially under load, but this
4537      should help.
4538    * Catch some oddball errors in the transport (message timeout while
4539      establishing).
4540
45412004-10-07  jrandom
4542    * Expire queued messages even when the writer is blocked.
4543    * Reimplement most of the I2NP writing with less temporary memory
4544      allocations (I2NP reading still gobbles memory).
4545
45462004-10-06  jrandom
4547    * Implement an active queue management scheme on the TCP transports,
4548      dropping messages probabalistically as the queue fills up.  The
4549      estimated queue capacity is determined by the rate at which messages
4550      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4551      we exceed 1/2 of the estimated capacity, we drop messages throughout
4552      the queue probabalistically with regards to their size.  This is based
4553      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4554      estimated connection capacity.  We may want to consider using a send
4555      rate and queue size measured across all connections, to deal with our
4556      own local bandwidth saturation, but we'll try the per-con metrics first.
4557
45582004-10-06  jrandom
4559    * Enable explicit disabling of the systray entirely for windows machines
4560      with strange configurations: add -Dsystray.disable=true to the java
4561      command line.  (thanks mihi!)
4562
45632004-10-05  jrandom
4564    * Allow peers on the same LAN to communicate with each other safely even
4565      when they cannot talk to each other through the external address.
4566
45672004-10-05  jrandom
4568    * Display how much time is left before the graceful shutdown is complete.
4569    * Debug some improperly failed messages on timeout or disconnection.
4570
45712004-10-05  jrandom
4572    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4573      (thanks mule!)
4574    * Handle some more error conditions regarding abruptly closing sockets
4575      (thanks Jonva!)
4576
45772004-10-04  jrandom
4578    * Update the shitlist to reject a peer for an exponentially increasing
4579      period of time (with an upper bounds of an hour). 
4580    * Various minor stat and debugging fixes
4581
45822004-10-03  jrandom
4583    * Add a new stat logging component to optionally dump the raw stats to
4584      disk as they are generated, rather than rely upon the summarized data.
4585      By default, this is off, but the router property "stat.logFilters" can
4586      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4587      which will be written to the file "stats.log" (or whatever the property
4588      "stat.logFile" is set to).  This can also log profile related stats,
4589      such as "dbResponseTime" or "tunnelTestResponseTime".
4590
45912004-10-02  jrandom
4592    * Assure that we quickly fail messages bound for shitlisted peers.
4593    * Address a race on startup where the first peer contacted could hang the
4594      router (thanks Romster!)
4595    * Only whine about an intermittent inability to query the time server once
4596
45972004-10-02  jrandom
4598    * Command line utility to verify a peer's reachability - simply run
4599      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4600      will print out whether that peer is reachable or not (using a simple
4601      verification handshake).
4602
4603* 2004-10-01  0.4.1.1 released
4604
46052004-10-01  jrandom
4606    * Handle partial reseeds, caused by seeds going away before the download
4607      completes (thanks Sugadude!)
4608
46092004-10-01  jrandom
4610    * Explicitly refuse IPv6 addresses, since only some peers support
4611      them and we want fully reachable peers.
4612
46132004-10-01  jrandom
4614    * Additional error handling for a variety of transport layer errors.
4615
4616* 2004-09-30  0.4.1 released (not backwards compatible)
4617
46182004-09-30  jrandom
4619    * Bundle the configuration necessary to run an eepsite out of the box
4620      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4621      the key listed on the I2PTunnel configuration page, and its up.
4622    * Router console cleanup, and some (off by default) tunnels -
4623      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4624      irc.baffled.i2p (port 7661)
4625
46262004-09-29  jrandom
4627    * Always wipe the Jetty work directory on startup, so that web updates
4628      are reflected immediately (Jetty does not honor the cache across
4629      multiple executions)
4630
46312004-09-27  jrandom
4632    * Limit the number of connection tags saved to 10,000.  This is a huge
4633      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4634      randomly after reaching that size, forcing those dropped peers to use
4635      a full DH negotiation.
4636    * HTML cleanup in the console.
4637
46382004-09-26  jrandom
4639    * Complete rewrite of the TCP transport with IP autodetection and
4640      low CPU overhead reconnections.  More concise connectivity errors
4641      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4642      by listening to the first person who tells you what your IP address is
4643      when you have not defined one yourself and you have no other TCP
4644      connections.
4645    * Update to the I2NP message format to add transparent verification at
4646      the I2NP level (beyond standard TCP verification).
4647    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4648      implementation (rather than verifying with E(H(key)), we now verify with
4649      E(H(iv))).
4650    * The above changes are NOT BACKWARDS COMPATIBLE.
4651    * Removed all of the old unused PHTTP code.
4652    * Refactor various methods and clean up some javadoc.
4653
46542004-09-21  jrandom
4655    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4656      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4657      but values stored in the later take precedence.  Both are queried on
4658      lookup.
4659
46602004-09-16  jrandom
4661    * Refactor the TCP transport to deal with changing identities gracefully,
4662      and to prevent some wasted effort by keeping track of what host+port
4663      combinations we are connected to (rather than just the identities).  Also
4664      catch a few configuration errors earlier.
4665    * Removed no longer relevent methods from the Transport API that were
4666      exposing ideas that probably shouldn't be exposed.
4667    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4668      updates)
4669
46702004-09-13  jrandom
4671    * Update for the SDK reconnection to deal with overflow.
4672    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4673      rounding on lifetime bandwidth used [thanks gott!]).
4674
4675* 2004-09-08  0.4.0.1 released
4676
46772004-09-08  jrandom
4678    * Updated the "Active:" peer count to display the # of connections as well
4679      as the number of recently active router identities.
4680    * Implement some basic updating code - on startup, if there is a file named
4681      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4682      then restart.
4683    * Added an ugly little script to allow launching the router on win9x
4684      machines without a dos box (using javaw to run a .bat file).
4685    * Logging updates.
4686    * Updated VERSION constants to 0.4.0.1
4687
46882004-09-08  hypercubus
4689    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4690      hopefully any other affected *nix systems) now properly discards non-
4691      essential directories after installation.
4692    * Support for Win9x in the installer and postinstall.bat.
4693    * Changed the name of the default installation directory on all platforms
4694      from "I2P" to "i2p" in the installer.
4695    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4696      other configuration files.
4697
46982004-09-07  cervantes:
4699    * Proxy recursion disabled by default (strict)
4700    * Password Authentication for session commands
4701    * Support for http://path?i2paddresshelper=BASE64
4702    * Support for http://i2p/BASE64/path syntax
4703
47042004-09-07  jrandom
4705    * Make sure that peers placed in the 'fast' group are ones we both know
4706      how to reach and have been able to reach recently.  These peers may
4707      still be placed in the 'high capacity' group however (though that group
4708      is only queried if the 'fast' group is too small)
4709    * Include some updates to the ProgileOrganizer's CLI.
4710
47112004-09-07  jrandom
4712    * Disable the timestamper by default for all applications except the router
4713      (enable via -Dtime.disabled=false)
4714    * Simplify the retrieval of the full destination with text based browsers.
4715    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4716
47172004-09-07  jrandom
4718    * Write the native libraries to the current directory when they are loaded
4719      from a resource, and load them from that file on subsequent runs (in
4720      turn, we no longer *cough* delete the running libraries...)
4721    * Added support for a graceful restart.
4722    * Added new pseudo-shutdown hook specific to the router, allowing
4723      applications to request tasks to be run when the router shuts down.  We
4724      use this for integration with the service manager, since otherwise a
4725      graceful shutdown would cause a timeout, followed by a forced hard
4726      shutdown.
4727    * Made the capacity calculator a bit more dynamic by not outright ignoring
4728      the otherwise valid capacity data for a period with a single rejected
4729      tunnel (except for the 10 minute period).  In addition, peers with an
4730      equal capacity are ordered by speed rather than by their hashes.
4731    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4732      issues.
4733    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4734      associated session (unless there are other clients using it), and deal
4735      with a closed session when starting a new I2PTunnel instance.
4736    * Refactoring and logging.
4737
47382004-09-06  jrandom
4739    * Address a race condition in the key management code that would manifest
4740      itself as a corrupt router identity.
4741    * Properly clear old transport addresses from being displayed on the old
4742      console after soft restarts.
4743    * Properly refuse to load the client applications more than once in the
4744      same JVM.
4745    * Added support for a graceful restart (a graceful shutdown followed by a
4746      full JVM restart - useful for restarting client apps).
4747    * More defensive programming, HTML cleanup, logging
4748    * wrapper.config cleanup of duplicate lines
4749
47502004-09-04  jrandom
4751    * Added some basic guards to prevent multiple instances from running.
4752      Specifically, a file "router.ping" in the install directory which is
4753      written to once a minute - if that file exists and has been modified
4754      within the last minute, refuse to start up.  In turn, adjust the
4755      service wrapper to wait a minute before restarting a crashed JVM.
4756    * Create a "work" directory in the I2P install dir which Jetty will
4757      use for all of its temporary files.
4758    * Tell the browser not to cache most of the router console's pages.
4759
47602004-09-04  jrandom
4761    * Update the SDK to automatically reconnect indefinitely with an
4762      exponential delay on retries (capped at 5 minutes).
4763
4764* 2004-09-03  0.4 released
4765
47662004-09-03  jrandom
4767    * Updated default wrapper.config to deal with the hard restart option
4768    * Include the history.txt in the /help.jsp page
4769    * HTML updates (wrapper.log, and no more unix scripts)
4770    * Updated VERSION constants to 0.4
4771
47722004-09-03  hypercubus
4773    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4774    * Temporarily removed install_i2p_service_unix and
4775      uninstall_i2p_service_unix from distribution packages.
4776    * postinstall.bat/postinstall.sh cleans installation directory of all files
4777      not applicable to the host OS.
4778
47792004-09-03  oOo
4780    * Added some filters to the HTTP request, replacing the User-Agent,
4781      Referrer, Via, and From headers, which helps until we have a more
4782      comprehensive filtering system.
4783
47842004-09-03  jrandom
4785    * Disabled the old listener on port 7655.
4786
47872004-09-02  jrandom
4788    * Cleaned up the base build.xml, adding a new target ("updater") which
4789      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4790      existing installs.
4791
47922004-xx-xx  jrandom
4793    * Implemented the new web architecture and router console
4794    * Implemented I2PTunnel web interface, and revamped startup process.
4795    * Revamped peer selection code to address skew.
4796    * Removed all temporary threads from the router and the SDK.
4797    * Bugfix dealing with timeouts and resends.
4798    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4799
48002004-xx-xx  hypercubus
4801    * Implemented the new installation process.
4802    * Integrated systray
4803    * Integrated service manager
4804
48052004-xx-xx  oOo
4806    * Implemented ?i2paddresshelper= hook
4807    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4808
48092004-xx-xx  Nightblade
4810    * libSAM updates.
4811
48122004-xx-xx  cervantes
4813    * Imported i2pProxy.pac proxy script in with the build.
4814
4815* 2004-08-20  0.3.4.3 released
4816* 2004-08-12  0.3.4.2 released
4817* 2004-08-08  0.3.4.1 released
4818* 2004-07-29  0.3.4 released
4819* 2004-07-23  0.3.3 released
4820* 2004-07-16  0.3.2.3 released
4821* 2004-07-14  0.3.2.2 released
4822* 2004-07-11  0.3.2.1 released
4823* 2004-07-07  0.3.2 released
4824* 2004-06-25  0.3.1.5 released
4825* 2004-05-23  0.3.1.4 released
4826* 2004-05-20  0.3.1.3 released
4827* 2004-05-13  0.3.1.2 released
4828* 2004-05-07  0.3.1.1 released
4829* 2004-04-30  0.3.1 released
4830* 2004-04-20  0.3.0.4 released
4831* 2004-04-04  0.3.0.3 released
4832* 2004-03-30  0.3.0.2 released
4833* 2004-03-25  0.3.0.1 released
4834* 2004-03-21  0.3.0 released
4835* 2004-03-10  0.2.5.4 released
4836* 2004-03-04  0.2.5.3 released
4837* 2004-02-28  0.2.5.2 released
4838* 2004-02-27  0.2.5.1 released
4839* 2004-02-25  0.2.5 released
4840* 2004-02-19  0.2.4.2 released
4841* 2004-02-15  0.2.4.1 released
4842* 2004-02-14  0.2.4 released
4843* 2004-01-27  0.2.3.6 released
4844* 2004-01-21  0.2.3.5 released
4845* 2004-01-14  0.2.3.4 released
4846* 2003-12-29  0.2.3.3 released
4847* 2003-12-27  0.2.3.2 released
4848* 2003-12-25  0.2.3.1 released
4849* 2003-12-13  0.2.3 released
4850* 2003-12-01  0.2.2 released
4851* 2003-11-18  0.2.1.1 released
4852* 2003-11-12  0.2.1 released
4853* 2003-11-09  0.2.0.3 released
4854* 2003-11-08  0.2.0.2 released
4855* 2003-11-03  0.2.0.1 released
4856* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.