source: history.txt @ eae67a4

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

merge of '07188d6eb4d52af5bdde5cbb23dc6facea726ad0'

and 'be6f83df49d5f766fd655b9ca0388bb30d68dfeb'

  • Property mode set to 100644
File size: 214.4 KB
Line 
12008-10-07 sponge
2    * Bugfixes and additions to streaming.
3    * Added SimpleStore class in utils.
4    * Fixed SimpleTimer class to allow exit.
5    * BOB (Basic Open Bridge) added.
6
7* 2008-10-05  0.6.4 released
8
92008-10-05 Complication
10    * Update versions, package release
11
122008-09-29 zzz
13    * i2psnark: Add codevoid link, remove mastertracker
14
152008-09-23 zzz
16    * config.jsp: Add some reachability help
17    * configpeer.jsp: Add blocklist info
18    * help.jsp: Add link to German FAQ
19    * tunnels.jsp: Fix inactive participating count
20    * SearchReplyJob: Don't look up references to shitlisted peers
21    * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
22
232008-09-20 zzz
24    * NetDb: Fix the totally broken "check new routers against blocklist"
25      code from 3 checkins ago
26    * tunnels.jsp: Sort participating tunnels by usage, display rate
27
282008-09-19 zzz
29    * Tunnels:
30      - Add missing message accounting for inbound gateways,
31        we were underestimating participating traffic because of it,
32        and the tunnels were classified "inactive"
33      - Add participating tunnel role on tunnels.jsp
34
352008-09-18 zzz
36    * Throttle:
37      - Correctly check inbound and outbound total bw limits separately
38      - Fix up and actually use the tunnel.participatingMessageCount stat,
39        favor it if lower than the total bw stat, so that
40        client traffic isn't included for throttle decisions
41      - Reduce min message count from 60 to 40
42    * Tunnel Dispatcher:
43      - Add tunnel.participatingBandwidth stat
44      - Remove all 3h and 24h stats
45
462008-09-15 zzz
47    * FloodOnlySearchJob:
48      - Ask non-floodfill peers if we don't know any floodfills
49      - Lookup hashes in the DatabaseSearchReplyMessage if we
50        don't know enough floodfills
51    * NetDb: Check new routers against blocklist
52    * Router: Shutdown clients first
53    * Throttle:
54      - Use 60s rather than 10m tunnel.participatingMessageCount stat
55      - Fix a summary bar message
56    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
57      every 20s, rather than at tunnel expiration, to maintain
58      a more current stat
59    * Tunnel Pool:
60      - Prevent excess zero-hop tunnels
61      - Always wait before looping in BuildExecutor
62    * configlogging.jsp: Increase box width
63    * logs.jsp: Remove unused connection log, cut wrapper log output in half
64
652008-09-12 zzz
66    * Blocklist: Fix a log message format
67    * HarvesterJob: Don't instantiate if disabled
68    * i2psnark:
69      - Add config i2psnark.linkPrefix to enable access to completed
70        torrents from a different machine - examples:
71           i2psnark.linkPrefix=file://///localserver/path/to/files/
72           i2psnark.linkPrefix=http://localwebserver/path/
73        (Stop i2psnark, add to i2psnark.config, restart)
74      - Remove Galen and NickyB trackers
75    * NetDb: Add netDb.exploreKeySet stat
76    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
77      and ?r=. to view our own; change links on other pages too
78    * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
79
802008-09-06 zzz
81    * EepGet command line: Fix byte counts after a failed resume
82    * NTCP: Mark unreachable on outbound connection timeout
83    * Shitlist: Fix partial shitlisting (still unused though)
84    * Summary Bar: Warn if firewalled and floodfill
85    * Throttle: Combine current and last bw measurement,
86      reduce default max tunnels to 2500 (was 3000)
87    * Tunnel BuildHandler: Logging cleanup
88    * UpdateHandler: Cleanup, clarify failure message
89    * DataHelper: Prepare for 999 day uptime :)
90
912008-08-29 zzz
92    * Tunnel BuildExecutor: Debug cleanup
93    * Profiles: Penalize capacity when tunnel build request times out
94    * Shutdown: Call the shutdown hooks before the router shutdown
95      rather than after
96    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
97
982008-08-27 zzz
99    * Floodfill Peer Selector: Prefer already-connected floodfill
100      peer for direct RouterInfo stores, to mimimize floodfill
101      connections
102    * Peer Profiles: Classify connected peers as "active",
103      which will help improve the fast pool
104    * Transport Manager: Add isEstablished(Hash)
105    * NTCP: Reduce max idle time from 20m to 15m
106    * NetDb stats: Post-0.6.3 clean up
107
108* 2008-08-24  0.6.3 released
109
1102008-08-24 Complication
111    * Update versions, package release
112
1132008-08-20 zzz
114    * Blocklists: Handle blank lines and \r\n in blocklist.txt
115    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
116      default is 500 (very high for now)
117    * Persistent data store: Increase write limit from 300 to 600
118      so floodfill routers don't get backed up
119
1202008-08-13 zzz
121    * i2psnark: Fix OOM vulnerability by checking incoming message length
122      (thanks devzero!)
123
1242008-08-04 zzz
125    * Floodfill Peer Selector:
126      - Avoid peers whose netdb is old, or have a recent failed store,
127        or are forever-shitlisted
128
1292008-07-30 zzz
130    * Blocklists:
131      - New, disabled by default, except for blocking of
132        forever-shitlisted peers. See source for instructions
133        and file format.
134    * Transport - Reject peers from inbound connections:
135      - Check IP against blocklist
136      - Check router hash against forever-shitlist, then block IP
137
1382008-07-16 zzz
139    * configpeer.jsp: New
140    * i2psnark: Open completed files read-only the first time
141    * profiles.jsp: Show bonuses, link to configpeer.jsp
142    * PRNG: Move logging from wrapper to router log
143    * SSU:
144        Don't proactively reconnect until 30m idle, so
145        we don't lose introducer tags prematurely
146
1472008-07-16 Oldaris
148    * Imports cleanup
149
1502008-07-07 zzz
151    * i2psnark:
152      - Repair corrupted files with wrong length rather than die
153      - Register shutdown hook to properly shutdown torrents when
154        the router shuts down, hopefully will reduce corruption
155      - Add Galen tracker
156      - Add a note about how to change directory
157    * HTTP Proxy: Don't show jump links for unknown jump hosts
158    * KeyManager:
159      - Don't write router key backup when leaseSet keys are updated
160      - Synchronize to prevent concurrent writes (thanks Galen!)
161      - Backup keys every 7 days instead of every 5 minutes
162    * LoadTestManager: Don't instantiate, it's disabled
163    * Router console: Flag placeholder pages as noncacheable
164    * Streaming lib:
165      - Change some logging from WARN to INFO
166      - Clean up toString()
167    * SSU:
168      - Try to pick better introducers by checking shitlist,
169        wasUnreachable list, failing list, and idle times
170      - To keep introducer connections up and valid,
171        periodically send a "ping" (a data packet with no data and no acks)
172        to everybody that has been an introducer in the last two hours
173      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
174      - Remove some 60s and 5m stats, leave only the 10m ones
175      - Narrow the range for the retransmit time after an allocation fail
176      - Adjust some logging
177
1782008-06-30 zzz
179    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
180    * i2psnark:
181      - Fix NPE caused by race (thanks echelon!)
182      - Add mastertracker, remove de-ebook
183    * NTCP:
184      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
185      - Fix failsafe stats
186    * PersistentDataStore: More leaseSet code cleanup
187    * SimpleTimer: Change congestion message from error to warn
188
1892008-06-24 zzz
190    * FloodfillMonitorJob: Change range from 5-7 to 4-6
191    * NTCP: Remove getIsInbound(), duplicate of isInbound()
192    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
193    * Router console: add placeholder pages for i2psnark, i2ptunnel,
194      susidns, and susimail for use when the .wars are not running
195    * Streaming lib: Increase max window size to 128
196
1972008-06-22 welterde
198    * Optimize I2PDatagramDissector
199
2002008-06-20 zzz
201    * configclients.jsp: Add start button for clients and webapps.
202    * PRNG: Add two stats
203    * Summary bar:
204      - Display Warning for TCP private IP address
205      - Display PRNG stats
206    * OutNetMessage: Change cache logging from WARN to INFO
207
2082008-06-17 zzz
209    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
210    * Summary bar: Display helpful errror message when UDP bind fails
211    * UDP: Don't bid when UDP bind fails
212    * configclients.jsp: Implement saves for clients and webapps.
213
2142008-06-16 zzz
215    * UDP: Prevent 100% CPU when UDP bind fails;
216      change bind fail message from ERROR to CRIT
217    * Refactor LoadClientAppsJob.java, move some functions to new
218      ClientAppConfig.java, to make them easily available to
219      new configclients.jsp
220    * RouterConsoleRunner: Use a new config file, webapps.config,
221      to control which .wars in webapps/ get run. Apps are enabled
222      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
223      Config file is written if it does not exist.
224      Implement methods for use by new configclients.jsp.
225    * configclients.jsp: New. For both clients and webapps.
226      Saves are not yet implemented.
227
2282008-06-10 zzz
229    * Floodfill: Add new FloodfillMonitorJob, which tracks active
230      floodfills, and automatically enables/disables floodfill on
231      Class O routers to maintain 5-7 total active floodfills
232    * NetDb Stats:
233      - Remove several more stats
234      - Don't publish bw stats in first hour of uptime
235      - Publish floodfill stats even if other stats are disabled
236      - Changes not effective until 0.6.2.1 to provide cover.
237    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
238      startup, so peers don't list us as failing.
239    * graphs.jsp: Fix a bug where it tries to display the combined
240      bandwidth graph when it isn't available
241
2422008-06-09 zzz
243    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
244
2452008-06-09 zzz
246    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
247    * News:
248      - Add display of last updated and last checked time
249        on index.jsp and configupdate.jsp
250      - Add a function to get update version (unused for now)
251    * config.jsp: Add another warning
252
2532008-06-07 zzz
254    * NetDb: Tweak some logging on lease problems
255    * Shitlist:
256      - Add shitlistForever() and isShitlistedForever(), unused for now
257      - Sort the HTML output by router hash
258    * netdb.jsp:
259      - Sort the lease HTML output by dest hash, local first
260      - Sort the router HTML output by router hash
261
2622008-06-06 zzz
263    * LeaseSet:
264      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
265        to make later LeaseSet comparisons reliable. This cleans up the code too.
266      - Fix broken old vs. new LeaseSet comparison
267        in ClientConnectionRunner.requestLeaseSet(),
268        so that we only sign and publish a new LeaseSet when it's really new.
269        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
270        and floodfill router load, since locked_buildNewLeaseSet() generates
271        the same LeaseSet as before quite frequently, often just seconds apart.
272
2732008-06-05 zzz
274    * LeaseSet - code cleanup:
275      - Add exception to enforce max # of leases = 6, should be plenty
276      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
277        leases and then immediately remove them again, triggering
278        the new leaseSet size exception
279      - Remove the now unused LeaseSet.removeLease(lease) and
280        LeaseSet.removeLease(index)
281      - Store first and last expiration for efficiency
282    * Peer Profiles - Preparation for using bonuses:
283      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
284      - Persist CapacityBonus rather than ReachabilityBonus
285      - Include SpeedBonus in the Speed calculation
286      - Prevent negative values in Speed and Capacity when using bonuses
287      - Clean up SpeedCalculator.java
288    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
289    * Add some config files for a future small distribution
290    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
291
2922008-06-01 zzz
293    * Client Apps: Add new parameter for clients.config,
294        clientApp.x.startOnLoad=false, to disable loading
295        (for SAM for example). Defaults to true of course.
296    * Logging: Move common WARN output to DEBUG so we can ask users to
297        set the default log level to WARN without massive spewage
298    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
299      not just the Fast tier, since we don't use them for tunnels anyway
300    * SAM: Add some compiler flexibility to two obscure makefiles
301    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
302      (sponge's suggestion)
303    * summary bar:
304      - Hide ident, provide a tooltip and a link
305      - Add a warning if you are firewalled and class O
306
3072008-06-07 Complication
308    * Fix version in news.xml so it could be published
309
310* 2008-06-07  0.6.2 released
311
3122008-06-07 Complication
313    * Write announcement and prepare for release
314
3152008-05-29 zzz
316    * Fix up initialNews.xml
317
3182008-05-27 zzz
319    * Transport:
320      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
321      - UDP: Don't bid when IP address missing, mark unreachable
322
3232008-05-26 zzz
324    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
325    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
326    * build.xml:
327      - Add an updaterSmall target which includes only the essentials
328      - Add an updaterRouter target which includes only i2p.jar and router.jar
329      - Clean up the build file some
330      - Remove empty eepsite/ and subdirs from i2pupdate.zip
331    * configtunnels.jsp: Add warning
332    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
333    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
334
3352008-05-22 welterde
336    * Change jetty download location in build script
337
3382008-05-20 zzz
339    * Reachability:
340      - Call the previously unused profile.tunnelTestFailed()
341        (redefined to include a probability argument)
342        and severely downgrade a peer's capacity upon failures,
343        depending on tunnel length and direction.
344        This will help push unreachable and malicious peers
345        out of the High Capacity tier.
346      - Put recent fail rate on profiles.jsp
347    * ProfileOrganizer: Logging cleanup
348    * eepsite_index.html: Update add-host and jump links
349    * HTTP Proxy: Remove trevorreznik jump server from list
350
3512008-05-20 welterde
352    * implemented PrivateKeyFile
353
3542008-05-18 zzz
355    * Throttle: Reject tunnels for first 20m uptime (was 10m)
356    * TunnelPeerSelectors:
357       - Re-enable strict ordering of peers,
358         based on XOR distance from a random hash
359       - Restrict peers with uptime < 90m from tunnels (was 2h),
360         which is really 60m due to rounding in netDb publishing.
361    * i2psnark:
362       - Limit max pipelined requests from a single peer to 128KB
363         (was unlimited; i2p-bt default is 5 * 64KB)
364       - Increase max uploaders per torrent to 6 (was 4)
365       - Reduce max connections per torrent to 16 (was 24) to increase
366         unchoke time and reduce memory consumption
367       - Strictly enforce max connections per torrent
368       - Choke more gradually when over BW limit
369    * help.jsp: Add a link to the FAQ
370    * peers.jsp: Fix UDP direction indicators
371    * hosts.txt: Add update.postman.i2p
372
3732008-05-12 zzz
374    * Outbound message:
375      - Tweak the cache key for efficiency
376    * Stats:
377      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
378    * Summary bar:
379      - Add messages when dropping tunnel requests due to load
380    * Update Handler:
381      - Add postman to the list
382    * i2psnark:
383      - Randomize the PeerCheckerTask start times to make global limiting
384        work better
385      - Calculate bw limits using 40s rather than 4m averages to make
386        bw limiting work better
387      - Change default bw limit from uplimit/3 to uplimit/2 due to
388        overhead reduction from the leaseset bundling change
389    * libjbigi:
390      - Add documentation on dynamic build option
391      - Add two speed tests to the build script
392      - Clean up the build script, make it easier to build dynamic
393
3942008-05-10 zzz
395    * NetDb: Don't write the my.info file to disk, it isn't used for anything
396    * Stats:
397      - Simplify oldstats.jsp if no events in a stat
398      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
399        (caused by an SSU hack)
400    * Update Handler:
401      - Add option to download and verify only
402      - Add distinct error message if version check fails
403
4042008-05-09 welterde
405    * Add an update URL to the list
406
4072008-05-07 zzz
408    * Reachability:
409      - Restrict peers requiring introducers from inbound tunnels,
410        since it's slow and unreliable... and many of them advertise
411        NTCP, which seems unlikely to work
412      - Provide warning on summary bar if firewalled with inbound NTCP enabled
413    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
414      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
415      at startup (you didn't get any data unless you set the log level anyway)
416    * oldstats.jsp: Don't put 2 decimal places on integer event counts
417    * Remove the Internals link from the menu bar
418    * i2psnark: Extend startup delay from 1 to 3 minutes
419
4202008-05-06 welterde
421    * HTTP Proxy: Add i2jump.i2p jump service
422
4232008-05-05 zzz
424    * NetDb Stats: Cleanup of commented out stats
425    * Outbound message:
426      - Fix a couple of tunnel cache cleaning bugs
427      - Cache based on source+dest pairs rather than just dest
428      - Send the reply leaseSet only when necessary,
429        rather than all the time (big savings in overhead)
430      - Enable persistent lease selection again
431      - Logging tweaks
432    * Reachability:
433      - Restrict <= .32 SSU-only peers from inbound tunnels,
434        since they don't know if they are unreachable
435      - Have SSU bid aggressively when it has less than 3 peers, so
436        we can determine our IP address and do peer testing.
437        Otherwise a router may never determine its IP address or reachability status.
438    * Summary bar:
439      - Add reachability status
440      - Add participating tunnel acceptance status
441    * Throttle: Reject tunnels for first 10m uptime
442    * I2PTunnel: Change default outproxy to false.i2p
443    * profiles.jsp: Add router version
444
445* 2008-04-26  0.6.1.33 released
446
4472008-04-20 zzz
448    * Outbound message/Reachability:
449      - Fix a bug from -19 causing the persistent lease selection
450        removed in -17 to be back again
451      - Use netDb-listed-unreachable instead of detected-unreachable
452        for exclusion of unreachable peers from selected leases,
453        as there are potential anonymity problems with using
454        detected-unreachable
455      - Tweak logging some more
456    * NetDb stats: Remove a couple more including the inefficient stat_identities
457
4582008-04-17 zzz
459    * Reachability:
460      - Track unreachable peers persistently
461        (i.e. separately from shitlist, and not cleared when they contact us)
462      - Exclude detected unreachable peers from inbound tunnels
463      - Exclude detected unreachable peers from selected leases
464      - Exclude detected unreachable floodfill peers from lookups
465      - Show unreachable status on profiles.jsp
466
4672008-04-16 zzz
468    * SSU/Reachability:
469      - Extend shitlist time from 4-8m to 40-60m
470      - Add some shitlist logging
471      - Don't shitlist twice when unreachable on all transports
472      - Exclude netDb-listed unreachable peers from inbound tunnels;
473        this won't help much since there are very few of these now
474      - Remove 10s delay on inbound UDP connections used for the
475        0.6.1.10 transition
476      - Track and display UDP connection direction on peers.jsp
477      - Show shitlist status in-line on profiles.jsp
478
4792008-04-15 zzz
480    * SSU Reachability/PeerTestManager:
481      - Back out strict peer ordering until we fix SSU
482      - Back out persistent lease selection until we fix SSU
483      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
484      - Increase known Charlie time to 10m; 3m wasn't enough
485      - Don't continue retransmitting peer test if we know Charlie
486      - Don't run multiple peer tests at once
487      - Tighten test frequency range to 6.5-19.5m, was 0-26m
488
4892008-04-12 zzz
490    * Addressbook: Disallow '.-' and '-.' in host names
491    * NTCP: Don't drop a connection unless both directions are idle;
492            Fix idle time for outbound connections
493    * Outbound message: Make sure cached lease is in current leaseSet
494    * Stats: Put all NetworkDatabase stats in same group
495    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
496    * i2psnark: Add locking to prevent two I2CP connections
497
4982008-04-07 zzz
499    * i2psnark:
500      - Implement upstream bandwidth limiting
501      - Fix a rare NPE at startup/shutdown
502      - Really increase retries for .torrent fetch
503    * profiles.jsp: Minor cleanup
504    * DataHelper: Only format < 5s as ms
505    * Eepget: Fix percentage output on command line eepget retries
506    * Lower partipating message priority from 400 to 200
507    * NTCP: Add a debug message
508    * Outbound message: Minor cleanup
509
5102008-03-30 zzz
511    * ExploratoryPeerSelector: Try NonFailing even more
512    * HostsTxtNamingService: Add reverse lookup support
513    * Outbound message: Minor cleanup
514    * i2psnark TrackerClient: Minor cleanup
515    * checklist.txt: Minor edit
516    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
517    * i2ptunnel.config: Change CVS client to mtn
518    * netdb.jsp: Show leaseSet destinations using reverse lookup
519    * profiles.jsp: First cut at showing floodfill data
520
5212008-03-27 zzz
522    * Send messages for the same destination to the same inbound
523      lease to reduce out-of-order delivery.
524    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
525      for now, as it prevents speed rating of those peers
526
5272008-03-26 zzz
528    * ReseedHandler: Support multiple urls,
529      add netdb.i2p2.de as a 2nd default
530
5312008-03-25 zzz
532    * i2psnark:
533      - Add support for secondary open trackers
534      - Refactor and simplify the TrackerClient code
535      - Add welterde's tracker to the default list
536      - Don't have eepget retry announces
537      - Slow down tracker contacts if they've failed for a while
538      - Add some debug support showing connections (?p=2)
539    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
540
5412008-03-22 zzz
542    * NewsFetcher: Fix bug causing fetch every 10m
543
5442008-03-22 zzz
545    * Tunnel Testing:
546      - Fix counting so it really takes 4 consecutive failures
547        rather than 4 total to remove a tunnel
548      - Credit or blame goes to the exploratory tunnel as well
549        as the tunnel being tested
550      - Adjust tunnel test timeout based on tunnel length
551    * ExploratoryPeerSelector: Tweak logging
552    * ProfileOrganizer: Adjust integration calculation again
553    * build.xml: Add to help
554    * checklist.txt: Tweak
555    * readme.html: Fix forum links
556    * netDb: Remove tunnel.testFailedTime
557
5582008-03-19 zzz
559    * ExploratoryPeerSelector:
560      - Exclude floodfill peers
561      - Tweak the HighCap vs. NonFailing decision; try NonFailing
562        at least a minimum % of the time
563    * i2psnark: Increase retries for .torrent fetch
564    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
565      containing an IP
566    * readme.html: Reorder some items
567    * Stats: Add some more required stats
568    * Streaming lib: Fix slow start to be exponential growth,
569      fix congestion avoidance to be linear growth.
570      Should speed up local connections a lot, and remote
571      connections a little.
572
5732008-03-14 zzz
574    * Floodfill Search:
575       - Prefer heard-from, unfailing, unshitlisted floodfill peers
576
5772008-03-14 zzz
578    * ProfileOrganizer:
579       - Use more recent stats to calculate integration
580       - Show that fast peers are also high-capacity on profiles.jsp
581    * readme.html: Update Syndie link
582    * TunnelPool: Update comments
583    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
584      get rid of the 60s tunnel stats
585      (effective as of .33 to provide cover)
586
5872008-03-13 zzz
588    * Floodfill Search:
589       - Fix a bug that caused a single FloodfillOnlySearchJob
590         instance to be run multiple times, with unpredictable
591         results
592       - Select ff peers randomly to improve reliability
593       - Add some bulletproofing
594
5952008-03-11 zzz
596    * ProfileOrganizer:
597       - Don't require a peer to be high-capacity to be
598         well-integrated (not used for anything right now,
599         but want to get it right for possible floodfill verification)
600       - Don't fall back to median for high-capacity threshold
601         if the mean is higher than the median, this prevents
602         frequent large high-capacity counts
603       - Fix high-capacity selector that picked one too many
604    * Console: put well-integrated count back in the summary
605
6062008-03-10 zzz
607    * EepGet: Fix byte count for bytesTransferred status listeners
608      (fixes command line status)
609    * UpdateHandler:
610       - Fix byte count display
611       - Display final status on router console
612       - Don't allow multiple update jobs to queue up
613       - Increase max retries
614       - Code cleanup
615       - Don't show 'check for update' button when update in progress
616       - Enhance error messages
617    * NetDb: Comment out published netDb stats disabled for .32
618
6192008-03-08 zzz
620    * TunnelPeerSelectors: Implement strict ordering of peers,
621      based on XOR distance from a random hash
622      separately generated for each tunnel pool
623
6242008-03-07 zzz
625    * Naming: Optimize lookups for a destkey
626    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
627      - Prevent peers with matching IPs from joining same tunnel.
628        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
629        Default is 2 (disallow routers in same /16).
630        Set with router.defaultPool.IPRestriction=x
631      - Comment out unused RebuildPeriod pool setting
632      - Add random key to pool in preparation for XOR peer ordering
633    * SusiMail: Add 'Create Account' link
634    * TunnelDispatcher: Change a common wtf error to a warn
635
6362008-03-05 zzz
637    * Naming: Make HostsTxt the sole default NamingService
638      (was Meta = PetName + HostsTxt)
639    * Naming: Add two new experimental NamingServices, EepGet and Exec,
640      not enabled by default -
641      see source comments in core/java/src/net/i2p/client/naming
642      for configuration instructions
643    * i2psnark: Don't do a naming lookup for Base64 destkeys
644    * i2psnark: Add a StartAll button
645    * Stats: Add code to disable most stats to save memory.
646      Set on configstats.jsp or set stat.full=false to disable the stats.
647      (true by default for now)
648
6492008-03-09 Complication
650    * Give the Jetty build file ability to ask permission
651      before downloading the Jetty archive from the web,
652      and to verify its SHA1 + MD5 hashes. Adjust the main build file
653      in accordance with this change.
654    * Improve the release checklist.
655
656* 2008-03-09  0.6.1.32 released
657
6582008-03-07 zzz
659    * Update news and version numbers
660
6612008-03-01 zzz
662    * Fix netdb.knownLeaseSets count reported by floodfill routers
663      (was broken by -3)
664
6652008-02-27 zzz
666    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
667    * i2psnark: Remove orion and gaytorrents from default tracker list
668    * Remove orion from jump list and from eepsite_index.html
669    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
670    * Capitalize OutboundMessageDistributor job name
671    * TunnelPool: Add a warning if all tunnels are backlogged
672
6732008-02-26 zzz
674    * Reintroduce NTCP backlog pushback, with switch back to
675      previous tunnel when no longer backlogged
676    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
677    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
678
6792008-02-21 zzz
680    * Raise inbound default bandwidth to 32KBps
681    * Fix config.jsp that showed 0KBps share bandwidth by default
682
6832008-02-19 zzz
684    * Addressbook: Disallow '--' in host names except in IDN,
685      add some reserved host names
686    * I2PTunnel: Clarify edit form
687    * NetDb: Remove many stats from netDb, effective as of .32
688    * profiles.jsp: Display capabilities
689    * Tunnels: Enforce max tunnel length of 8, catch an index error
690      http://forum.i2p/viewtopic.php?t=2561
691
6922008-02-16 zzz
693    * Fix race in TunnelDispatcher which caused
694      participating tunnel count to seesaw -
695      should increase network capacity
696    * Leave participating tunnels in 10s batches for efficiency
697    * Update participating tunnel ratestat when leaving a tunnel too,
698      to generate a smoother graph
699    * Fix tunnel.participatingMessageCount stat to include all
700      participating tunnels, not just outbound endpoints
701    * Simplify Expire Tunnel job name
702
7032008-02-13 zzz
704    * PersistentDataStore: Write out 300 records every 10 min
705      rather than 1 every 10 sec;
706      Don't store leasesets to disk or read them in
707    * Combine rates for pools with the same length setting
708      in the new tunnel build algorithm
709    * Clarify a log message in the UpdateHandler
710
7112008-02-13 zzz
712    * Make graphs clickable to get larger graphs
713    * Change SimpleTimer CRIT to a WARN, increase threshold
714    * Checklist update
715
7162008-02-11 welterde
717    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
718
7192008-02-10 zzz
720    * Add new tunnel build algorithm (preliminary)
721    * Change NTCP backlogged message from error to warning
722    * Checklist updates
723
724* 2008-02-10  0.6.1.31 released
725
7262008-02-10 Complication
727    * Update news and version numbers
728
7292008-02-06 zzz
730    * build.xml: Add some apps to javadoc
731    * checklist.txt: Add some things
732    * news.xml: make links relative
733    * runplain.sh: Add some comments
734    * wrapper.config: Add some comments
735
7362008-02-05 Complication
737    * Change the dates too (sorry for such forgetfulness!)
738
7392008-02-04 Complication
740    * Also use the new key for checking, and add it into news.xml
741
7422008-02-04 Complication
743    * Added my release signing key into TrustedUpdate.java
744
7452008-01-31 zzz
746    * NewsFetcher: Change fetch failed from error to warning
747    * installer: Fix URL and "email"
748    * checklist.txt: New release checklist
749
7502008-01-29 zzz
751    * Addressbook: Change default subscription
752    * ConfigUpdateHandler: Change default news URL
753    * initialNews.xml: Update version to .31
754    * news.xml: More updates
755    * hosts.txt: Add i2p-projekt.i2p
756    * readme.html: More URL updates
757    * SusiDNS: Change references to default subscription
758
7592008-01-28 zzz
760    * news.xml: Updates, still preliminary
761    * ReseedHandler: Change default URL
762    * i2ptunnel.config: Change default outproxies
763    * readme.html: Change *.i2p.net URLs
764    * help.jsp: Change *.i2p.net URLs
765    * eepsite_index.html: Change stats.i2p addressbook subscription URL
766    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
767
768* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
769
7702008-01-08 zzz
771    * addressbook: Limit size of subscribed hosts.txt,
772        don't save old etag or last-modified data
773    * EepGet: Add some logging,
774        enforce size limits even when size not in returned header,
775        don't return old etag or last-modified data,
776        don't call transferFailed listener more than once
777    * Sign my update signing key
778    * NewsFetcher: add last-modified support, reduce number of retries
779    * Error pages: add icon and logo,
780        clarify 'destination not found' and 'proxy not found' pages
781
7822008-01-07 zzz
783    * profiles.jsp formatting cleanup
784    * NTCP: Reduce max idle time from 60m to 20m
785    * NTCP: Fix idle time on connections with zero messages,
786      correctly drop these connections
787
7882008-01-03 zzz
789    * addressbook: Do basic validation of hostnames and destkeys
790    * susidns: Add support for the private addressbook,
791      update the text and links somewhat
792
7932008-01-02 zzz
794    * Add stats.i2p to the jump list
795    * Impose 20MB limit on POSTs and catch OOMs in POST
796    * eepsite_index.html: add stats.i2p services
797    * addressbook: log source of new keys; disallow dests > 516 bytes
798    * addressbook: convert hostnames to lower case to prevent duplicates
799    * susidns: generalize references to orion
800
8012007-12-29 zzz
802    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
803    * Allow commas in router.trustedUpdateKeys and router.updateURL again
804    * Change default news host from dev.i2p.net to dev.i2p
805    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
806
8072007-12-28 zzz
808    * Add zzz's update signing key
809
8102007-12-26 Complication
811    * Improve reseed handler (less repetitive code,
812      avoid reporting errors when less than 10% of fetches fail)
813
8142007-12-26 Complication
815    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
816      and unescape them in DataHelper.loadProps() to support
817      saving and loading config properties with line breaks
818    * Change the update URLs textbox into a textarea like keys have,
819      so different URLs go on different lines
820    * Modify TrustedUpdate to provide a method which supplies a key list
821      delimited with CR LF line breaks
822    * Modify DEFAULT_UPDATE_URL to supply a default URL list
823      delimited with CR LF line breaks
824    * Modify selectUpdateURL() to handle URL lists
825      delimited by any kind of line breaks
826    * Start saving trusted update keys
827    * Improve formatting on configupdate.jsp
828
8292007-12-22 zzz
830    * Add support for multiple update URLs
831    * Change default for update to use i2p proxy,
832      add several URLs as defaults
833    * Enable trusted key form on configupdate.jsp
834    * Clarify the 'destination not found' error page
835
8362007-12-16 zzz
837    * i2psnark: remove anonymitytracker from default list
838
8392007-12-10 zzz
840    * Fix NPE in CLI TrustedUpdate keygen
841
8422007-12-02 Complication
843    * Commit SAM v2 patch from mkvore (thank you!)
844    * Minor reformatting to preserve consistent whitespace
845      in old SAM classes (new classes unaltered)
846
8472007-12-01 Complication
848    * Separate the checks "does Jetty .zip file need downloading"
849      and "does Jetty .zip file need extracting" in the Jetty buildfile.
850      First download (unless already done), then extract (unless done).
851
8522007-11-26 zzz
853    * i2psnark: add timeout for receive inactivity
854
8552007-11-24 zzz
856    * i2psnark: increase streaming lib write timeout to 240 sec and change
857      timeout action from "ping" to "disconect", as the fix in .30 to
858      honor options on outbound connections led to hung outbound connections
859      (bitfield never transmitted, connection never dropped)
860
8612007-11-06 jrandom
862    * add i2host.i2p to the jump list
863
8642007-10-11 zzz
865    * IRC Proxy: Fix several possible anonymity holes:
866      - Block CTCP in NOTICE messages
867      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
868      - Check for lower case commands
869    (Thanks sponge!)
870
8712007-10-07  jrandom
872    * back out the NTCP backlog pushback, as it could be used to mount an
873      active anonymity attack.
874
875* 2007-10-07  0.6.1.30 released
876
8772007-10-07  Complication
878    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
879      broke retrying.
880
8812007-09-27  zzz
882    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
883    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
884      fix some of the sorting
885
8862007-09-22  zzz
887    * Send messages for the same destination out the same outbound
888      tunnel to reduce out-of-order delivery.
889
8902007-09-19  zzz
891    * i2psnark: Fix broken multifile torrent Delete;
892        cleanup Storage resources in AddTorrent;
893        don't autostart torrent after Create
894
8952007-09-18  zzz
896    * eepsite_index.html: Add links to trevorreznik address book
897    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
898    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
899    * i2psnark: Don't make outbound connections to already-connected peers
900    * i2psnark: Debug logging cleanup
901
9022007-09-14  zzz
903    * eepget: Increase header timeout to 45s
904    * HTTP proxy: Return a better error message for localhost requests
905    * tunnels: Fix PooledTunnelCreatorConfig memory leak
906
9072007-09-09  zzz
908    * eepget: Add support for Last-Modified and If-Modified-Since
909    * addressbook: Finish incomplete support for Last-Modified
910
9112007-09-08  zzz
912    * eepget: Copy over SocketTimeout.java file from syndie
913
9142007-09-07  jrandom
915    * eepget: Merge timeout support from syndie
916
917* 2007-08-23  0.6.1.29 released
918
9192007-08-12  zzz
920    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
921      tweak the eepsite and troubleshooting sections
922
9232007-08-11  zzz
924    * Add stats for individual tunnel rates (nice when graphed)
925    * i2psnark: Fix outbound tunnel nickname
926
9272007-08-05  Complication
928    * Update the sharing calculator on config.jsp
929      and explain the trade-off even more thoroughly.
930
9312007-08-04  Complication
932    * Lower the threshold between the K and L bandwidth class,
933      so that K is now < 12 KB/s, instead of <= 16 KB/s.
934      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
935      participate in routing, if they keep the default share percentage.
936
9372007-07-16  zzz
938    * i2psnark: Add tooltip info for choked/uninterested
939
9402007-07-16  zzz
941    * Make selection of graphed data configurable via configstats.jsp,
942      remove most of the default graphs to save some memory
943
9442007-07-15  zzz
945    * Add current values to graph legends
946    * Fix up previous Rate fix to check for divide by zero
947
9482007-07-14  Complication
949    * Take the post-download routerInfo size check back out of ReseedHandler,
950      since it wasn't helpful, and a lower limit caused false warnings.
951    * Give EepGet ability to enforce a min/max HTTP response size.
952    * Enforce a maximum response size of 8 MB when ReseedHandler
953      downloads into a ByteArrayOutputStream.
954    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
955      change invocation from RouterConsoleRunner accordingly.
956    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
957      provide status reports to indicate the progress of reseeding.
958    * Enable icon for default eepsite, and the index page
959      of the router console (more later).
960
9612007-07-14  zzz
962    * Clean up graphs.jsp - set K=1024 where appropriate,
963      output image sizes in html, catch ooms, other minor tweaks
964    * Fix current event count truncation which fixes graphs with low
965      60-sec event counts displaying high values
966      (bw.* and router.* graphs for example were 1.5x too high)
967      Affects all "events per period" (non-lifetime) counts.
968
9692007-07-09  zzz
970    * i2psnark: give a better error message for a non-i2p torrent
971
9722007-07-07  zzz
973    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
974      SSU will notify/restart NTCP when the external address changes.
975      Now you can enable inbound TCP without a static IP or dyndns service.
976
9772007-07-04  zzz
978    * Display calculated share bandwidth and remove load testing
979      on config.jsp
980
9812007-07-01  zzz
982    * Replace broken option i2np.udp.alwaysPreferred with
983      i2np.udp.preferred and adjust UDP bids; possible settings are
984      "false" (default), "true", and "always".
985      Default setting results in same behavior as before
986      (NTCP is preferred unless it isn't established and UDP is established).
987      Use to compare NTCP and UDP transports.
988
9892007-06-27  jrandom
990    * fix for a streaming lib bug that could leave a thread waiting
991      indefinitely (thanks Complication!)
992
9932007-06-16  Complication
994    * First pass on EepGet and ReseedHandler improvements,
995      please avoid use on routers which matter!
996    * Give EepGet ability of downloading into an OutputStream,
997      such as the ByteArrayOutputStream of ReseedHandler.
998    * Detect failure to reseed better, report it persistently
999      and more verbosely, provide a link to logs
1000      and suggest manual reseed.
1001
10022007-05-06  Complication
1003    * Fix the build.xml file, so the preppkg build target won't try copying files
1004      which became deprecated with the old Syndie (thanks for alerting, itsu!)
1005
10062007-03-31  zzz
1007    * Add trevorreznik jump server to the http proxy error page
1008    * Add anonymity to the trackers supporting details links in i2psnark
1009
10102007-03-24  zzz
1011    * Remove Syndie from build targets and navbar
1012
10132007-03-22  zzz
1014    * i2psnark tracker handling tweaks:
1015    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
1016    -   Add Base URL to tracker list configuration
1017    -   Web page links built from tracker list Base URLs
1018    -   Only build and sort tracker list once
1019    -   Add anonymityWeb tracker to default list
1020    -   Add tooltip info for TrackerErrs
1021    -   Stop torrent if not registered with tracker
1022    -   Mark temp files as delete on exit
1023
10242007-03-18  zzz
1025    * i2psnark: Cleanup some handling of saved partial pieces
1026    * i2psnark: Put bit counting in Bitfield.java for efficiency
1027    * i2psnark: Save torrent completion state in i2psnark.config
1028
1029* 2007-03-17  0.6.1.28 released
1030
10312007-03-13  zzz
1032    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
1033
10342007-03-12  jrandom
1035    * dodge a race on startup (thanks zzz!)
1036
10372007-03-10  zzz
1038    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
1039      (RFC 2988) to reduce early RTO values
1040
10412007-03-08  zzz
1042    * i2psnark changes to improve upload performance:
1043    *  Implement total uploader limit (10)
1044    *  Don't timeout non-piece messages out
1045    *  Change chunk size to 32K (was 64K)
1046    *  Change request limit to 64K (was 256K)
1047    * i2psnark: Disconnect from seeds when complete
1048
10492007-03-07  zzz
1050    * Remove dynamic router keys from config.jsp
1051
10522007-03-07  zzz
1053    * Streaming lib changes to improve upstream performance during congestion:
1054    *   Change min window size from 12 to 1
1055    *   Change max timeout from 10 to 45 sec
1056    *   Change initial timeout from 10 to 15 sec
1057    *   Change intial window size for i2psnark from 12 to 1
1058    *   Change slow start growth rate for i2psnark from 1/2 to 1
1059
10602007-03-04  zzz
1061    * Update eepsite_index.html
1062
10632007-03-03  zzz
1064    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
1065    * Add a updaterWithJetty build target
1066
10672007-03-03  zzz
1068    * Implement priority sending for NTCP
1069    * Disable trimForOverload() in tunnel BuildExecutor which
1070      was preventing tunnel builds when outbound traffic was high
1071      (i.e. most of the time when running i2psnark)
1072
10732007-02-28  zzz
1074    * i2psnark: File reopen cleanup
1075
10762007-02-28  zzz
1077    * i2psnark: Add peer details to web page
1078
1079* 2007-02-15  0.6.1.27 released
1080
10812007-02-15  jrandom
1082    * Limit the whispering floodfill sends to at most 3 randomly
1083      chosen from the known floodfill peers
1084
10852007-02-14  jrandom
1086    * Don't filter out KICK and H(ide oper status) IRC messages
1087      (thanks Takk and postman!)
1088
10892007-02-13  jrandom
1090    * Tell our peers about who we know in the floodfill netDb every
1091      6 hours or so, mitigating the situation where peers lose track
1092      of floodfill routers.
1093    * Disable the Syndie updater (people should use the new Syndie,
1094      not this one)
1095    * Disable the eepsite tunnel by default
1096
10972007-01-30  zzz
1098    * i2psnark: Don't hold _snarks lock while checking a snark,
1099      so web page is responsive at startup
1100
11012007-01-29  zzz
1102    * i2psnark: Add NickyB tracker
1103
11042007-01-28  zzz
1105    * i2psnark: Don't hold sendQueue lock while flushing output,
1106      to make everything run smoother
1107
11082007-01-27  zzz
1109    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
1110
11112007-01-20  Complication
1112    * Drop overlooked comment
1113
11142007-01-20  Complication
1115    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
1116      instead of System, so setting a reseed URL in advanced configuration has effect.
1117    * Clean out obsolete reseed code from ConfigNetHandler.
1118
11192007-01-20  zzz
1120    * i2psnark: More choking rotation tweaks
1121    * Improve performance by not reading in the whole
1122      piece from disk for each request. A huge memory savings
1123      on 1MB torrents with many peers.
1124
11252007-01-17  zzz
1126    * Add new HTTP Proxy error message for non-http protocols
1127
11282007-01-17  zzz
1129    * Add note on Syndie index.html steering people to new Syndie
1130
11312007-01-16  zzz
1132    * i2psnark: Fix crash when autostart off and
1133      tcrrent started manually
1134
11352007-01-16  zzz
1136    * i2psnark: Fix bug caused by last i2psnark checkin
1137      (ConnectionAcceptor not started)
1138    * Don't start PeerCoordinator, ConnectionAcceptor,
1139      and TrackerClient unless starting torrent
1140
11412007-01-15  jrandom
1142    * small guard against unnecessary streaming lib reset packets
1143      (thanks Complication!)
1144
11452007-01-15  zzz
1146    * i2psnark: Add 'Stop All' link on web page
1147    * Add some links to trackers and forum on web page
1148    * Don't start tunnel if 'Autostart' unchecked
1149    * Fix torrent restart bug by reopening file descriptors
1150
11512007-01-14  zzz
1152    * i2psnark: Improvements for torrents with > 4 leechers:
1153      choke based on upload rate when seeding, and
1154      be smarter and fairer about rotating choked peers.
1155    * Handle two common i2psnark OOM situations rather
1156      than shutting down the whole thing.
1157    * Fix reporting to tracker of remaining bytes for
1158      torrents > 4GB (but ByteMonsoon still has a bug)
1159
11602006-10-29  zzz
1161    * i2psnark: Fix and enable generation of multifile torrents,
1162      print error if no tracker selected at create-torrent,
1163      fix stopping a torrent that hasn't started successfully,
1164      add eBook and GayTorrents trackers to form,
1165      web page formatting tweaks
1166
1167* 2006-10-10  0.6.1.26 released
1168
11692006-10-29  Complication
1170    * Ensure we get NTP samples from more diverse sources
1171      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1172    * Discard median-based peer skew calculator as framed average works,
1173      and adjusting its percentage can make it behave median-like
1174    * Require more data points (from at least 20 peers)
1175      before considering a peer skew measurement reliable
1176
11772006-10-10  jrandom
1178    * Removed the status display from the console, as its more confusing
1179      than informative (though the content is still displayed in the HTML)
1180
11812006-10-08  Complication
1182    * Add a framed average peer clock skew calculator
1183    * Add config property "router.clockOffsetSanityCheck" to determine
1184      if NTP-suggested clock offsets get sanity checked (default "true")
1185    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1186      by more than 5 seconds, or make it more than 20 seconds total
1187    * Decrease log level in getMedianPeerClockSkew()
1188
11892006-09-29  zzz
1190    * i2psnark: Second try at synchronization fix - synch addRequest()
1191      completely rather than just portions of it and requestNextPiece()
1192
11932006-09-27  jrandom
1194    * added HMAC-SHA256
1195    * properly use CRLF with EepPost
1196    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1197    * PBE session key generation (with 1000 rounds of SHA256)
1198    * misc SDK helper functions
1199
12002006-09-26  Complication
1201    * Take back another inadverent logging change in NTCPConnection
1202
12032006-09-26  Complication
1204    * Take back an accidental log level change
1205
12062006-09-26  Complication
1207    * Subclass from Clock a RouterClock which can access router transports,
1208      with the goal of developing it to second-guess NTP results
1209    * Make transports report clock skew in seconds
1210    * Adjust renderStatusHTML() methods accordingly
1211    * Show average for NTCP clock skews too
1212    * Give transports a getClockSkews() method to report clock skews
1213    * Give transport manager a getClockSkews() method to aggregate results
1214    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1215      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1216    * Extra explicitness in NTCP classes to denote unit of time.
1217    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1218
12192006-09-25  zzz
1220    * i2psnark: Paranoid copy before writing pieces,
1221      recheck files on completion, redownload bad pieces
1222    * i2psnark: Don't contact tracker as often when seeding
1223
12242006-09-24  zzz
1225    * i2psnark: Add some synchronization to prevent rare problem
1226      after restoring orphan piece
1227
12282006-09-20  zzz
1229    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1230      rapid choke/unchokes
1231    * i2psnark: Truncate long TrackerErr messages on web page
1232
12332006-09-16  zzz
1234    * i2psnark: Implement retransmission of requests. This
1235      eliminates one cause of complete stalls with a peer.
1236      This problem is common on torrents with a small number of
1237      active peers where there are no choke/unchokes to kickstart things.
1238
12392006-09-13  zzz
1240    * i2psnark: Fix restoral of partial pieces broken by last patch
1241
12422006-09-13  zzz
1243    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1244      preventing premature end game
1245    * i2psnark: Randomize selection of next piece during end game
1246    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1247    * i2psnark: strip ".torrent" on web page
1248    * i2psnark: Limit piece size in generated torrent to 1MB max
1249
12502006-09-09  zzz
1251    * i2psnark: Add "Stalled" indication and stat totals on web page
1252
12532006-09-09  zzz
1254    * i2psnark: Fix bug where new peers would always be sent an "interested"
1255      regardless of actual interest
1256    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1257      memory and efficiency problems
1258
1259* 2006-09-09  0.6.1.25 released
1260
12612006-09-08  jrandom
1262    * Tweak the PRNG logging so it only displays error messages if there are
1263      problems
1264    * Disable dynamic router keys for the time being, as they don't offer
1265      meaningful security, may hurt the router, and makes it harder to
1266      determine the network health.  The code to restart on SSU IP change is
1267      still enabled however.
1268    * Disable tunnel load testing, leaning back on the tiered selection for
1269      the time being.
1270    * Spattering of bugfixes
1271
12722006-09-07  zzz
1273    * i2psnark: Increase output timeout from 2 min to 4 min
1274    * i2psnark: Orphan debug msg cleanup
1275    * i2psnark: More web rate report cleanup
1276
12772006-09-05  zzz
1278    * i2psnark: Implement basic partial-piece saves across connections
1279    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1280      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1281      code in i2psnark ineffective. Will have to research why there is transmit but
1282      not receive inactivity code. With the current connection limit of 24 peers
1283      we aren't in any danger of keeping out new peers by keeping inactive ones.
1284    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1285    * i2psnark: Fix dropped chunk handling
1286    * i2psnark: Web rate report cleanup
1287
12882006-09-04  zzz
1289    * i2psnark: Report cleared trackerErr immediately
1290    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1291    * i2psnark: Set up new connections more quickly
1292    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1293    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1294
12952006-09-04  zzz
1296    * Enable pipelining in i2psnark
1297    * Make i2psnark tunnel default be 1 + 0-1
1298
12992006-09-03  zzz
1300    * Add rate reporting to i2psnark
1301
13022006-09-03  Complication
1303    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1304    * Print messages about addressbook size to give better overview
1305    * Enable delete function in published addressbook
1306
13072006-08-21  Complication
1308    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1309
13102006-08-03  jrandom
1311    * Decrease the recently modified tunnel building timeout, though keep
1312      the scaling on their processing
1313
13142006-07-31  jrandom
1315    * Increase the tunnel building timeout
1316    * Avoid a rare race (thanks bar!)
1317    * Fix the bandwidth capacity publishing code to factor in share percentage
1318      and outbound throttling (oops)
1319
13202006-07-29  Complication
1321    * Treat NTP responses from unexpected stratums like failures
1322
1323* 2006-07-28  0.6.1.24 released
1324
13252006-07-28  jrandom
1326    * Don't try to reverify too many netDb entries at once (thanks
1327      cervantes and Complication!)
1328
13292006-07-28  jrandom
1330    * Actually fix the threading deadlock issue in the netDb (removing
1331      the synchronized access to individual kbuckets while validating
1332      individual entries) (thanks cervantes, postman, frosk, et al!)
1333
1334* 2006-07-27  0.6.1.23 released
1335
13362006-07-27  jrandom
1337    * Cut down NTCP connection establishments once we know the peer is skewed
1338      (rather than wait for full establishment before verifying)
1339    * Removed a lock on the stats framework when accessing rates, which
1340      shouldn't be a problem, assuming rates are created (pretty much) all at
1341      once and merely updated during the lifetime of the jvm.
1342
13432006-07-27  jrandom
1344    * Further NTCP write status cleanup
1345    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1346
13472006-07-26  jrandom
1348    * When dropping a netDb router reference, only accept newer
1349      references as part of the update check
1350    * If we have been up for a while, don't accept really old
1351      router references (published 2 or more days ago)
1352    * Drop router references once they are no longer valid, even if
1353      they were allowed in due to the lax restrictions on startup
1354
13552006-07-26  jrandom
1356    * Every time we create a new router identity, add an entry to the
1357      new "identlog.txt" text file in the I2P install directory.  For
1358      debugging purposes, publish the count of how many identities the
1359      router has cycled through, though not the identities itself.
1360    * Cleaned up the way the multitransport shitlisting worked, and
1361      added per-transport shitlists
1362    * When dropping a router reference locally, first fire a netDb
1363      lookup for the entry
1364    * Take the peer selection filters into account when organizing the
1365      profiles (thanks Complication!)
1366    * Avoid some obvious configuration errors for the NTCP transport
1367      (invalid ports, "null" ip, etc)
1368    * Deal with some small NTCP bugs found in the wild (unresolveable
1369      hosts, strange network discons, etc)
1370    * Send our netDb info to peers we have direct NTCP connections to
1371      after each 6-12 hours of connection uptime
1372    * Clean up the NTCP reading and writing queue logic to avoid some
1373      potential delays
1374    * Allow people to specify the IP that the SSU transport binds on
1375      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1376
1377* 2006-07-18  0.6.1.22 released
1378
13792006-07-18  jrandom
1380    * Add a failsafe to the NTCP transport to make sure we keep
1381      pumping writes when we should.
1382    * Properly reallow 16-32KBps routers in the default config
1383      (thanks Complication!)
1384
13852006-07-16  Complication
1386    * Collect tunnel build agree/reject/expire statistics
1387      for each bandwidth tier of peers (and peers of unknown tiers,
1388      even if those shouldn't exist)
1389
13902006-07-14  jrandom
1391    * Improve the multitransport shitlisting (thanks Complication!)
1392    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1393      the default configuration (thanks for the stats Complication!)
1394    * Properly allow older router references to load on startup
1395      (thanks bar, Complication, et al!)
1396    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1397      hopefully today's changes should make this unnecessary (thanks void!)
1398    * Improved NTCP buffering
1399    * Close NTCP connections if we are too backlogged when writing to them
1400
14012006-07-04  jrandom
1402    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1403      connections only.  Those who configure their NAT/firewall to allow
1404      inbound connections and specify the external host and port
1405      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1406      SSU is still enabled for use by default for all users as a fallback.
1407    * Substantial bugfix to the tunnel gateway processing to transfer
1408      messages sequentially instead of interleaved
1409    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1410      GNU/Classpath based JVMs
1411    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1412      refill with a background thread to refill the output buffer
1413    * Add per-transport support for the shitlist
1414    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1415      contention
1416
14172006-07-01  Complication
1418    * Ensure that the I2PTunnel web interface won't update tunnel settings
1419      for shared clients when a non-shared client is modified
1420      (thanks for spotting, BarkerJr!)
1421
14222006-06-14  cervantes
1423    * Small tweak to I2PTunnel CSS, so it looks better with desktops
1424      that use Bitstream Vera fonts @ 96 dpi
1425
1426* 2006-06-14  0.6.1.21 released
1427
14282006-06-13  jrandom
1429    * Use a minimum uptime of 2 hours, not 4 (oops)
1430
14312006-06-13  jrandom
1432    * Cut down the proactive rejections due to queue size - if we are
1433      at the point of having decrypted the request off the queue, might
1434      as well let it through, rather than waste that decryption
1435
14362006-06-11  Kloug
1437    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
1438      outstanding pings/pongs
1439
14402006-06-10  jrandom
1441    * Further reduction in proactive rejections
1442
14432006-06-09  jrandom
1444    * Don't let the pending tunnel request queue grow beyond reason
1445      (letting things sit for up to 30s when they fail after 10s
1446      seems a bit... off)
1447
14482006-06-08  jrandom
1449    * Be more conservative in the proactive rejections
1450
14512006-06-04  Complication
1452    * Trim out sending a blank line before USER in susimail.
1453      Seemed to break in rare cases, thanks for reporting, Brachtus!
1454
1455* 2006-06-04  0.6.1.20 released
1456
14572006-06-04  jrandom
1458    * Reduce the SSU ack frequency
1459    * Tweaked the tunnel rejection settings to reject less aggressively
1460
14612006-05-31  jrandom
1462    * Only send netDb searches to the floodfill peers for the time being
1463    * Add some proof of concept filters for tunnel participation.  By default,
1464      it will skip peers with an advertised bandwith of less than 32KBps or
1465      an advertised uptime of less than 2 hours.  If this is sufficient, a
1466      safer implementation of these filters will be implemented.
1467
1468* 2006-05-18  0.6.1.19 released
1469
14702006-05-18  jrandom
1471    * Made the SSU ACKs less frequent when possible
1472
14732006-05-17  Complication
1474    * Fix some oversights in my previous changes:
1475      adjust some loglevels, make a few statements less wasteful,
1476      make one comparison less confusing and more likely to log unexpected values
1477
14782006-05-17  jrandom
1479    * Make the peer page sortable
1480    * SSU modifications to cut down on unnecessary connection failures
1481
14822006-05-16  jrandom
1483    * Further shitlist randomizations
1484    * Adjust the stats monitored for detecting cpu overload when dropping new
1485      tunnel requests
1486
14872006-05-15  jrandom
1488    * Add a load dependent throttle on the pending inbound tunnel request
1489      backlog
1490    * Increased the tunnel test failure slack before killing a tunnel
1491
14922006-05-13  Complication
1493    * Separate growth factors for tunnel count and tunnel test time
1494    * Reduce growth factors, so probabalistic throttle would activate
1495    * Square probAccept values to decelerate stronger when far from average
1496    * Create a bandwidth stat with approximately 15-second half life
1497    * Make allowTunnel() check the 1-second bandwidth for overload
1498      before doing allowance calculations using 15-second bandwidth
1499    * Tweak the overload detector in BuildExecutor to be more sensitive
1500      for rising edges, add ability to initiate tunnel drops
1501    * Add a function to seek and drop the highest-rate participating tunnel,
1502      keeping a fixed+random grace period between such drops.
1503      It doesn't seem very effective, so disabled by default
1504      ("router.dropTunnelsOnOverload=true" to enable)
1505
15062006-05-11  jrandom
1507    * PRNG bugfix (thanks cervantes and Complication!)
1508
1509* 2006-05-09  0.6.1.18 released
1510
15112006-05-09  jrandom
1512    * Further tunnel creation timeout revamp
1513
15142006-05-07  Complication
1515    * Fix problem whereby repeated calls to allowed() would make
1516      the 1-tunnel exception permit more than one concurrent build
1517
15182006-05-06  jrandom
1519    * Readjust the tunnel creation timeouts to reject less but fail earlier,
1520      while tracking the extended timeout events.
1521
15222006-05-04  jrandom
1523    * Short circuit a highly congested part of the stat logging unless its
1524      required (may or may not help with a synchronization issue reported by
1525      andreas)
1526
15272006-05-03  Complication
1528    * Allow a single build attempt to proceed despite 1-minute overload
1529      only if the 1-second rate shows enough spare bandwidth
1530      (e.g. overload has already eased)
1531
15322006-05-02  Complication
1533    * Correct a misnamed property in SummaryHelper.java
1534      to avoid confusion
1535    * Make the maximum allowance of our own concurrent
1536      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
1537      within the fixed range 2..10
1538    * While overloaded, try to avoid completely choking our own build attempts,
1539      instead prefer limiting them to 1
1540
15412006-05-01  jrandom
1542    * Adjust the tunnel build timeouts to cut down on expirations, and
1543      increased the SSU connection establishment retransmission rate to
1544      something less glacial.
1545    * For the first 5 minutes of uptime, be less aggressive with tunnel
1546      exploration, opting for more reliable peers to start with.
1547
15482006-05-01  jrandom
1549    * Fix for a netDb lookup race (thanks cervantes!)
1550
15512006-04-27  jrandom
1552    * Avoid a race in the message reply registry (thanks cervantes!)
1553
15542006-04-27  jrandom
1555    * Fixed the tunnel expiration desync code (thanks Complication!)
1556
1557* 2006-04-23  0.6.1.17 released
1558
15592006-04-19  jrandom
1560    * Adjust how we pick high capacity peers to allow the inclusion of fast
1561      peers (the previous filter assumed an old usage pattern)
1562    * New set of stats to help track per-packet-type bandwidth usage better
1563    * Cut out the proactive tail drop from the SSU transport, for now
1564    * Reduce the frequency of tunnel build attempts while we're saturated
1565    * Don't drop tunnel requests as easily - prefer to explicitly reject them
1566
1567* 2006-04-15  0.6.1.16 released
1568
15692006-04-15  jrandom
1570    * Adjust the proactive tunnel request dropping so we will reject what we
1571      can instead of dropping so much (but still dropping if we get too far
1572      overloaded)
1573
15742006-04-14  jrandom
1575    * 0 isn't very random
1576    * Adjust the tunnel drop to be more reasonable
1577
15782006-04-14  jrandom
1579    * -28.00230115311259 is not between 0 and 1 in any universe I know.
1580    * Made the bw-related tunnel join throttle much simpler
1581
15822006-04-14  jrandom
1583    * Make some more stats graphable, and allow some internal tweaking on the
1584      tunnel pairing for creation and testing.
1585
1586* 2006-04-13  0.6.1.15 released
1587
15882006-04-12  jrandom
1589    * Added a further failsafe against trying to queue up too many messages to
1590      a peer.
1591
15922006-04-12  jrandom
1593    * Watch out for failed syndie index fetches (thanks bar!)
1594
15952006-04-11  jrandom
1596    * Throttling improvements on SSU - throttle all transmissions to a peer
1597      when we are retransmitting, not just retransmissions.  Also, if
1598      we're already retransmitting to a peer, probabalistically tail drop new
1599      messages targetting that peer, based on the estimated wait time before
1600      transmission.
1601    * Fixed the rounding error in the inbound tunnel drop probability.
1602
16032006-04-10  jrandom
1604    * Include a combined send/receive graph (good idea cervantes!)
1605    * Proactively drop inbound tunnel requests probabalistically as the
1606      estimated queue time approaches our limit, rather than letting them all
1607      through up to that limit.
1608
16092006-04-08  jrandom
1610    * Stat summarization fix (removing the occational holes in the jrobin
1611      graphs)
1612
16132006-04-08  jrandom
1614    * Process inbound tunnel requests more efficiently
1615    * Proactively drop inbound tunnel requests if the queue before we'd
1616      process it in is too long (dynamically adjusted by cpu load)
1617    * Adjust the tunnel rejection throttle to reject requeusts when we have to
1618      proactively drop too many requests.
1619    * Display the number of pending inbound tunnel join requests on the router
1620      console (as the "handle backlog")
1621    * Include a few more stats in the default set of graphs
1622
16232006-04-06  jrandom
1624    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
1625
16262006-04-06  jrandom
1627    * Fixed a typo in the reply cleanup code
1628
1629* 2006-04-05  0.6.1.14 released
1630
16312006-04-05  jrandom
1632    * Cut down on the time that we allow a tunnel creation request to sit by
1633      without response, and reject tunnel creation requests that are lagged
1634      locally.  Also switch to a bounded FIFO instead of a LIFO
1635    * Threading tweaks for the message handling (thanks bar!)
1636    * Don't add addresses to syndie with blank names (thanks Complication!)
1637    * Further ban clearance
1638
16392006-04-05  jrandom
1640    * Fix during the ssu handshake to avoid an unnecessary failure on
1641      packet retransmission (thanks ripple!)
1642    * Fix during the SSU handshake to use the negotiated session key asap,
1643      rather than using the intro key for more than we should (thanks ripple!)
1644    * Fixes to the message reply registry (thanks Complication!)
1645    * More comprehensive syndie banning (for repeated pushes)
1646    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
1647      testing purposes
1648    * Put a floor back on the capacity threshold, so too many failing peers
1649      won't cause us to pick very bad peers (unless we have very few good
1650      ones)
1651    * Bugfix to cut down on peers using introducers unneessarily (thanks
1652      Complication!)
1653    * Reduced the default streaming lib message size to fit into a single
1654      tunnel message, rather than require 5 tunnel messages to be transferred
1655      without loss before recomposition.  This reduces throughput, but should
1656      increase reliability, at least for the time being.
1657    * Misc small bugfixes in the router (thanks all!)
1658    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
1659
16602006-04-01  jrandom
1661    * Take out the router watchdog's teeth (don't restart on leaseset failure)
1662    * Filter the IRC ping/pong messages, as some clients send unsafe
1663      information in them (thanks aardvax and dust!)
1664
16652006-03-30  jrandom
1666    * Substantially reduced the lock contention in the message registry (a
1667      major hotspot that can choke most threads).  Also reworked the locking
1668      so we don't need per-message timer events
1669    * No need to have additional per-peer message clearing, as they are
1670      either unregistered individually or expired.
1671    * Include some of the more transient tunnel throttling
1672
1673* 2006-03-26  0.6.1.13 released
1674
16752006-03-25  jrandom
1676    * Added a simple purge and ban of syndie authors, shown as the
1677      "Purge and ban" button on the addressbook for authors that are already
1678      on the ignore list.  All of their entries and metadata are deleted from
1679      the archive, and the are transparently filtered from any remote
1680      syndication (so no user on the syndie instance will pull any new posts
1681      from them)
1682    * More strict tunnel join throtting when congested
1683
16842006-03-24  jrandom
1685    * Try to desync tunnel building near startup (thanks Complication!)
1686    * If we are highly congested, fall back on only querying the floodfill
1687      netDb peers, and only storing to those peers too
1688    * Cleaned up the floodfill-only queries
1689
16902006-03-21  jrandom
1691    * Avoid a very strange (unconfirmed) bug that people using the systray's
1692      browser picker dialog could cause by disabling the GUI-based browser
1693      picker.
1694    * Cut down on subsequent streaming lib reset packets transmitted
1695    * Use a larger MTU more often
1696    * Allow netDb searches to query shitlisted peers, as the queries are
1697      indirect.
1698    * Add an option to disable non-floodfill netDb searches (non-floodfill
1699      searches are used by default, but can be disabled by adding
1700      netDb.floodfillOnly=true to the advanced config)
1701
17022006-03-20  jrandom
1703    * Fix to allow for some slack when coalescing stats
1704    * Workaround some oddball errors
1705
17062006-03-18  jrandom
1707    * Added a new graphs.jsp page to show all of the stats being harvested
1708
17092006-03-18  jrandom
1710    * Made the netDb search load limitations a little less stringent
1711    * Add support for specifying the number of periods to be plotted on the
1712      graphs - e.g. to plot only the last hour of a stat that is averaged at
1713      the 60 second period, add &periodCount=60
1714
17152006-03-17  jrandom
1716    * Add support for graphing the event count as well as the average stat
1717      value (done by adding &showEvents=true to the URL).  Also supports
1718      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
1719      the title (&hideTitle=true).
1720    * Removed an unnecessary arbitrary filter on the profile organizer so we
1721      can pick high capacity and fast peers more appropriately
1722
17232006-03-16  jrandom
1724    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
1725      console.  Selected stats can be harvested automatically and fed into
1726      in-memory RRD databases, and those databases can be served up either as
1727      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
1728      details).  A base set of stats are harvested by default, but an
1729      alternate list can be specified by setting the 'stat.summaries' list on
1730      the advanced config.  For instance:
1731      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
1732    * HTML tweaking for the general config page (thanks void!)
1733    * Odd NPE fix (thanks Complication!)
1734
17352006-03-15  Complication
1736    * Trim out an old, inactive IP second-guessing method
1737      (thanks for spotting, Anonymous!)
1738
17392006-03-15  jrandom
1740    * Further stat cleanup
1741    * Keep track of how many peers we are actively trying to communicate with,
1742      beyond those who are just trying to communicate with us.
1743    * Further router tunnel participation throttle revisions to avoid spurious
1744      rejections
1745    * Rate stat display cleanup (thanks ripple!)
1746    * Don't even try to send messages that have been queued too long
1747
17482006-03-05  zzz
1749    * Remove the +++--- from the logs on i2psnark startup
1750
17512006-03-05  jrandom
1752    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
1753    * Give netDb lookups to floodfill peers more time, as they are much more
1754      likely to succeed (thereby cutting down on the unnecessary netDb
1755      searches outside the floodfill set)
1756    * Fix to the SSU IP detection code so we won't use introducers when we
1757      don't need them (thanks Complication!)
1758    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
1759      peers given to it
1760    * Don't let netDb searches wander across too many peers
1761    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
1762      as its too volatile to have much meaning.
1763    * Don't bork if a Syndie post is missing an entry.sml
1764
17652006-03-05  Complication
1766    * Reduce exposed statistical information,
1767      to make build and uptime tracking more expensive
1768
17692006-03-04  Complication
1770    * Fix the announce URL of orion's tracker in Snark sources
1771
17722006-03-03  Complication
1773    * Explicit check for an index out of bounds exception while parsing
1774      an inbound IRC command (implicit check was there already)
1775
17762006-03-01  jrandom
1777    * More aggressive tunnel throttling as we approach our bandwidth limit,
1778      and throttle based off periods wider than 1 second.
1779    * Included Doubtful Salmon's syndie stylings (thanks!)
1780
17812006-02-27  zzz
1782    * Update error page templates to add \r, Connection: close, and
1783      Proxy-connection: close to headers.
1784
1785* 2006-02-27  0.6.1.12 released
1786
17872006-02-27  jrandom
1788    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
1789      machines, rather than the generic jbigi (until we have an athlon64
1790      optimized version)
1791
17922006-02-26  jrandom
1793    * Switch from the bouncycastle to the gnu-crypto implementation for
1794      SHA256, as benchmarks show a 10-30% speedup.
1795    * Removed some unnecessary object caches
1796    * Don't close i2psnark streams prematurely
1797
17982006-02-25  jrandom
1799    * Made the Syndie permalinks in the thread view point to the blog view
1800    * Disabled TCP again (since the live net seems to be doing well w/out it)
1801    * Fix the message time on inbound SSU establishment (thanks zzz!)
1802    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
1803      just starts up
1804
18052006-02-24  jrandom
1806    * Rounding calculation cleanup in the stats, and avoid an uncontested
1807      mutex (thanks ripple!)
1808    * SSU handshake cleanup to help force incompatible peers to stop nagging
1809      us by both not giving them an updated reference to us and by dropping
1810      future handshake packets from them.
1811
18122006-02-23  jrandom
1813    * Increase the SSU retransmit ceiling (for slow links)
1814    * Estimate the sender's SSU MTU (to help see if we agree)
1815
18162006-02-22  jrandom
1817    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
1818    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
1819      links
1820    * Further class validator refactorings
1821
18222006-02-22  jrandom
1823    * Handle a rare race under high bandwidth situations in the SSU transport
1824    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
1825
18262006-02-21  Complication
1827    * Reactivate TCP tranport by default, in addition to re-allowing
1828
1829* 2006-02-21  0.6.1.11 released
1830
18312006-02-21  jrandom
1832    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
1833      heap when backlogged (and so that the messages queued up on it don't sit
1834      there forever)
1835    * Further SSU memory cleanup
1836    * Clean up the address regeneration code so it knows when to rebuild the
1837      local info more precisely.
1838
18392006-02-20  jrandom
1840    * Properly enable TCP this time (oops)
1841    * Deal with multiple form handlers on the same page in the console without
1842      being too annoying (thanks blubb and bd_!)
1843
18442006-02-20  jrandom
1845    * Reenable the TCP transport as a fallback (we'll continue to muck with
1846      debugging SSU-only elsewhere)
1847
18482006-02-20  jrandom
1849    * Major SSU and router tuning to reduce contention, memory usage, and GC
1850      churn.  There are still issues to be worked out, but this should be a
1851      substantial improvement.
1852    * Modified the optional netDb harvester task to support choosing whether
1853      to use (non-anonymous) direct connections or (anonymous) exploratory
1854      tunnels to do the harvesting.  Harvesting itself is enabled via the
1855      advanced config "netDb.shouldHarvest=true" (default is false) and the
1856      connection type can be chosen via "netDb.harvestDirectly=false" (default
1857      is false).
1858
18592006-02-19  dust
1860    * Added pruning of suckers history (it used to grow indefinitely).
1861
18622006-02-19  jrandom
1863    * Moved the current net's reseed URL to a different location than where
1864      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
1865    * More aggressively expire inbound messages (on receive, not just on send)
1866    * Add in a hook for breaking backwards compatibility in the SSU wire
1867      protocol directly by including a version as part of the handshake.  The
1868      version is currently set to 0, however, so the wire protocol from this
1869      build is compatible with all earlier SSU implementations.
1870    * Increased the number of complete message readers, cutting down
1871      substantially on the delay processing inbound messages.
1872    * Delete the message history file on startup
1873    * Reworked the restart/shutdown display on the console (thanks bd_!)
1874
18752006-02-18  jrandom
1876    * Migrate the outbound packets from a central component to the individual
1877      per-peer components, substantially cutting down on lock contention when
1878      dealing with higher degrees.
1879    * Load balance the outbound SSU transfers evenly across peers, rather than
1880      across messages (so peers with few messages won't be starved by peers
1881      with many).
1882    * Reduce the frequency of router info rebuilds (thanks bar!)
1883
18842006-02-18  jrandom
1885    * Add a new AIMD throttle in SSU to control the number of concurrent
1886      messages being sent to a given peer, in addition to the throttle on the
1887      number of concurrent bytes to that peer.
1888    * Adjust the existing SSU outbound queue to throttle based on the queue's
1889      lag, not an arbitrary number of packets.
1890
18912006-02-17  jrandom
1892    * Properly fix the build request queue throttling, using queue age to
1893      detect congestion, rather than queue size.
1894
18952006-02-17  jrandom
1896    * Disable the message history log file by default (duh - feel free to
1897      delete messageHistory.txt after upgrading.  thanks deathfatty!)
1898    * Limit the size of the inbound tunnel build request queue so we don't
1899      get an insane backlog of requests that we're bound to reject, and adjust
1900      the queue processing so we keep on churning through them when we've got
1901      a backlog.
1902    * Small fixes for the multiuser syndie operation (thanks Complication!)
1903    * Renamed modified PRNG classes that were imported from gnu-crypto so we
1904      don't conflict with JVMs using that as a JCE provider (thanks blx!)
1905
1906* 2006-02-16  0.6.1.10 released
1907
19082006-02-16  jrandom
1909    * Add a new toggle to the web config to enable/disable the load testing
1910
19112006-02-16  jrandom
1912    * Dropped much of the abandonware from the apps/ directory
1913
19142006-02-16  jrandom
1915    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
1916    * Initial sucker refactoring to simplify reuse of the html parsing
1917    * Beginnings of hooks to push imported rss/atom out to remote syndie
1918      archives automatically (though not enabled currently)
1919    * Further SSU peer test cleanup
1920
19212006-02-15  jrandom
1922    * Add in per-blog RSS feeds to Syndie
1923    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
1924      with the posts, marking additional attachments as Media RSS enclosures
1925      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
1926      per item.
1927    * Don't allow the default syndie user to be set to something invalid if
1928      its in single user mode.
1929
19302006-02-15  jrandom
1931    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
1932      longer backwards compatible (and should not be used until 0.6.1.1 is
1933      out)
1934
19352006-02-14  jrandom
1936    * Syndie ui bugfixes (thanks all!)
1937
19382006-02-13  jrandom
1939    * Use the current directory for some temporary I2PSnark files, rather than
1940      the OS default temp dir (thanks anon!)
1941    * Increase the base streaming lib window size (still shrinks to 1 on
1942      retransmission though, of course)
1943    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
1944    * Implement fast retransmit in the streaming lib (fires at most once per
1945      packet), and increased the default ack delay to 2 seconds (from .5s)
1946    * Don't ask for garlic level message acks for end to end messages unless
1947      they're useful (e.g. to ack session tags)
1948
19492006-02-12  cervantes
1950    * Use a different santisation method for some SML attributes
1951    * Make router console update config save button actually save.
1952    * Fix console bandwidth limiter burst rate dropdowns, so the display
1953      relates to what is saved in the config.
1954   
19552006-02-12  cervantes
1956    * SML is now stricter in it's formatting (attributes should only use
1957      double quotes instead of being allowed to mix with singles).
1958    * Using apostrophes in SML attributes will no longer invalidate the tag.
1959    * Some instances of [blog] tag description were not being displayed
1960      correctly.
1961
19622006-02-12  jrandom
1963    * Further SSU peer test throttling
1964    * Put the most common router console features on the main index page too
1965
19662006-02-11  jrandom
1967    * Be more careful about SSU peer test floods
1968
19692006-02-09  jrandom
1970    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
1971
19722006-02-08  jrandom
1973    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
1974      bundled a precompiled libjbigi.so in the jbigi.jar
1975    * Cleaned up the synchronization for some SSU packet handling code
1976    * Allow explicit rejection of more lagged tunnel build requests, rather
1977      than dropping them outright
1978    * Use lighter load testing
1979
19802006-02-07  jrandom
1981    * Handle HTTP headers without any values (thanks Sugadude!)
1982    * Don't show the option to make Syndie multiuser, since very few people
1983      need it, and multiuser mode is a lot more complex to use.  Geeks can
1984      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
1985      (or in the router's advanced config, for the embedded Syndie)
1986    * When a peer rejects participation in a tunnel, they mean it (duh)
1987    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
1988    * Remove a throttle on the size of the SSU active outbound pool, since
1989      it was essentially arbitrary
1990    * Use a more appropriate SSU bloom filter size
1991    * Don't "proactively" drop SSU connections if we have partially received
1992      inbound messages (duh)
1993    * Migrate most of the message state across SSU connection reestablishment
1994
19952006-02-06  jrandom
1996    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
1997      piggybacked
1998
19992006-02-05  jrandom
2000    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
2001      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
2002      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
2003    * Enable the messageHistory.txt by default, for debugging
2004
20052006-02-05  jrandom
2006    * Substantial bugfix for the duplicate message detection in the transport
2007      layer
2008    * Handle tunnel build responses ASAP, rather than queueing them up to wait
2009      in line (processing them is really fast - just a few AES loops)
2010    * Don't bother handling build requests that we have queued up for a while
2011      locally, as the requestor will have timed it out anyway (perhaps we
2012      should reply regardless, but with a backoff instead?)
2013
20142006-02-04  jrandom
2015    * Further tunnel test cleanup and disabling of the old tunnel creation
2016      code
2017
20182006-02-04  jrandom
2019    * Clean up and reenable the tunnel testing for the new tunnel system.
2020
20212006-02-04  jrandom
2022    * Don't cache the archive.txt in syndie when fetching it through the web
2023      interface.
2024    * Logging updates
2025
20262006-02-03  jrandom
2027    * Added further replay prevention on the tunnel build requests
2028    * More aggressive streaming lib closing on reset
2029
20302006-02-03  jrandom
2031    * More aggressive refusal of peers from the wrong network (oops)
2032
20332006-02-01  jrandom
2034    * Instruct the router to reseed against a new URL, for migration purposes:
2035      http://dev.i2p.net/i2pdb2/
2036    * Aggressive error handling during UDP packet creation (thanks cervantes)
2037
20382006-02-01  jrandom
2039    * Fix the new tunnel creation crypto, including the addition of a 4 byte
2040      "next message ID" to the encrypted request structure in the spec.
2041    * Backwards incompatible change, using the new tunnel creation crypto, the
2042      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
2043      with the old incompatible network).
2044    * Reworked the leaseSet request process to handle a race condition
2045    * Disable the TCP transport
2046    * Run four separate threads on the job queue to cut down on job lag
2047
20482006-01-28  jrandom
2049    * Removed a race that could show up in leaseSet requesting with the new
2050      tunnel building process
2051
20522006-01-25  jrandom
2053    * Run the peer profile coalescing/reorganization outside the job queue
2054      (on one of the timers), to cut down on some job queue congestion.  Also,
2055      trim old profiles while running, not just when starting up.
2056    * Slightly more sane intra-floodfill-node netDb activity (only flood new
2057      entries)
2058    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
2059      source of the bug is not yet addressed)
2060    * Better I2PSnark reconnection handling
2061    * Further cleanup in the new tunnel build process
2062    * Make sure we expire old participants properly
2063    * Remove much of the transient overload throttling (it wasn't using a good
2064      metric)
2065
20662006-01-25  dust
2067    * Fix IRC client proxy to use ISO-8859-1.
2068
20692006-01-22  jrandom
2070    * New tunnel build process - does not use the new crypto or new peer
2071      selection strategies.  However, it does drop the fallback tunnel
2072      procedure, except for tunnels who are configured to allow them, or for
2073      the exploratory pool during bootstrapping or after a catastrophic
2074      failure.  This new process prefers to fail rather than use too-short
2075      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
2076      it may expose more tunnel failures to the user.
2077    * Always prefer normal tunnels to fallback tunnels.
2078    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
2079      bar!)
2080    * Do all of the netDb entry writing in a separate thread, avoiding
2081      duplicates and batching them up.
2082
20832006-01-19  Complication
2084    * Explain better where eepsite's destkey can be found
2085
20862006-01-18  cervantes
2087    * Add title attributes to all external links in Syndie, so we can rollover
2088      and quickly see if it's worth clicking on.
2089    * Fixed a minor compiler warning.
2090
20912006-01-17  jrandom
2092    * First pass of the new tunnel creation crypto, specified in the new
2093      router/doc/tunnel-alt-creation.html (referenced in the current
2094      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
2095      than in the test code, but the code verifies the technical viability, so
2096      further scrutiny would be warranted.
2097
20982006-01-16  cervantes
2099    * Dragged I2P kicking and screaming into 2006 (Oops)
2100
21012006-01-14  cervantes
2102    * Removed entirely misleading memory status from the console summary.
2103       
21042006-01-13  cervantes
2105    * Further Syndie layout hardening and typeface balancing.
2106
2107* 2006-01-12  0.6.1.9 released
2108
21092006-01-12  jrandom
2110    * Only create the loadtest.log if requested to do so (thanks zzz!)
2111    * Make sure we cleanly take into consideration the appropriate data
2112      points when filtering out duplicate messages in the message validator,
2113      and report the right bloom filter false positives rate (not used for
2114      anything except debugging)
2115
21162006-01-12  cervantes
2117    * Syndie CSS tweaks to removed some redundant declarations, improve font
2118      scaling and layout robustness. Improved cross browser compatibility
2119      (in other words "kicked IE"). Tightened the look of the blog template
2120      a little.
2121
21222006-01-11  Complication
2123    * CSS comment fixes
2124
21252006-01-11  jrandom
2126    * Include the attachments/blogs/etc for comments on the blog view
2127    * Syndie HTML fixes (thanks cervantes!)
2128    * Make sure we fully reset the objects going into our cache before we
2129      reuse them (thanks zzz!)
2130
21312006-01-10  jrandom
2132    * Added the per-post list of attachments/blogs/etc to the blog view in
2133      Syndie (though this does not yet include comments or some further
2134      refinements)
2135    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2136      removing the dox box (though also removes the restart functionality...)
2137    * Give the i2p.exe the correct java.library.path to support the systray
2138      dll (thanks Bobcat, Sugadude, anon!)
2139
21402006-01-09  jrandom
2141    * Removed a longstanding bug that had caused unnecessary router identity
2142      churn due to clock skew
2143    * Temporarily sanity check within the streaming lib for long pending
2144      writes
2145    * Added support for a blog-wide logo to Syndie, and automated the pushing
2146      of updated extended blog info data along side the metadata.
2147
21482006-01-09  jrandom
2149    * Bugfix for a rare SSU error (thanks cervantes!)
2150    * More progress on the blog interface, allowing customizable blog-wide
2151      links.
2152
21532006-01-08  jrandom
2154    * First pass of the new blog interface, though without much of the useful
2155      customization features (coming soon)
2156
21572006-01-04  jrandom
2158    * Rather than profile individual tunnels for throughput over their
2159      lifetime, do so at 1 minute intervals (allowing less frequently active
2160      tunnels to be more fairly measured).
2161    * Run the live tunnel load test across two tunnels at a time, by default.
2162      The load test runs for a random period from 90s to the tunnel lifetime,
2163      self paced.  This should help gathering data for profiling peers that
2164      are in exploratory tunnels.
2165
21662006-01-03  jrandom
2167    * Calculate the overall peer throughput across the 3 fastest one minute
2168      tunnel throughput values, rather than the single fastest throughput.
2169    * Degrade the profiled throughput data over time (cutting the profiled
2170      peaks in half once a day, on average)
2171    * Enable yet another new speed calculation for profiling peers, using the
2172      peak throughput from individual tunnels that a peer is participating in,
2173      rather than across all tunnels they are participating in.  This helps
2174      gather a fairer peer throughput measurement, since it won't allow a slow
2175      high capacity peer seem to have a higher throughput (pushing a little
2176      data across many tunnels at once, as opposed to lots of data across a
2177      single tunnel).  This degrades over time like the other.
2178    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2179      precompiled OS/2 library)
2180
21812006-01-01  jrandom
2182    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2183      (though it can still seed and participate in multifile swarms)
2184    * Enable a new speed calculation for profiling peers, using their peak
2185      1 minute average tunnel throughput as their speed.
2186
21872005-12-31  jrandom
2188    * Include a simple torrent creator in the I2PSnark web UI
2189    * Further streaming lib closing improvements
2190    * Refactored the load test components to run off live tunnels (though,
2191      still not safe for normal/anonymous load testing)
2192
21932005-12-30  jrandom
2194    * Close streams more gracefully
2195
21962005-12-30  jrandom
2197    * Small streaming lib bugfixes for the modified timeouts
2198    * Minor Syndie/Sucker RSS html fix
2199    * Small synchronization fix in I2PSnark (thanks fsm!)
2200
22012005-12-30  jrandom
2202    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2203      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2204      some distros (e.g. mandriva)
2205
22062005-12-29  jrandom
2207    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2208      actually correct
2209
22102005-12-27  jrandom
2211    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2212      the clock is too skewed to do anything useful (check the year and month,
2213      not just the hour and minute).
2214    * Fixed the read/write timeouts in the streaming lib (so that it actually
2215      honors them now)
2216    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2217      torrent closing)
2218    * Handle an oddball tunnel creation failure (thanks Xunk)
2219
22202005-12-26  Complication
2221    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2222    * HTML readability cosmetics on "Peers" page
2223
2224* 2005-12-22  0.6.1.8 released
2225
22262005-12-22  jrandom
2227    * Bundle the standalone I2PSnark launcher in the installer and update
2228      process (launch as "java -jar launch-i2psnark.jar", viewing the
2229      interface on http://localhost:8002/)
2230    * Don't autostart swarming torrents by default so that you can run a
2231      standalone I2PSnark from the I2P install dir and not have the embedded
2232      I2PSnark autolaunch the torrents that the standalone instance is running
2233    * Fixed a rare streaming lib bug that could let a blocking call wait
2234      forever.
2235
22362005-12-22  jrandom
2237    * Cleaned up some buffer synchronization issues in I2PSnark that could
2238      cause blockage.
2239
22402005-12-21  jrandom
2241    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2242      behavior)
2243    * Fixed the I2PSnark bug that would lose track of live peers
2244
22452005-12-20  jrandom
2246    * Enabled the control in I2PSnark to toggle whether torrents should be
2247      started automatically or not
2248    * Hopefully finished the last hook to close down torrents completely when
2249      they're stopped.
2250
22512005-12-19  jrandom
2252    * Fix for old Syndie blog bookmarks (thanks Complication!)
2253    * Fix for I2PSnark to accept incoming connections again (oops)
2254    * Randomize the order that peers from the tracker are contacted
2255
22562005-12-19  jrandom
2257    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2258      memory usage reduction, better OOM handling, and a shared connection
2259      acceptor.
2260    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2261      blog from the blog page shows threads started by the selected author,
2262      not those that they merely participate in)
2263
22642005-12-18  jrandom
2265    * Added a standalone runner for the I2PSnark web ui (build with the
2266      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2267      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2268    * Further I2PSnark error handling
2269
22702005-12-17  jrandom
2271    * Let multiuser accounts authorize themselves to access the remote
2272      functionality again (thanks Ch0Hag!)
2273    * Adjust the JVM heap size to 128MB for new installs (existing users can
2274      accomplish this by editing wrapper.config, adding the line
2275      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2276      of the router).  This is relevent for heavy usage of I2PSnark in the
2277      router console.
2278
22792005-12-17  jrandom
2280    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2281      'piece' sizes grow larger than before.
2282
22832005-12-16  jrandom
2284    * Added some I2PSnark sanity checks, an OOMListener when running
2285      standalone, and a guard against keeping memory tied up indefinitely.
2286    * Sanity check on the watchdog (thanks zzz!)
2287    * Handle invalid HTTP requests in I2PTunnel a little better
2288
22892005-12-16  jrandom
2290    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2291      properly (thanks Complication!)
2292    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2293      b0rking in the DirMonitor, etc)
2294
22952005-12-16  jrandom
2296    * Try to run a torrent in readonly mode if we can't write to the file, and
2297      handle failures a little more gracefully (thanks polecat!)
2298
22992005-12-16  jrandom
2300    * Refuse torrents with too many files (128), avoiding ulimit errors.
2301    * Remove an fd leak in I2PSnark
2302    * Further I2PSnark web UI cleanup
2303
23042005-12-15  jrandom
2305    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2306
23072005-12-15  jrandom
2308    * Added multitorrent support to I2PSnark, accessible currently by running
2309      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2310      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2311      their data in that directory as well.  Removing the .torrent file stops
2312      participation, and it is currently set to seed indefinitely.  Completion
2313      is logged to the logger and standard output, with further UI interaction
2314      left to the (work in progress) web UI.
2315
23162005-12-14  jrandom
2317    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2318    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2319      (thanks Complication!)
2320
23212005-12-13  zzz
2322    * Don't test tunnels expiring within 90 seconds
2323    * Defer Test Tunnel jobs if job lag too large
2324    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2325      job lag for tunnel build backoff, allowing for more agile handling
2326      (since the stat is only updated once a minute)
2327    * Use tunnel length override if all tunnels are expiring within one
2328      minute.
2329
23302005-12-13  jrandom
2331    * Fixed I2PSnark's handling of some torrent files to deal with those
2332      created by Azureus and I2PRufus (it didn't know how to deal with
2333      additional meta info, such as path.utf-8 or name.utf-8).
2334
23352005-12-09  zzz
2336    * Create different strategies for exploratory tunnels (which are difficult
2337      to create) and client tunnels (which are much easier)
2338    * Gradually increase number of parallel build attempts as tunnel expiry
2339      nears.
2340    * Temporarily shorten attempted build tunnel length if builds using
2341      configured tunnel length are unsuccessful
2342    * React more aggressively to tunnel failure than routine tunnel
2343      replacement
2344    * Make tunnel creation times randomized - there is existing code to
2345      randomize the tunnels but it isn't effective due to the tunnel creation
2346      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2347      to 3 minutes before expiration. The patch fixes this by fixing the
2348      randomization, and by changing the overlap time (with old tunnels) to a
2349      range of 2 to 4 minutes.
2350    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2351      to overlapping calls. Just about anything generated a call which could
2352      build many tunnels all at once, even if tunnel building was already in
2353      process.
2354    * Miscellaneous router console enhancements
2355
23562005-12-08  jrandom
2357    * Minor bugfix in SSU for dealing with corrupt packets
2358    * Added some hooks for load testing
2359
23602005-12-07  jrandom
2361    * Added a first pass at a blog view in Syndie
2362
23632005-12-07  jrandom
2364    * Expand the thread we're viewing to its leaf
2365    * Bugfix on intraday ordering (children are always newer than parents)
2366
23672005-12-05  jrandom
2368    * Added an RDF and XML thread export to Syndie, reachable at
2369      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2370      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2371      displays all threads.
2372
23732005-12-04  TLorD
2374    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2375
23762005-12-04  jrandom
2377    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2378    * Always include ourselves in the favorite authors (since we don't
2379      bookmark ourselves)
2380
23812005-12-03  jrandom
2382    * Use newgroup-like tags by default in Syndie's interface
2383
23842005-12-03  jrandom
2385    * Added support for a 'most recent posts' view that CofE requested, which
2386      includes the ability to filter by age (e.g. posts by your favorite
2387      authors in the last 5 days).
2388
23892005-12-03  jrandom
2390    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2391      displays a a single thread path at a time - from root to leaf - rather
2392      than a depth first traversal.
2393
23942005-12-03  jrandom
2395    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2396      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2397      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2398      running a single user Syndie instance (by default).  It also creates a
2399      default subscription to syndiemedia without any anonymity (using no
2400      proxy).  Upgrades can be done by just replacing the syndie.war with the
2401      one from I2P.
2402
2403* 2005-12-01  0.6.1.7 released
2404
24052005-12-01  jrandom
2406    * Add a new criteria to the tunnel join throttle, backing off people if we
2407      are failing to talk to our peers more than usual.
2408
24092005-11-30  jrandom
2410    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2411      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2412      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2413      separate jdom or rome, as they're inside syndie.war.
2414
24152005-11-30  jrandom
2416    * Don't let the TCP transport alone shitlist a peer, since other
2417      transports may be working.  Also display whether TCP connections are
2418      inbound or outbound on the peers page.
2419    * Fixed some substantial bugs in the SSU introducers where we wouldn't
2420      talk to anyone who didn't expose an IP (even if they had introducers),
2421      among other goofy things.
2422    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
2423      rather than sending one a packet at 3s, then another a packet at 6s,
2424      and a third a packet at 9s.
2425    * Fixed Syndie attachments (oops)
2426
24272005-11-29  zzz
2428    * Added a link to orion's jump page on the 'key not found' error page.
2429
24302005-11-29  jrandom
2431    * Further Syndie UI cleanup
2432    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
2433      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
2434      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
2435      will be removed as soon as its integrated into Jetty.  This patch allows
2436      posting content in various character sets.
2437      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
2438    * Upgraded new installs to the latest stable jetty (5.1.6), though this
2439      isn't pushed as part of the update yet, as there aren't any critical
2440      bugs.
2441
24422005-11-29  jrandom
2443    * Added back in the OSX jbigi, which was accidentally removed a few revs
2444      back (thanks for the bug report stoerte!)  New installs will get the
2445      full jbigi, or you can pull the jbigi.jar from CVS by going to
2446      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
2447      and clicking on the first "download" link, saving that jbigi.jar to
2448      lib/jbigi.jar in your I2P installation directory.  After restarting your
2449      router, it should load up fine.
2450
24512005-11-27  jrandom
2452    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
2453      because firefox [and others?] delay rendering until they fetch the css).
2454    * Make sure we fire the shutdown tasks when regenerating a new identity
2455      (thanks picsou!)
2456    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
2457    * Don't drop SSU sessions if they're still transmitting data successfully,
2458      even if there are transmission failures
2459    * Adjusted the time summarization to display hours after 119m, not 90m
2460    * Further EepGet cleanup (grr)
2461
2462* 2005-11-26 0.6.1.6 released
2463
24642005-11-26  jrandom
2465    * Update the sorting in Syndie to consider children 'newer' than parents,
2466      even if they have the same message ID (duh)
2467    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
2468    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
2469    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
2470      better)
2471
24722005-11-26  jrandom
2473    * Be more explicit about what messages we will handle through a client
2474      tunnel, and how we will handle them.  This cuts off a set of attacks
2475      that an active adversary could mount, though they're probably nonobvious
2476      and would require at least some sophistication.
2477
24782005-11-26  Raccoon23
2479    * Added support for 'dynamic keys' mode, where the router creates a new
2480      router identity whenever it detects a substantial change in its public
2481      address (read: SSU IP or port).  This only offers minimal additional
2482      protection against trivial attackers, but should provide functional
2483      improvement for people who have periodic IP changes, since their new
2484      router address would not be shitlisted while their old one would be.
2485    * Added further infrastructure for restricted route operation, but its use
2486      is not recommended.
2487
24882005-11-25  jrandom
2489    * Further Syndie UI cleanups
2490    * Logging cleanup
2491    * Fixed link to fproxy.tino.i2p (thanks zzz!)
2492
24932005-11-25  jrandom
2494    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
2495    * Cleaned up the syndie threaded display to show the last updated date for
2496      a subthread, and to highlight threads updated in the last two days.
2497
24982005-11-24  jrandom
2499    * Fix to save syndication settings in Syndie (thanks spaetz!)
2500
25012005-11-23  jrandom
2502    * Removed spurious streaming lib RTO increase (it wasn't helpful)
2503    * Streamlined the tunnel batching to schedule batch transmissions more
2504      appropriately.
2505    * Default tunnel pool variance to 2 +0-1 hops
2506
25072005-11-21  jrandom
2508    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
2509      within I2PTunnel.
2510    * Increase the maximum SSU retransmission timeout to accomodate slower or
2511      more congested links (though SSU's RTO calculation will usually use a
2512      much lower timeout)
2513    * Moved the streaming lib timed events off the main timer queues and onto
2514      a streaming lib specific set of timer queues.  Streaming lib timed
2515      events are more likely to have lock contention on the I2CP socket while
2516      other timed events in the router are (largely) independent.
2517    * Fixed a case sensitive lookup bug (thanks tino!)
2518    * Syndie cleanup - new edit form on the preview page, and fixed some blog
2519      links (thanks tino!)
2520
25212005-11-19  jrandom
2522    * Implemented a trivial pure java PMTU backoff strategy, switching between
2523      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
2524    * Fixed new user registration in Syndie (thanks Complication!)
2525
25262005-11-17  jrandom
2527    * More cautious file handling in Syndie
2528
25292005-11-16  jrandom
2530    * More aggressive I2PTunnel content encoding munging to work around some
2531      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
2532      even when only identity is specified, etc).  I2PTunnelHTTPServer now
2533      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
2534      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
2535      or X-Accept-encoding headers.  Eepsite operators who do not know to
2536      check for X-Accept-encoding will simply use the identity encoding.
2537
2538* 2005-11-15  0.6.1.5 released
2539
25402005-11-14  jrandom
2541    * Migrate to the new Syndie interface
2542
25432005-11-11  jrandom
2544    * Add filtering threads by author to Syndie, populated with authors in the
2545      user's addressbook
2546    * When creating the default user, add
2547      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
2548      configured to automatically pull updates.  (what other archives should
2549      be included?)
2550    * Tiny servlet to help dole out the new routerconsole themes, and bundle
2551      the installer/resources/themes/** into ./docs/themes/** on both install
2552      and update.
2553
25542005-11-11  cervantes
2555    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
2556      being progressively rolled out to other sections at later dates.
2557      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
2558      layout and styling.
2559    * Implemented console themes. Users can create their own themes by
2560      creating css files in: {i2pdir}/docs/themes/console/{themename}/
2561      and activating it using the routerconsole.theme={themename} advanced
2562      config property. Look at the example incomplete "defCon1" theme.
2563      Note: This is very much a work in progress. Folks might want to hold-off
2564      creating their own skins until the markup has solidified.
2565    * Added "routerconsole.javascript.disabled=true" to disable console
2566      client-side scripting and "routerconsole.css.disabled=true" to remove
2567      css styling (only rolled out in the i2ptunnel interface currently)
2568    * Fixed long standing bug with i2ptunnel client and server edit screens
2569      where tunnel count and depth properties would fail to save. Added
2570      backup quantity and variance configuration options.
2571    * Added basic accessibility support (key shortcuts, linear markup, alt and
2572      title information and form labels).
2573    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
2574
25752005-11-11  jrandom
2576    * Default Syndie to single user mode, and automatically log into a default
2577      user account (additional accounts can be logged into with the 'switch'
2578      or login pages, and new accounts can be created with the register page).
2579    * Disable the 'automated' column on the Syndie addressbook unless the user
2580      is appropriately authorized (good idea Polecat!)
2581
25822005-11-10  jrandom
2583    * First pass to a new threaded Syndie interface, which isn't enabled by
2584      default, as its not done yet.
2585
25862005-11-06  jrandom
2587    * Include SSU establishment failure in the peer profile as a commError,
2588      as we do for TCP establishment failures.
2589    * Don't throttle the initial transmission of a message because of ongoing
2590      retransmissions to a peer, since the initial transmission of a message
2591      is more valuable than a retransmission (since it has less latency).
2592    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
2593
25942005-11-05  jrandom
2595    * Include the most recent ACKs with packets, rather than only sending an
2596      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
2597      increasing sequence numbers, while each message ID in SSU is random, so
2598      we don't get the benefit of later ACKs implicitly ACKing earlier
2599      messages.
2600    * Reduced the max retransmission timeout for SSU
2601    * Don't try to send messages queued up for a long time waiting for
2602      establishment.
2603
26042005-11-05  dust
2605    * Fix sucker to delete its temporary files.
2606    * Improve sucker's sml output some.
2607    * Fix Exception in SMLParser for weird sml.
2608
26092005-11-03  zzz
2610    * Added a new error page to the eepproxy to differentiate the full 60
2611      second timeout from the immediate "I don't know this base64" failure.
2612
26132005-11-01  jrandom
2614    * Added a few more css elements (thanks identiguy!)
2615
26162005-10-31  jrandom
2617    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
2618    * Removed a potentially infinitely recursive call (oops)
2619
26202005-10-30  dust
2621    * Merge sucker into syndie with a rssimport.jsp page.
2622    * Add getContentType() to EepGet.
2623    * Make chunked transfer work (better) with EepGet.
2624    * Do replaceAll("<","&lt;") for logs.
2625
2626* 2005-10-29  0.6.1.4 released
2627
26282005-10-29  jrandom
2629    * Improved the bandwidth throtting on tunnel participation, especially for
2630      low bandwidth peers.
2631    * Improved failure handling in SSU with proactive reestablishment of
2632      failing idle peers, and rather than shitlisting a peer who failed too
2633      much, drop the SSU session and allow a new attempt (which, if it fails,
2634      will cause a shitlisting)
2635    * Clarify the cause of the shitlist on the profiles page, and include
2636      bandwidth limiter info at the bottom of the peers page.
2637
26382005-10-26  jrandom
2639    * In Syndie, propogate the subject and tags in a reply, and show the parent
2640      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
2641    * Streamline some netDb query handling to run outside the jobqueue -
2642      which means they'll run on the particular SSU thread that handles the
2643      message.  This should help out heavily loaded netDb peers.
2644
26452005-10-25  jrandom
2646    * Defer netDb searches for newly referenced peers until we actually want
2647      them
2648    * Ignore netDb references to peers on our shitlist
2649    * Set the timeout for end to end client messages to the max delay after
2650      finding the leaseSet, so we don't have as many expired messages floating
2651      around.
2652    * Add a floor to the streaming lib window size
2653    * When we need to send a streaming lib ACK, try to retransmit one of the
2654      unacked packets instead (with updated ACK/NACK fields, of course).  The
2655      bandwidth cost of an unnecessary retransmission should be minor as
2656      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
2657      the probability of a necessary retransmission.
2658    * Adjust the streaming lib cwin algorithm to allow growth after a full
2659      cwin messages if the rtt is trending downwards.  If it is not, use the
2660      existing algorithm.
2661    * Increased the maximum rto size in the streaming lib.
2662    * Load balancing bugfix on end to end messages to distribute across
2663      tunnels more evenly.
2664
26652005-10-22  jrandom
2666    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
2667      ./prngseed.rnd (if they exist), and reseeding it with data out of
2668      various crypto operations (unused bits in a DH exchange, intermediary
2669      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
2670      The Fortuna implementation under gnu.crypto.prng has been modified to
2671      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
2672      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
2673      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
2674      wrapper around it is, of course, public domain.
2675
26762005-10-20  dust
2677    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
2678      always shared. (thx for info Ragnarok)
2679    * Fix crash in Sucker with some bad html.
2680
26812005-10-20  jrandom
2682    * Workaround a bug in GCJ's Calendar implementation
2683    * Propery throw an exception in the streaming lib if we try to write to a
2684      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
2685      GregorK!)
2686
26872005-10-19  jrandom
2688    * Ported the snark bittorrent client to I2P such that it is compatible
2689      with i2p-bt and azneti2p.  For usage information, grab an update and run
2690      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
2691      but adding in support would be fairly easy (see PeerAcceptor.java:49)
2692    * Don't allow leaseSets expiring too far in the future (thanks postman)
2693
26942005-10-19  jrandom
2695    * Bugfix for the auto-update code to handle different usage patterns
2696    * Decreased the addressbook recheck frequency to once every 12 hours
2697      instead of hourly.
2698    * Handle dynamically changing the HMAC size (again, unless your nym is
2699      toad or jrandom, ignore this ;)
2700    * Cleaned up some synchronization/locking code
2701
27022005-10-17  dust
2703    * Exchange the remaining URL with EepGet in Sucker.
2704    * Allow /TOPIC irc command.
2705
27062005-10-17  jrandom
2707    * Allow an env prop to configure whether we want to use the backwards
2708      compatible (but not standards compliant) HMAC-MD5, or whether we want
2709      to use the not-backwards compatible (but standards compliant) one.  No
2710      one should touch this setting, unless your name is toad or jrandom ;)
2711    * Added some new dummy facades
2712    * Be more aggressive on loading up the router.config before building the
2713      router context
2714    * Added new hooks for apps to deal with previously undefined I2NP message
2715      types without having to modify any code.
2716    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
2717
27182005-10-14  jrandom
2719    * More explicit filter for linux/PPC building (thanks anon!)
2720    * Fixed Syndie's Sucker to not explicitly reference something only found
2721      in sun's JVM (thanks cervantes!)
2722    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
2723
2724* 2005-10-14  0.6.1.3 released
2725
27262005-10-14  jrandom
2727    * Added a key explaining peers.jsp a bit (thanks tethra!)
2728
27292005-10-13  dust
2730    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
2731      then be injected into Syndie with the Syndie CLI.
2732    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
2733      RSS/Atom parsing.
2734
27352005-10-13  jrandom
2736    * SSU retransmission choke bugfix (== != !=)
2737    * Include initial transmissions in the retransmission choke, so that
2738      if we are already retransmitting a message, we won't send anything
2739      to that peer other than that message (or ACKs, if necessary)
2740
27412005-10-12  jrandom
2742    * Choke SSU retransmissions to a peer while there is already a
2743      retransmission in flight to them.  This currently lets other initial
2744      transmissions through, since packet loss is often sporadic, but maybe
2745      this should block initial transmissions as well?
2746    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
2747    * Filter QUIT messages in the I2PTunnelIRCClient proxy
2748
27492005-10-11  jrandom
2750    * Piggyback the SSU partial ACKs with data packets.  This is backwards
2751      compatible.
2752    * Syndie RSS renderer bugfix, plus now include the full entry instead of
2753      just the blurb before the cut.
2754
27552005-10-11  jrandom
2756    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
2757      yet piggybacked).  This is backwards compatible.
2758    * SML parser cleanup in Syndie
2759
27602005-10-10  dust
2761    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
2762      outbound IRC commands for anonymity and security purposes, removing all
2763      CTCP messages except ACTION, as well as stripping the hostname from the
2764      USER message (while leaving the nick and 'full name').  The IRC proxy
2765      doesn't use this by default, but you can enable it by creating a new
2766      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
2767      to "ircclient" in i2ptunnel.config.
2768
27692005-10-10  jrandom
2770    * I2PTunnel http client config cleanup and stats
2771    * Minor SSU congestion tweaks and stats
2772    * Reduced netDb exploration period
2773
27742005-10-09  jrandom
2775    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
2776      java -jar lib/syndie.jar
2777    * Beginnings of the Syndie logging cleanup
2778    * Delete corrupt Syndie posts
2779
27802005-10-09  jrandom
2781    * Now that the streaming lib works reasonably, set the default inactivity
2782      event to send a 0 byte keepalive payload, rather than disconnecting the
2783      stream.  This should cut the irc netsplits and help out with other long
2784      lived streams.  The default timeout is now less than the old timeout as
2785      well, so the keepalive will be sent before earlier builds fire their
2786      fatal timeouts.
2787
27882005-10-08  jrandom
2789    * Use the OS clock for stat timing, since it doesn't jump around (though
2790      still use the NTP'ed clock for display)
2791    * Added new DH stats
2792
2793* 2005-10-07  0.6.1.2 released
2794
27952005-10-07  jrandom
2796    * Include the 1 second bandwidth usage on the console rather than the
2797      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
2798      issues.
2799
28002005-10-07  jrandom
2801    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
2802      HTTP response quicker, and initialize the streaming lib's cwin more
2803      carefully.
2804    * Added a small web UI to the new Syndie scheduled updater.  If you log in
2805      as a user authorized to use the remote archive funtionality, you can
2806      request remote archives in your address book to be automatically pulled
2807      down by checking the "scheduled?" checkbox.
2808
28092005-10-05  jrandom
2810    * Allow the first few packets in the stream to fill in their IDs during
2811      handshake (thanks cervantes, Complication, et al!)  This should fix at
2812      least some of the intermittent HTTP POST issues.
2813
28142005-10-04  jrandom
2815    * Syndie patch for single user remote archives (thanks nickless_head!)
2816    * Handle an invalid netDb store (thanks Complication!)
2817
28182005-10-04  jrandom
2819    * Further reduction in unnecessary streaming packets.
2820
28212005-10-03  jrandom
2822    * Properly reject unroutable IP addresses *cough*
2823
28242005-10-03  rangarok
2825    * Changed default update delay to twelve hours, and enforced a minimum
2826      delay of one hour.
2827
28282005-10-03  ragnarok
2829    * Implemented a Syndie auto-updater.  It will automatically pull new posts
2830      from selected syndie archives.  To try it out, add
2831      syndie.updateArchives=<comma seperated list of syndie archives> to your
2832      syndie.config.  Archives must be specified as the full url to archive.txt
2833      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
2834      for new posts every hour.  This can be modified by setting
2835      syndie.updateDelay=<delay in hours> also in syndie.config.
2836
2837* 2005-10-01  0.6.1.1 released
2838
28392005-09-30  ragnarok
2840    * Implemented conditional get for syndie remote archive imports.
2841
28422005-09-30  jrandom
2843    * Killed three more streaming lib bugs, one of which caused excess packets
2844      to be transmitted (dupacking dupacks), one that was the root of many of
2845      the old hung streams (shrinking highest received), and another that was
2846      releasing data too soon.
2847
28482005-09-30  jrandom
2849    * Only allow autodetection of our IP address if we haven't received an
2850      inbound connection in the last two minutes.
2851    * Increase the default max streaming resends to 8 from 5 (and down from
2852      the earlier 10)
2853
28542005-09-29  ragnarok
2855    * Export petnames from syndie to the router's petname db instead of
2856      userhosts.txt.
2857
28582005-09-29  jrandom
2859    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
2860      reseeding - useful on OSes that make it hard to create dot files. 
2861      Thanks Complication (and anon)!
2862    * Fixed the installer version string (thanks Frontier!)
2863    * Added cleaner rejection of invalid IP addresses, shitlist those who send
2864      us invalid IP addresses, verify again that we are not sending invalid IP
2865      addresses, and log an error if it happens. (Thanks Complication, ptm,
2866      and adab!)
2867
2868* 2005-09-29  0.6.1 released
2869
28702005-09-29  jrandom
2871    * Let syndie users modify their metadata.
2872    * Reseed the router on startup if there aren't enough peer references
2873      known locally.  This can be disabled by creating the file .i2pnoreseed
2874      in your home directory, and the existing detection and reseed handling
2875      on the web interface is unchanged.
2876
28772005-09-28  jrandom
2878    * Fix for at least some (all?) of the wrong stream errors in the streaming
2879      lib
2880
28812005-09-27  jrandom
2882    * Properly suggest filenames for attachments in Syndie (thanks all!)
2883    * Fixed the Syndie authorization scheme for single user vs. multiuser
2884
28852005-09-27  jrandom
2886    * I2PTunnel bugfix (thanks Complication!)
2887    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
2888      instead of k/cwin)
2889    * Limit the number of inbound SSU sessions being built at once (using
2890      half of the i2np.udp.maxConcurrentEstablish config prop)
2891    * Don't shitlist on a message send failure alone (unless there aren't any
2892      common transports).
2893    * More careful bandwidth bursting
2894
28952005-09-26  jrandom
2896    * Reworded the SSU introductions config section (thanks duck!)
2897    * Force identity content encoding for I2PTunnel httpserver requests
2898      (thanks redzara!)
2899    * Further x-i2p-gzip bugfixes for the end of streams
2900    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
2901      I2P's performance at 3KBps is another issue)
2902    * Cleaned up some streaming lib structures
2903
29042005-09-25  jrandom
2905    * Allow reseeding on the console if the netDb knows less than 30 peers,
2906      rather than less than 10 (without internet connectivity, we keep the
2907      last 15 router references)
2908    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
2909      more aggressively.
2910    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
2911    * Reduced the default maximum number of streaming lib resends of a packet
2912      (10 retransmits is a bit much with a reasonable RTO)
2913
29142005-09-25  Complication
2915    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
2916      conflict resolution page if the i2paddresshelper parameter differs from
2917      an existing name to destination mapping.
2918
29192005-09-25  jrandom
2920    * Fix a long standing streaming lib bug (in the inactivity detection code)
2921    * Improved handling of initial streaming lib packet retransmissions to
2922      kill the "lost first packet" bug (where a page shows up with the first
2923      few KB missing)
2924    * Add support for initial window sizes greater than 1 - useful for
2925      eepsites to transmit e.g. 4 packets full of data along with the initial
2926      ACK, thereby cutting down on the rtt latency.  The congestion window
2927      size can and does still shrink down to 1 packet though.
2928    * Adjusted the streaming lib retransmission calculation algorithm to be
2929      more TCP-like.
2930
29312005-09-21  redzara
2932    * Use ISO-8859-1 for the susidns xml
2933
29342005-09-21  susi
2935    * Bugfix in susidns for deleting entries
2936
29372005-09-21  jrandom
2938    * Add support for HTTP POST to EepGet
2939    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
2940      put in that URL.
2941
29422005-09-18  jrandom
2943    * Added support for pure 64bit linux with jbigi and the java service
2944      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
2945      et al for help testing!
2946    * UI cleanup in Syndie (thanks gloin and bar!)
2947
29482005-09-18  Ragnarok
2949    * Made MetaNamingService the default naming service.
2950
29512005-09-17  Ragnarok
2952    * Implemented a naming service using Syndie's petname db.  It's not enabled
2953      by default, but you can try it out by setting
2954      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
2955      router.config.
2956    * Implemented a meta naming service that will first lookup names in the
2957      PetNameNamingService then fallback on the HostTxtNamingService.  Which
2958      naming services are checked and in which order is specified by
2959      i2p.nameservicelist.  This will probably become the default naming service
2960      so please help test it out by setting
2961      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
2962     
2963* 2005-09-17  0.6.0.6 released
2964
29652005-09-17  jrandom
2966    * Clean up syndie a bit more and bundle a default introductory post with
2967      both new installs and updates.
2968    * Typo fixes on the console (thanks bar!)
2969
29702005-09-17  jrandom
2971    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
2972      steady state rate, plus a new limit on how fast we transfer when
2973      bursting.  This is different from the old "burst as fast as possible
2974      until we're out of tokens" policy, and should help those with congested
2975      networks.  See /config.jsp to manage this rate.
2976    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
2977      old posts just didn't show up).
2978    * Log properly in EepPost
2979
29802005-09-17  jrandom
2981    * Added the natively compiled jbigi and patched java service wrapper for
2982      OS X.  Thanks Bill Dorsey for letting me use your machine!
2983    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
2984      don't bundle the binutils necessary (and there'd be a naming conflict
2985      if we did).
2986    * Added 'single user' functionality to syndie - if the single user
2987      checkbox on the admin page is checked, all users are allowed to control
2988      the instance and sync up with remote syndie nodes.
2989    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
2990      debugged.
2991
29922005-09-16  jrandom
2993    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
2994      you have i2np.udp.allowLocal=true defined - useful for private nets)
2995
29962005-09-16  jrandom
2997    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
2998      (just specify the spoofed host as an empty string), allowing them to
2999      honor x-i2p-gzip encoding.
3000    * Let windows users build the exes too (thanks bar and redzara!)
3001    * Allow I2PTunnel httpserver operators to disable gzip compression on
3002      individual tunnels with the i2ptunnel.gzip=false client option
3003      (good idea susi!)
3004
30052005-09-16  jrandom
3006    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
3007    * Added runplain.sh for *nix/osx users having problems using the java
3008      service wrapper (called from the install dir as: sh runplain.sh)
3009    * Bundle susidns and syndie, with links on the top nav
3010    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
3011      content-encoding (if offered), reducing the payload size before it
3012      reaches the streaming lib.  The existing compression is at the i2cp
3013      level, so we've been packetizing 4KB of uncompressed data and then
3014      compressing those messages, rather than compressing and then packetizing
3015      4KB of compressed data.  This should reduce the number of round trips
3016      to fetch web pages substantially.
3017    * Adjust the startup and timing of the addressbook so that susidns always
3018      has config to work off, and expose a method for susidns to tell it to
3019      reload its config and rerun.
3020
30212005-09-15  jrandom
3022    * Error handling for failed intro packets (thanks red.hand!)
3023    * More carefully verify intro addresses
3024
30252005-09-13  jrandom
3026    * More careful error handling with introductions (thanks dust!)
3027    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
3028    * Hide the shitlist on the summary so it doesn't confuse new users.
3029
30302005-09-12  comwiz
3031    * Migrated the router tests to junit
3032
30332005-09-12  jrandom
3034    * Removed guaranteed delivery mode entirely (so existing i2phex clients
3035      using it can get the benefits of mode=best_effort).  Guaranteed delivery
3036      is offered at the streaming lib level.
3037    * Improve the peer selection code for peer testing, as everyone now
3038      supports tests.
3039    * Give the watchdog its fangs - if it detects obscene job lag or if
3040      clients have been unable to get a leaseSet for more than 5 minutes,
3041      restart the router.  This was disabled a year ago due to spurious
3042      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
3043      cause of the spurious restarts should be gone.
3044
30452005-09-12  jrandom
3046    * Bugfix for skewed store which could kill a UDP thread (causing complete
3047      comm failure and eventual OOM)
3048
30492005-09-12  jrandom
3050    * More aggressively publish updated routerInfo.
3051    * Expose the flag to force SSU introductions on the router console
3052    * Don't give people the option to disable SNTP time sync, at least not
3053      through the router console, because there is no reason to disable it.
3054      No, not even if your OS is "ntp synced", because chances are, its not.
3055
30562005-09-10  jrandom
3057    * Test the router's reachability earlier and more aggressively
3058    * Use the low level bandwidth limiter's rates for the router console, and
3059      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
3060      the logger config, keep track of the 1 second transfer rates as the stat
3061      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
3062      behavior.
3063
30642005-09-09  jrandom
3065    * Added preliminary support for NAT hole punching through SSU introducers
3066    * Honor peer test results from peers that we have an SSU session with if
3067      those sessions are idle for 3 minutes or more.
3068
30692005-09-09  cervantes
3070    * New build due to change in build number :P (thanks ugha!)
3071
30722005-09-07  BarkerJr
3073    * HTML cleanup for the router console (thanks!)
3074
30752005-09-07  jrandom
3076    * Lay the foundation for 'client routers' - the ability for peers to opt
3077      out of participating in tunnels entirely due to firewall/NAT issues. 
3078      Individual routers have control over where those peers are used in
3079      tunnels - in outbound or inbound, exploratory or client tunnels, or
3080      none at all.  The defaults with this build are to simply act as before -
3081      placing everyone as potential participants in any tunnel.
3082    * Another part of the foundation includes the option for netDb
3083      participants to refuse to answer queries regarding peers who are marked
3084      as unreachable, though this too is disabled by default (meaning the
3085      routerInfo is retrievable from the netDb).
3086
30872005-09-05  jrandom
3088    * Expose the HTTP headers to EepGet status listeners
3089    * Handle DSA key failures properly (if the signature is not invertable, it
3090      is obviously invalid)
3091
30922005-09-04  jrandom
3093    * Don't persist peer profiles until we are shutting down, as the
3094      persistence process gobbles RAM and wall time.
3095    * Bugfix to allow you to check/uncheck the sharedClient setting on the
3096      I2PTunnel web interface (thanks BarkerJr!)
3097    * Be more careful when expiring a failed tunnel message fragment so we
3098      don't drop the data while attempting to read it.
3099
3100* 2005-09-02  0.6.0.5 released
3101
31022005-09-02  jrandom
3103    * Don't refuse to send a netDb store if the targetted peer has failed a
3104      bit (the value was an arbitrary amount).
3105    * Logging changes
3106
3107* 2005-09-01  0.6.0.4 released
3108
31092005-09-01  jrandom
3110    * Don't send out a netDb store of a router if it is more than a few hours
3111      old, even if someone asked us for it.
3112
31132005-08-31  jrandom
3114    * Don't publish leaseSets to the netDb if they will never be looked for -
3115      namely, if they are for destinations that only establish outbound
3116      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
3117      modified to tell the router that it doesn't need to publish their
3118      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
3119      to 'true').
3120    * Don't publish the top 10 peer rankings of each router in the netdb, as
3121      it isn't being watched right now.
3122
31232005-08-29  jrandom
3124    * Added the new test Floodfill netDb
3125
31262005-08-27  jrandom
3127    * Minor logging and optimization tweaks in the router and SDK
3128    * Use ISO-8859-1 in the XML files (thanks redzara!)
3129    * The consolePassword config property can now be used to bypass the router
3130      console's nonce checking, allowing CLI restarts
3131
31322005-08-24  jrandom
3133    * Catch errors with corrupt tunnel messages more gracefully (no need to
3134      kill the thread and cause an OOM...)
3135    * Don't skip shitlisted peers for netDb store messages, as they aren't
3136      necessarily shitlisted by other people (though they probably are).
3137    * Adjust the netDb store per-peer timeout based on each particular peer's
3138      profile (timeout = 4x their average netDb store response time)   
3139    * Don't republish leaseSets to *failed* peers - send them to peers who
3140      replied but just didn't know the value.
3141    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3142      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3143      sent entirely within the first streaming packet anyway, so this won't be
3144      a problem.
3145    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3146      prevent any clients from accessing the server if the handlers get
3147      blocked by the streaming lib or other issues.
3148    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3149      Unknown.
3150
31512005-08-23  jrandom
3152    * Removed the concept of "no bandwidth limit" - if none is specified, its
3153      16KBps in/out.
3154    * Include ack packets in the per-peer cwin throttle (they were part of the
3155      bandwidth limit though).
3156    * Tweak the SSU cwin operation to get more accurrate estimates under
3157      congestions.
3158    * SSU improvements to resend more efficiently.
3159    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3160
3161* 2005-08-21  0.6.0.3 released
3162
31632005-08-21  jrandom
3164    * If we already have an established SSU session with the Charlie helping
3165      test us, cancel the test with the status of "unknown".
3166
31672005-08-17  jrandom
3168    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3169      viability before agreeing to Alice's request.  This doesn't work with
3170      older SSU peer test builds, but is backwards compatible (older nodes
3171      won't ask newer nodes to participate in tests, and newer nodes won't
3172      ask older nodes to either).
3173
31742005-08-12  jrandom
3175    * Keep detailed stats on the peer testing, publishing the results in the
3176      netDb.
3177    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3178      status in a while.
3179    * Make sure to avoid shitlisted peers for peer testing.
3180    * When we get an unknown result to a peer test, try again soon afterwards.
3181    * When a peer tells us that our address is different from what we expect,
3182      if we've done a recent peer test with a result of OK, fire off a peer
3183      test to make sure our IP/port is still valid.  If our test is old or the
3184      result was not OK, accept their suggestion, but queue up a peer test for
3185      later.
3186    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3187      we monitor netDb store progress (to clear up the high netDb.storePeers
3188      stat)
3189
31902005-08-10  jrandom
3191    * Deployed the peer testing implementation to be run every few minutes on
3192      each router, as well as any time the user requests a test manually.  The
3193      tests do not reconfigure the ports at the moment, merely determine under
3194      what conditions the local router is reachable.  The status shown in the
3195      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3196      differently for different peers, "ERR-Reject" if the router cannot
3197      receive unsolicited packets or the peer helping test could not find a 
3198      collaborator, "Unknown" if the test has not been run or the test
3199      participants were unreachable, or "OK" if the router can receive
3200      unsolicited connections and those connections use the same IP and port.
3201
3202* 2005-08-08  0.6.0.2 released
3203
32042005-08-08  jrandom
3205    * Add a configurable throttle to the number of concurrent outbound SSU
3206      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3207      may help those with slow connections to get integrated at the start.
3208    * Further fixlets to the streaming lib
3209
32102005-08-07  Complication
3211    * Display the average clock skew for both SSU and TCP connections
3212
32132005-08-07  jrandom
3214    * Fixed the long standing streaming lib bug where we could lose the first
3215      packet on retransmission.
3216    * Avoid an NPE when a message expires on the SSU queue.
3217    * Adjust the streaming lib's window growth factor with an additional
3218      Vegas-esque congestion detection algorithm.
3219    * Removed an unnecessary SSU session drop
3220    * Reduced the MTU (until we get a working PMTU lib)
3221    * Deferr tunnel acceptance until we know how to reach the next hop,
3222      rejecting it if we can't find them in time.
3223    * If our netDb store of our leaseSet fails, give it a few seconds before
3224      republishing.
3225
3226* 2005-08-03  0.6.0.1 released
3227
32282005-08-03  jrandom
3229    * Backed out an inadvertant change to the netDb store redundancy factor.
3230    * Verify tunnel participant caching.
3231    * Logging cleanup
3232
32332005-08-01  duck
3234    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3235
32362005-08-01  duck
3237    * Fix an addressbook NPE when a new hostname from the master addressbook
3238      didn't exist in the router addressbook.
3239    * Fix an addressbook bug which caused subscriptions not to be parsed at
3240      all. (Oops!)
3241
32422005-07-31  jrandom
3243    * Adjust the netDb search and store per peer timeouts to match the average
3244      measured per peer success times, rather than huge fixed values.
3245    * Optimized and reverified the netDb peer selection / retrieval process
3246      within the kbuckets.
3247    * Drop TCP connections that don't have any useful activity in 10 minutes.
3248    * If i2np.udp.fixedPort=true, never change the externally published port,
3249      even if we are autodetecting the IP address.
3250
3251* 2005-07-27  0.6 released
3252
32532005-07-27  jrandom
3254    * Enabled SSU as the default top priority transport, adjusting the
3255      config.jsp page accordingly.
3256    * Add verification fields to the SSU and TCP connection negotiation (not
3257      compatible with previous builds)
3258    * Enable the backwards incompatible tunnel crypto change as documented in
3259      tunnel-alt.html (have each hop encrypt the received IV before using it,
3260      then encrypt it again before sending it on)
3261    * Disable the I2CP encryption, leaving in place the end to end garlic
3262      encryption (another backwards incompatible change)
3263    * Adjust the protocol versions on the TCP and SSU transports so that they
3264      won't talk to older routers.
3265    * Fix up the config stats handling again
3266    * Fix a rare off-by-one in the SSU fragmentation
3267    * Reduce some unnecessary netDb resending by inluding the peers queried
3268      successfully in the store redundancy count.
3269
32702005-07-22  jrandom
3271    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3272      I2PTunnelServer)
3273    * Minor memory churn reduction in I2CP
3274    * Small stats update
3275
32762005-07-21  jrandom
3277    * Fix in the SDK for a bug which would manifest itself as misrouted
3278      streaming packets when a destination has many concurrent streaming
3279      connections (thanks duck!)
3280    * No more "Graceful shutdown in -18140121441141s"
3281
32822005-07-20  jrandom
3283    * Allow the user to specify an external port # for SSU even if the external
3284      host isn't specified (thanks duck!)
3285
32862005-07-19  jrandom
3287    * Further preparation for removing I2CP crypto
3288    * Added some validation to the DH key agreement (thanks $anon)
3289    * Validate tunnel data message expirations (though not really a problem,
3290      since tunnels expire)
3291    * Minor PRNG threading cleanup
3292
32932005-07-15  cervantes
3294    * Added workaround for an odd win32 bug in the stats configuration console
3295      page which meant only the first checkbox selection was saved.
3296
32972005-07-15  Romster
3298    * Added per group selection toggles in the stats configuration console
3299      page.
3300
33012005-07-13  jrandom
3302    * Fixed a recently injected bug in the multitransport bidding which had
3303      allowed an essentially arbitrary choice of transports, rather than the
3304      properly ordered choice.
3305
33062005-07-13  jrandom
3307    * Fixed a long standing bug where we weren't properly comparing session
3308      tags but instead largely depending upon comparing their hashCode,
3309      causing intermittent decryption errors.
3310
33112005-07-12  jrandom
3312    * Add some data duplication to avoid a recently injected concurrency
3313      problem in the session tag manager (thanks redzara and romster).
3314
33152005-07-11  jrandom
3316    * Reduced the growth factor on the slow start and congestion avoidance for
3317      the streaming lib.
3318    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3319      handlers, rather than launching off new threads which then immediately
3320      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3321    * Don't persist session keys / session tags (not worth it, for now)
3322    * Added some detection and handling code for duplicate session tags being
3323      delivered (root cause still not addressed)
3324    * Make the PRNG's buffer size configurable (via the config property
3325      "i2p.prng.totalBufferSizeKB=4096")
3326    * Disable SSU flooding by default (duh)
3327    * Updates to the StreamSink apps for better throttling tests.
3328
33292005-07-05  jrandom
3330    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3331      buffer, rather than the underlying PRNG's (likely small) one, which in
3332      turn reduces the frequency of recalcing.
3333    * More tuning to reduce temporary allocation churn
3334
33352005-07-04  jrandom
3336    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3337      rather than the IV by itself, preventing an attack that would let
3338      colluding internal adversaries tag a message to determine that they are
3339      in the same tunnel.  Thanks dvorak for the catch!
3340    * Drop long inactive profiles on startup and shutdown
3341    * /configstats.jsp: web interface to pick what stats to log
3342    * Deliver more session tags to account for wider window sizes
3343    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3344    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3345    * UrlLauncher: adjust the browser selection order
3346    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3347    * StreamSinkClient: add support for sending an unlimited amount of data
3348    * Migrate the tests out of the default build jars
3349
33502005-06-22  Comwiz
3351    * Migrate the core tests to junit
3352
33532005-05-25  duck
3354    * Fixed PRNG bug (bugzilla #107)
3355
33562005-05-01  jrandom
3357    * Added a substantial optimization to the AES engine by caching the
3358      prepared session keys (duh).
3359
33602005-05-01  jrandom
3361    * Cleaned up the peers page a bit more.
3362
33632005-04-30  jrandom
3364    * Added a small new page to the web console (/peers.jsp) which contains
3365      the peer connection information.  This will be cleaned up a lot more
3366      before 0.6 is out, but its a start.
3367
33682005-04-30  jrandom
3369    * Reduced some SimpleTimer churn
3370
33712005-04-29  jrandom
3372    * Reduce the peer profile stat coallesce overhead by inlining it with the
3373      reorganize.
3374    * Limit each transport to at most one address (any transport that requires
3375      multiple entry points can include those alternatives in the address).
3376
33772005-04-28  jrandom
3378    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3379    * Add back the code to handle bids from multiple transports (though there
3380      is still only one transport enabled by default)
3381    * Adjust the router's queueing of outbound client messages when under
3382      heavy load by running the preparatory job in the client's I2CP handler
3383      thread, thereby blocking additional outbound messages when the router is
3384      hosed.
3385    * No need to validate or persist a netDb entry if we already have it
3386
33872005-04-25  smeghead
3388    * Added button to router console for manual update checks.
3389    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3390      every time the form was submitted even if it hadn't changed.
3391
33922005-04-24  jrandom
3393    * Added a pool of PRNGs using a different synchronization technique,
3394      hopefully sufficient to work around IBM's PRNG bugs until we get our
3395      own Fortuna.
3396    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3397      size bound the not-yet-ready messages to the peer, not the unacked
3398      message count (not sure yet whether this is worthwile).
3399    * Many additions to the messageHistory log.
3400    * Handle out of order tunnel fragment delivery (not an issue on the live
3401      net with TCP, but critical with UDP).
3402
3403* 2005-04-20  0.5.0.7 released
3404
34052005-04-20  jrandom
3406    * In the SDK, we don't actually need to block when we're sending a message
3407      as BestEffort (and these days, we're always sending BestEffort).
3408    * Pass out client messages in fewer (larger) steps.
3409    * Have the InNetMessagePool short circuit dispatch requests.
3410    * Have the message validator take into account expiration to cut down on
3411      false positives at high transfer rates.
3412    * Allow configuration of the probabalistic window size growth rate in the
3413      streaming lib's slow start and congestion avoidance phases, and default
3414      them to a more conservative value (2), rather than the previous value
3415      (1).
3416    * Reduce the ack delay in the streaming lib to 500ms
3417    * Honor choke requests in the streaming lib (only affects those getting
3418      insanely high transfer rates)
3419    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
3420      I2PTunnel client page (thanks maestro^!)
3421
34222005-04-17  sirup
3423    * Added the possibility for i2ptunnel client and httpclient instances to
3424      have their own i2p session (and hence, destination and tunnels).  By
3425      default, tunnels are shared, but that can be changed on the web
3426      interface or with the sharedClient config option in i2ptunnel.config.
3427
34282005-04-17  jrandom
3429    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
3430      this?  If not, I want to drop it (lots of tiny details with lots of
3431      duplicated semantics).
3432
34332005-04-17  zzz
3434    * Added new user-editable eepproxy error page templates.
3435
34362005-04-17  jrandom
3437    * Revamp the tunnel building throttles, fixing a situation where the
3438      rebuild may not recover, and defaulting it to unthrottled (users with
3439      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
3440      advanced router config)
3441
34422005-04-16  jrandom
3443    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
3444
34452005-04-12  jrandom
3446    * Make sure we don't get cached updates (thanks smeghead!)
3447    * Clear out the callback for the TestJob after it passes (only affects the
3448      job timing accounting)
3449
34502005-04-08  smeghead
3451    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
3452
34532005-04-08  smeghead
3454    * Security improvements to TrustedUpdate: signing and verification of the
3455      version string along with the data payload for signed update files
3456      (consequently the positions of the DSA signature and version string fields
3457      have been swapped in the spec for the update file's header); router will
3458      no longer perform a trusted update if the signed update's version is lower
3459      than or equal to the currently running router's version.
3460    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
3461    * Extended TrustedUpdate public API for use by third party applications.
3462
3463* 2005-04-06  0.5.0.6 released
3464
34652005-04-05  jrandom
3466    * Retry I2PTunnel startup if we are unable to build a socketManager for a
3467      client or httpclient tunnel.
3468    * Add some basic sanity checking on the I2CP settings (thanks duck!)
3469
34702005-04-05  jrandom
3471    * After a successfull netDb search for a leaseSet, republish it to all of
3472      the peers we have tried so far who did not give us the key (up to 10),
3473      rather than the old K closest (which may include peers who had given us
3474      the key)
3475    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
3476      republish it every 5 minutes, republish it every 3.  In addition, always
3477      republish as soon as the leaseSet changes (duh^2).
3478    * Minor fix for oddball startup race (thanks travis_bickle!)
3479    * Minor AES update to allow in-place decryption.
3480
34812005-04-03  jrandom
3482    * EepGet fix for open-ended HTTP fetches (such as the news.xml
3483      feeding the NewsFetcher)
3484
34852005-04-01  jrandom
3486    * Allow editing I2PTunnel server instances with five digit ports
3487      (thanks nickless_head!)
3488    * More NewsFetcher debugging for reported weirdness
3489
34902005-04-01  jrandom
3491    * Fix to check for missing news file (thanks smeghead!)
3492    * Added destination display CLI:
3493      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
3494    * Added destination display to the web interface (thanks pnspns)
3495    * Installed CIA backdoor
3496
3497* 2005-03-29  0.5.0.5 released
3498
34992005-03-29  jrandom
3500    * Decreased the initial RTT estimate to 10s to allow more retries.
3501    * Increased the default netDb store replication factor from 2 to 6 to take
3502      into consideration tunnel failures.
3503    * Address some statistical anonymity attacks against the netDb that could
3504      be mounted by an active internal adversary by only answering lookups for
3505      leaseSets we received through an unsolicited store.
3506    * Don't throttle lookup responses (we throttle enough elsewhere)
3507    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
3508      the file (thanks nickster!)
3509    * Updated the I2PTunnel HTML (thanks postman!)
3510    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
3511      which, if matched against the router.config "i2ptunnel.passphrase" value,
3512      skips the nonce check.  If the config prop doesn't exist or is blank, no
3513      passphrase is accepted.
3514    * Implemented HMAC-SHA256.
3515    * Enable the tunnel batching with a 500ms delay by default
3516    * Dropped compatability with 0.5.0.3 and earlier releases
3517
35182005-03-26  jrandom
3519    * Added some error handling and fairly safe to cache data to the streaming
3520      lib (good call Tom!)
3521
35222005-03-25  jrandom
3523    * Fixed up building dependencies for the routerconsole on some more
3524      aggressive compilers (thanks polecat!)
3525
3526* 2005-03-24  0.5.0.4 released
3527
35282005-03-23  jrandom
3529    * Added more intelligent version checking in news.xml, in case we have a
3530      version newer than the one specified.
3531
35322005-03-23  jrandom
3533    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
3534      cvsweb.cgi doesn't puke on us.
3535
35362005-03-23  Connelly
3537    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
3538      stream send data to not be sent if STREAM CLOSE is issued too fast.
3539
35402005-03-23  jrandom
3541    * Implemented the news fetch / update policy code, as configurated on
3542      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
3543      doesn't exist yet, on startup).  No action is taken however, though if
3544      the news.xml specifies that a new release is available, an option to
3545      update will be shown on the router console.
3546    * New initialNews.xml delivered with new installs, and moved news.xml out
3547      of the i2pwww module and into the i2p module so that we can bundle it
3548      within each update.
3549
35502005-03-23  jrandom
3551    * New /configupdate.jsp page for controlling the update / notification
3552      process, as well as various minor related updates.  Note that not all
3553      options are exposed yet, and the update detection code isn't in place
3554      in this commit - it currently says there is always an update available.
3555    * New EepGet component for reliable downloading, with a CLI exposed in
3556      java -cp lib/i2p.jar net.i2p.util.EepGet url
3557    * Added a default signing key to the TrustedUpdate component to be used
3558      for verifying updates.  This signing key can be authenticated via
3559      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
3560    * New public domain SHA1 implementation for the DSA code so that we can
3561      handle signing streams of arbitrary size without excess memory usage
3562      (thanks P.Verdy!)
3563    * Added some helpers to the TrustedUpdate to work off streams and to offer
3564      a minimal CLI:
3565          TrustedUpdate keygen pubKeyFile privKeyFile
3566          TrustedUpdate sign origFile signedFile privKeyFile
3567          TrustedUpdate verify signedFile
3568
35692005-03-22  smeghead
3570    * New TrustedUpdate component for signing/verifying files with a DSA
3571      signature.
3572
35732005-03-21  jrandom
3574    * Fixed the tunnel fragmentation handler to deal with multiple fragments
3575      in a single message properly (rather than release the buffer into the
3576      cache after processing the first one) (duh!)
3577    * Added the batching preprocessor which will bundle together multiple
3578      small messages inside a single tunnel message by delaying their delivery
3579      up to .5s, or whenever the pending data will fill a full message,
3580      whichever comes first.  This is disabled at the moment, since without the
3581      above bugfix widely deployed, lots and lots of messages would fail.
3582    * Within each tunnel pool, stick with a randomly selected peer for up to
3583      .5s before randomizing and selecting again, instead of randomizing the
3584      pool each time a tunnel is needed. 
3585
3586* 2005-03-18  0.5.0.3 released
3587
35882005-03-18  jrandom
3589    * Minor tweak to the timestamper to help reduce small skews
3590    * Adjust the stats published to include only the relevent ones
3591    * Only show the currently used speed calculation on the profile page
3592    * Allow the full max # resends to be sent, rather than piggybacking the
3593      RESET packet along side the final resend (duh)
3594    * Add irc.postman.i2p to the default list of IRC servers for new installs
3595    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
3596      backwards compatability for users running 0.5.0.2.
3597
35982005-03-18  jrandom
3599    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
3600    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
3601
36022005-03-17  jrandom
3603    * Update the old speed calculator and associated profile data points to
3604      use a non-tiered moving average of the tunnel test time, avoiding the
3605      freshness issues of the old tiered speed stats.
3606    * Explicitly synchronize all of the methods on the PRNG, rather than just
3607      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
3608      needs all of them synchronized).
3609    * Properly use the tunnel tests as part of the profile stats.
3610    * Don't flood the jobqueue with sequential persist profile tasks, but
3611      instead, inject a brief scheduling delay between them.
3612    * Reduce the TCP connection establishment timeout to 20s (which is still
3613      absurdly excessive)
3614    * Reduced the max resend delay to 30s so we can get some resends in when
3615      dealing with client apps that hang up early (e.g. wget)
3616    * Added more alternative socketManager factories (good call aum!)
3617
36182005-03-16  jrandom
3619    * Adjust the old speed calculator to include end to end RTT data in its
3620      estimates, and use that as the primary speed calculator again.
3621    * Use the mean of the high capacity speeds to determine the fast
3622      threshold, rather than the median.  Perhaps we should use the mean of
3623      all active non-failing peers?
3624    * Updated the profile page to sort by tier, then alphabetically.
3625    * Added some alternative socketManager factories (good call aum!)
3626
36272005-03-14  jrandom
3628    * New strict speed calculator that goes off the actual number of messages
3629      verifiably sent through the peer by way of tunnels.  Initially, this only
3630      contains the successful message count on inbound tunnels, but may be
3631      augmented later to include verified outbound messages, peers queried in
3632      the netDb, etc.  The speed calculation decays quickly, but should give
3633      a better differential than the previous stat (both values are shown on
3634      the /profiles.jsp page)
3635
36362005-03-11  jrandom
3637    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
3638      minimum (increased on resends as before, of course).
3639    * Always prod the clock update listeners, even if just to tell them that
3640      the time hasn't changed much.
3641    * Added support for explicit peer selection for individual tunnel pools,
3642      which will be useful in debugging but not recommended for use by normal
3643      end users.
3644    * More aggressively search for the next hop's routerInfo on tunnel join.
3645    * Give messages received via inbound tunnels that are bound to remote
3646      locations sufficient time (taking into account clock skew).
3647    * Give alternate direct send messages sufficient time (10s min, not 5s)
3648    * Always give the end to end data message the explicit timeout (though the
3649      old default was sufficient before)
3650    * No need to give end to end messages an insane expiration (+2m), as we
3651      are already handling skew on the receiving side.
3652    * Don't complain too loudly about expired TunnelCreateMessages (at least,
3653      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
3654    * Properly keep the sendBps stat
3655    * When running the router with router.keepHistory=true, log more data to
3656      messageHistory.txt
3657    * Logging updates
3658    * Minor formatting updates
3659
36602005-03-08  jrandom
3661    * More aggressively adjust the clock
3662
36632005-03-07  jrandom
3664    * Fix the HTTP response header filter to allow multiple headers with the
3665      same name (thanks duck and spotteri!)
3666
3667* 2005-03-06  0.5.0.2 released
3668
36692005-03-06  jrandom
3670    * Allow the I2PTunnel web interface to select streaming lib options for
3671      individual client tunnels, rather than sharing them across all of them,
3672      as we do with the session options.  This way people can (and should) set
3673      the irc proxy to interactive and the eepproxy to bulk.
3674    * Added a startRouter.sh script to new installs which simply calls
3675      "sh i2prouter start".  This should make it clear how people should start
3676      I2P.
3677    * Properly expand the HTTP response header buffer (thanks shendaras!)
3678
36792005-03-04  jrandom
3680    * Filter HTTP response headers in the eepproxy, forcing Connection: close
3681      so that broken (/malicious) webservers can't allow persistent
3682      connections.  All HTTP compliant browsers should now always close the
3683      socket.
3684    * Enabled the GZIPInputStream's cache (they weren't cached before)
3685    * Make sure our first send is always a SYN (duh)
3686    * Workaround for some buggy compilers
3687
36882005-03-03  jrandom
3689    * Loop while starting up the I2PTunnel instances, in case the I2CP
3690      listener isn't up yet (thanks detonate!)
3691    * Implement custom reusable GZIP streams to both reduce memory churn
3692      and prevent the exposure of data in the standard GZIP header (creation
3693      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
3694      though has only been tested within the confines of I2P's compression use
3695      (DataHelper.[de]compress).
3696    * Preemptively support the next protocol version, so that after the 0.5.0.2
3697      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
3698
36992005-03-02  jrandom
3700    * Fix one substantial OOM cause (session tag manager was only dropping
3701      tags once the critical limit was met, rather than honoring their
3702      expiration) (duh)
3703    * Lots of small memory fixes
3704    * Double the allowable concurrent outstanding tunnel build tasks (20)
3705
37062005-03-01  jrandom
3707    * Really disable the streaming lib packet caching
3708    * Synchronized a message handling point in the SDK (even though its use is
3709      already essentially single threaded, its better to play it safe)
3710    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
3711      existing one (duh)
3712    * Throttle the number of concurrent pending tunnel builds across all
3713      pools, in addition to simply throttling the number of new requests per
3714      minute for each pool individually.  This should avoid the cascading
3715      failure when tunnel builds take too long, as no new builds will be
3716      created until the previous ones are handled.
3717    * Factored out and extended the DataHelper's unit tests for dealing with
3718      long and date formatting.
3719    * Explicitly specify the HTTP auth realm as "i2prouter", though this
3720      alone doesn't address the bug where jetty asks for authentication too
3721      much.  (thanks orion!)
3722    * Updated the StreamSinkServer to ignore all read bytes, rather than write
3723      them to the filesystem.
3724
37252005-02-27  jrandom
3726    * Don't rerequest leaseSets if there are already pending requests
3727    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
3728      temporary disabled the streaming lib packet caching.
3729    * Reduced the resend RTT penalty to 10s
3730
37312005-02-26  jrandom
3732    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
3733
37342005-02-26  jrandom
3735    * Further streaming lib caching improvements
3736    * Reduce the minimum RTT (used to calculate retry timeouts), but also
3737      increase the RTT on resends.
3738    * Lower the default message size to 4KB from 16KB to further reduce the
3739      chance of failed fragmentation.
3740    * Extend tunnel rebuild throttling to include fallback rebuilds
3741    * If there are less than 20 routers known, don't drop the last 20 (to help
3742      avoid dropping all peers under catastrophic failures)
3743    * New stats for end to end messages - "client.leaseSetFoundLocally",
3744      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
3745
37462005-02-24  jrandom
3747    * Throttle the number of tunnel rebuilds per minute, preventing CPU
3748      overload under catastrophic failures (thanks Tracker and cervantes!)
3749    * Block the router startup process until we've initialized the clock
3750
37512005-02-24  jrandom
3752    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
3753      data in the streaming lib.
3754    * Fixed a streaming lib bug where the connection initiator would fail the
3755      stream if the ACK to their SYN was lost.
3756
37572005-02-23  jrandom
3758    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
3759      get stale tunnel pools, don't you think?
3760
3761* 2005-02-23  0.5.0.1 released
3762
37632005-02-22  jrandom
3764    * Reworked the tunnel (re)building process to remove the tokens and
3765      provide cleaner controls on the tunnels built.
3766    * Fixed situations where the timestamper wanted to test more servers than
3767      were provided (thanks Tracker!)
3768    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
3769      (thanks Tracker!)
3770
37712005-02-22  jrandom
3772    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
3773      try to automatically reconnect on accept()/connect(..)).
3774    * Loop check for expired lease republishing (just in case)
3775
37762005-02-22  jrandom
3777    * Adjusted (and fixed...) the timestamper change detection
3778    * Deal with a rare reordering bug at the beginning of a stream (so we
3779      don't drop it unnecessarily)
3780    * Cleaned up some dropped message handling in the router
3781    * Reduced job queue churn when dealing with a large number of tunnels by
3782      sharing an expiration job
3783    * Keep a separate list of the most recent CRIT messages (shown on the
3784      logs.jsp).  This way they don't get buried among any other messages.
3785    * For clarity, display the tunnel variance config as "Randomization" on
3786      the web console.
3787    * If lease republishing fails (boo! hiss!) try it again
3788    * Actually fix the negative jobLag in the right place (this time)
3789    * Allow reseeding when there are less than 10 known peer references
3790    * Lots of logging updates.
3791
37922005-02-20  jrandom
3793    * Allow the streaming lib resend frequency to drop down to 20s as the
3794      minimum, so that up to 2 retries can get sent on an http request.
3795    * Add further limits to failsafe tunnels.
3796    * Keep exploratory and client tunnel testing and building stats separate.
3797    * Only use the 60s period for throttling tunnel requests due to transient
3798      network overload.
3799    * Rebuild tunnels earlier (1-3m before expiration, by default)
3800    * Cache the next hop's routerInfo for participating tunnels so that the
3801      tunnel participation doesn't depend on the netDb.
3802    * Fixed a long standing bug in the streaming lib where we wouldn't always
3803      unchoke messages when the window size grows.
3804    * Make sure the window size never reaches 0 (duh)
3805
38062005-02-20  jrandom
3807    * Only build failsafe tunnels if we need them
3808    * Properly implement the selectNotFailingPeers so that we get a random
3809      selection of peers, rather than using the strictOrdering (thanks dm!)
3810    * Don't include too many "don't tell me about" peer references in the
3811      lookup message - only send the 10 peer references closest to the target.
3812
38132005-02-19  jrandom
3814    * Only build new extra tunnels on failure if we don't have enough
3815    * Fix a fencepost in the tunnel building so that e.g. a variance of
3816      2 means +/- 2, not +/- 1 (thanks dm!)
3817    * Avoid an NPE on client disconnect
3818    * Never select a shitlisted peer to participate in a tunnel
3819    * Have netDb store messages timeout after 10s, not the full 60s (duh)
3820    * Keep session tags around for a little longer, just in case (grr)
3821    * Cleaned up some closing event issues on the streaming lib
3822    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
3823      so that 0.4.* users will need to do a clean install, but we don't need
3824      to shove an additional 2MB in each update to those already on 0.5.
3825    * Imported the susimail css (oops, thanks susi!)
3826
3827* 2005-02-18  0.5 released
3828
38292005-02-17  jrandom
3830    * If the clock is adjusted during a job run, don't act as if the job took
3831      negative time.
3832
38332005-02-17  jrandom
3834    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
3835
38362005-02-17  jrandom
3837    * Fixed the braindead tunnel testing logic
3838    * If a large number of tunnels are failing (within the last 5-10 minutes)
3839      and the current tunnel pool's configuration allows it, randomly build a
3840      zero hop tunnel to replace failed tunnels.
3841    * Enable postman's POP3 and SMTP tunnels by default
3842
38432005-02-16  jrandom
3844    * Added some error handling when the number of session tags exceeds the
3845      realistic capacity, dropping a random chunk of received tag sets and
3846      conducting some minor analysis of the remaining ones.  This is a part
3847      of a pretty serious error condition, and logs as CRIT (if/when people
3848      see "TOO MANY SESSION TAGS!", please let me know the full log line it
3849      puts in the wrapper.log or /logs.jsp)
3850    * Update the addressbook to only write to the published hosts location
3851      if the addressbook's config contains "should_publish=true" (by default,
3852      it contains "should_publish=false")
3853
38542005-02-16  jrandom
3855    * (Merged the 0.5-pre branch back into CVS HEAD)
3856    * Replaced the old tunnel routing crypto with the one specified in
3857      router/doc/tunnel-alt.html, including updates to the web console to view
3858      and tweak it. 
3859    * Provide the means for routers to reject tunnel requests with a wider
3860      range of responses:
3861        probabalistic rejection, due to approaching overload
3862        transient rejection, due to temporary overload
3863        bandwidth rejection, due to persistent bandwidth overload
3864        critical rejection, due to general router fault (or imminent shutdown)
3865      The different responses are factored into the profiles accordingly.
3866    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
3867      with a series of new properties, relevent to the new tunnel routing code:
3868        inbound.nickname (used on the console)
3869        inbound.quantity (# of tunnels to use in any leaseSets)
3870        inbound.backupQuantity (# of tunnels to keep in the ready)
3871        inbound.length (# of remote peers in the tunnel)
3872        inbound.lengthVariance (if > 0, permute the length by adding a random #
3873                                up to the variance.  if < 0, permute the length
3874                                by adding or subtracting a random # up to the
3875                                variance)
3876        outbound.* (same as the inbound, except for the, uh, outbound tunnels
3877                    in that client's pool)
3878      There are other options, and more will be added later, but the above are
3879      the most relevent ones.
3880    * Replaced Jetty 4.2.21 with Jetty 5.1.2
3881    * Compress all profile data on disk.
3882    * Adjust the reseeding functionality to work even when the JVM's http proxy
3883      is set.
3884    * Enable a poor-man's interactive-flow in the streaming lib by choking the
3885      max window size.
3886    * Reduced the default streaming lib max message size to 16KB (though still
3887      configurable by the user), also doubling the default maximum window
3888      size.
3889    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
3890    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
3891      the first byte of the SHA256.
3892    * Added a new "netId" flag to let routers drop references to other routers
3893      who we won't be able to talk to.
3894    * Extended the timestamper to get a second (or third) opinion whenever it
3895      wants to actually adjust the clock offset.
3896    * Replaced that kludge of a timestamp I2NP message with a full blown
3897      DateMessage.
3898    * Substantial memory optimizations within the router and the SDK to reduce
3899      GC churn.  Client apps and the streaming libs have not been tuned,
3900      however.
3901    * More bugfixes than you can shake a stick at.
3902
39032005-02-13  jrandom
3904    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
3905      only contains 32bit versions, so build your own, placing libjbigi.so in
3906      your install dir if necessary.  (thanks mule!)
3907    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
3908      (thanks spaetz!)
3909
39102005-02-10  smeghead
3911    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
3912      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
3913      Pants are still non-functional at this time so don't mess with it yet
3914      unless you want to potentially mangle your working copy of CVS.
3915
39162005-02-09  duck
3917    * Allow an unneeded newline in the SAM client connection without
3918      disconnecting.
3919
39202005-02-07  jrandom
3921    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
3922
39232005-02-06  Sugadude
3924    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
3925
39262005-02-03  smeghead
3927    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
3928      library from GNU Crypto's CVS HEAD sources.
3929
39302005-01-26  smeghead
3931    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
3932      packages and installed to $i2pinstalldir/scripts.
3933    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
3934      using gij + libgcj, and --sourcedir to run them from the source tree
3935      instead of the installation directory.
3936    * Fixed unreachable for() statement clause in the KBucketImpl class that was
3937      causing gcj to toss a compilation warning (jrandom++).
3938
39392005-01-26  smeghead
3940    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
3941      tests and benchmarks.
3942    * Routerconsole now builds under gcj 3.4.3.
3943    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
3944
39452005-01-25  smeghead
3946    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
3947      supporting apps (except for the routerconsole which is still being
3948      investigated).
3949
39502005-01-24  smeghead
3951    * C#-ification of sam-sharp: interface greatly simplified using delegates
3952      and events; SamBaseEventHandler provides basic implementation and helper
3953      methods but is now optional.
3954    * NAnt buildfile and README added for sam-sharp.
3955
39562005-01-23  smeghead
3957    * Port the java SAM client library to mono/C# and released into the
3958      public domain.  The 0.1 version of this port is available in CVS as
3959      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
3960      library has been removed.
3961
39622005-01-21  Jhor
3963    * Updated jbigi build scripts for OSX.
3964
39652005-01-21  jrandom
3966    * Added support for OSX to the NativeBigInteger code so that it will look
3967      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
3968      is not bundled with the shipped jbigi.jar yet though.
3969
39702005-01-18  jrandom
3971    * Increased the max # session tags maintained and decreased slightly the
3972      period over which they are gathered.
3973
39742005-01-17  jrandom
3975    * Added meaningful support for adjusting the preferred message size in the
3976      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
3977      whatever).  The other side will mimic a reduction (but never an increase).
3978    * Always make sure to use distinct ConnectionOption objects for each
3979      connection (duh)
3980    * Reduced the default ACK delay to 500ms on in the streaming lib
3981    * Only shrink the streaming window once per window
3982    * Don't bundle a new jetty.xml with updates
3983    * Catch another local routerInfo corruption issue on startup.
3984
39852005-01-15  cervantes
3986    * Added support to the eepproxy for URLs such as
3987      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
3988      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
3989
39902005-01-15  jrandom
3991    * Caught a series of (previously unhandled) errors caused by requeueing
3992      messages that had timed out on the TCP transport (thanks mae^!)
3993    * Reduce the barrier to dropping session tags on streaming lib resends -
3994      every fourth send should drop the tags, forcing ElGamal encryption.  This
3995      will help speed up the recovery after a disconnect, rather than the drop
3996      every fifth send.
3997
3998* 2005-01-06  0.4.2.6 released
3999
40002005-01-06  jrandom
4001    * Added a startup message to the addressbook, printing its version number
4002      to stdout (which is sent to wrapper.config) when it loads.
4003    * Updated the addressbook to reread the config file periodically
4004    * Added orion.i2p to the list of eepsites on the default homepage
4005
40062005-01-05  jrandom
4007    * Handle unexpected network read errors more carefully (thanks parg!)
4008    * Added more methods to partially compare (DataHelper) and display
4009      arrays (Base64.encode).
4010    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
4011    * Be more generous on the throttle when just starting up the router
4012    * Fix a missing scheduled event in the streaming lib (caused after reset)
4013    * Add a new DisconnectListener on the I2PSocketManager to allow
4014      notification of session destruction.
4015    * Make sure our own router identity is valid, and if it isn't, build a new
4016      one and restart the router.  Alternately, you can run the Router with
4017      the single command line argument "rebuild" and it will do the same.
4018
40192004-12-31  ragnarok
4020    * Integrated latest addressbook changes (2.0.3) which include support for
4021      deploying as a .war file with no existing addressbook configuration.
4022    * Updated main build process to bundle the addressbook.war in the
4023      i2pinstall.jar and i2pupdate.zip.
4024
40252004-12-31  jrandom
4026    * Speling fxi (thanks digum!)
4027    * Bugfix for the I2PTunnel web interface so that it now properly launches
4028      newly added tunnels that are defined to be run on startup (thanks ugha!)
4029
40302004-12-30  jrandom
4031    * Revised the I2PTunnel client and httpclient connection establishment
4032      throttles.  There is now a pool of threads that build the I2PSocket
4033      connections with a default size of 5, configurable via the I2PTunnel
4034      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
4035      not throttle the number of concurrent builders, but will launch a thread
4036      per socket during establishment).  In addition, sockets accepted but
4037      not yet allocated to one of the connection builders will be destroyed
4038      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
4039      0, it will wait indefinitely).
4040
40412004-12-29  jrandom
4042    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
4043      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
4044    * Don't treat connection inactivity closure as a connection error.
4045
40462004-12-29  jrandom
4047    * Add in a new keepalive event on each TCP connection, proactively sending
4048      a (tiny) time message every minute or two, as well as killing the
4049      connection if no message has been fully sent within 5 minutes or so. 
4050      This should help deal with hung connections from IP address changes.
4051
40522004-12-28  jrandom
4053    * Cleaned up the resending and choking algorithm in the streaming lib.
4054    * Removed the read timeout override for I2PTunnel's httpclient, allowing
4055      it to use the default for the streaming lib.
4056    * Revised ack triggers in the streaming lib.
4057    * Logging.
4058
4059* 2004-12-21  0.4.2.5 released
4060
40612004-12-21  jrandom
4062    * Track a new stat for expired client leases (client.leaseSetExpired).
4063
40642004-12-21  jrandom
4065    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
4066      and added windows info to the headless docs. (thanks ardvark!)
4067    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
4068      a stream (thanks frosk!)
4069    * Add a pair of new stats for monitoring tunnel participation -
4070      tunnel.participatingBytesProcessed (total # bytes transferred) and
4071      tunnel.participatingBytesProcessedActive (total # bytes transferred for
4072      tunnels whose byte count exceed the 10m average).  This should help
4073      further monitor congestion issues.
4074    * Made the NamingService factory property public (thanks susi!)
4075
40762004-12-20  jrandom
4077    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
4078    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
4079      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
4080      reasoning is gone.
4081
40822004-12-19  jrandom
4083    * Fix for a race on startup wrt the new stats (thanks susi!)
4084
40852004-12-19  jrandom
4086    * Added three new stats - router.activePeers, router.fastPeers, and
4087      router.highCapacityPeers, updated every minute
4088
40892004-12-19  jrandom
4090    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
4091      hostname should be sent to the webserver.  By default, new installs will
4092      have an httpserver pointing at their jetty instance with the spoofed
4093      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
4094
40952004-12-19  scintilla
4096    * Convert native jcpuid code from C++ to C. This should alleviate build
4097      problems experienced by some users.
4098
4099* 2004-12-18  0.4.2.4 released
4100
41012004-12-16  jrandom
4102    * Catch another oddball case for a reset connection in the streaming lib.
4103    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
4104      dumps the current state of that peer's profile.  Instead of the full
4105      base64, you can pass in however many characters you have and it will
4106      return the first match found.
4107
41082004-12-16  jrandom
4109    * Remove the randomized factor in the tunnel rejection by bandwidth -
4110      we now accept the request if we've allocated less than our limit
4111      and reject it if we've allocated more.
4112    * Stick to the standard capacity scale on tunnel rejection, even for
4113      the 10m period.
4114    * Build the time message at the very last possible moment
4115
41162004-12-15  jrandom
4117    * Handle hard disconnects more gracefully within the streaming lib, and
4118      log unmonitored events more aggressively.
4119    * If we drop a peer after connection due to clock skew, log it to the
4120      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
4121      the stat 'tcp.disconnectAfterSkew'.
4122    * Fixed the formatting in the skew display
4123    * Added an ERROR message that is fired once after we run out of
4124      routerInfo files (thanks susi!)
4125    * Set the connect timeout equal to the streaming lib's disconnect timeout
4126      if not already specified (the I2PTunnel httpclient already enforces a
4127      60s connect timeout)
4128    * Fix for another connection startup problem in the streaming lib.
4129    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4130    * Adjust the capacity calculations so that tunnel failures alone in the
4131      last 10m will not trigger a 0 capacity rank.
4132
41332004-12-14  jrandom
4134    * Periodically send a message along all I2NP connections with the router's
4135      current time, allowing the receiving peer to determine that the clock
4136      has skewed too much, and hence, disconnect.  For backwards compatability
4137      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4138      next time we have a backwards compatability break, we can put in a proper
4139      message setup for it.
4140
41412004-12-14  jrandom
4142    * Reenable the probabalistic drop on the TCP queues to deal with good old
4143      fashioned bandwidth limiting.  However, by default the probability is
4144      rigged to reserve 0% of the queue free - meaning we just aggressively
4145      fail messages in the queue if we're transferring too slowly.  That
4146      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4147      (or whatever) and the drop code can be disabled with the parameter
4148      'tcp.dropProbabalistically=false'.
4149    * Still penalize a peer on tunnel failure, but don't immediately drop
4150      their capacity to 0.
4151    * More aggressively ACK duplicates
4152    * Randomize the timestamper period
4153    * Display the clock skew on the connection logs when a peer sends it.
4154    * Allow the timestamper to fix skews of up to 10 minutes
4155    * Logging
4156
41572004-12-13  jrandom
4158    * Added some error checking on the new client send job (thanks duck!)
4159    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4160      proportional to the bytes allocated in existing tunnels vs the bytes
4161      allowed through the bandwidth limiter).
4162    * Enable a new configuration parameter for triggering a tunnel rebuild
4163      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4164      before killing the tunnel (default 0).
4165    * Gather more data that we rank capacity by (now we monitor and balance the
4166      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4167    * Fix a truncation/type conversion problem on the long term capacity
4168      values (we were ignoring the daily stats outright)
4169
41702004-12-11  jrandom
4171    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4172      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4173      on .connect, but is unable to transfer any data in any direction.  We now
4174      detect that condition for the I2PTunnelHTTPClient and throw up the right
4175      error page.
4176    * Logging
4177
41782004-12-11  jrandom
4179    * Use a simpler and less memory intensive job for processing outbound
4180      client messages when the session is in mode=bestEffort.  We can
4181      immediately discard the data as soon as its sent the first time,
4182      rather than wait for an ack, since we will never internally resend.
4183    * Reduce some synchronization to avoid a rare deadlock
4184    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4185      case it within the tunnel controller.
4186    * Script cleanup for building jbigi/jcpuid
4187    * Logging
4188
4189* 2004-12-08  0.4.2.3 released
4190
41912004-12-08  jrandom
4192    * Revised the buffering when reading from the SAM client and writing
4193      to the stream.  Also added a thread (sigh) so we don't block the
4194      SAM client from giving us more messages for abnormally long periods
4195      of time.
4196    * Display the router version in the logs on startup (oft requested)
4197    * Fix a race during the closing of a messageOutputStream
4198
41992004-12-06  jrandom
4200    * Don't do a 'passive flush' while there are already outbound messages
4201      unacked.
4202    * Show the reseed link if up to 10 peers profiles are active (thanks
4203      dburton!)
4204
42052004-12-06  jrandom
4206    * Don't propogate streaming connection failures out to the SAM bridge as
4207      fatal errors.
4208    * Dont barf on repeated I2CP closure.
4209
42102004-12-05  jrandom
4211    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4212      getLocalhost call
4213
42142004-12-05  jrandom
4215    * Default the I2CP listener to localhost only, unless overridden by
4216      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4217    * More SAM fixes for things recently broken (whee)
4218
42192004-12-05  jrandom
4220    * Fix the recently broken SAM bridge (duh)
4221    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4222      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4223      StreamSink and StreamSend apps for transferring files.
4224    * Make the passive flush timer fire more frequently.
4225
42262004-12-05  jrandom
4227    * Fixed some links in the console (thanks ugha!) and the javadoc
4228      (thanks dinoman!)
4229    * Fix the stream's passive flush timer (oh, its supposed to work?)
4230
42312004-12-03  jrandom
4232    * Toss in a small pool of threads (3) to execute the events queued up with
4233      the SimpleTimer, as we do currently see the occational event
4234      notification spiking up to a second or so.
4235    * Implement a SAM client API in java, useful for event based streaming (or
4236      for testing the SAM bridge)
4237    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4238      bridge is being run outside of the router).
4239    * Include the SAM test code in the sam.jar
4240    * Remove an irrelevent warning message from SAM, which was caused by
4241      perfectly normal operation due to a session being closed.
4242    * Removed some unnecessary synchronization in the streaming lib's
4243      PacketQueue
4244    * More quickly clean up the memory used by the streaming lib by
4245      immediately killing each packet's resend job as soon as it is ACKed (or
4246      cancelled), so that there are no longer any valid pointers to the
4247      (potentially 32KB) packet.
4248    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4249    * Drop packets that would expand our inbound window beyond our maximum
4250      buffer size (default 32 messages)
4251    * Always read the ACK/NACK data from the verified packets received, even
4252      if we are going to drop them
4253    * Always adjust the window when there are messages ACKed, though do not
4254      change its size except as before.
4255    * Streamlined some synchronization in the router's I2CP handling
4256    * Streamlined some memory allocation in the SAM bridge
4257    * Default the streaming lib to disconnect on inactivity, rather than send
4258      an empty message.
4259
42602004-12-01  jrandom
4261    * Fix for a race in the streaming lib as caused by some odd SAM activity
4262
4263* 2004-12-01  0.4.2.2 released
4264
42652004-12-01  jrandom
4266    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4267      connections to work (thanks duck!)
4268    * Make sure we override the inactivity timeout too
4269
4270* 2004-12-01  0.4.2.1 released
4271
42722004-12-01  jrandom
4273    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4274      include the forged User-agent header.
4275    * Adjust the default read timeout on the eepproxy to 60s, unless
4276      overridden.
4277    * Minor tweak on stream shutdown.
4278
42792004-11-30  jrandom
4280    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4281    * Build in a simple timeout to flush data queued into the I2PSocket but
4282      not yet flushed.
4283    * Don't explicitly flush after each SAM stream write, but leave it up to
4284      the [nonblocking] passive flush.
4285    * Don't whine about 10-99 connection events occurring in a second
4286    * Don't wait for completion of packets that will not be ACKed (duh)
4287    * Adjust the congestion window, even if the packet was resent (duh)
4288    * Make sure to wake up any blocking read()'s when the MessageInputStream
4289      is close()ed (duh)
4290    * Never wait more than the disconnect timeout for a write to complete
4291
42922004-11-29  jrandom
4293    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4294
42952004-11-29  jrandom
4296    * Reduced contention for local client delivery
4297    * Drop the new code that munges the wrapper.config.  Instead, updates that
4298      need to change it will include their own wrapper.config in the
4299      i2pupdate.zip, overwriting the existing file.  If the file
4300      "wrapper.config.updated" is included, it is deleted at first opportunity
4301      and the router shut down, displaying a notice that the router must be
4302      started again cleanly to allow the changes to the wrapper.config to take
4303      effect.
4304    * Properly stop accept()ing I2PSocket connections if we close down the
4305      session (duh).
4306    * Make sure we cancel any outstanding Packets in flight when a connection
4307      is terminated (thanks susi!)
4308    * Split up the I2PTunnel closing a little further.
4309
43102004-11-28  jrandom
4311    * Accept IP address detection changes with a 2-out-of-3 minimum.
4312    * As long as the router is up, keep retrying to bind the I2CP listener.
4313    * Decrease the java service wrapper ping frequency to once every 10
4314      minutes, rather than once every 5 seconds.
4315
43162004-11-27  jrandom
4317    * Some cleanup and bugfixes for the IP address detection code where we
4318      only consider connections that have actually sent and received messages
4319      recently as active, rather than the mere presence of a TCP socket as
4320      activity.
4321
43222004-11-27  jrandom
4323    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4324      lib can do that (without an additional per-connection thread).
4325    * Close the I2PTunnel forwarder threads more aggressively
4326
43272004-11-27  jrandom
4328    * Fix for a fast loop caused by a race in the new streaming library (thanks
4329      DrWoo, frontier, pwk_, and thetower!)
4330    * Minor updates to the SimpleTimer and Connection to help track down a
4331      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4332      many events/tasks fire in a second)
4333    * Minor fixes for races on client disconnects (causing NPEs)
4334
4335* 2004-11-26  0.4.2 released
4336
43372004-11-26  jrandom
4338    * Enable the new streaming lib as the default.  That means, for any
4339      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4340
43412004-11-25  jrandom
4342    * Revised the installer to include start menu and desktop shortcuts for
4343      windows platforms, including pretty icons (thanks DrWoo!)
4344    * Allow clients specified in clients.config to have an explicit startup
4345      delay.
4346    * Update the default install to launch a browser pointing at the console
4347      whenever I2P starts up, rather than only the first time it starts up
4348      (configurable on /configservice.jsp, or in clients.config)
4349    * Bugfix to the clock skew checking code to monitor the delta between
4350      offsets, not the offset itself (duh)
4351    * Router console html update
4352    * New (and uuuuugly) code to verify that the wrapper.config contains
4353      the necessary classpath entries on update.  If it has to update the
4354      wrapper.config, it will stop the JVM and service completely, since the
4355      java service wrapper doesn't reread the wrapper.config on JVM restart -
4356      requiring the user to manually restart the service after an update.
4357    * Increase the TCP connection timeout to 30s (which is obscenely long)
4358
43592004-11-22  jrandom
4360    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4361    * New stat to keep track of slow jobs (ones that take more than a second
4362      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4363
43642004-11-21  jrandom
4365    * Update the I2PTunnel web interface to include an option for the new
4366      streaming lib (which is ignored until the 0.4.2 release).
4367    * Revised the I2PTunnel web interface to keep the I2CP options of client
4368      and httpclient tunnels in sync, as they all share the same I2CP session.
4369
43702004-11-21  jrandom
4371    * Only allow small clock skews after the first 10 minutes of operation
4372      (to prevent later network lag bouncing us way off course - yes, we
4373      really need an NTP impl to balance out the network burps...)
4374    * Revamp the I2PTunnel web interface startup process so that everything
4375      is shown immediately, so that different pieces hanging don't hang
4376      the rest, and other minor bugfixes.
4377    * Take note of SAM startup error (in case you're already running a SAM
4378      bridge...)
4379    * Increase the bandwidth limiter burst values available to 10-60s (or
4380      whatever is placed in /configadvanced.jsp, of course)
4381
43822004-11-21  jrandom
4383    * Allow end of line comments in the hosts.txt and other config files,
4384      using '#' to begin the comments (thanks susi!)
4385    * Add support to I2PTunnel's 'client' feature for picking between multiple
4386      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4387    * Add a quick link on the left hand nav to reseed if there aren't enough
4388      known peers, as well as link to the config page if there are no active
4389      peers.  Revised config page accordingly.
4390
43912004-11-21  jrandom
4392    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4393      rather that every 15 minutes, and increase the warning period in which
4394      we refresh tags from 30s to 2 minutes.
4395    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4396      to close the I2PSocket (leaving it to timeout).
4397
43982004-11-19  jrandom
4399    * Off-by-one fix to the tunnel pool management code, along side some
4400      explicit initialization.  This can affect clients whose lengths are
4401      shorter than the router's default (thanks duck!)
4402
44032004-11-17  jrandom
4404    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4405      Ragnarok!)
4406
44072004-11-17  jrandom
4408    * Minor logging update.
4409
44102004-11-16  jrandom
4411    * Clean up the propogation of i2psocket options so that various streaming
4412      libs can honor them more precisely
4413
44142004-11-16  jrandom
4415    * Minor logging update
4416
44172004-11-14  jrandom
4418    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
4419    * Fix a leak injected into the SimpleTimer
4420    * Fix a race condition in the tunnel message handling
4421
44222004-11-13  jrandom
4423    * Added throttles on how many I2PTunnel client connections we open at once
4424    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
4425      the streaming library used should take care of any buffering.
4426    * Added a cache for some objects used in I2PTunnel, especially useful when
4427      there are many short lived connections.
4428    * Trimmed the SimpleTimer's processing a bit
4429
44302004-11-10  jrandom
4431    * Allow loading the (mini)streaming connection options from the
4432      environment.
4433    * More defensive programming in the DSA implementation.
4434
44352004-11-08  jrandom
4436    * Remove spurious flush calls from I2PTunnel, and work with the
4437      I2PSocket's output stream directly (as the various implementations
4438      do their own buffering).
4439    * Another pass at a long standing JobQueue bug - dramatically simplify
4440      the job management synchronization since we dont need to deal with
4441      high contention (unlike last year when we had dozens of queue runners
4442      going at once).
4443    * Logging
4444
44452004-11-08  jrandom
4446    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
4447
4448* 2004-11-06  0.4.1.4 released
4449
44502004-11-06  jrandom
4451    * Expose a drop down on the /configclients.jsp to enter the outbound
4452      tunnel depth.
4453    * Improved *hosts.txt loading
4454    * Explicitly override the JVM's timezone settings to use GMT so that
4455      any client applications which use timezones won't leak sensitive
4456      data (thanks gott!)
4457    * Bundle sam.jar in the update (thanks duck!)
4458
44592004-11-06  jrandom
4460    * Fix for a long standing synchronization bug in the SDK that in rare
4461      instances can add a few seconds of lag.
4462
44632004-11-05  jrandom
4464    * Bugfixes and unit tests for the SAM bridge to handle quoted message
4465      parameters, verify proper operation after multiple session lifetimes,
4466      as well as some synchronization problems.
4467    * New properties method on the DataHelper class.
4468    * Address a race on fast disconnecting clients
4469
44702004-11-02  jrandom
4471    * Fix for a long standing synchronization bug in the JobQueue (and added
4472      some kooky flags to make sure it stays dead)
4473    * Update the ministreaming lib to force mode=guaranteed if the default
4474      lib is used, and mode=best_effort for all other libs.
4475
44762004-11-02  jrandom
4477    * Fixed up the configuration overrides for the streaming socket lib
4478      integration so that it properly honors env settings.
4479    * More memory usage streamlining (last major revamp for now, i promise)
4480
44812004-11-01  jrandom
4482    * Increase the tunnel test timeout rapidly if our tunnels are failing.
4483    * Honor message expirations for some tunnel jobs that were prematurely
4484      expired.
4485    * Streamline memory usage with temporary object caches and more efficient
4486      serialization for SHA256 calculation, logging, and both I2CP and I2NP
4487      message handling.
4488    * Fix some situations where we forward messages too eagerly.  For a
4489      request at the tunnel endpoint, if the tunnel is inbound and the target
4490      is remote, honor the message by tunnel routing the data rather than
4491      sending it directly to the requested location.
4492
44932004-10-30  jrandom
4494    * Cache the temporary objects used in the AES encryption/decryption
4495      process so that AES doesn't require any memory allocation to process
4496      data.
4497    * Dramatically reduce memory usage within various crypto implementations
4498      by avoiding unnecessary (though simplifying) buffers.
4499    * If we specify some tags to be sent in an I2CP message explicitly, use
4500      only those, not those plus a new set (otherwise we aren't sure on ACK
4501      which set was delivered)
4502    * Allow configuration for the partial send timeout (how long before
4503      resending a message down a different tunnel in a lease).  This can be
4504      updated with the "router.clientPartialSendTimeout" router config prop.
4505    * Logging
4506
45072004-10-29  jrandom
4508    * Strip the Referer, Via, and From headers completely, rather than
4509      inserting a bogus value ("i2p").  This should help with the use of
4510      SnipSnap and Geeklog (thanks nickster and DrWoo!)
4511
45122004-10-27  jrandom
4513    * Fix a strange race condition on i2cp client disconnect.
4514    * win98 startup fixes (thanks tester-1 and ardvark!)
4515    * include build scripts for the new streaming lib (which is NOT ready
4516      for use yet, but you can hack around with it)
4517
45182004-10-24  jrandom
4519    * Allow explicit inclusion of session tags in the SDK, enabling the
4520      resending of tags bundled with messages that would not otherwise
4521      be ACKed.
4522    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
4523      no DeliveryStatusMessage will be bundled (and as such, client apps using
4524      it will need to do their own session tag ack/nack).
4525    * Handle client errors when notifying them of message availability.
4526    * New StreamSinkSend which sends a file to a destination and disconnects.
4527    * Update the I2PSocketManagerFactory to build the specific
4528      I2PSocketManager instance based on the "i2p.streaming.manager" property,
4529      containing the class name of the I2PSocketManager to instantiate.
4530
45312004-10-23  jrandom
4532    * Minor ministreaming lib refactoring to simplify integration of the full
4533      streaming lib.
4534    * Minor bugfixes to data structure serialization.
4535
4536* 2004-10-18  0.4.1.3 released
4537
45382004-10-18  jrandom
4539    * Allow sending messages with a section of a byte array.
4540    * Reduced stats published.
4541
45422004-10-17  jrandom
4543    * Don't b0rk on whitespace in the router address.
4544
45452004-10-16  jrandom
4546    * More aggressively reduce the capacity of peers if their tunnels are
4547      failing so that we move off them quicker.
4548    * Simplify some data structure serialization for reuse in the streaming
4549      lib, as well as add support for signing and verifying partial byte
4550      arrays.
4551    * Logging updates
4552
45532004-10-16  jrandom
4554    * Increased the default minimum tunnel test time to 5 seconds, since we
4555      still see the occational message processing time spike to 2 seconds.
4556    * Update the SimpleTimer to allow rescheduling a task thats already
4557      queued (useful for the new streaming lib).
4558
45592004-10-15  jrandom
4560    * Replaced old minimum tunnel test timeout of 1s with a configurable
4561      value (router.config property "router.tunnelTestMinimum", with the
4562      default of 2s).
4563
45642004-10-14  jrandom
4565    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
4566      peer, so don't use it as a key point of the IsFailing calculator.
4567      We still use it as a key point of the Capacity calculator, however.
4568
45692004-10-14  jrandom
4570    * Allow for a configurable tunnel "growth factor", rather than trying
4571      to achieve a steady state.  This will let us grow gradually when
4572      the router is needed more, rather than blindly accepting the request
4573      or arbitrarily choking it at an averaged value.  Configure this with
4574      "router.tunnelGrowthFactor" in the router.config (default "1.5").
4575    * Adjust the tunnel test timeouts dynamically - rather than the old
4576      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
4577      test time (the deviation factor can be adjusted by setting
4578      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
4579      find the 'good' tunnels.
4580    * Added some crazy debugging to try and track down an intermittent hang.
4581
45822004-10-13  jrandom
4583    * Fix the probabalistic tunnel reject (we always accepted everything,
4584      since the docs on java.util.Random.nextDouble() are wrong..)
4585    * Fixed a race on startup (thanks Quadn!)
4586
45872004-10-12  jrandom
4588    * Disable the probabalistic drop by default (enable via the router config
4589      property "tcp.dropProbabalistically=true")
4590    * Disable the actual watchdog shutdown by default, but keep track of more
4591      variables and log a lot more when it occurs (enable via the router
4592      config property "watchdog.haltOnHang=true")
4593    * Implement some tunnel participation smoothing by refusing requests
4594      probabalistically as our participating tunnel count exceeds the previous
4595      hour's, or when the 10 minute average tunnel test time exceeds the 60
4596      minute average tunnel test time.  The probabilities in both cases are
4597      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
4598      and you had previously only participated in 50, you'll have a 25% chance
4599      of accepting a subsequent request.
4600
4601* 2004-10-10  0.4.1.2 released
4602
46032004-10-10  cervantes
4604    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
4605      the request.
4606
46072004-10-09  jrandom
4608    * Added a watchdog timer to do some baseline liveliness checking to help
4609      debug some odd errors.
4610    * Added a pair of summary stats for bandwidth usage, allowing easy export
4611      with the other stats ("bw.sendBps" and "bw.receiveBps")
4612    * Trimmed another memory allocation on message reception.
4613
46142004-10-08  jrandom
4615    * Revamp the AESInputStream so it doesn't allocate any temporary objects
4616      during its operation.
4617
46182004-10-08  jrandom
4619    * Don't kill the establisher threads during a soft restart.
4620    * Attempt to validate the peer's routerInfo earlier during handshaking.
4621    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
4622      during its operation.
4623
46242004-10-07  jrandom
4625    * Reimplement the I2NP reading with less temporary memory allocation.
4626      There is still significant GC churn, especially under load, but this
4627      should help.
4628    * Catch some oddball errors in the transport (message timeout while
4629      establishing).
4630
46312004-10-07  jrandom
4632    * Expire queued messages even when the writer is blocked.
4633    * Reimplement most of the I2NP writing with less temporary memory
4634      allocations (I2NP reading still gobbles memory).
4635
46362004-10-06  jrandom
4637    * Implement an active queue management scheme on the TCP transports,
4638      dropping messages probabalistically as the queue fills up.  The
4639      estimated queue capacity is determined by the rate at which messages
4640      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
4641      we exceed 1/2 of the estimated capacity, we drop messages throughout
4642      the queue probabalistically with regards to their size.  This is based
4643      on RFC 2309's RED, with the minimum threshold set to 1/2 the
4644      estimated connection capacity.  We may want to consider using a send
4645      rate and queue size measured across all connections, to deal with our
4646      own local bandwidth saturation, but we'll try the per-con metrics first.
4647
46482004-10-06  jrandom
4649    * Enable explicit disabling of the systray entirely for windows machines
4650      with strange configurations: add -Dsystray.disable=true to the java
4651      command line.  (thanks mihi!)
4652
46532004-10-05  jrandom
4654    * Allow peers on the same LAN to communicate with each other safely even
4655      when they cannot talk to each other through the external address.
4656
46572004-10-05  jrandom
4658    * Display how much time is left before the graceful shutdown is complete.
4659    * Debug some improperly failed messages on timeout or disconnection.
4660
46612004-10-05  jrandom
4662    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
4663      (thanks mule!)
4664    * Handle some more error conditions regarding abruptly closing sockets
4665      (thanks Jonva!)
4666
46672004-10-04  jrandom
4668    * Update the shitlist to reject a peer for an exponentially increasing
4669      period of time (with an upper bounds of an hour). 
4670    * Various minor stat and debugging fixes
4671
46722004-10-03  jrandom
4673    * Add a new stat logging component to optionally dump the raw stats to
4674      disk as they are generated, rather than rely upon the summarized data.
4675      By default, this is off, but the router property "stat.logFilters" can
4676      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
4677      which will be written to the file "stats.log" (or whatever the property
4678      "stat.logFile" is set to).  This can also log profile related stats,
4679      such as "dbResponseTime" or "tunnelTestResponseTime".
4680
46812004-10-02  jrandom
4682    * Assure that we quickly fail messages bound for shitlisted peers.
4683    * Address a race on startup where the first peer contacted could hang the
4684      router (thanks Romster!)
4685    * Only whine about an intermittent inability to query the time server once
4686
46872004-10-02  jrandom
4688    * Command line utility to verify a peer's reachability - simply run
4689      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
4690      will print out whether that peer is reachable or not (using a simple
4691      verification handshake).
4692
4693* 2004-10-01  0.4.1.1 released
4694
46952004-10-01  jrandom
4696    * Handle partial reseeds, caused by seeds going away before the download
4697      completes (thanks Sugadude!)
4698
46992004-10-01  jrandom
4700    * Explicitly refuse IPv6 addresses, since only some peers support
4701      them and we want fully reachable peers.
4702
47032004-10-01  jrandom
4704    * Additional error handling for a variety of transport layer errors.
4705
4706* 2004-09-30  0.4.1 released (not backwards compatible)
4707
47082004-09-30  jrandom
4709    * Bundle the configuration necessary to run an eepsite out of the box
4710      with Jetty - simply edit ./eepsite/docroot/index.html and give people
4711      the key listed on the I2PTunnel configuration page, and its up.
4712    * Router console cleanup, and some (off by default) tunnels -
4713      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
4714      irc.baffled.i2p (port 7661)
4715
47162004-09-29  jrandom
4717    * Always wipe the Jetty work directory on startup, so that web updates
4718      are reflected immediately (Jetty does not honor the cache across
4719      multiple executions)
4720
47212004-09-27  jrandom
4722    * Limit the number of connection tags saved to 10,000.  This is a huge
4723      limit, but consumes no more than 1MB of RAM.  For now, we drop them
4724      randomly after reaching that size, forcing those dropped peers to use
4725      a full DH negotiation.
4726    * HTML cleanup in the console.
4727
47282004-09-26  jrandom
4729    * Complete rewrite of the TCP transport with IP autodetection and
4730      low CPU overhead reconnections.  More concise connectivity errors
4731      are listed on the /oldconsole.jsp as well.  The IP autodetection works
4732      by listening to the first person who tells you what your IP address is
4733      when you have not defined one yourself and you have no other TCP
4734      connections.
4735    * Update to the I2NP message format to add transparent verification at
4736      the I2NP level (beyond standard TCP verification).
4737    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
4738      implementation (rather than verifying with E(H(key)), we now verify with
4739      E(H(iv))).
4740    * The above changes are NOT BACKWARDS COMPATIBLE.
4741    * Removed all of the old unused PHTTP code.
4742    * Refactor various methods and clean up some javadoc.
4743
47442004-09-21  jrandom
4745    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
4746      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
4747      but values stored in the later take precedence.  Both are queried on
4748      lookup.
4749
47502004-09-16  jrandom
4751    * Refactor the TCP transport to deal with changing identities gracefully,
4752      and to prevent some wasted effort by keeping track of what host+port
4753      combinations we are connected to (rather than just the identities).  Also
4754      catch a few configuration errors earlier.
4755    * Removed no longer relevent methods from the Transport API that were
4756      exposing ideas that probably shouldn't be exposed.
4757    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
4758      updates)
4759
47602004-09-13  jrandom
4761    * Update for the SDK reconnection to deal with overflow.
4762    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
4763      rounding on lifetime bandwidth used [thanks gott!]).
4764
4765* 2004-09-08  0.4.0.1 released
4766
47672004-09-08  jrandom
4768    * Updated the "Active:" peer count to display the # of connections as well
4769      as the number of recently active router identities.
4770    * Implement some basic updating code - on startup, if there is a file named
4771      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
4772      then restart.
4773    * Added an ugly little script to allow launching the router on win9x
4774      machines without a dos box (using javaw to run a .bat file).
4775    * Logging updates.
4776    * Updated VERSION constants to 0.4.0.1
4777
47782004-09-08  hypercubus
4779    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
4780      hopefully any other affected *nix systems) now properly discards non-
4781      essential directories after installation.
4782    * Support for Win9x in the installer and postinstall.bat.
4783    * Changed the name of the default installation directory on all platforms
4784      from "I2P" to "i2p" in the installer.
4785    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
4786      other configuration files.
4787
47882004-09-07  cervantes:
4789    * Proxy recursion disabled by default (strict)
4790    * Password Authentication for session commands
4791    * Support for http://path?i2paddresshelper=BASE64
4792    * Support for http://i2p/BASE64/path syntax
4793
47942004-09-07  jrandom
4795    * Make sure that peers placed in the 'fast' group are ones we both know
4796      how to reach and have been able to reach recently.  These peers may
4797      still be placed in the 'high capacity' group however (though that group
4798      is only queried if the 'fast' group is too small)
4799    * Include some updates to the ProgileOrganizer's CLI.
4800
48012004-09-07  jrandom
4802    * Disable the timestamper by default for all applications except the router
4803      (enable via -Dtime.disabled=false)
4804    * Simplify the retrieval of the full destination with text based browsers.
4805    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
4806
48072004-09-07  jrandom
4808    * Write the native libraries to the current directory when they are loaded
4809      from a resource, and load them from that file on subsequent runs (in
4810      turn, we no longer *cough* delete the running libraries...)
4811    * Added support for a graceful restart.
4812    * Added new pseudo-shutdown hook specific to the router, allowing
4813      applications to request tasks to be run when the router shuts down.  We
4814      use this for integration with the service manager, since otherwise a
4815      graceful shutdown would cause a timeout, followed by a forced hard
4816      shutdown.
4817    * Made the capacity calculator a bit more dynamic by not outright ignoring
4818      the otherwise valid capacity data for a period with a single rejected
4819      tunnel (except for the 10 minute period).  In addition, peers with an
4820      equal capacity are ordered by speed rather than by their hashes.
4821    * Cleaned up the SimpleTimer, addressing some threading and synchronization
4822      issues.
4823    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
4824      associated session (unless there are other clients using it), and deal
4825      with a closed session when starting a new I2PTunnel instance.
4826    * Refactoring and logging.
4827
48282004-09-06  jrandom
4829    * Address a race condition in the key management code that would manifest
4830      itself as a corrupt router identity.
4831    * Properly clear old transport addresses from being displayed on the old
4832      console after soft restarts.
4833    * Properly refuse to load the client applications more than once in the
4834      same JVM.
4835    * Added support for a graceful restart (a graceful shutdown followed by a
4836      full JVM restart - useful for restarting client apps).
4837    * More defensive programming, HTML cleanup, logging
4838    * wrapper.config cleanup of duplicate lines
4839
48402004-09-04  jrandom
4841    * Added some basic guards to prevent multiple instances from running.
4842      Specifically, a file "router.ping" in the install directory which is
4843      written to once a minute - if that file exists and has been modified
4844      within the last minute, refuse to start up.  In turn, adjust the
4845      service wrapper to wait a minute before restarting a crashed JVM.
4846    * Create a "work" directory in the I2P install dir which Jetty will
4847      use for all of its temporary files.
4848    * Tell the browser not to cache most of the router console's pages.
4849
48502004-09-04  jrandom
4851    * Update the SDK to automatically reconnect indefinitely with an
4852      exponential delay on retries (capped at 5 minutes).
4853
4854* 2004-09-03  0.4 released
4855
48562004-09-03  jrandom
4857    * Updated default wrapper.config to deal with the hard restart option
4858    * Include the history.txt in the /help.jsp page
4859    * HTML updates (wrapper.log, and no more unix scripts)
4860    * Updated VERSION constants to 0.4
4861
48622004-09-03  hypercubus
4863    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
4864    * Temporarily removed install_i2p_service_unix and
4865      uninstall_i2p_service_unix from distribution packages.
4866    * postinstall.bat/postinstall.sh cleans installation directory of all files
4867      not applicable to the host OS.
4868
48692004-09-03  oOo
4870    * Added some filters to the HTTP request, replacing the User-Agent,
4871      Referrer, Via, and From headers, which helps until we have a more
4872      comprehensive filtering system.
4873
48742004-09-03  jrandom
4875    * Disabled the old listener on port 7655.
4876
48772004-09-02  jrandom
4878    * Cleaned up the base build.xml, adding a new target ("updater") which
4879      builds the file i2pupdate.tar.bz2 which can be safely extracted over
4880      existing installs.
4881
48822004-xx-xx  jrandom
4883    * Implemented the new web architecture and router console
4884    * Implemented I2PTunnel web interface, and revamped startup process.
4885    * Revamped peer selection code to address skew.
4886    * Removed all temporary threads from the router and the SDK.
4887    * Bugfix dealing with timeouts and resends.
4888    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
4889
48902004-xx-xx  hypercubus
4891    * Implemented the new installation process.
4892    * Integrated systray
4893    * Integrated service manager
4894
48952004-xx-xx  oOo
4896    * Implemented ?i2paddresshelper= hook
4897    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
4898
48992004-xx-xx  Nightblade
4900    * libSAM updates.
4901
49022004-xx-xx  cervantes
4903    * Imported i2pProxy.pac proxy script in with the build.
4904
4905* 2004-08-20  0.3.4.3 released
4906* 2004-08-12  0.3.4.2 released
4907* 2004-08-08  0.3.4.1 released
4908* 2004-07-29  0.3.4 released
4909* 2004-07-23  0.3.3 released
4910* 2004-07-16  0.3.2.3 released
4911* 2004-07-14  0.3.2.2 released
4912* 2004-07-11  0.3.2.1 released
4913* 2004-07-07  0.3.2 released
4914* 2004-06-25  0.3.1.5 released
4915* 2004-05-23  0.3.1.4 released
4916* 2004-05-20  0.3.1.3 released
4917* 2004-05-13  0.3.1.2 released
4918* 2004-05-07  0.3.1.1 released
4919* 2004-04-30  0.3.1 released
4920* 2004-04-20  0.3.0.4 released
4921* 2004-04-04  0.3.0.3 released
4922* 2004-03-30  0.3.0.2 released
4923* 2004-03-25  0.3.0.1 released
4924* 2004-03-21  0.3.0 released
4925* 2004-03-10  0.2.5.4 released
4926* 2004-03-04  0.2.5.3 released
4927* 2004-02-28  0.2.5.2 released
4928* 2004-02-27  0.2.5.1 released
4929* 2004-02-25  0.2.5 released
4930* 2004-02-19  0.2.4.2 released
4931* 2004-02-15  0.2.4.1 released
4932* 2004-02-14  0.2.4 released
4933* 2004-01-27  0.2.3.6 released
4934* 2004-01-21  0.2.3.5 released
4935* 2004-01-14  0.2.3.4 released
4936* 2003-12-29  0.2.3.3 released
4937* 2003-12-27  0.2.3.2 released
4938* 2003-12-25  0.2.3.1 released
4939* 2003-12-13  0.2.3 released
4940* 2003-12-01  0.2.2 released
4941* 2003-11-18  0.2.1.1 released
4942* 2003-11-12  0.2.1 released
4943* 2003-11-09  0.2.0.3 released
4944* 2003-11-08  0.2.0.2 released
4945* 2003-11-03  0.2.0.1 released
4946* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.