source: history.txt @ f81a24a

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

I2PTunnel: Fix tunnel close http://forum.i2p/viewtopic.php?t=3231 broken in 0.7-8

  • Property mode set to 100644
File size: 236.4 KB
Line 
12009-04-01 zzz
2    * I2PTunnel: Fix tunnel close
3      http://forum.i2p/viewtopic.php?t=3231
4
52009-03-30 zzz
6    * I2CP:
7      - Implement BandwidthLimitsMessage
8      - Have i2psnark use new message, remove
9        build dependency on router
10    * Peer Selection:
11      - Limit peers to a max % of all tunnels with
12        router.maxTunnelPercentage=nn, default 33
13      - Add chart to tunnels.jsp to see results
14
15* 2009-03-29  0.7.1 released
16
172009-03-29 Complication
18    * Update versions, package release
19
202009-03-27 zzz
21    * Add readme_fr.html
22    * License splash update
23    * Catch rare TunnelGatewayMessage AIOOB, root cause unknown
24
252009-03-24 zzz
26    * I2PTunnel:
27      - Add some warnings about new features
28      - Fix encrypted leasesets broken in about -4
29      - Suppress log error on manual stop
30      - Fix NPE on close of a tunnel not open yet
31    * Transport:
32      - Increase default bw to 64/32, burst 80/40
33    * Tunnels: Change some fragmentation errors to warns
34
352009-03-16 zzz
36    * help.jsp: Add some
37    * I2PTunnel: Cleanup
38    * I2PTunnelHTTPClient: Fix NPE on delayed open
39    * I2PTunnelHTTPServer: Maybe catch an NPE
40    * SOCKS: Allow .onion addresses for onioncat testing
41    * Tunnel: Catch a rare AIOOB
42
432009-03-09 zzz
44    * Client:
45      - Clean up retry code
46      - Bring I2CP listen error to the summary bar
47        http://forum.i2p/viewtopic.php?t=3133
48    * I2PSnark: Remove the http from the add torrent box
49    * I2PTunnel:
50      - Add persistent key option for standard and IRC clients
51      - Add delay-open option for clients
52      - Get regenerate-dest-on-reconnect working
53      - Add default key file name
54      - Add link to addressbook
55      - I2PSink: Send protocol byte
56    * OCMOSJ:
57      - Change from 5% reply requests to at least
58        once per minute, in hopes of reducing IRC drops
59      - More clean up of the cache cleaning
60    * Routerconsole: Don't OOM configpeer.jsp on huge blocklists
61
622009-02-26 zzz
63    * I2CP Client: Add support for muxing
64    * I2PTunnel:
65      - Add new IRCServer tunnel type
66      - Add SOCKS 4/4a support
67      - Catch OOMs in HTTPServer
68      - Name the IRCClient filter threads
69      - Port Streamr to I2PTunnel
70      - The beginnings of SOCKS UDP support
71    * Naming: Add reverse lookup by hash
72    * OCMOSJ: Clean up the cache cleaning
73    * Router: Move addShutdownTask from Router to I2PAppContext
74      so that apps can register more easily
75    * Routerconsole:
76      - Thread hard shutdown and restart requests from the routerconsole,
77        and add a delay even if no tunnels, to allow time for a UI response
78      - Sort the summary bar destinations
79      - Move dest-to-hash converter to new helper class so we can
80        use it in i2ptunnel
81
822009-02-22 sponge
83    * BOB: Orphan tunnel issue fix, bump BOB version
84    * bump to Build 6
85
862009-02-16 zzz
87    * Streaming lib: Plug timer leak, don't send keepalives
88      after close, don't disconnect hard after close
89
902009-02-15 zzz
91    * Add licenses to all packages
92    * I2PSession: Concurrent _messagesReceived
93    * i2psnark: tmp file removal try #3
94    * I2PTunnel:
95      - Don't buffer POST data in HTTPClient
96      - Display destination even when stopped
97      - Enable key generation, dest modification, and
98        hashcash estimation in the GUI
99      - Add new CONNECT client
100    * NetDb: Enforce 60s minimum leaseset publish interval
101    * Streaming lib:
102      - Plug connection leak
103      - Move ConEvent from SimpleTimer to SimpleScheduler
104      - Move RetransmissionTimer (ResendPacketEvent)
105        from SimpleTimer to new SimpleTimer2
106      - Move ActivityTimer and Flusher from SimpleTimer to RetransmissionTimer
107      - SimpleTimer2 allows specifying "fuzz" to reduce
108        timer queue churn further
109    * Susidns: Fix save of new dest broken in 0.7
110    * TunnelPool:
111      - Allow leasesets with reduced leases for robustness and startup speed
112      - Plug in-progress build leak
113
1142009-02-07 zzz
115    * ClientConnectionRunner, Shitlist, TunnelDispatcher:
116      Update using concurrent
117    * Streaming ConnectionHandler: Bound SYN queue and
118      use concurrent to prevent blowup
119    * HTTP Proxy: Fix error msg for b32 addresses
120    * I2CP: Implement optional reduce tunnels on idle - not hooked
121      in to i2ptunnel GUI yet - still needs tweaks
122    * I2CP MessageReader: Prevent rare NPE
123    * I2CP Writer: Rewrite using concurrent
124    * i2psnark: Add torrent and connection count
125    * I2PTunnel & I2CP:
126      - Fix tunnel reduction/restore, hook in the GUI
127      - Hook leaseset encryption into the GUI
128      - Implement saves for all the new stuff
129      - Add cancel button
130      - Add b32 display for non-http servers
131      - Prep for CONNECT
132      - Fix error msg when connection goes away
133    * NetDb: Remove all DataPublisher stuff
134    * Wrapper: Remove dup timeout
135
1362009-02-02 sponge
137    * Final? cleanups to Slackbuilds.
138    * ant target for Slackbuilds.
139
1402009-02-01 sponge
141    * Slackbuild files... if we can have them for Debian, why not :-)
142
1432009-02-01 zzz
144    * Convert some inner classes to static (findbugs)
145    * DataHelper.readLong(): Was returning -1 on EOF instead
146      of throwing exception
147    * i2psnark: Increase tunnels and pipeline to 3
148    * NTCP: Use a java.util.concurrent execution queue instead of
149      SimpleTimer for afterSend() to reduce lock contention
150    * Remove source from susimail.war, susidns.war, i2ptunnel.war (85KB)
151    * Routerconsole:
152      - Move common methods to new HelperBase class
153      - Make reseed link a button
154    * SimpleScheduler: New replacement for SimpleTimer when events
155      will not be rescheduled or cancelled, to reduce SimpleTimer
156      lock contention
157    * Tunnel Pool:
158      - Remove tunnel from participating if can't contact next hop
159      - Fail outbound build faster if can't contact first hop
160    * Wrapper: Remove dup timeout
161
1622009-01-31 dream
163    * Debian files
164
1652009-01-31 sponge
166    * One line BOB discarded interger fix
167      (not that it mattered at this point)
168
1692009-01-25 zzz
170    * Build files:
171      - Don't bundle unneeded XML parser xercesImpl.jar (1MB)
172      - Don't include unneeded stuff in Copy, Delete, Exec.jar (300KB)
173    * I2CP:
174      Implement new I2CP message ReconfigureSessionMessage.
175      Will be used for tunnel reduction.
176    * I2PTunnel Edit Pages:
177      - Change default length to 2+0
178      - Cleanup helper code
179      - Prevent null spoofhost
180      - Stub out the following new options (C=client, S=server):
181        + Access list (S)
182        + Certificate type (S)
183        + Encrypted LeaseSet (S)
184        + New dest on idle restart (C)
185        + Tunnel closure on idle (C)
186        + Tunnel reduction on idle (C,S)
187    * I2PTunnel Socks:
188      - Add support for SOCKS to GUI
189      - Don't NPE on SOCKS 4, just close
190      - Don't have SOCKS build a new dest for every request
191      - Beginnings of SOCKS configuration by port
192      - HTML error msg for attempted HTTP access
193    * LeaseSet: Add encrypt/decrypt methods
194    * netdb.jsp: Don't show stats by default
195    * OCMOSJ: Bundle a reply when we switch tunnel or lease,
196      to detect failure sooner
197    * PublishLocalRouterInfoJob:
198      - Delay for 5m at startup
199      - Run every 20m (was 7.5m)
200    * RebuildRouterInfoJob: Don't run it
201    * Router: Add a keyring for decrypting leases
202    * Routerconsole: Add configkeyring.jsp
203    * SummaryHelper.getTransferred() move to DataHelper,
204      rename to formatSize(), use on tunnels.jsp
205    * Streaming, I2CP, Client Message sending:
206      Pass message timeout through new I2CP message
207      SendMessageExpiresMessage, so that the router
208      uses the same expiration as the streaming lib.
209      Should help reliability.
210    * Streaming: TCB control block sharing
211
212* 2009-01-24  0.7 released
213
2142009-01-24 Complication
215    * Update versions, package release
216
2172009-01-17 zzz
218    * NTCP: Prevent two NTCP Pumpers
219
2202009-01-14 zzz
221    * config.jsp: Fix burst seconds display
222    * HTTPClient: Fix per-tunnel settings for i2cp.gzip and
223      i2ptunnel.httpclient.send* (thx tino)
224    * i2psnark:
225      - Fix double completion message
226      - Add crstrack
227    * initialNews.xml: Add .de (thx echelon)
228    * Message: Always distribute an inbound msg back out
229      a tunnel to foil a possible latency-measuring attack
230      (welterde)
231    * Naming:
232      - Change base32 names to *.b32.i2p
233      - Add i2p.naming.hostsTxt.useB32 config
234    * profiles.jsp: Remove 1m column
235    * SAM: Don't build tests by default
236    * Streaming:
237      - Prevent a rare NPE
238      - Reduce initial RTT to 8s (was 10s)
239    * tunnels.jsp: Add netdb links
240
2412009-01-08 zzz
242    * addressbook: Prevent Base32 hostnames
243    * build.xml: Remove readme_xx.html from updater
244    * configtunnels.jsp: Fix display of outbound backup count
245    * configupdate.jsp: Fix corruption of update URLs
246    * i2psnark: Recognize Robert 0.3 and 4
247    * ExploreJob/SearchJob - fix brokenness:
248      - Give each search a minimum of time even at the end
249      - Fix ExploreJob exclude peer list
250      - Always add floodfills to exclude peer list
251      - Don't queue keys for exploration or run ExploreJob
252        if floodfill
253      - Allow floodfills to return non-floodfills in
254        a DSRM msg so exploration works
255    * ExploreJob/SearchJob - more fixes:
256      - Disable ExploreKeySelectorJob completely, just have
257        StartExplorersJob select a random key if queue is empty
258      - Add netDb.alwaysQuery=[B64Hash] for debugging
259      - Queue results of exploration for more exploration
260      - Floodfills periodically shuffle their KBuckets, and
261        FloodfillPeerSelector sorts more keys, so that
262        exploration works well
263    * Shitlist: Reduce max time to 30m (was 60m)
264    * Streaming:
265      - Reduce default initial window size from 12 to 6,
266         to account for the MTU increase in the last release
267         and try to limit initial packet loss
268      - Reduce fast retransmit threshold from 3 to 2
269    * Transport: Don't shitlist a peer if we are at our
270      connection limit
271
2722009-01-03 zzz
273    * config.jsp: Move the buttons up
274    * configservice.jsp: Clean up and fix the broken (?)
275      browser launch configuration
276    * i2psnark:
277      - Try again to remove the i2psnarkurl files on shutdown
278      - Sort torrents with a locale-based sort
279    * NetDb:
280      - Expire routers with introducers after 90m.
281        This should improve reachability to firewalled routers
282        by keeping introducer info current.
283      - Expire routers with no addresses after 90m.
284      - Convert to java concurrent
285    * Stats: Add router.memoryUsed, graph by default
286    * Summary bar: Remove spurious UDP warning on startup
287    * UpdateHandler: Make extensible for upcoming
288      torrent updater
289
2902008-12-15 zzz
291    * Remove apps/ bogobot jdom pants q rome stasher syndie
292
2932008-12-14 zzz
294    * Contexts: Add int getProperty(String prop, int default)
295    * I2PAppThread: Constructor fix
296    * More split classes into their own files for mkvore
297    * Streaming: Don't build test cases by default
298    * Summary bar: Replace links with buttons
299    * Transport:
300      - Cleanup max connections code
301      - Add i2np.udp.maxConnections
302      - Set max connections based on share bandwidth
303      - Add haveCapacity() that can be used for connection
304        throttling in the router
305      - Reject IBGW/OBEP requests when near connection limit
306      - Reduce idle timeout when near connection limit
307    * Tunnel request handler:
308      - Require tunnel.dropLoad* stats
309      - Speed up request loop
310    * I2CP, HostsTxtNamingService, I2PTunnel:
311      Implement Base32 Hash hostnames, via the naming service.
312      Names are of the form [52-characters].i2p, where
313      the 52 characters are the Base32 representation of our
314      256-byte hash. The client requests a lookup of the hash
315      via a brief I2CP session using new I2CP request/reply
316      messages. The router looks up the leaseset for the hash
317      to convert the hash to a dest. Convert the I2PTunnel
318      'preview' links to use Base32 hostnames as a
319      demonstration.
320
3212008-12-08 zzz
322    * ATalk: Move from core to apps
323    * Blocklists: enable by default, include blocklist file
324      in new installs
325    * Build: Add findbugs target
326    * Cleanup of removed netdb stats
327    * Console:
328      - Don't display restart button if no wrapper
329      - Remove PRNG stats
330    * Eepsite: Disable jetty webapps by default for new installs
331    * i2psnark:
332      - Add default i2psnark.config for new installs
333      - Remove wishlist link
334      - Recognize robert and i2psnarkxl clients
335      - Increase max files to 256
336    * Increase standalone heap size to 128MB
337    * NetDb: Split classes into their own files for mkvore
338    * PeerManager: Fix NPE on early shutdown
339    * SusiDNS: Add textareas
340    * Transport:
341      - Fixes, avoid NPEs, and cleanups when NTCP and/or UDP transports disabled
342      - More TCP removal cleanup
343      - Clean up bandwidth limiting, centralize defaults
344      - Force burst to be >= limit
345      - Increase default bw to 48/24, burst 64/32
346    * Tunnels: Avoid two NPEs on corrupt fragments
347
3482008-12-01 zzz
349    * i2psnark:
350      - Refactor to allow running a single Snark without a SnarkManager again,
351        by moving some things from SnarkManager to I2PSnarkUtil,
352        having Snark call completeListener callbacks,
353        and having Storage call storageListener callbacks.
354        This is in preparation for using Snark for router updates.
355        Step 2 is to allow multiple I2PSnarkUtil instances.
356      - Big rewrite of Storage to open file descriptors on demand, and
357        close them when unused, so we can support large numbers of torrents.
358
359    * i2psnark:
360      - Remove static instances of I2PSnarkUtil, ConnectionAcceptor,
361        and PeerCoordinatorSet
362      - Convert static classes in Snark to listeners
363      - Fix Snark to work in single torrent mode again
364      - Should now work with multiple single Snarks
365
366    * i2psnark:
367      - Use new I2PAppThread that does not call global listeners on OOM,
368        so that OOMing apps will not shutdown the whole router.
369
370    * i2psnark:
371      - Don't create SnarkManager instance until first call,
372        so it doesn't create the i2psnark dir, read the config,
373        etc., for single Snark instances.
374      - Don't read i2psnark.config twice; fix setting
375        i2psnark.dir
376      - More Snark constructor changes for calling from router
377      - Make max connections per torrent configurable
378
379    * SAM:
380      - Use new I2PAppThread that does not call global listeners on OOM,
381        so that OOMing SAM will not shutdown the whole router.
382
383* 2008-12-01  0.6.5 released
384
3852008-12-01 Complication
386    * Update versions, package release, fix typo in comment
387
3882008-11-26 zzz
389    * Fix Windows UrlLauncher
390
3912008-11-21 zzz
392    * Cache DNS and negative DNS for 5m (was 1m and forever)
393    * Delay shitlist cleaner at startup
394    * Strip wrapper properties from client config
395    * Define multiple cert type
396    * Prohibit negative maxSends in streaming
397    * HTML fixup on configtunnels.jsp
398    * Increase wrapper exit timeout from default 15s to 30s
399
4002008-11-20 zzz
401    * I2PTunnel: Handle missing fields in edit pages better
402    * Move DummyNetworkDatabaseFacade to his own file
403      to help the build dependencies
404    * Drop old tcp transport and old tunnel build sources
405    * EepGet:
406      - Better handling of 504 gateway timeout
407        (keep going up to limit of retry count rather
408         than just one more partial fetch)
409      - Add -t cmd line option for timeout
410      - Better handling of 403, 409, 503 errors
411      - Don't keep going after unknown return code
412      - Don't delay before exiting after a failure
413
4142008-11-15 zzz
415    * Build files:
416      - Don't die if depend not available
417      - Only verify Jetty hash once
418      - Add streaming lib tests to depend task
419    * I2CP Compression:
420      - Add i2cp.gzip option (default true)
421      - Add compression stats
422      - Don't bother compressing if really small
423
4242008-11-13 zzz
425    * Streaming:
426      - Add more info to Connection.toString() for debugging
427      - Fix lifetimeMessages{Sent,Received} stats
428      - Reduce RTT damping to 0.875 (was 0.9)
429      - Add a stream.con.initialRTT.{in,out} stats
430    * Build files:
431      - Use the depend task with caching for more accurate dependencies
432      - Make sure the routerconsole gets the latest router version
433      - Fix addressbook repeated builds
434    * HTTPClient: Add config options to pass Via, Referer,
435      and User-Agent through
436    * Blocklists: Fix lists with hashes only
437
4382008-11-11 zzz
439    * Streaming - Fix several bugs and improve performance
440      when the initial data is larger than one MTU,
441      e.g. HTTP GETs with large URLs, CGI params or cookies,
442      or large HTTP POSTS:
443      - Don't reject additional packets received without a
444        send stream ID (i.e. sent before the SYN ACK was received)
445      - Put unknown non-SYN packets on the SYN queue also
446        so they won't be rejected
447      - Reduce flusher delay to 250ms (was 500)
448      - Flush unless window is full (was window is non-empty)
449    * Streaming: Enforce a minimum MTU of 512
450    * I2PTunnel: Change "interactive" max window size to 16 (was 1)
451    * NetDb: Fix a deadlock caused by last checkin
452
4532008-11-09 zzz
454    * build.xml: Build speedups:
455      - Don't distclean in the updaterRouter target
456      - Don't make prepUpdate and prepupdateSmall depend
457        on distclean
458      - Don't make susimail build always clean
459      - Make pkg depend on distclean to be sure
460      - Clean out more routerconsole and susidns files in 'ant clean'
461      - i2ptunnel, routerconsole, susidns:
462        Only build WEB-INF when necessary
463      - systray: Only build jar when necessary
464      - Don't build i2psnark standalone for the updater target
465    * configclients.jsp: Provide a link when starting a webapp
466    * configtunnels.jsp:
467      - Code cleanup
468      - Add 4-hop option
469      - Remove +/- 0-2 option
470    * javadoc: Add some more package.html files
471    * I2PTunnelHTTPServer: Put the requestor's dest hash
472      in the request headers
473    * Jetty: Add a I2PRequestLog class to log request dest hash
474    * NetDb: Don't drop routerInfos if we have connectivity
475      issues or other problems
476    * NTCP: Lower idle timeout to 10m (was 15m)
477    * Routerconsole: Replace wtf msg w/ something nicer
478    * Tunnel BuildHandler: add config router.participantOnly,
479      set to true to refuse OBEP and IBGW roles, should
480      reduce connections significantly if set.
481
4822008-11-02 zzz
483    * Certificates:
484      - Add a signed Certificate type
485      - Add a main() to PrivateKeyFile to generate
486        Destinations with various Certificate types
487      - Add a VerifiedDestination class to check Certificates
488        of various types
489      - Add a HashCash library from http://www.nettgryppa.com/code/
490        (no distribution restrictions)
491      - Allow non-null Certificates in addressbook
492    * I2PTunnel: Move some wayward stats to the I2PTunnel group
493    * NamingServices: Implement caching in the abstract class
494    * NewsFetcher: Fix last updated time
495    * Streaming: Increase MTU to 1730 (was 960);
496      see ConnectionOptions.java for analysis
497    * Throttle: Reduce default max tunnels to 2000 (was 2500)
498    * clients.config: Disable SAM and BOB by default for new installs
499
5002008-10-26 zzz
501    * config.jsp: Add more help
502    * peers.jsp: Clean up 'Listening on' formatting
503    * profiles.jsp: Don't override locale number format
504    * netdb.jsp: Indicate if hidden
505    * summary.jsp: Indicate if hidden
506    * i2ptunnel/edit.jsp: Disable word wrap in textarea
507    * Blocklist: Change logging from ERROR to WARN
508    * FloodfillMonitor:
509       - Fix ff count (we forgot ourselves)
510       - Don't become ff if hidden
511    * HandleFloodfillDatabaseLookupMessageJob:
512      Send back your routerinfo with the DSRM if not ff to
513      spread the word that you aren't ff anymore
514    * I2Ping:
515       - Add -n count option
516       - Add rtt output
517       - Enhance help
518       - Fix option handling
519    * More findbugs cleanups
520    * NetDb:
521       - Fix behavior when router.isHidden=true
522       - Delay StartExplorersJob for 10m at startup
523       - Update dbLookup profile stats in FloodOnlySearchJob
524         and FloodfillVerifyStoreJob
525       - Fix response time store in profile in SearchJob
526    * Stats:
527       - Remove unused tunnel.buildSuccess and tunnel.buildFailure
528       - Remove tunnel.buildRequestTime and 5m rate stats from
529         netDb, effective in next release
530    * UDP:
531       - Don't do peer tests when hidden
532       - Don't offer to introduce when hidden
533       - Don't continually rebuild routerInfo when hidden
534       - Don't continually rebuild routerInfo when
535         i2np.udp.internalPort is set but i2np.udp.port is not
536       - Remove some unused functions
537
5382008-10-20 zzz
539    * configclients.jsp: Handle clients with no args
540    * index.jsp: Add readme_nl.html (thanks mathiasdm!),
541      readme_sv.html (thanks hottuna!)
542    * Big findbugs cleanup
543    * Client: Prevent a race causing session reconnect
544    * FloodfillMonitor:
545       - Don't become ff if clock skew is high
546       - Rebuild routerinfo immediately when ff status changes
547    * FloodOnlySearchJob: Recover better if the floodfills
548      you know are no longer floodfill or are gone
549    * Installer: Bump min JRE to 1.5
550    * ShellCommand: Fix main()
551
5522008-10-14 zzz
553    * index.jsp: Add multilanguage support for readme.html;
554      add readme_de.html (thanks devzero!)
555    * configupdate.jsp, configadvanced.jsp:
556      Disable word wrap in textareas
557    * install*.txt: Update for 1.5
558    * summary.jsp: Remove failing peer count
559
5602008-10-10 zzz
561    * Profiles: Reduce reject penalty in
562      capacity calculation to avoid a congestion collapse
563    * Throttle: Change reject to BANDWIDTH from CRIT on shutdown
564      for improved anonymity
565    * Tunnels: Implement random discard to enforce share limit
566    * Tunnel Tests: Add time for outbound delay, to avoid
567      congestion collapse
568    * UDPPacketReader: Adjust logging
569    * build files: Change to source=1.5, target=1.5
570    * configpeer.jsp: Table cleanup
571    * i2psnark: Change default tunnel length from 1+1 to 2+0
572    * peers.jsp: Change <,> to in,out for UDP
573
5742008-10-09 sponge
575    * Update version to -3
576    * BOB database threadlocking fixes
577
5782008-10-08 sponge
579    * Update version to -2
580    * Bugfixes and additions to BOB
581
5822008-10-07 sponge
583    * Bugfixes and additions to streaming.
584    * Added SimpleStore class in utils.
585    * Fixed SimpleTimer class to allow exit.
586    * BOB (Basic Open Bridge) added.
587
588* 2008-10-05  0.6.4 released
589
5902008-10-05 Complication
591    * Update versions, package release
592
5932008-09-29 zzz
594    * i2psnark: Add codevoid link, remove mastertracker
595
5962008-09-23 zzz
597    * config.jsp: Add some reachability help
598    * configpeer.jsp: Add blocklist info
599    * help.jsp: Add link to German FAQ
600    * tunnels.jsp: Fix inactive participating count
601    * SearchReplyJob: Don't look up references to shitlisted peers
602    * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
603
6042008-09-20 zzz
605    * NetDb: Fix the totally broken "check new routers against blocklist"
606      code from 3 checkins ago
607    * tunnels.jsp: Sort participating tunnels by usage, display rate
608
6092008-09-19 zzz
610    * Tunnels:
611      - Add missing message accounting for inbound gateways,
612        we were underestimating participating traffic because of it,
613        and the tunnels were classified "inactive"
614      - Add participating tunnel role on tunnels.jsp
615
6162008-09-18 zzz
617    * Throttle:
618      - Correctly check inbound and outbound total bw limits separately
619      - Fix up and actually use the tunnel.participatingMessageCount stat,
620        favor it if lower than the total bw stat, so that
621        client traffic isn't included for throttle decisions
622      - Reduce min message count from 60 to 40
623    * Tunnel Dispatcher:
624      - Add tunnel.participatingBandwidth stat
625      - Remove all 3h and 24h stats
626
6272008-09-15 zzz
628    * FloodOnlySearchJob:
629      - Ask non-floodfill peers if we don't know any floodfills
630      - Lookup hashes in the DatabaseSearchReplyMessage if we
631        don't know enough floodfills
632    * NetDb: Check new routers against blocklist
633    * Router: Shutdown clients first
634    * Throttle:
635      - Use 60s rather than 10m tunnel.participatingMessageCount stat
636      - Fix a summary bar message
637    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
638      every 20s, rather than at tunnel expiration, to maintain
639      a more current stat
640    * Tunnel Pool:
641      - Prevent excess zero-hop tunnels
642      - Always wait before looping in BuildExecutor
643    * configlogging.jsp: Increase box width
644    * logs.jsp: Remove unused connection log, cut wrapper log output in half
645
6462008-09-12 zzz
647    * Blocklist: Fix a log message format
648    * HarvesterJob: Don't instantiate if disabled
649    * i2psnark:
650      - Add config i2psnark.linkPrefix to enable access to completed
651        torrents from a different machine - examples:
652           i2psnark.linkPrefix=file://///localserver/path/to/files/
653           i2psnark.linkPrefix=http://localwebserver/path/
654        (Stop i2psnark, add to i2psnark.config, restart)
655      - Remove Galen and NickyB trackers
656    * NetDb: Add netDb.exploreKeySet stat
657    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
658      and ?r=. to view our own; change links on other pages too
659    * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
660
6612008-09-06 zzz
662    * EepGet command line: Fix byte counts after a failed resume
663    * NTCP: Mark unreachable on outbound connection timeout
664    * Shitlist: Fix partial shitlisting (still unused though)
665    * Summary Bar: Warn if firewalled and floodfill
666    * Throttle: Combine current and last bw measurement,
667      reduce default max tunnels to 2500 (was 3000)
668    * Tunnel BuildHandler: Logging cleanup
669    * UpdateHandler: Cleanup, clarify failure message
670    * DataHelper: Prepare for 999 day uptime :)
671
6722008-08-29 zzz
673    * Tunnel BuildExecutor: Debug cleanup
674    * Profiles: Penalize capacity when tunnel build request times out
675    * Shutdown: Call the shutdown hooks before the router shutdown
676      rather than after
677    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
678
6792008-08-27 zzz
680    * Floodfill Peer Selector: Prefer already-connected floodfill
681      peer for direct RouterInfo stores, to mimimize floodfill
682      connections
683    * Peer Profiles: Classify connected peers as "active",
684      which will help improve the fast pool
685    * Transport Manager: Add isEstablished(Hash)
686    * NTCP: Reduce max idle time from 20m to 15m
687    * NetDb stats: Post-0.6.3 clean up
688
689* 2008-08-24  0.6.3 released
690
6912008-08-24 Complication
692    * Update versions, package release
693
6942008-08-20 zzz
695    * Blocklists: Handle blank lines and \r\n in blocklist.txt
696    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
697      default is 500 (very high for now)
698    * Persistent data store: Increase write limit from 300 to 600
699      so floodfill routers don't get backed up
700
7012008-08-13 zzz
702    * i2psnark: Fix OOM vulnerability by checking incoming message length
703      (thanks devzero!)
704
7052008-08-04 zzz
706    * Floodfill Peer Selector:
707      - Avoid peers whose netdb is old, or have a recent failed store,
708        or are forever-shitlisted
709
7102008-07-30 zzz
711    * Blocklists:
712      - New, disabled by default, except for blocking of
713        forever-shitlisted peers. See source for instructions
714        and file format.
715    * Transport - Reject peers from inbound connections:
716      - Check IP against blocklist
717      - Check router hash against forever-shitlist, then block IP
718
7192008-07-16 zzz
720    * configpeer.jsp: New
721    * i2psnark: Open completed files read-only the first time
722    * profiles.jsp: Show bonuses, link to configpeer.jsp
723    * PRNG: Move logging from wrapper to router log
724    * SSU:
725        Don't proactively reconnect until 30m idle, so
726        we don't lose introducer tags prematurely
727
7282008-07-16 Oldaris
729    * Imports cleanup
730
7312008-07-07 zzz
732    * i2psnark:
733      - Repair corrupted files with wrong length rather than die
734      - Register shutdown hook to properly shutdown torrents when
735        the router shuts down, hopefully will reduce corruption
736      - Add Galen tracker
737      - Add a note about how to change directory
738    * HTTP Proxy: Don't show jump links for unknown jump hosts
739    * KeyManager:
740      - Don't write router key backup when leaseSet keys are updated
741      - Synchronize to prevent concurrent writes (thanks Galen!)
742      - Backup keys every 7 days instead of every 5 minutes
743    * LoadTestManager: Don't instantiate, it's disabled
744    * Router console: Flag placeholder pages as noncacheable
745    * Streaming lib:
746      - Change some logging from WARN to INFO
747      - Clean up toString()
748    * SSU:
749      - Try to pick better introducers by checking shitlist,
750        wasUnreachable list, failing list, and idle times
751      - To keep introducer connections up and valid,
752        periodically send a "ping" (a data packet with no data and no acks)
753        to everybody that has been an introducer in the last two hours
754      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
755      - Remove some 60s and 5m stats, leave only the 10m ones
756      - Narrow the range for the retransmit time after an allocation fail
757      - Adjust some logging
758
7592008-06-30 zzz
760    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
761    * i2psnark:
762      - Fix NPE caused by race (thanks echelon!)
763      - Add mastertracker, remove de-ebook
764    * NTCP:
765      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
766      - Fix failsafe stats
767    * PersistentDataStore: More leaseSet code cleanup
768    * SimpleTimer: Change congestion message from error to warn
769
7702008-06-24 zzz
771    * FloodfillMonitorJob: Change range from 5-7 to 4-6
772    * NTCP: Remove getIsInbound(), duplicate of isInbound()
773    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
774    * Router console: add placeholder pages for i2psnark, i2ptunnel,
775      susidns, and susimail for use when the .wars are not running
776    * Streaming lib: Increase max window size to 128
777
7782008-06-22 welterde
779    * Optimize I2PDatagramDissector
780
7812008-06-20 zzz
782    * configclients.jsp: Add start button for clients and webapps.
783    * PRNG: Add two stats
784    * Summary bar:
785      - Display Warning for TCP private IP address
786      - Display PRNG stats
787    * OutNetMessage: Change cache logging from WARN to INFO
788
7892008-06-17 zzz
790    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
791    * Summary bar: Display helpful errror message when UDP bind fails
792    * UDP: Don't bid when UDP bind fails
793    * configclients.jsp: Implement saves for clients and webapps.
794
7952008-06-16 zzz
796    * UDP: Prevent 100% CPU when UDP bind fails;
797      change bind fail message from ERROR to CRIT
798    * Refactor LoadClientAppsJob.java, move some functions to new
799      ClientAppConfig.java, to make them easily available to
800      new configclients.jsp
801    * RouterConsoleRunner: Use a new config file, webapps.config,
802      to control which .wars in webapps/ get run. Apps are enabled
803      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
804      Config file is written if it does not exist.
805      Implement methods for use by new configclients.jsp.
806    * configclients.jsp: New. For both clients and webapps.
807      Saves are not yet implemented.
808
8092008-06-10 zzz
810    * Floodfill: Add new FloodfillMonitorJob, which tracks active
811      floodfills, and automatically enables/disables floodfill on
812      Class O routers to maintain 5-7 total active floodfills
813    * NetDb Stats:
814      - Remove several more stats
815      - Don't publish bw stats in first hour of uptime
816      - Publish floodfill stats even if other stats are disabled
817      - Changes not effective until 0.6.2.1 to provide cover.
818    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
819      startup, so peers don't list us as failing.
820    * graphs.jsp: Fix a bug where it tries to display the combined
821      bandwidth graph when it isn't available
822
8232008-06-09 zzz
824    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
825
8262008-06-09 zzz
827    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
828    * News:
829      - Add display of last updated and last checked time
830        on index.jsp and configupdate.jsp
831      - Add a function to get update version (unused for now)
832    * config.jsp: Add another warning
833
8342008-06-07 zzz
835    * NetDb: Tweak some logging on lease problems
836    * Shitlist:
837      - Add shitlistForever() and isShitlistedForever(), unused for now
838      - Sort the HTML output by router hash
839    * netdb.jsp:
840      - Sort the lease HTML output by dest hash, local first
841      - Sort the router HTML output by router hash
842
8432008-06-06 zzz
844    * LeaseSet:
845      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
846        to make later LeaseSet comparisons reliable. This cleans up the code too.
847      - Fix broken old vs. new LeaseSet comparison
848        in ClientConnectionRunner.requestLeaseSet(),
849        so that we only sign and publish a new LeaseSet when it's really new.
850        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
851        and floodfill router load, since locked_buildNewLeaseSet() generates
852        the same LeaseSet as before quite frequently, often just seconds apart.
853
8542008-06-05 zzz
855    * LeaseSet - code cleanup:
856      - Add exception to enforce max # of leases = 6, should be plenty
857      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
858        leases and then immediately remove them again, triggering
859        the new leaseSet size exception
860      - Remove the now unused LeaseSet.removeLease(lease) and
861        LeaseSet.removeLease(index)
862      - Store first and last expiration for efficiency
863    * Peer Profiles - Preparation for using bonuses:
864      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
865      - Persist CapacityBonus rather than ReachabilityBonus
866      - Include SpeedBonus in the Speed calculation
867      - Prevent negative values in Speed and Capacity when using bonuses
868      - Clean up SpeedCalculator.java
869    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
870    * Add some config files for a future small distribution
871    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
872
8732008-06-01 zzz
874    * Client Apps: Add new parameter for clients.config,
875        clientApp.x.startOnLoad=false, to disable loading
876        (for SAM for example). Defaults to true of course.
877    * Logging: Move common WARN output to DEBUG so we can ask users to
878        set the default log level to WARN without massive spewage
879    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
880      not just the Fast tier, since we don't use them for tunnels anyway
881    * SAM: Add some compiler flexibility to two obscure makefiles
882    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
883      (sponge's suggestion)
884    * summary bar:
885      - Hide ident, provide a tooltip and a link
886      - Add a warning if you are firewalled and class O
887
8882008-06-07 Complication
889    * Fix version in news.xml so it could be published
890
891* 2008-06-07  0.6.2 released
892
8932008-06-07 Complication
894    * Write announcement and prepare for release
895
8962008-05-29 zzz
897    * Fix up initialNews.xml
898
8992008-05-27 zzz
900    * Transport:
901      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
902      - UDP: Don't bid when IP address missing, mark unreachable
903
9042008-05-26 zzz
905    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
906    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
907    * build.xml:
908      - Add an updaterSmall target which includes only the essentials
909      - Add an updaterRouter target which includes only i2p.jar and router.jar
910      - Clean up the build file some
911      - Remove empty eepsite/ and subdirs from i2pupdate.zip
912    * configtunnels.jsp: Add warning
913    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
914    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
915
9162008-05-22 welterde
917    * Change jetty download location in build script
918
9192008-05-20 zzz
920    * Reachability:
921      - Call the previously unused profile.tunnelTestFailed()
922        (redefined to include a probability argument)
923        and severely downgrade a peer's capacity upon failures,
924        depending on tunnel length and direction.
925        This will help push unreachable and malicious peers
926        out of the High Capacity tier.
927      - Put recent fail rate on profiles.jsp
928    * ProfileOrganizer: Logging cleanup
929    * eepsite_index.html: Update add-host and jump links
930    * HTTP Proxy: Remove trevorreznik jump server from list
931
9322008-05-20 welterde
933    * implemented PrivateKeyFile
934
9352008-05-18 zzz
936    * Throttle: Reject tunnels for first 20m uptime (was 10m)
937    * TunnelPeerSelectors:
938       - Re-enable strict ordering of peers,
939         based on XOR distance from a random hash
940       - Restrict peers with uptime < 90m from tunnels (was 2h),
941         which is really 60m due to rounding in netDb publishing.
942    * i2psnark:
943       - Limit max pipelined requests from a single peer to 128KB
944         (was unlimited; i2p-bt default is 5 * 64KB)
945       - Increase max uploaders per torrent to 6 (was 4)
946       - Reduce max connections per torrent to 16 (was 24) to increase
947         unchoke time and reduce memory consumption
948       - Strictly enforce max connections per torrent
949       - Choke more gradually when over BW limit
950    * help.jsp: Add a link to the FAQ
951    * peers.jsp: Fix UDP direction indicators
952    * hosts.txt: Add update.postman.i2p
953
9542008-05-12 zzz
955    * Outbound message:
956      - Tweak the cache key for efficiency
957    * Stats:
958      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
959    * Summary bar:
960      - Add messages when dropping tunnel requests due to load
961    * Update Handler:
962      - Add postman to the list
963    * i2psnark:
964      - Randomize the PeerCheckerTask start times to make global limiting
965        work better
966      - Calculate bw limits using 40s rather than 4m averages to make
967        bw limiting work better
968      - Change default bw limit from uplimit/3 to uplimit/2 due to
969        overhead reduction from the leaseset bundling change
970    * libjbigi:
971      - Add documentation on dynamic build option
972      - Add two speed tests to the build script
973      - Clean up the build script, make it easier to build dynamic
974
9752008-05-10 zzz
976    * NetDb: Don't write the my.info file to disk, it isn't used for anything
977    * Stats:
978      - Simplify oldstats.jsp if no events in a stat
979      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
980        (caused by an SSU hack)
981    * Update Handler:
982      - Add option to download and verify only
983      - Add distinct error message if version check fails
984
9852008-05-09 welterde
986    * Add an update URL to the list
987
9882008-05-07 zzz
989    * Reachability:
990      - Restrict peers requiring introducers from inbound tunnels,
991        since it's slow and unreliable... and many of them advertise
992        NTCP, which seems unlikely to work
993      - Provide warning on summary bar if firewalled with inbound NTCP enabled
994    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
995      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
996      at startup (you didn't get any data unless you set the log level anyway)
997    * oldstats.jsp: Don't put 2 decimal places on integer event counts
998    * Remove the Internals link from the menu bar
999    * i2psnark: Extend startup delay from 1 to 3 minutes
1000
10012008-05-06 welterde
1002    * HTTP Proxy: Add i2jump.i2p jump service
1003
10042008-05-05 zzz
1005    * NetDb Stats: Cleanup of commented out stats
1006    * Outbound message:
1007      - Fix a couple of tunnel cache cleaning bugs
1008      - Cache based on source+dest pairs rather than just dest
1009      - Send the reply leaseSet only when necessary,
1010        rather than all the time (big savings in overhead)
1011      - Enable persistent lease selection again
1012      - Logging tweaks
1013    * Reachability:
1014      - Restrict <= .32 SSU-only peers from inbound tunnels,
1015        since they don't know if they are unreachable
1016      - Have SSU bid aggressively when it has less than 3 peers, so
1017        we can determine our IP address and do peer testing.
1018        Otherwise a router may never determine its IP address or reachability status.
1019    * Summary bar:
1020      - Add reachability status
1021      - Add participating tunnel acceptance status
1022    * Throttle: Reject tunnels for first 10m uptime
1023    * I2PTunnel: Change default outproxy to false.i2p
1024    * profiles.jsp: Add router version
1025
1026* 2008-04-26  0.6.1.33 released
1027
10282008-04-20 zzz
1029    * Outbound message/Reachability:
1030      - Fix a bug from -19 causing the persistent lease selection
1031        removed in -17 to be back again
1032      - Use netDb-listed-unreachable instead of detected-unreachable
1033        for exclusion of unreachable peers from selected leases,
1034        as there are potential anonymity problems with using
1035        detected-unreachable
1036      - Tweak logging some more
1037    * NetDb stats: Remove a couple more including the inefficient stat_identities
1038
10392008-04-17 zzz
1040    * Reachability:
1041      - Track unreachable peers persistently
1042        (i.e. separately from shitlist, and not cleared when they contact us)
1043      - Exclude detected unreachable peers from inbound tunnels
1044      - Exclude detected unreachable peers from selected leases
1045      - Exclude detected unreachable floodfill peers from lookups
1046      - Show unreachable status on profiles.jsp
1047
10482008-04-16 zzz
1049    * SSU/Reachability:
1050      - Extend shitlist time from 4-8m to 40-60m
1051      - Add some shitlist logging
1052      - Don't shitlist twice when unreachable on all transports
1053      - Exclude netDb-listed unreachable peers from inbound tunnels;
1054        this won't help much since there are very few of these now
1055      - Remove 10s delay on inbound UDP connections used for the
1056        0.6.1.10 transition
1057      - Track and display UDP connection direction on peers.jsp
1058      - Show shitlist status in-line on profiles.jsp
1059
10602008-04-15 zzz
1061    * SSU Reachability/PeerTestManager:
1062      - Back out strict peer ordering until we fix SSU
1063      - Back out persistent lease selection until we fix SSU
1064      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
1065      - Increase known Charlie time to 10m; 3m wasn't enough
1066      - Don't continue retransmitting peer test if we know Charlie
1067      - Don't run multiple peer tests at once
1068      - Tighten test frequency range to 6.5-19.5m, was 0-26m
1069
10702008-04-12 zzz
1071    * Addressbook: Disallow '.-' and '-.' in host names
1072    * NTCP: Don't drop a connection unless both directions are idle;
1073            Fix idle time for outbound connections
1074    * Outbound message: Make sure cached lease is in current leaseSet
1075    * Stats: Put all NetworkDatabase stats in same group
1076    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
1077    * i2psnark: Add locking to prevent two I2CP connections
1078
10792008-04-07 zzz
1080    * i2psnark:
1081      - Implement upstream bandwidth limiting
1082      - Fix a rare NPE at startup/shutdown
1083      - Really increase retries for .torrent fetch
1084    * profiles.jsp: Minor cleanup
1085    * DataHelper: Only format < 5s as ms
1086    * Eepget: Fix percentage output on command line eepget retries
1087    * Lower partipating message priority from 400 to 200
1088    * NTCP: Add a debug message
1089    * Outbound message: Minor cleanup
1090
10912008-03-30 zzz
1092    * ExploratoryPeerSelector: Try NonFailing even more
1093    * HostsTxtNamingService: Add reverse lookup support
1094    * Outbound message: Minor cleanup
1095    * i2psnark TrackerClient: Minor cleanup
1096    * checklist.txt: Minor edit
1097    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
1098    * i2ptunnel.config: Change CVS client to mtn
1099    * netdb.jsp: Show leaseSet destinations using reverse lookup
1100    * profiles.jsp: First cut at showing floodfill data
1101
11022008-03-27 zzz
1103    * Send messages for the same destination to the same inbound
1104      lease to reduce out-of-order delivery.
1105    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
1106      for now, as it prevents speed rating of those peers
1107
11082008-03-26 zzz
1109    * ReseedHandler: Support multiple urls,
1110      add netdb.i2p2.de as a 2nd default
1111
11122008-03-25 zzz
1113    * i2psnark:
1114      - Add support for secondary open trackers
1115      - Refactor and simplify the TrackerClient code
1116      - Add welterde's tracker to the default list
1117      - Don't have eepget retry announces
1118      - Slow down tracker contacts if they've failed for a while
1119      - Add some debug support showing connections (?p=2)
1120    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
1121
11222008-03-22 zzz
1123    * NewsFetcher: Fix bug causing fetch every 10m
1124
11252008-03-22 zzz
1126    * Tunnel Testing:
1127      - Fix counting so it really takes 4 consecutive failures
1128        rather than 4 total to remove a tunnel
1129      - Credit or blame goes to the exploratory tunnel as well
1130        as the tunnel being tested
1131      - Adjust tunnel test timeout based on tunnel length
1132    * ExploratoryPeerSelector: Tweak logging
1133    * ProfileOrganizer: Adjust integration calculation again
1134    * build.xml: Add to help
1135    * checklist.txt: Tweak
1136    * readme.html: Fix forum links
1137    * netDb: Remove tunnel.testFailedTime
1138
11392008-03-19 zzz
1140    * ExploratoryPeerSelector:
1141      - Exclude floodfill peers
1142      - Tweak the HighCap vs. NonFailing decision; try NonFailing
1143        at least a minimum % of the time
1144    * i2psnark: Increase retries for .torrent fetch
1145    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
1146      containing an IP
1147    * readme.html: Reorder some items
1148    * Stats: Add some more required stats
1149    * Streaming lib: Fix slow start to be exponential growth,
1150      fix congestion avoidance to be linear growth.
1151      Should speed up local connections a lot, and remote
1152      connections a little.
1153
11542008-03-14 zzz
1155    * Floodfill Search:
1156       - Prefer heard-from, unfailing, unshitlisted floodfill peers
1157
11582008-03-14 zzz
1159    * ProfileOrganizer:
1160       - Use more recent stats to calculate integration
1161       - Show that fast peers are also high-capacity on profiles.jsp
1162    * readme.html: Update Syndie link
1163    * TunnelPool: Update comments
1164    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
1165      get rid of the 60s tunnel stats
1166      (effective as of .33 to provide cover)
1167
11682008-03-13 zzz
1169    * Floodfill Search:
1170       - Fix a bug that caused a single FloodfillOnlySearchJob
1171         instance to be run multiple times, with unpredictable
1172         results
1173       - Select ff peers randomly to improve reliability
1174       - Add some bulletproofing
1175
11762008-03-11 zzz
1177    * ProfileOrganizer:
1178       - Don't require a peer to be high-capacity to be
1179         well-integrated (not used for anything right now,
1180         but want to get it right for possible floodfill verification)
1181       - Don't fall back to median for high-capacity threshold
1182         if the mean is higher than the median, this prevents
1183         frequent large high-capacity counts
1184       - Fix high-capacity selector that picked one too many
1185    * Console: put well-integrated count back in the summary
1186
11872008-03-10 zzz
1188    * EepGet: Fix byte count for bytesTransferred status listeners
1189      (fixes command line status)
1190    * UpdateHandler:
1191       - Fix byte count display
1192       - Display final status on router console
1193       - Don't allow multiple update jobs to queue up
1194       - Increase max retries
1195       - Code cleanup
1196       - Don't show 'check for update' button when update in progress
1197       - Enhance error messages
1198    * NetDb: Comment out published netDb stats disabled for .32
1199
12002008-03-08 zzz
1201    * TunnelPeerSelectors: Implement strict ordering of peers,
1202      based on XOR distance from a random hash
1203      separately generated for each tunnel pool
1204
12052008-03-07 zzz
1206    * Naming: Optimize lookups for a destkey
1207    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
1208      - Prevent peers with matching IPs from joining same tunnel.
1209        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
1210        Default is 2 (disallow routers in same /16).
1211        Set with router.defaultPool.IPRestriction=x
1212      - Comment out unused RebuildPeriod pool setting
1213      - Add random key to pool in preparation for XOR peer ordering
1214    * SusiMail: Add 'Create Account' link
1215    * TunnelDispatcher: Change a common wtf error to a warn
1216
12172008-03-05 zzz
1218    * Naming: Make HostsTxt the sole default NamingService
1219      (was Meta = PetName + HostsTxt)
1220    * Naming: Add two new experimental NamingServices, EepGet and Exec,
1221      not enabled by default -
1222      see source comments in core/java/src/net/i2p/client/naming
1223      for configuration instructions
1224    * i2psnark: Don't do a naming lookup for Base64 destkeys
1225    * i2psnark: Add a StartAll button
1226    * Stats: Add code to disable most stats to save memory.
1227      Set on configstats.jsp or set stat.full=false to disable the stats.
1228      (true by default for now)
1229
12302008-03-09 Complication
1231    * Give the Jetty build file ability to ask permission
1232      before downloading the Jetty archive from the web,
1233      and to verify its SHA1 + MD5 hashes. Adjust the main build file
1234      in accordance with this change.
1235    * Improve the release checklist.
1236
1237* 2008-03-09  0.6.1.32 released
1238
12392008-03-07 zzz
1240    * Update news and version numbers
1241
12422008-03-01 zzz
1243    * Fix netdb.knownLeaseSets count reported by floodfill routers
1244      (was broken by -3)
1245
12462008-02-27 zzz
1247    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
1248    * i2psnark: Remove orion and gaytorrents from default tracker list
1249    * Remove orion from jump list and from eepsite_index.html
1250    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
1251    * Capitalize OutboundMessageDistributor job name
1252    * TunnelPool: Add a warning if all tunnels are backlogged
1253
12542008-02-26 zzz
1255    * Reintroduce NTCP backlog pushback, with switch back to
1256      previous tunnel when no longer backlogged
1257    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
1258    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
1259
12602008-02-21 zzz
1261    * Raise inbound default bandwidth to 32KBps
1262    * Fix config.jsp that showed 0KBps share bandwidth by default
1263
12642008-02-19 zzz
1265    * Addressbook: Disallow '--' in host names except in IDN,
1266      add some reserved host names
1267    * I2PTunnel: Clarify edit form
1268    * NetDb: Remove many stats from netDb, effective as of .32
1269    * profiles.jsp: Display capabilities
1270    * Tunnels: Enforce max tunnel length of 8, catch an index error
1271      http://forum.i2p/viewtopic.php?t=2561
1272
12732008-02-16 zzz
1274    * Fix race in TunnelDispatcher which caused
1275      participating tunnel count to seesaw -
1276      should increase network capacity
1277    * Leave participating tunnels in 10s batches for efficiency
1278    * Update participating tunnel ratestat when leaving a tunnel too,
1279      to generate a smoother graph
1280    * Fix tunnel.participatingMessageCount stat to include all
1281      participating tunnels, not just outbound endpoints
1282    * Simplify Expire Tunnel job name
1283
12842008-02-13 zzz
1285    * PersistentDataStore: Write out 300 records every 10 min
1286      rather than 1 every 10 sec;
1287      Don't store leasesets to disk or read them in
1288    * Combine rates for pools with the same length setting
1289      in the new tunnel build algorithm
1290    * Clarify a log message in the UpdateHandler
1291
12922008-02-13 zzz
1293    * Make graphs clickable to get larger graphs
1294    * Change SimpleTimer CRIT to a WARN, increase threshold
1295    * Checklist update
1296
12972008-02-11 welterde
1298    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
1299
13002008-02-10 zzz
1301    * Add new tunnel build algorithm (preliminary)
1302    * Change NTCP backlogged message from error to warning
1303    * Checklist updates
1304
1305* 2008-02-10  0.6.1.31 released
1306
13072008-02-10 Complication
1308    * Update news and version numbers
1309
13102008-02-06 zzz
1311    * build.xml: Add some apps to javadoc
1312    * checklist.txt: Add some things
1313    * news.xml: make links relative
1314    * runplain.sh: Add some comments
1315    * wrapper.config: Add some comments
1316
13172008-02-05 Complication
1318    * Change the dates too (sorry for such forgetfulness!)
1319
13202008-02-04 Complication
1321    * Also use the new key for checking, and add it into news.xml
1322
13232008-02-04 Complication
1324    * Added my release signing key into TrustedUpdate.java
1325
13262008-01-31 zzz
1327    * NewsFetcher: Change fetch failed from error to warning
1328    * installer: Fix URL and "email"
1329    * checklist.txt: New release checklist
1330
13312008-01-29 zzz
1332    * Addressbook: Change default subscription
1333    * ConfigUpdateHandler: Change default news URL
1334    * initialNews.xml: Update version to .31
1335    * news.xml: More updates
1336    * hosts.txt: Add i2p-projekt.i2p
1337    * readme.html: More URL updates
1338    * SusiDNS: Change references to default subscription
1339
13402008-01-28 zzz
1341    * news.xml: Updates, still preliminary
1342    * ReseedHandler: Change default URL
1343    * i2ptunnel.config: Change default outproxies
1344    * readme.html: Change *.i2p.net URLs
1345    * help.jsp: Change *.i2p.net URLs
1346    * eepsite_index.html: Change stats.i2p addressbook subscription URL
1347    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
1348
1349* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
1350
13512008-01-08 zzz
1352    * addressbook: Limit size of subscribed hosts.txt,
1353        don't save old etag or last-modified data
1354    * EepGet: Add some logging,
1355        enforce size limits even when size not in returned header,
1356        don't return old etag or last-modified data,
1357        don't call transferFailed listener more than once
1358    * Sign my update signing key
1359    * NewsFetcher: add last-modified support, reduce number of retries
1360    * Error pages: add icon and logo,
1361        clarify 'destination not found' and 'proxy not found' pages
1362
13632008-01-07 zzz
1364    * profiles.jsp formatting cleanup
1365    * NTCP: Reduce max idle time from 60m to 20m
1366    * NTCP: Fix idle time on connections with zero messages,
1367      correctly drop these connections
1368
13692008-01-03 zzz
1370    * addressbook: Do basic validation of hostnames and destkeys
1371    * susidns: Add support for the private addressbook,
1372      update the text and links somewhat
1373
13742008-01-02 zzz
1375    * Add stats.i2p to the jump list
1376    * Impose 20MB limit on POSTs and catch OOMs in POST
1377    * eepsite_index.html: add stats.i2p services
1378    * addressbook: log source of new keys; disallow dests > 516 bytes
1379    * addressbook: convert hostnames to lower case to prevent duplicates
1380    * susidns: generalize references to orion
1381
13822007-12-29 zzz
1383    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
1384    * Allow commas in router.trustedUpdateKeys and router.updateURL again
1385    * Change default news host from dev.i2p.net to dev.i2p
1386    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
1387
13882007-12-28 zzz
1389    * Add zzz's update signing key
1390
13912007-12-26 Complication
1392    * Improve reseed handler (less repetitive code,
1393      avoid reporting errors when less than 10% of fetches fail)
1394
13952007-12-26 Complication
1396    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
1397      and unescape them in DataHelper.loadProps() to support
1398      saving and loading config properties with line breaks
1399    * Change the update URLs textbox into a textarea like keys have,
1400      so different URLs go on different lines
1401    * Modify TrustedUpdate to provide a method which supplies a key list
1402      delimited with CR LF line breaks
1403    * Modify DEFAULT_UPDATE_URL to supply a default URL list
1404      delimited with CR LF line breaks
1405    * Modify selectUpdateURL() to handle URL lists
1406      delimited by any kind of line breaks
1407    * Start saving trusted update keys
1408    * Improve formatting on configupdate.jsp
1409
14102007-12-22 zzz
1411    * Add support for multiple update URLs
1412    * Change default for update to use i2p proxy,
1413      add several URLs as defaults
1414    * Enable trusted key form on configupdate.jsp
1415    * Clarify the 'destination not found' error page
1416
14172007-12-16 zzz
1418    * i2psnark: remove anonymitytracker from default list
1419
14202007-12-10 zzz
1421    * Fix NPE in CLI TrustedUpdate keygen
1422
14232007-12-02 Complication
1424    * Commit SAM v2 patch from mkvore (thank you!)
1425    * Minor reformatting to preserve consistent whitespace
1426      in old SAM classes (new classes unaltered)
1427
14282007-12-01 Complication
1429    * Separate the checks "does Jetty .zip file need downloading"
1430      and "does Jetty .zip file need extracting" in the Jetty buildfile.
1431      First download (unless already done), then extract (unless done).
1432
14332007-11-26 zzz
1434    * i2psnark: add timeout for receive inactivity
1435
14362007-11-24 zzz
1437    * i2psnark: increase streaming lib write timeout to 240 sec and change
1438      timeout action from "ping" to "disconect", as the fix in .30 to
1439      honor options on outbound connections led to hung outbound connections
1440      (bitfield never transmitted, connection never dropped)
1441
14422007-11-06 jrandom
1443    * add i2host.i2p to the jump list
1444
14452007-10-11 zzz
1446    * IRC Proxy: Fix several possible anonymity holes:
1447      - Block CTCP in NOTICE messages
1448      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
1449      - Check for lower case commands
1450    (Thanks sponge!)
1451
14522007-10-07  jrandom
1453    * back out the NTCP backlog pushback, as it could be used to mount an
1454      active anonymity attack.
1455
1456* 2007-10-07  0.6.1.30 released
1457
14582007-10-07  Complication
1459    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
1460      broke retrying.
1461
14622007-09-27  zzz
1463    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
1464    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
1465      fix some of the sorting
1466
14672007-09-22  zzz
1468    * Send messages for the same destination out the same outbound
1469      tunnel to reduce out-of-order delivery.
1470
14712007-09-19  zzz
1472    * i2psnark: Fix broken multifile torrent Delete;
1473        cleanup Storage resources in AddTorrent;
1474        don't autostart torrent after Create
1475
14762007-09-18  zzz
1477    * eepsite_index.html: Add links to trevorreznik address book
1478    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
1479    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
1480    * i2psnark: Don't make outbound connections to already-connected peers
1481    * i2psnark: Debug logging cleanup
1482
14832007-09-14  zzz
1484    * eepget: Increase header timeout to 45s
1485    * HTTP proxy: Return a better error message for localhost requests
1486    * tunnels: Fix PooledTunnelCreatorConfig memory leak
1487
14882007-09-09  zzz
1489    * eepget: Add support for Last-Modified and If-Modified-Since
1490    * addressbook: Finish incomplete support for Last-Modified
1491
14922007-09-08  zzz
1493    * eepget: Copy over SocketTimeout.java file from syndie
1494
14952007-09-07  jrandom
1496    * eepget: Merge timeout support from syndie
1497
1498* 2007-08-23  0.6.1.29 released
1499
15002007-08-12  zzz
1501    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
1502      tweak the eepsite and troubleshooting sections
1503
15042007-08-11  zzz
1505    * Add stats for individual tunnel rates (nice when graphed)
1506    * i2psnark: Fix outbound tunnel nickname
1507
15082007-08-05  Complication
1509    * Update the sharing calculator on config.jsp
1510      and explain the trade-off even more thoroughly.
1511
15122007-08-04  Complication
1513    * Lower the threshold between the K and L bandwidth class,
1514      so that K is now < 12 KB/s, instead of <= 16 KB/s.
1515      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
1516      participate in routing, if they keep the default share percentage.
1517
15182007-07-16  zzz
1519    * i2psnark: Add tooltip info for choked/uninterested
1520
15212007-07-16  zzz
1522    * Make selection of graphed data configurable via configstats.jsp,
1523      remove most of the default graphs to save some memory
1524
15252007-07-15  zzz
1526    * Add current values to graph legends
1527    * Fix up previous Rate fix to check for divide by zero
1528
15292007-07-14  Complication
1530    * Take the post-download routerInfo size check back out of ReseedHandler,
1531      since it wasn't helpful, and a lower limit caused false warnings.
1532    * Give EepGet ability to enforce a min/max HTTP response size.
1533    * Enforce a maximum response size of 8 MB when ReseedHandler
1534      downloads into a ByteArrayOutputStream.
1535    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
1536      change invocation from RouterConsoleRunner accordingly.
1537    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
1538      provide status reports to indicate the progress of reseeding.
1539    * Enable icon for default eepsite, and the index page
1540      of the router console (more later).
1541
15422007-07-14  zzz
1543    * Clean up graphs.jsp - set K=1024 where appropriate,
1544      output image sizes in html, catch ooms, other minor tweaks
1545    * Fix current event count truncation which fixes graphs with low
1546      60-sec event counts displaying high values
1547      (bw.* and router.* graphs for example were 1.5x too high)
1548      Affects all "events per period" (non-lifetime) counts.
1549
15502007-07-09  zzz
1551    * i2psnark: give a better error message for a non-i2p torrent
1552
15532007-07-07  zzz
1554    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
1555      SSU will notify/restart NTCP when the external address changes.
1556      Now you can enable inbound TCP without a static IP or dyndns service.
1557
15582007-07-04  zzz
1559    * Display calculated share bandwidth and remove load testing
1560      on config.jsp
1561
15622007-07-01  zzz
1563    * Replace broken option i2np.udp.alwaysPreferred with
1564      i2np.udp.preferred and adjust UDP bids; possible settings are
1565      "false" (default), "true", and "always".
1566      Default setting results in same behavior as before
1567      (NTCP is preferred unless it isn't established and UDP is established).
1568      Use to compare NTCP and UDP transports.
1569
15702007-06-27  jrandom
1571    * fix for a streaming lib bug that could leave a thread waiting
1572      indefinitely (thanks Complication!)
1573
15742007-06-16  Complication
1575    * First pass on EepGet and ReseedHandler improvements,
1576      please avoid use on routers which matter!
1577    * Give EepGet ability of downloading into an OutputStream,
1578      such as the ByteArrayOutputStream of ReseedHandler.
1579    * Detect failure to reseed better, report it persistently
1580      and more verbosely, provide a link to logs
1581      and suggest manual reseed.
1582
15832007-05-06  Complication
1584    * Fix the build.xml file, so the preppkg build target won't try copying files
1585      which became deprecated with the old Syndie (thanks for alerting, itsu!)
1586
15872007-03-31  zzz
1588    * Add trevorreznik jump server to the http proxy error page
1589    * Add anonymity to the trackers supporting details links in i2psnark
1590
15912007-03-24  zzz
1592    * Remove Syndie from build targets and navbar
1593
15942007-03-22  zzz
1595    * i2psnark tracker handling tweaks:
1596    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
1597    -   Add Base URL to tracker list configuration
1598    -   Web page links built from tracker list Base URLs
1599    -   Only build and sort tracker list once
1600    -   Add anonymityWeb tracker to default list
1601    -   Add tooltip info for TrackerErrs
1602    -   Stop torrent if not registered with tracker
1603    -   Mark temp files as delete on exit
1604
16052007-03-18  zzz
1606    * i2psnark: Cleanup some handling of saved partial pieces
1607    * i2psnark: Put bit counting in Bitfield.java for efficiency
1608    * i2psnark: Save torrent completion state in i2psnark.config
1609
1610* 2007-03-17  0.6.1.28 released
1611
16122007-03-13  zzz
1613    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
1614
16152007-03-12  jrandom
1616    * dodge a race on startup (thanks zzz!)
1617
16182007-03-10  zzz
1619    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
1620      (RFC 2988) to reduce early RTO values
1621
16222007-03-08  zzz
1623    * i2psnark changes to improve upload performance:
1624    *  Implement total uploader limit (10)
1625    *  Don't timeout non-piece messages out
1626    *  Change chunk size to 32K (was 64K)
1627    *  Change request limit to 64K (was 256K)
1628    * i2psnark: Disconnect from seeds when complete
1629
16302007-03-07  zzz
1631    * Remove dynamic router keys from config.jsp
1632
16332007-03-07  zzz
1634    * Streaming lib changes to improve upstream performance during congestion:
1635    *   Change min window size from 12 to 1
1636    *   Change max timeout from 10 to 45 sec
1637    *   Change initial timeout from 10 to 15 sec
1638    *   Change intial window size for i2psnark from 12 to 1
1639    *   Change slow start growth rate for i2psnark from 1/2 to 1
1640
16412007-03-04  zzz
1642    * Update eepsite_index.html
1643
16442007-03-03  zzz
1645    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
1646    * Add a updaterWithJetty build target
1647
16482007-03-03  zzz
1649    * Implement priority sending for NTCP
1650    * Disable trimForOverload() in tunnel BuildExecutor which
1651      was preventing tunnel builds when outbound traffic was high
1652      (i.e. most of the time when running i2psnark)
1653
16542007-02-28  zzz
1655    * i2psnark: File reopen cleanup
1656
16572007-02-28  zzz
1658    * i2psnark: Add peer details to web page
1659
1660* 2007-02-15  0.6.1.27 released
1661
16622007-02-15  jrandom
1663    * Limit the whispering floodfill sends to at most 3 randomly
1664      chosen from the known floodfill peers
1665
16662007-02-14  jrandom
1667    * Don't filter out KICK and H(ide oper status) IRC messages
1668      (thanks Takk and postman!)
1669
16702007-02-13  jrandom
1671    * Tell our peers about who we know in the floodfill netDb every
1672      6 hours or so, mitigating the situation where peers lose track
1673      of floodfill routers.
1674    * Disable the Syndie updater (people should use the new Syndie,
1675      not this one)
1676    * Disable the eepsite tunnel by default
1677
16782007-01-30  zzz
1679    * i2psnark: Don't hold _snarks lock while checking a snark,
1680      so web page is responsive at startup
1681
16822007-01-29  zzz
1683    * i2psnark: Add NickyB tracker
1684
16852007-01-28  zzz
1686    * i2psnark: Don't hold sendQueue lock while flushing output,
1687      to make everything run smoother
1688
16892007-01-27  zzz
1690    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
1691
16922007-01-20  Complication
1693    * Drop overlooked comment
1694
16952007-01-20  Complication
1696    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
1697      instead of System, so setting a reseed URL in advanced configuration has effect.
1698    * Clean out obsolete reseed code from ConfigNetHandler.
1699
17002007-01-20  zzz
1701    * i2psnark: More choking rotation tweaks
1702    * Improve performance by not reading in the whole
1703      piece from disk for each request. A huge memory savings
1704      on 1MB torrents with many peers.
1705
17062007-01-17  zzz
1707    * Add new HTTP Proxy error message for non-http protocols
1708
17092007-01-17  zzz
1710    * Add note on Syndie index.html steering people to new Syndie
1711
17122007-01-16  zzz
1713    * i2psnark: Fix crash when autostart off and
1714      tcrrent started manually
1715
17162007-01-16  zzz
1717    * i2psnark: Fix bug caused by last i2psnark checkin
1718      (ConnectionAcceptor not started)
1719    * Don't start PeerCoordinator, ConnectionAcceptor,
1720      and TrackerClient unless starting torrent
1721
17222007-01-15  jrandom
1723    * small guard against unnecessary streaming lib reset packets
1724      (thanks Complication!)
1725
17262007-01-15  zzz
1727    * i2psnark: Add 'Stop All' link on web page
1728    * Add some links to trackers and forum on web page
1729    * Don't start tunnel if 'Autostart' unchecked
1730    * Fix torrent restart bug by reopening file descriptors
1731
17322007-01-14  zzz
1733    * i2psnark: Improvements for torrents with > 4 leechers:
1734      choke based on upload rate when seeding, and
1735      be smarter and fairer about rotating choked peers.
1736    * Handle two common i2psnark OOM situations rather
1737      than shutting down the whole thing.
1738    * Fix reporting to tracker of remaining bytes for
1739      torrents > 4GB (but ByteMonsoon still has a bug)
1740
17412006-10-29  zzz
1742    * i2psnark: Fix and enable generation of multifile torrents,
1743      print error if no tracker selected at create-torrent,
1744      fix stopping a torrent that hasn't started successfully,
1745      add eBook and GayTorrents trackers to form,
1746      web page formatting tweaks
1747
1748* 2006-10-10  0.6.1.26 released
1749
17502006-10-29  Complication
1751    * Ensure we get NTP samples from more diverse sources
1752      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1753    * Discard median-based peer skew calculator as framed average works,
1754      and adjusting its percentage can make it behave median-like
1755    * Require more data points (from at least 20 peers)
1756      before considering a peer skew measurement reliable
1757
17582006-10-10  jrandom
1759    * Removed the status display from the console, as its more confusing
1760      than informative (though the content is still displayed in the HTML)
1761
17622006-10-08  Complication
1763    * Add a framed average peer clock skew calculator
1764    * Add config property "router.clockOffsetSanityCheck" to determine
1765      if NTP-suggested clock offsets get sanity checked (default "true")
1766    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1767      by more than 5 seconds, or make it more than 20 seconds total
1768    * Decrease log level in getMedianPeerClockSkew()
1769
17702006-09-29  zzz
1771    * i2psnark: Second try at synchronization fix - synch addRequest()
1772      completely rather than just portions of it and requestNextPiece()
1773
17742006-09-27  jrandom
1775    * added HMAC-SHA256
1776    * properly use CRLF with EepPost
1777    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1778    * PBE session key generation (with 1000 rounds of SHA256)
1779    * misc SDK helper functions
1780
17812006-09-26  Complication
1782    * Take back another inadverent logging change in NTCPConnection
1783
17842006-09-26  Complication
1785    * Take back an accidental log level change
1786
17872006-09-26  Complication
1788    * Subclass from Clock a RouterClock which can access router transports,
1789      with the goal of developing it to second-guess NTP results
1790    * Make transports report clock skew in seconds
1791    * Adjust renderStatusHTML() methods accordingly
1792    * Show average for NTCP clock skews too
1793    * Give transports a getClockSkews() method to report clock skews
1794    * Give transport manager a getClockSkews() method to aggregate results
1795    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1796      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1797    * Extra explicitness in NTCP classes to denote unit of time.
1798    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1799
18002006-09-25  zzz
1801    * i2psnark: Paranoid copy before writing pieces,
1802      recheck files on completion, redownload bad pieces
1803    * i2psnark: Don't contact tracker as often when seeding
1804
18052006-09-24  zzz
1806    * i2psnark: Add some synchronization to prevent rare problem
1807      after restoring orphan piece
1808
18092006-09-20  zzz
1810    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1811      rapid choke/unchokes
1812    * i2psnark: Truncate long TrackerErr messages on web page
1813
18142006-09-16  zzz
1815    * i2psnark: Implement retransmission of requests. This
1816      eliminates one cause of complete stalls with a peer.
1817      This problem is common on torrents with a small number of
1818      active peers where there are no choke/unchokes to kickstart things.
1819
18202006-09-13  zzz
1821    * i2psnark: Fix restoral of partial pieces broken by last patch
1822
18232006-09-13  zzz
1824    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1825      preventing premature end game
1826    * i2psnark: Randomize selection of next piece during end game
1827    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1828    * i2psnark: strip ".torrent" on web page
1829    * i2psnark: Limit piece size in generated torrent to 1MB max
1830
18312006-09-09  zzz
1832    * i2psnark: Add "Stalled" indication and stat totals on web page
1833
18342006-09-09  zzz
1835    * i2psnark: Fix bug where new peers would always be sent an "interested"
1836      regardless of actual interest
1837    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1838      memory and efficiency problems
1839
1840* 2006-09-09  0.6.1.25 released
1841
18422006-09-08  jrandom
1843    * Tweak the PRNG logging so it only displays error messages if there are
1844      problems
1845    * Disable dynamic router keys for the time being, as they don't offer
1846      meaningful security, may hurt the router, and makes it harder to
1847      determine the network health.  The code to restart on SSU IP change is
1848      still enabled however.
1849    * Disable tunnel load testing, leaning back on the tiered selection for
1850      the time being.
1851    * Spattering of bugfixes
1852
18532006-09-07  zzz
1854    * i2psnark: Increase output timeout from 2 min to 4 min
1855    * i2psnark: Orphan debug msg cleanup
1856    * i2psnark: More web rate report cleanup
1857
18582006-09-05  zzz
1859    * i2psnark: Implement basic partial-piece saves across connections
1860    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1861      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1862      code in i2psnark ineffective. Will have to research why there is transmit but
1863      not receive inactivity code. With the current connection limit of 24 peers
1864      we aren't in any danger of keeping out new peers by keeping inactive ones.
1865    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1866    * i2psnark: Fix dropped chunk handling
1867    * i2psnark: Web rate report cleanup
1868
18692006-09-04  zzz
1870    * i2psnark: Report cleared trackerErr immediately
1871    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1872    * i2psnark: Set up new connections more quickly
1873    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1874    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1875
18762006-09-04  zzz
1877    * Enable pipelining in i2psnark
1878    * Make i2psnark tunnel default be 1 + 0-1
1879
18802006-09-03  zzz
1881    * Add rate reporting to i2psnark
1882
18832006-09-03  Complication
1884    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1885    * Print messages about addressbook size to give better overview
1886    * Enable delete function in published addressbook
1887
18882006-08-21  Complication
1889    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1890
18912006-08-03  jrandom
1892    * Decrease the recently modified tunnel building timeout, though keep
1893      the scaling on their processing
1894
18952006-07-31  jrandom
1896    * Increase the tunnel building timeout
1897    * Avoid a rare race (thanks bar!)
1898    * Fix the bandwidth capacity publishing code to factor in share percentage
1899      and outbound throttling (oops)
1900
19012006-07-29  Complication
1902    * Treat NTP responses from unexpected stratums like failures
1903
1904* 2006-07-28  0.6.1.24 released
1905
19062006-07-28  jrandom
1907    * Don't try to reverify too many netDb entries at once (thanks
1908      cervantes and Complication!)
1909
19102006-07-28  jrandom
1911    * Actually fix the threading deadlock issue in the netDb (removing
1912      the synchronized access to individual kbuckets while validating
1913      individual entries) (thanks cervantes, postman, frosk, et al!)
1914
1915* 2006-07-27  0.6.1.23 released
1916
19172006-07-27  jrandom
1918    * Cut down NTCP connection establishments once we know the peer is skewed
1919      (rather than wait for full establishment before verifying)
1920    * Removed a lock on the stats framework when accessing rates, which
1921      shouldn't be a problem, assuming rates are created (pretty much) all at
1922      once and merely updated during the lifetime of the jvm.
1923
19242006-07-27  jrandom
1925    * Further NTCP write status cleanup
1926    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1927
19282006-07-26  jrandom
1929    * When dropping a netDb router reference, only accept newer
1930      references as part of the update check
1931    * If we have been up for a while, don't accept really old
1932      router references (published 2 or more days ago)
1933    * Drop router references once they are no longer valid, even if
1934      they were allowed in due to the lax restrictions on startup
1935
19362006-07-26  jrandom
1937    * Every time we create a new router identity, add an entry to the
1938      new "identlog.txt" text file in the I2P install directory.  For
1939      debugging purposes, publish the count of how many identities the
1940      router has cycled through, though not the identities itself.
1941    * Cleaned up the way the multitransport shitlisting worked, and
1942      added per-transport shitlists
1943    * When dropping a router reference locally, first fire a netDb
1944      lookup for the entry
1945    * Take the peer selection filters into account when organizing the
1946      profiles (thanks Complication!)
1947    * Avoid some obvious configuration errors for the NTCP transport
1948      (invalid ports, "null" ip, etc)
1949    * Deal with some small NTCP bugs found in the wild (unresolveable
1950      hosts, strange network discons, etc)
1951    * Send our netDb info to peers we have direct NTCP connections to
1952      after each 6-12 hours of connection uptime
1953    * Clean up the NTCP reading and writing queue logic to avoid some
1954      potential delays
1955    * Allow people to specify the IP that the SSU transport binds on
1956      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
1957
1958* 2006-07-18  0.6.1.22 released
1959
19602006-07-18  jrandom
1961    * Add a failsafe to the NTCP transport to make sure we keep
1962      pumping writes when we should.
1963    * Properly reallow 16-32KBps routers in the default config
1964      (thanks Complication!)
1965
19662006-07-16  Complication
1967    * Collect tunnel build agree/reject/expire statistics
1968      for each bandwidth tier of peers (and peers of unknown tiers,
1969      even if those shouldn't exist)
1970
19712006-07-14  jrandom
1972    * Improve the multitransport shitlisting (thanks Complication!)
1973    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
1974      the default configuration (thanks for the stats Complication!)
1975    * Properly allow older router references to load on startup
1976      (thanks bar, Complication, et al!)
1977    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
1978      hopefully today's changes should make this unnecessary (thanks void!)
1979    * Improved NTCP buffering
1980    * Close NTCP connections if we are too backlogged when writing to them
1981
19822006-07-04  jrandom
1983    * New NIO-based tcp transport (NTCP), enabled by default for outbound
1984      connections only.  Those who configure their NAT/firewall to allow
1985      inbound connections and specify the external host and port
1986      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
1987      SSU is still enabled for use by default for all users as a fallback.
1988    * Substantial bugfix to the tunnel gateway processing to transfer
1989      messages sequentially instead of interleaved
1990    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
1991      GNU/Classpath based JVMs
1992    * Adjust the Fortuna PRNG's pooling system to reduce contention on
1993      refill with a background thread to refill the output buffer
1994    * Add per-transport support for the shitlist
1995    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
1996      contention
1997
19982006-07-01  Complication
1999    * Ensure that the I2PTunnel web interface won't update tunnel settings
2000      for shared clients when a non-shared client is modified
2001      (thanks for spotting, BarkerJr!)
2002
20032006-06-14  cervantes
2004    * Small tweak to I2PTunnel CSS, so it looks better with desktops
2005      that use Bitstream Vera fonts @ 96 dpi
2006
2007* 2006-06-14  0.6.1.21 released
2008
20092006-06-13  jrandom
2010    * Use a minimum uptime of 2 hours, not 4 (oops)
2011
20122006-06-13  jrandom
2013    * Cut down the proactive rejections due to queue size - if we are
2014      at the point of having decrypted the request off the queue, might
2015      as well let it through, rather than waste that decryption
2016
20172006-06-11  Kloug
2018    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
2019      outstanding pings/pongs
2020
20212006-06-10  jrandom
2022    * Further reduction in proactive rejections
2023
20242006-06-09  jrandom
2025    * Don't let the pending tunnel request queue grow beyond reason
2026      (letting things sit for up to 30s when they fail after 10s
2027      seems a bit... off)
2028
20292006-06-08  jrandom
2030    * Be more conservative in the proactive rejections
2031
20322006-06-04  Complication
2033    * Trim out sending a blank line before USER in susimail.
2034      Seemed to break in rare cases, thanks for reporting, Brachtus!
2035
2036* 2006-06-04  0.6.1.20 released
2037
20382006-06-04  jrandom
2039    * Reduce the SSU ack frequency
2040    * Tweaked the tunnel rejection settings to reject less aggressively
2041
20422006-05-31  jrandom
2043    * Only send netDb searches to the floodfill peers for the time being
2044    * Add some proof of concept filters for tunnel participation.  By default,
2045      it will skip peers with an advertised bandwith of less than 32KBps or
2046      an advertised uptime of less than 2 hours.  If this is sufficient, a
2047      safer implementation of these filters will be implemented.
2048
2049* 2006-05-18  0.6.1.19 released
2050
20512006-05-18  jrandom
2052    * Made the SSU ACKs less frequent when possible
2053
20542006-05-17  Complication
2055    * Fix some oversights in my previous changes:
2056      adjust some loglevels, make a few statements less wasteful,
2057      make one comparison less confusing and more likely to log unexpected values
2058
20592006-05-17  jrandom
2060    * Make the peer page sortable
2061    * SSU modifications to cut down on unnecessary connection failures
2062
20632006-05-16  jrandom
2064    * Further shitlist randomizations
2065    * Adjust the stats monitored for detecting cpu overload when dropping new
2066      tunnel requests
2067
20682006-05-15  jrandom
2069    * Add a load dependent throttle on the pending inbound tunnel request
2070      backlog
2071    * Increased the tunnel test failure slack before killing a tunnel
2072
20732006-05-13  Complication
2074    * Separate growth factors for tunnel count and tunnel test time
2075    * Reduce growth factors, so probabalistic throttle would activate
2076    * Square probAccept values to decelerate stronger when far from average
2077    * Create a bandwidth stat with approximately 15-second half life
2078    * Make allowTunnel() check the 1-second bandwidth for overload
2079      before doing allowance calculations using 15-second bandwidth
2080    * Tweak the overload detector in BuildExecutor to be more sensitive
2081      for rising edges, add ability to initiate tunnel drops
2082    * Add a function to seek and drop the highest-rate participating tunnel,
2083      keeping a fixed+random grace period between such drops.
2084      It doesn't seem very effective, so disabled by default
2085      ("router.dropTunnelsOnOverload=true" to enable)
2086
20872006-05-11  jrandom
2088    * PRNG bugfix (thanks cervantes and Complication!)
2089
2090* 2006-05-09  0.6.1.18 released
2091
20922006-05-09  jrandom
2093    * Further tunnel creation timeout revamp
2094
20952006-05-07  Complication
2096    * Fix problem whereby repeated calls to allowed() would make
2097      the 1-tunnel exception permit more than one concurrent build
2098
20992006-05-06  jrandom
2100    * Readjust the tunnel creation timeouts to reject less but fail earlier,
2101      while tracking the extended timeout events.
2102
21032006-05-04  jrandom
2104    * Short circuit a highly congested part of the stat logging unless its
2105      required (may or may not help with a synchronization issue reported by
2106      andreas)
2107
21082006-05-03  Complication
2109    * Allow a single build attempt to proceed despite 1-minute overload
2110      only if the 1-second rate shows enough spare bandwidth
2111      (e.g. overload has already eased)
2112
21132006-05-02  Complication
2114    * Correct a misnamed property in SummaryHelper.java
2115      to avoid confusion
2116    * Make the maximum allowance of our own concurrent
2117      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
2118      within the fixed range 2..10
2119    * While overloaded, try to avoid completely choking our own build attempts,
2120      instead prefer limiting them to 1
2121
21222006-05-01  jrandom
2123    * Adjust the tunnel build timeouts to cut down on expirations, and
2124      increased the SSU connection establishment retransmission rate to
2125      something less glacial.
2126    * For the first 5 minutes of uptime, be less aggressive with tunnel
2127      exploration, opting for more reliable peers to start with.
2128
21292006-05-01  jrandom
2130    * Fix for a netDb lookup race (thanks cervantes!)
2131
21322006-04-27  jrandom
2133    * Avoid a race in the message reply registry (thanks cervantes!)
2134
21352006-04-27  jrandom
2136    * Fixed the tunnel expiration desync code (thanks Complication!)
2137
2138* 2006-04-23  0.6.1.17 released
2139
21402006-04-19  jrandom
2141    * Adjust how we pick high capacity peers to allow the inclusion of fast
2142      peers (the previous filter assumed an old usage pattern)
2143    * New set of stats to help track per-packet-type bandwidth usage better
2144    * Cut out the proactive tail drop from the SSU transport, for now
2145    * Reduce the frequency of tunnel build attempts while we're saturated
2146    * Don't drop tunnel requests as easily - prefer to explicitly reject them
2147
2148* 2006-04-15  0.6.1.16 released
2149
21502006-04-15  jrandom
2151    * Adjust the proactive tunnel request dropping so we will reject what we
2152      can instead of dropping so much (but still dropping if we get too far
2153      overloaded)
2154
21552006-04-14  jrandom
2156    * 0 isn't very random
2157    * Adjust the tunnel drop to be more reasonable
2158
21592006-04-14  jrandom
2160    * -28.00230115311259 is not between 0 and 1 in any universe I know.
2161    * Made the bw-related tunnel join throttle much simpler
2162
21632006-04-14  jrandom
2164    * Make some more stats graphable, and allow some internal tweaking on the
2165      tunnel pairing for creation and testing.
2166
2167* 2006-04-13  0.6.1.15 released
2168
21692006-04-12  jrandom
2170    * Added a further failsafe against trying to queue up too many messages to
2171      a peer.
2172
21732006-04-12  jrandom
2174    * Watch out for failed syndie index fetches (thanks bar!)
2175
21762006-04-11  jrandom
2177    * Throttling improvements on SSU - throttle all transmissions to a peer
2178      when we are retransmitting, not just retransmissions.  Also, if
2179      we're already retransmitting to a peer, probabalistically tail drop new
2180      messages targetting that peer, based on the estimated wait time before
2181      transmission.
2182    * Fixed the rounding error in the inbound tunnel drop probability.
2183
21842006-04-10  jrandom
2185    * Include a combined send/receive graph (good idea cervantes!)
2186    * Proactively drop inbound tunnel requests probabalistically as the
2187      estimated queue time approaches our limit, rather than letting them all
2188      through up to that limit.
2189
21902006-04-08  jrandom
2191    * Stat summarization fix (removing the occational holes in the jrobin
2192      graphs)
2193
21942006-04-08  jrandom
2195    * Process inbound tunnel requests more efficiently
2196    * Proactively drop inbound tunnel requests if the queue before we'd
2197      process it in is too long (dynamically adjusted by cpu load)
2198    * Adjust the tunnel rejection throttle to reject requeusts when we have to
2199      proactively drop too many requests.
2200    * Display the number of pending inbound tunnel join requests on the router
2201      console (as the "handle backlog")
2202    * Include a few more stats in the default set of graphs
2203
22042006-04-06  jrandom
2205    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
2206
22072006-04-06  jrandom
2208    * Fixed a typo in the reply cleanup code
2209
2210* 2006-04-05  0.6.1.14 released
2211
22122006-04-05  jrandom
2213    * Cut down on the time that we allow a tunnel creation request to sit by
2214      without response, and reject tunnel creation requests that are lagged
2215      locally.  Also switch to a bounded FIFO instead of a LIFO
2216    * Threading tweaks for the message handling (thanks bar!)
2217    * Don't add addresses to syndie with blank names (thanks Complication!)
2218    * Further ban clearance
2219
22202006-04-05  jrandom
2221    * Fix during the ssu handshake to avoid an unnecessary failure on
2222      packet retransmission (thanks ripple!)
2223    * Fix during the SSU handshake to use the negotiated session key asap,
2224      rather than using the intro key for more than we should (thanks ripple!)
2225    * Fixes to the message reply registry (thanks Complication!)
2226    * More comprehensive syndie banning (for repeated pushes)
2227    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
2228      testing purposes
2229    * Put a floor back on the capacity threshold, so too many failing peers
2230      won't cause us to pick very bad peers (unless we have very few good
2231      ones)
2232    * Bugfix to cut down on peers using introducers unneessarily (thanks
2233      Complication!)
2234    * Reduced the default streaming lib message size to fit into a single
2235      tunnel message, rather than require 5 tunnel messages to be transferred
2236      without loss before recomposition.  This reduces throughput, but should
2237      increase reliability, at least for the time being.
2238    * Misc small bugfixes in the router (thanks all!)
2239    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
2240
22412006-04-01  jrandom
2242    * Take out the router watchdog's teeth (don't restart on leaseset failure)
2243    * Filter the IRC ping/pong messages, as some clients send unsafe
2244      information in them (thanks aardvax and dust!)
2245
22462006-03-30  jrandom
2247    * Substantially reduced the lock contention in the message registry (a
2248      major hotspot that can choke most threads).  Also reworked the locking
2249      so we don't need per-message timer events
2250    * No need to have additional per-peer message clearing, as they are
2251      either unregistered individually or expired.
2252    * Include some of the more transient tunnel throttling
2253
2254* 2006-03-26  0.6.1.13 released
2255
22562006-03-25  jrandom
2257    * Added a simple purge and ban of syndie authors, shown as the
2258      "Purge and ban" button on the addressbook for authors that are already
2259      on the ignore list.  All of their entries and metadata are deleted from
2260      the archive, and the are transparently filtered from any remote
2261      syndication (so no user on the syndie instance will pull any new posts
2262      from them)
2263    * More strict tunnel join throtting when congested
2264
22652006-03-24  jrandom
2266    * Try to desync tunnel building near startup (thanks Complication!)
2267    * If we are highly congested, fall back on only querying the floodfill
2268      netDb peers, and only storing to those peers too
2269    * Cleaned up the floodfill-only queries
2270
22712006-03-21  jrandom
2272    * Avoid a very strange (unconfirmed) bug that people using the systray's
2273      browser picker dialog could cause by disabling the GUI-based browser
2274      picker.
2275    * Cut down on subsequent streaming lib reset packets transmitted
2276    * Use a larger MTU more often
2277    * Allow netDb searches to query shitlisted peers, as the queries are
2278      indirect.
2279    * Add an option to disable non-floodfill netDb searches (non-floodfill
2280      searches are used by default, but can be disabled by adding
2281      netDb.floodfillOnly=true to the advanced config)
2282
22832006-03-20  jrandom
2284    * Fix to allow for some slack when coalescing stats
2285    * Workaround some oddball errors
2286
22872006-03-18  jrandom
2288    * Added a new graphs.jsp page to show all of the stats being harvested
2289
22902006-03-18  jrandom
2291    * Made the netDb search load limitations a little less stringent
2292    * Add support for specifying the number of periods to be plotted on the
2293      graphs - e.g. to plot only the last hour of a stat that is averaged at
2294      the 60 second period, add &periodCount=60
2295
22962006-03-17  jrandom
2297    * Add support for graphing the event count as well as the average stat
2298      value (done by adding &showEvents=true to the URL).  Also supports
2299      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
2300      the title (&hideTitle=true).
2301    * Removed an unnecessary arbitrary filter on the profile organizer so we
2302      can pick high capacity and fast peers more appropriately
2303
23042006-03-16  jrandom
2305    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
2306      console.  Selected stats can be harvested automatically and fed into
2307      in-memory RRD databases, and those databases can be served up either as
2308      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
2309      details).  A base set of stats are harvested by default, but an
2310      alternate list can be specified by setting the 'stat.summaries' list on
2311      the advanced config.  For instance:
2312      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
2313    * HTML tweaking for the general config page (thanks void!)
2314    * Odd NPE fix (thanks Complication!)
2315
23162006-03-15  Complication
2317    * Trim out an old, inactive IP second-guessing method
2318      (thanks for spotting, Anonymous!)
2319
23202006-03-15  jrandom
2321    * Further stat cleanup
2322    * Keep track of how many peers we are actively trying to communicate with,
2323      beyond those who are just trying to communicate with us.
2324    * Further router tunnel participation throttle revisions to avoid spurious
2325      rejections
2326    * Rate stat display cleanup (thanks ripple!)
2327    * Don't even try to send messages that have been queued too long
2328
23292006-03-05  zzz
2330    * Remove the +++--- from the logs on i2psnark startup
2331
23322006-03-05  jrandom
2333    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
2334    * Give netDb lookups to floodfill peers more time, as they are much more
2335      likely to succeed (thereby cutting down on the unnecessary netDb
2336      searches outside the floodfill set)
2337    * Fix to the SSU IP detection code so we won't use introducers when we
2338      don't need them (thanks Complication!)
2339    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
2340      peers given to it
2341    * Don't let netDb searches wander across too many peers
2342    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
2343      as its too volatile to have much meaning.
2344    * Don't bork if a Syndie post is missing an entry.sml
2345
23462006-03-05  Complication
2347    * Reduce exposed statistical information,
2348      to make build and uptime tracking more expensive
2349
23502006-03-04  Complication
2351    * Fix the announce URL of orion's tracker in Snark sources
2352
23532006-03-03  Complication
2354    * Explicit check for an index out of bounds exception while parsing
2355      an inbound IRC command (implicit check was there already)
2356
23572006-03-01  jrandom
2358    * More aggressive tunnel throttling as we approach our bandwidth limit,
2359      and throttle based off periods wider than 1 second.
2360    * Included Doubtful Salmon's syndie stylings (thanks!)
2361
23622006-02-27  zzz
2363    * Update error page templates to add \r, Connection: close, and
2364      Proxy-connection: close to headers.
2365
2366* 2006-02-27  0.6.1.12 released
2367
23682006-02-27  jrandom
2369    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
2370      machines, rather than the generic jbigi (until we have an athlon64
2371      optimized version)
2372
23732006-02-26  jrandom
2374    * Switch from the bouncycastle to the gnu-crypto implementation for
2375      SHA256, as benchmarks show a 10-30% speedup.
2376    * Removed some unnecessary object caches
2377    * Don't close i2psnark streams prematurely
2378
23792006-02-25  jrandom
2380    * Made the Syndie permalinks in the thread view point to the blog view
2381    * Disabled TCP again (since the live net seems to be doing well w/out it)
2382    * Fix the message time on inbound SSU establishment (thanks zzz!)
2383    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
2384      just starts up
2385
23862006-02-24  jrandom
2387    * Rounding calculation cleanup in the stats, and avoid an uncontested
2388      mutex (thanks ripple!)
2389    * SSU handshake cleanup to help force incompatible peers to stop nagging
2390      us by both not giving them an updated reference to us and by dropping
2391      future handshake packets from them.
2392
23932006-02-23  jrandom
2394    * Increase the SSU retransmit ceiling (for slow links)
2395    * Estimate the sender's SSU MTU (to help see if we agree)
2396
23972006-02-22  jrandom
2398    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
2399    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
2400      links
2401    * Further class validator refactorings
2402
24032006-02-22  jrandom
2404    * Handle a rare race under high bandwidth situations in the SSU transport
2405    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
2406
24072006-02-21  Complication
2408    * Reactivate TCP tranport by default, in addition to re-allowing
2409
2410* 2006-02-21  0.6.1.11 released
2411
24122006-02-21  jrandom
2413    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
2414      heap when backlogged (and so that the messages queued up on it don't sit
2415      there forever)
2416    * Further SSU memory cleanup
2417    * Clean up the address regeneration code so it knows when to rebuild the
2418      local info more precisely.
2419
24202006-02-20  jrandom
2421    * Properly enable TCP this time (oops)
2422    * Deal with multiple form handlers on the same page in the console without
2423      being too annoying (thanks blubb and bd_!)
2424
24252006-02-20  jrandom
2426    * Reenable the TCP transport as a fallback (we'll continue to muck with
2427      debugging SSU-only elsewhere)
2428
24292006-02-20  jrandom
2430    * Major SSU and router tuning to reduce contention, memory usage, and GC
2431      churn.  There are still issues to be worked out, but this should be a
2432      substantial improvement.
2433    * Modified the optional netDb harvester task to support choosing whether
2434      to use (non-anonymous) direct connections or (anonymous) exploratory
2435      tunnels to do the harvesting.  Harvesting itself is enabled via the
2436      advanced config "netDb.shouldHarvest=true" (default is false) and the
2437      connection type can be chosen via "netDb.harvestDirectly=false" (default
2438      is false).
2439
24402006-02-19  dust
2441    * Added pruning of suckers history (it used to grow indefinitely).
2442
24432006-02-19  jrandom
2444    * Moved the current net's reseed URL to a different location than where
2445      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
2446    * More aggressively expire inbound messages (on receive, not just on send)
2447    * Add in a hook for breaking backwards compatibility in the SSU wire
2448      protocol directly by including a version as part of the handshake.  The
2449      version is currently set to 0, however, so the wire protocol from this
2450      build is compatible with all earlier SSU implementations.
2451    * Increased the number of complete message readers, cutting down
2452      substantially on the delay processing inbound messages.
2453    * Delete the message history file on startup
2454    * Reworked the restart/shutdown display on the console (thanks bd_!)
2455
24562006-02-18  jrandom
2457    * Migrate the outbound packets from a central component to the individual
2458      per-peer components, substantially cutting down on lock contention when
2459      dealing with higher degrees.
2460    * Load balance the outbound SSU transfers evenly across peers, rather than
2461      across messages (so peers with few messages won't be starved by peers
2462      with many).
2463    * Reduce the frequency of router info rebuilds (thanks bar!)
2464
24652006-02-18  jrandom
2466    * Add a new AIMD throttle in SSU to control the number of concurrent
2467      messages being sent to a given peer, in addition to the throttle on the
2468      number of concurrent bytes to that peer.
2469    * Adjust the existing SSU outbound queue to throttle based on the queue's
2470      lag, not an arbitrary number of packets.
2471
24722006-02-17  jrandom
2473    * Properly fix the build request queue throttling, using queue age to
2474      detect congestion, rather than queue size.
2475
24762006-02-17  jrandom
2477    * Disable the message history log file by default (duh - feel free to
2478      delete messageHistory.txt after upgrading.  thanks deathfatty!)
2479    * Limit the size of the inbound tunnel build request queue so we don't
2480      get an insane backlog of requests that we're bound to reject, and adjust
2481      the queue processing so we keep on churning through them when we've got
2482      a backlog.
2483    * Small fixes for the multiuser syndie operation (thanks Complication!)
2484    * Renamed modified PRNG classes that were imported from gnu-crypto so we
2485      don't conflict with JVMs using that as a JCE provider (thanks blx!)
2486
2487* 2006-02-16  0.6.1.10 released
2488
24892006-02-16  jrandom
2490    * Add a new toggle to the web config to enable/disable the load testing
2491
24922006-02-16  jrandom
2493    * Dropped much of the abandonware from the apps/ directory
2494
24952006-02-16  jrandom
2496    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
2497    * Initial sucker refactoring to simplify reuse of the html parsing
2498    * Beginnings of hooks to push imported rss/atom out to remote syndie
2499      archives automatically (though not enabled currently)
2500    * Further SSU peer test cleanup
2501
25022006-02-15  jrandom
2503    * Add in per-blog RSS feeds to Syndie
2504    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
2505      with the posts, marking additional attachments as Media RSS enclosures
2506      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
2507      per item.
2508    * Don't allow the default syndie user to be set to something invalid if
2509      its in single user mode.
2510
25112006-02-15  jrandom
2512    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
2513      longer backwards compatible (and should not be used until 0.6.1.1 is
2514      out)
2515
25162006-02-14  jrandom
2517    * Syndie ui bugfixes (thanks all!)
2518
25192006-02-13  jrandom
2520    * Use the current directory for some temporary I2PSnark files, rather than
2521      the OS default temp dir (thanks anon!)
2522    * Increase the base streaming lib window size (still shrinks to 1 on
2523      retransmission though, of course)
2524    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
2525    * Implement fast retransmit in the streaming lib (fires at most once per
2526      packet), and increased the default ack delay to 2 seconds (from .5s)
2527    * Don't ask for garlic level message acks for end to end messages unless
2528      they're useful (e.g. to ack session tags)
2529
25302006-02-12  cervantes
2531    * Use a different santisation method for some SML attributes
2532    * Make router console update config save button actually save.
2533    * Fix console bandwidth limiter burst rate dropdowns, so the display
2534      relates to what is saved in the config.
2535   
25362006-02-12  cervantes
2537    * SML is now stricter in it's formatting (attributes should only use
2538      double quotes instead of being allowed to mix with singles).
2539    * Using apostrophes in SML attributes will no longer invalidate the tag.
2540    * Some instances of [blog] tag description were not being displayed
2541      correctly.
2542
25432006-02-12  jrandom
2544    * Further SSU peer test throttling
2545    * Put the most common router console features on the main index page too
2546
25472006-02-11  jrandom
2548    * Be more careful about SSU peer test floods
2549
25502006-02-09  jrandom
2551    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
2552
25532006-02-08  jrandom
2554    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
2555      bundled a precompiled libjbigi.so in the jbigi.jar
2556    * Cleaned up the synchronization for some SSU packet handling code
2557    * Allow explicit rejection of more lagged tunnel build requests, rather
2558      than dropping them outright
2559    * Use lighter load testing
2560
25612006-02-07  jrandom
2562    * Handle HTTP headers without any values (thanks Sugadude!)
2563    * Don't show the option to make Syndie multiuser, since very few people
2564      need it, and multiuser mode is a lot more complex to use.  Geeks can
2565      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
2566      (or in the router's advanced config, for the embedded Syndie)
2567    * When a peer rejects participation in a tunnel, they mean it (duh)
2568    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
2569    * Remove a throttle on the size of the SSU active outbound pool, since
2570      it was essentially arbitrary
2571    * Use a more appropriate SSU bloom filter size
2572    * Don't "proactively" drop SSU connections if we have partially received
2573      inbound messages (duh)
2574    * Migrate most of the message state across SSU connection reestablishment
2575
25762006-02-06  jrandom
2577    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
2578      piggybacked
2579
25802006-02-05  jrandom
2581    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
2582      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
2583      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
2584    * Enable the messageHistory.txt by default, for debugging
2585
25862006-02-05  jrandom
2587    * Substantial bugfix for the duplicate message detection in the transport
2588      layer
2589    * Handle tunnel build responses ASAP, rather than queueing them up to wait
2590      in line (processing them is really fast - just a few AES loops)
2591    * Don't bother handling build requests that we have queued up for a while
2592      locally, as the requestor will have timed it out anyway (perhaps we
2593      should reply regardless, but with a backoff instead?)
2594
25952006-02-04  jrandom
2596    * Further tunnel test cleanup and disabling of the old tunnel creation
2597      code
2598
25992006-02-04  jrandom
2600    * Clean up and reenable the tunnel testing for the new tunnel system.
2601
26022006-02-04  jrandom
2603    * Don't cache the archive.txt in syndie when fetching it through the web
2604      interface.
2605    * Logging updates
2606
26072006-02-03  jrandom
2608    * Added further replay prevention on the tunnel build requests
2609    * More aggressive streaming lib closing on reset
2610
26112006-02-03  jrandom
2612    * More aggressive refusal of peers from the wrong network (oops)
2613
26142006-02-01  jrandom
2615    * Instruct the router to reseed against a new URL, for migration purposes:
2616      http://dev.i2p.net/i2pdb2/
2617    * Aggressive error handling during UDP packet creation (thanks cervantes)
2618
26192006-02-01  jrandom
2620    * Fix the new tunnel creation crypto, including the addition of a 4 byte
2621      "next message ID" to the encrypted request structure in the spec.
2622    * Backwards incompatible change, using the new tunnel creation crypto, the
2623      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
2624      with the old incompatible network).
2625    * Reworked the leaseSet request process to handle a race condition
2626    * Disable the TCP transport
2627    * Run four separate threads on the job queue to cut down on job lag
2628
26292006-01-28  jrandom
2630    * Removed a race that could show up in leaseSet requesting with the new
2631      tunnel building process
2632
26332006-01-25  jrandom
2634    * Run the peer profile coalescing/reorganization outside the job queue
2635      (on one of the timers), to cut down on some job queue congestion.  Also,
2636      trim old profiles while running, not just when starting up.
2637    * Slightly more sane intra-floodfill-node netDb activity (only flood new
2638      entries)
2639    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
2640      source of the bug is not yet addressed)
2641    * Better I2PSnark reconnection handling
2642    * Further cleanup in the new tunnel build process
2643    * Make sure we expire old participants properly
2644    * Remove much of the transient overload throttling (it wasn't using a good
2645      metric)
2646
26472006-01-25  dust
2648    * Fix IRC client proxy to use ISO-8859-1.
2649
26502006-01-22  jrandom
2651    * New tunnel build process - does not use the new crypto or new peer
2652      selection strategies.  However, it does drop the fallback tunnel
2653      procedure, except for tunnels who are configured to allow them, or for
2654      the exploratory pool during bootstrapping or after a catastrophic
2655      failure.  This new process prefers to fail rather than use too-short
2656      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
2657      it may expose more tunnel failures to the user.
2658    * Always prefer normal tunnels to fallback tunnels.
2659    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
2660      bar!)
2661    * Do all of the netDb entry writing in a separate thread, avoiding
2662      duplicates and batching them up.
2663
26642006-01-19  Complication
2665    * Explain better where eepsite's destkey can be found
2666
26672006-01-18  cervantes
2668    * Add title attributes to all external links in Syndie, so we can rollover
2669      and quickly see if it's worth clicking on.
2670    * Fixed a minor compiler warning.
2671
26722006-01-17  jrandom
2673    * First pass of the new tunnel creation crypto, specified in the new
2674      router/doc/tunnel-alt-creation.html (referenced in the current
2675      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
2676      than in the test code, but the code verifies the technical viability, so
2677      further scrutiny would be warranted.
2678
26792006-01-16  cervantes
2680    * Dragged I2P kicking and screaming into 2006 (Oops)
2681
26822006-01-14  cervantes
2683    * Removed entirely misleading memory status from the console summary.
2684       
26852006-01-13  cervantes
2686    * Further Syndie layout hardening and typeface balancing.
2687
2688* 2006-01-12  0.6.1.9 released
2689
26902006-01-12  jrandom
2691    * Only create the loadtest.log if requested to do so (thanks zzz!)
2692    * Make sure we cleanly take into consideration the appropriate data
2693      points when filtering out duplicate messages in the message validator,
2694      and report the right bloom filter false positives rate (not used for
2695      anything except debugging)
2696
26972006-01-12  cervantes
2698    * Syndie CSS tweaks to removed some redundant declarations, improve font
2699      scaling and layout robustness. Improved cross browser compatibility
2700      (in other words "kicked IE"). Tightened the look of the blog template
2701      a little.
2702
27032006-01-11  Complication
2704    * CSS comment fixes
2705
27062006-01-11  jrandom
2707    * Include the attachments/blogs/etc for comments on the blog view
2708    * Syndie HTML fixes (thanks cervantes!)
2709    * Make sure we fully reset the objects going into our cache before we
2710      reuse them (thanks zzz!)
2711
27122006-01-10  jrandom
2713    * Added the per-post list of attachments/blogs/etc to the blog view in
2714      Syndie (though this does not yet include comments or some further
2715      refinements)
2716    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2717      removing the dox box (though also removes the restart functionality...)
2718    * Give the i2p.exe the correct java.library.path to support the systray
2719      dll (thanks Bobcat, Sugadude, anon!)
2720
27212006-01-09  jrandom
2722    * Removed a longstanding bug that had caused unnecessary router identity
2723      churn due to clock skew
2724    * Temporarily sanity check within the streaming lib for long pending
2725      writes
2726    * Added support for a blog-wide logo to Syndie, and automated the pushing
2727      of updated extended blog info data along side the metadata.
2728
27292006-01-09  jrandom
2730    * Bugfix for a rare SSU error (thanks cervantes!)
2731    * More progress on the blog interface, allowing customizable blog-wide
2732      links.
2733
27342006-01-08  jrandom
2735    * First pass of the new blog interface, though without much of the useful
2736      customization features (coming soon)
2737
27382006-01-04  jrandom
2739    * Rather than profile individual tunnels for throughput over their
2740      lifetime, do so at 1 minute intervals (allowing less frequently active
2741      tunnels to be more fairly measured).
2742    * Run the live tunnel load test across two tunnels at a time, by default.
2743      The load test runs for a random period from 90s to the tunnel lifetime,
2744      self paced.  This should help gathering data for profiling peers that
2745      are in exploratory tunnels.
2746
27472006-01-03  jrandom
2748    * Calculate the overall peer throughput across the 3 fastest one minute
2749      tunnel throughput values, rather than the single fastest throughput.
2750    * Degrade the profiled throughput data over time (cutting the profiled
2751      peaks in half once a day, on average)
2752    * Enable yet another new speed calculation for profiling peers, using the
2753      peak throughput from individual tunnels that a peer is participating in,
2754      rather than across all tunnels they are participating in.  This helps
2755      gather a fairer peer throughput measurement, since it won't allow a slow
2756      high capacity peer seem to have a higher throughput (pushing a little
2757      data across many tunnels at once, as opposed to lots of data across a
2758      single tunnel).  This degrades over time like the other.
2759    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2760      precompiled OS/2 library)
2761
27622006-01-01  jrandom
2763    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2764      (though it can still seed and participate in multifile swarms)
2765    * Enable a new speed calculation for profiling peers, using their peak
2766      1 minute average tunnel throughput as their speed.
2767
27682005-12-31  jrandom
2769    * Include a simple torrent creator in the I2PSnark web UI
2770    * Further streaming lib closing improvements
2771    * Refactored the load test components to run off live tunnels (though,
2772      still not safe for normal/anonymous load testing)
2773
27742005-12-30  jrandom
2775    * Close streams more gracefully
2776
27772005-12-30  jrandom
2778    * Small streaming lib bugfixes for the modified timeouts
2779    * Minor Syndie/Sucker RSS html fix
2780    * Small synchronization fix in I2PSnark (thanks fsm!)
2781
27822005-12-30  jrandom
2783    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2784      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2785      some distros (e.g. mandriva)
2786
27872005-12-29  jrandom
2788    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2789      actually correct
2790
27912005-12-27  jrandom
2792    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2793      the clock is too skewed to do anything useful (check the year and month,
2794      not just the hour and minute).
2795    * Fixed the read/write timeouts in the streaming lib (so that it actually
2796      honors them now)
2797    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2798      torrent closing)
2799    * Handle an oddball tunnel creation failure (thanks Xunk)
2800
28012005-12-26  Complication
2802    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2803    * HTML readability cosmetics on "Peers" page
2804
2805* 2005-12-22  0.6.1.8 released
2806
28072005-12-22  jrandom
2808    * Bundle the standalone I2PSnark launcher in the installer and update
2809      process (launch as "java -jar launch-i2psnark.jar", viewing the
2810      interface on http://localhost:8002/)
2811    * Don't autostart swarming torrents by default so that you can run a
2812      standalone I2PSnark from the I2P install dir and not have the embedded
2813      I2PSnark autolaunch the torrents that the standalone instance is running
2814    * Fixed a rare streaming lib bug that could let a blocking call wait
2815      forever.
2816
28172005-12-22  jrandom
2818    * Cleaned up some buffer synchronization issues in I2PSnark that could
2819      cause blockage.
2820
28212005-12-21  jrandom
2822    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2823      behavior)
2824    * Fixed the I2PSnark bug that would lose track of live peers
2825
28262005-12-20  jrandom
2827    * Enabled the control in I2PSnark to toggle whether torrents should be
2828      started automatically or not
2829    * Hopefully finished the last hook to close down torrents completely when
2830      they're stopped.
2831
28322005-12-19  jrandom
2833    * Fix for old Syndie blog bookmarks (thanks Complication!)
2834    * Fix for I2PSnark to accept incoming connections again (oops)
2835    * Randomize the order that peers from the tracker are contacted
2836
28372005-12-19  jrandom
2838    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2839      memory usage reduction, better OOM handling, and a shared connection
2840      acceptor.
2841    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2842      blog from the blog page shows threads started by the selected author,
2843      not those that they merely participate in)
2844
28452005-12-18  jrandom
2846    * Added a standalone runner for the I2PSnark web ui (build with the
2847      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2848      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2849    * Further I2PSnark error handling
2850
28512005-12-17  jrandom
2852    * Let multiuser accounts authorize themselves to access the remote
2853      functionality again (thanks Ch0Hag!)
2854    * Adjust the JVM heap size to 128MB for new installs (existing users can
2855      accomplish this by editing wrapper.config, adding the line
2856      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2857      of the router).  This is relevent for heavy usage of I2PSnark in the
2858      router console.
2859
28602005-12-17  jrandom
2861    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2862      'piece' sizes grow larger than before.
2863
28642005-12-16  jrandom
2865    * Added some I2PSnark sanity checks, an OOMListener when running
2866      standalone, and a guard against keeping memory tied up indefinitely.
2867    * Sanity check on the watchdog (thanks zzz!)
2868    * Handle invalid HTTP requests in I2PTunnel a little better
2869
28702005-12-16  jrandom
2871    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2872      properly (thanks Complication!)
2873    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2874      b0rking in the DirMonitor, etc)
2875
28762005-12-16  jrandom
2877    * Try to run a torrent in readonly mode if we can't write to the file, and
2878      handle failures a little more gracefully (thanks polecat!)
2879
28802005-12-16  jrandom
2881    * Refuse torrents with too many files (128), avoiding ulimit errors.
2882    * Remove an fd leak in I2PSnark
2883    * Further I2PSnark web UI cleanup
2884
28852005-12-15  jrandom
2886    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2887
28882005-12-15  jrandom
2889    * Added multitorrent support to I2PSnark, accessible currently by running
2890      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2891      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2892      their data in that directory as well.  Removing the .torrent file stops
2893      participation, and it is currently set to seed indefinitely.  Completion
2894      is logged to the logger and standard output, with further UI interaction
2895      left to the (work in progress) web UI.
2896
28972005-12-14  jrandom
2898    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2899    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2900      (thanks Complication!)
2901
29022005-12-13  zzz
2903    * Don't test tunnels expiring within 90 seconds
2904    * Defer Test Tunnel jobs if job lag too large
2905    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2906      job lag for tunnel build backoff, allowing for more agile handling
2907      (since the stat is only updated once a minute)
2908    * Use tunnel length override if all tunnels are expiring within one
2909      minute.
2910
29112005-12-13  jrandom
2912    * Fixed I2PSnark's handling of some torrent files to deal with those
2913      created by Azureus and I2PRufus (it didn't know how to deal with
2914      additional meta info, such as path.utf-8 or name.utf-8).
2915
29162005-12-09  zzz
2917    * Create different strategies for exploratory tunnels (which are difficult
2918      to create) and client tunnels (which are much easier)
2919    * Gradually increase number of parallel build attempts as tunnel expiry
2920      nears.
2921    * Temporarily shorten attempted build tunnel length if builds using
2922      configured tunnel length are unsuccessful
2923    * React more aggressively to tunnel failure than routine tunnel
2924      replacement
2925    * Make tunnel creation times randomized - there is existing code to
2926      randomize the tunnels but it isn't effective due to the tunnel creation
2927      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2928      to 3 minutes before expiration. The patch fixes this by fixing the
2929      randomization, and by changing the overlap time (with old tunnels) to a
2930      range of 2 to 4 minutes.
2931    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2932      to overlapping calls. Just about anything generated a call which could
2933      build many tunnels all at once, even if tunnel building was already in
2934      process.
2935    * Miscellaneous router console enhancements
2936
29372005-12-08  jrandom
2938    * Minor bugfix in SSU for dealing with corrupt packets
2939    * Added some hooks for load testing
2940
29412005-12-07  jrandom
2942    * Added a first pass at a blog view in Syndie
2943
29442005-12-07  jrandom
2945    * Expand the thread we're viewing to its leaf
2946    * Bugfix on intraday ordering (children are always newer than parents)
2947
29482005-12-05  jrandom
2949    * Added an RDF and XML thread export to Syndie, reachable at
2950      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2951      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2952      displays all threads.
2953
29542005-12-04  TLorD
2955    * Patch for the C SAM library to null terminate strings on copy (thanks!)
2956
29572005-12-04  jrandom
2958    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
2959    * Always include ourselves in the favorite authors (since we don't
2960      bookmark ourselves)
2961
29622005-12-03  jrandom
2963    * Use newgroup-like tags by default in Syndie's interface
2964
29652005-12-03  jrandom
2966    * Added support for a 'most recent posts' view that CofE requested, which
2967      includes the ability to filter by age (e.g. posts by your favorite
2968      authors in the last 5 days).
2969
29702005-12-03  jrandom
2971    * Adjusted Syndie to use the threaded view that cervantes suggested, which
2972      displays a a single thread path at a time - from root to leaf - rather
2973      than a depth first traversal.
2974
29752005-12-03  jrandom
2976    * Package up a standalone Syndie install into a "syndie-standalone.zip",
2977      buildable with "ant syndie".  It extracts into ./syndie/, launches with
2978      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
2979      running a single user Syndie instance (by default).  It also creates a
2980      default subscription to syndiemedia without any anonymity (using no
2981      proxy).  Upgrades can be done by just replacing the syndie.war with the
2982      one from I2P.
2983
2984* 2005-12-01  0.6.1.7 released
2985
29862005-12-01  jrandom
2987    * Add a new criteria to the tunnel join throttle, backing off people if we
2988      are failing to talk to our peers more than usual.
2989
29902005-11-30  jrandom
2991    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
2992      new commons-logging-api.jar to commons-logging.jar, which it replaces.
2993      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
2994      separate jdom or rome, as they're inside syndie.war.
2995
29962005-11-30  jrandom
2997    * Don't let the TCP transport alone shitlist a peer, since other
2998      transports may be working.  Also display whether TCP connections are
2999      inbound or outbound on the peers page.
3000    * Fixed some substantial bugs in the SSU introducers where we wouldn't
3001      talk to anyone who didn't expose an IP (even if they had introducers),
3002      among other goofy things.
3003    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
3004      rather than sending one a packet at 3s, then another a packet at 6s,
3005      and a third a packet at 9s.
3006    * Fixed Syndie attachments (oops)
3007
30082005-11-29  zzz
3009    * Added a link to orion's jump page on the 'key not found' error page.
3010
30112005-11-29  jrandom
3012    * Further Syndie UI cleanup
3013    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
3014      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
3015      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
3016      will be removed as soon as its integrated into Jetty.  This patch allows
3017      posting content in various character sets.
3018      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
3019    * Upgraded new installs to the latest stable jetty (5.1.6), though this
3020      isn't pushed as part of the update yet, as there aren't any critical
3021      bugs.
3022
30232005-11-29  jrandom
3024    * Added back in the OSX jbigi, which was accidentally removed a few revs
3025      back (thanks for the bug report stoerte!)  New installs will get the
3026      full jbigi, or you can pull the jbigi.jar from CVS by going to
3027      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
3028      and clicking on the first "download" link, saving that jbigi.jar to
3029      lib/jbigi.jar in your I2P installation directory.  After restarting your
3030      router, it should load up fine.
3031
30322005-11-27  jrandom
3033    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
3034      because firefox [and others?] delay rendering until they fetch the css).
3035    * Make sure we fire the shutdown tasks when regenerating a new identity
3036      (thanks picsou!)
3037    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
3038    * Don't drop SSU sessions if they're still transmitting data successfully,
3039      even if there are transmission failures
3040    * Adjusted the time summarization to display hours after 119m, not 90m
3041    * Further EepGet cleanup (grr)
3042
3043* 2005-11-26 0.6.1.6 released
3044
30452005-11-26  jrandom
3046    * Update the sorting in Syndie to consider children 'newer' than parents,
3047      even if they have the same message ID (duh)
3048    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
3049    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
3050    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
3051      better)
3052
30532005-11-26  jrandom
3054    * Be more explicit about what messages we will handle through a client
3055      tunnel, and how we will handle them.  This cuts off a set of attacks
3056      that an active adversary could mount, though they're probably nonobvious
3057      and would require at least some sophistication.
3058
30592005-11-26  Raccoon23
3060    * Added support for 'dynamic keys' mode, where the router creates a new
3061      router identity whenever it detects a substantial change in its public
3062      address (read: SSU IP or port).  This only offers minimal additional
3063      protection against trivial attackers, but should provide functional
3064      improvement for people who have periodic IP changes, since their new
3065      router address would not be shitlisted while their old one would be.
3066    * Added further infrastructure for restricted route operation, but its use
3067      is not recommended.
3068
30692005-11-25  jrandom
3070    * Further Syndie UI cleanups
3071    * Logging cleanup
3072    * Fixed link to fproxy.tino.i2p (thanks zzz!)
3073
30742005-11-25  jrandom
3075    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
3076    * Cleaned up the syndie threaded display to show the last updated date for
3077      a subthread, and to highlight threads updated in the last two days.
3078
30792005-11-24  jrandom
3080    * Fix to save syndication settings in Syndie (thanks spaetz!)
3081
30822005-11-23  jrandom
3083    * Removed spurious streaming lib RTO increase (it wasn't helpful)
3084    * Streamlined the tunnel batching to schedule batch transmissions more
3085      appropriately.
3086    * Default tunnel pool variance to 2 +0-1 hops
3087
30882005-11-21  jrandom
3089    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
3090      within I2PTunnel.
3091    * Increase the maximum SSU retransmission timeout to accomodate slower or
3092      more congested links (though SSU's RTO calculation will usually use a
3093      much lower timeout)
3094    * Moved the streaming lib timed events off the main timer queues and onto
3095      a streaming lib specific set of timer queues.  Streaming lib timed
3096      events are more likely to have lock contention on the I2CP socket while
3097      other timed events in the router are (largely) independent.
3098    * Fixed a case sensitive lookup bug (thanks tino!)
3099    * Syndie cleanup - new edit form on the preview page, and fixed some blog
3100      links (thanks tino!)
3101
31022005-11-19  jrandom
3103    * Implemented a trivial pure java PMTU backoff strategy, switching between
3104      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
3105    * Fixed new user registration in Syndie (thanks Complication!)
3106
31072005-11-17  jrandom
3108    * More cautious file handling in Syndie
3109
31102005-11-16  jrandom
3111    * More aggressive I2PTunnel content encoding munging to work around some
3112      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
3113      even when only identity is specified, etc).  I2PTunnelHTTPServer now
3114      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
3115      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
3116      or X-Accept-encoding headers.  Eepsite operators who do not know to
3117      check for X-Accept-encoding will simply use the identity encoding.
3118
3119* 2005-11-15  0.6.1.5 released
3120
31212005-11-14  jrandom
3122    * Migrate to the new Syndie interface
3123
31242005-11-11  jrandom
3125    * Add filtering threads by author to Syndie, populated with authors in the
3126      user's addressbook
3127    * When creating the default user, add
3128      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
3129      configured to automatically pull updates.  (what other archives should
3130      be included?)
3131    * Tiny servlet to help dole out the new routerconsole themes, and bundle
3132      the installer/resources/themes/** into ./docs/themes/** on both install
3133      and update.
3134
31352005-11-11  cervantes
3136    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
3137      being progressively rolled out to other sections at later dates.
3138      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
3139      layout and styling.
3140    * Implemented console themes. Users can create their own themes by
3141      creating css files in: {i2pdir}/docs/themes/console/{themename}/
3142      and activating it using the routerconsole.theme={themename} advanced
3143      config property. Look at the example incomplete "defCon1" theme.
3144      Note: This is very much a work in progress. Folks might want to hold-off
3145      creating their own skins until the markup has solidified.
3146    * Added "routerconsole.javascript.disabled=true" to disable console
3147      client-side scripting and "routerconsole.css.disabled=true" to remove
3148      css styling (only rolled out in the i2ptunnel interface currently)
3149    * Fixed long standing bug with i2ptunnel client and server edit screens
3150      where tunnel count and depth properties would fail to save. Added
3151      backup quantity and variance configuration options.
3152    * Added basic accessibility support (key shortcuts, linear markup, alt and
3153      title information and form labels).
3154    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
3155
31562005-11-11  jrandom
3157    * Default Syndie to single user mode, and automatically log into a default
3158      user account (additional accounts can be logged into with the 'switch'
3159      or login pages, and new accounts can be created with the register page).
3160    * Disable the 'automated' column on the Syndie addressbook unless the user
3161      is appropriately authorized (good idea Polecat!)
3162
31632005-11-10  jrandom
3164    * First pass to a new threaded Syndie interface, which isn't enabled by
3165      default, as its not done yet.
3166
31672005-11-06  jrandom
3168    * Include SSU establishment failure in the peer profile as a commError,
3169      as we do for TCP establishment failures.
3170    * Don't throttle the initial transmission of a message because of ongoing
3171      retransmissions to a peer, since the initial transmission of a message
3172      is more valuable than a retransmission (since it has less latency).
3173    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
3174
31752005-11-05  jrandom
3176    * Include the most recent ACKs with packets, rather than only sending an
3177      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
3178      increasing sequence numbers, while each message ID in SSU is random, so
3179      we don't get the benefit of later ACKs implicitly ACKing earlier
3180      messages.
3181    * Reduced the max retransmission timeout for SSU
3182    * Don't try to send messages queued up for a long time waiting for
3183      establishment.
3184
31852005-11-05  dust
3186    * Fix sucker to delete its temporary files.
3187    * Improve sucker's sml output some.
3188    * Fix Exception in SMLParser for weird sml.
3189
31902005-11-03  zzz
3191    * Added a new error page to the eepproxy to differentiate the full 60
3192      second timeout from the immediate "I don't know this base64" failure.
3193
31942005-11-01  jrandom
3195    * Added a few more css elements (thanks identiguy!)
3196
31972005-10-31  jrandom
3198    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
3199    * Removed a potentially infinitely recursive call (oops)
3200
32012005-10-30  dust
3202    * Merge sucker into syndie with a rssimport.jsp page.
3203    * Add getContentType() to EepGet.
3204    * Make chunked transfer work (better) with EepGet.
3205    * Do replaceAll("<","&lt;") for logs.
3206
3207* 2005-10-29  0.6.1.4 released
3208
32092005-10-29  jrandom
3210    * Improved the bandwidth throtting on tunnel participation, especially for
3211      low bandwidth peers.
3212    * Improved failure handling in SSU with proactive reestablishment of
3213      failing idle peers, and rather than shitlisting a peer who failed too
3214      much, drop the SSU session and allow a new attempt (which, if it fails,
3215      will cause a shitlisting)
3216    * Clarify the cause of the shitlist on the profiles page, and include
3217      bandwidth limiter info at the bottom of the peers page.
3218
32192005-10-26  jrandom
3220    * In Syndie, propogate the subject and tags in a reply, and show the parent
3221      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
3222    * Streamline some netDb query handling to run outside the jobqueue -
3223      which means they'll run on the particular SSU thread that handles the
3224      message.  This should help out heavily loaded netDb peers.
3225
32262005-10-25  jrandom
3227    * Defer netDb searches for newly referenced peers until we actually want
3228      them
3229    * Ignore netDb references to peers on our shitlist
3230    * Set the timeout for end to end client messages to the max delay after
3231      finding the leaseSet, so we don't have as many expired messages floating
3232      around.
3233    * Add a floor to the streaming lib window size
3234    * When we need to send a streaming lib ACK, try to retransmit one of the
3235      unacked packets instead (with updated ACK/NACK fields, of course).  The
3236      bandwidth cost of an unnecessary retransmission should be minor as
3237      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
3238      the probability of a necessary retransmission.
3239    * Adjust the streaming lib cwin algorithm to allow growth after a full
3240      cwin messages if the rtt is trending downwards.  If it is not, use the
3241      existing algorithm.
3242    * Increased the maximum rto size in the streaming lib.
3243    * Load balancing bugfix on end to end messages to distribute across
3244      tunnels more evenly.
3245
32462005-10-22  jrandom
3247    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
3248      ./prngseed.rnd (if they exist), and reseeding it with data out of
3249      various crypto operations (unused bits in a DH exchange, intermediary
3250      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
3251      The Fortuna implementation under gnu.crypto.prng has been modified to
3252      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
3253      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
3254      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
3255      wrapper around it is, of course, public domain.
3256
32572005-10-20  dust
3258    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
3259      always shared. (thx for info Ragnarok)
3260    * Fix crash in Sucker with some bad html.
3261
32622005-10-20  jrandom
3263    * Workaround a bug in GCJ's Calendar implementation
3264    * Propery throw an exception in the streaming lib if we try to write to a
3265      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
3266      GregorK!)
3267
32682005-10-19  jrandom
3269    * Ported the snark bittorrent client to I2P such that it is compatible
3270      with i2p-bt and azneti2p.  For usage information, grab an update and run
3271      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
3272      but adding in support would be fairly easy (see PeerAcceptor.java:49)
3273    * Don't allow leaseSets expiring too far in the future (thanks postman)
3274
32752005-10-19  jrandom
3276    * Bugfix for the auto-update code to handle different usage patterns
3277    * Decreased the addressbook recheck frequency to once every 12 hours
3278      instead of hourly.
3279    * Handle dynamically changing the HMAC size (again, unless your nym is
3280      toad or jrandom, ignore this ;)
3281    * Cleaned up some synchronization/locking code
3282
32832005-10-17  dust
3284    * Exchange the remaining URL with EepGet in Sucker.
3285    * Allow /TOPIC irc command.
3286
32872005-10-17  jrandom
3288    * Allow an env prop to configure whether we want to use the backwards
3289      compatible (but not standards compliant) HMAC-MD5, or whether we want
3290      to use the not-backwards compatible (but standards compliant) one.  No
3291      one should touch this setting, unless your name is toad or jrandom ;)
3292    * Added some new dummy facades
3293    * Be more aggressive on loading up the router.config before building the
3294      router context
3295    * Added new hooks for apps to deal with previously undefined I2NP message
3296      types without having to modify any code.
3297    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
3298
32992005-10-14  jrandom
3300    * More explicit filter for linux/PPC building (thanks anon!)
3301    * Fixed Syndie's Sucker to not explicitly reference something only found
3302      in sun's JVM (thanks cervantes!)
3303    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
3304
3305* 2005-10-14  0.6.1.3 released
3306
33072005-10-14  jrandom
3308    * Added a key explaining peers.jsp a bit (thanks tethra!)
3309
33102005-10-13  dust
3311    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
3312      then be injected into Syndie with the Syndie CLI.
3313    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
3314      RSS/Atom parsing.
3315
33162005-10-13  jrandom
3317    * SSU retransmission choke bugfix (== != !=)
3318    * Include initial transmissions in the retransmission choke, so that
3319      if we are already retransmitting a message, we won't send anything
3320      to that peer other than that message (or ACKs, if necessary)
3321
33222005-10-12  jrandom
3323    * Choke SSU retransmissions to a peer while there is already a
3324      retransmission in flight to them.  This currently lets other initial
3325      transmissions through, since packet loss is often sporadic, but maybe
3326      this should block initial transmissions as well?
3327    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
3328    * Filter QUIT messages in the I2PTunnelIRCClient proxy
3329
33302005-10-11  jrandom
3331    * Piggyback the SSU partial ACKs with data packets.  This is backwards
3332      compatible.
3333    * Syndie RSS renderer bugfix, plus now include the full entry instead of
3334      just the blurb before the cut.
3335
33362005-10-11  jrandom
3337    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
3338      yet piggybacked).  This is backwards compatible.
3339    * SML parser cleanup in Syndie
3340
33412005-10-10  dust
3342    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
3343      outbound IRC commands for anonymity and security purposes, removing all
3344      CTCP messages except ACTION, as well as stripping the hostname from the
3345      USER message (while leaving the nick and 'full name').  The IRC proxy
3346      doesn't use this by default, but you can enable it by creating a new
3347      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
3348      to "ircclient" in i2ptunnel.config.
3349
33502005-10-10  jrandom
3351    * I2PTunnel http client config cleanup and stats
3352    * Minor SSU congestion tweaks and stats
3353    * Reduced netDb exploration period
3354
33552005-10-09  jrandom
3356    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
3357      java -jar lib/syndie.jar
3358    * Beginnings of the Syndie logging cleanup
3359    * Delete corrupt Syndie posts
3360
33612005-10-09  jrandom
3362    * Now that the streaming lib works reasonably, set the default inactivity
3363      event to send a 0 byte keepalive payload, rather than disconnecting the
3364      stream.  This should cut the irc netsplits and help out with other long
3365      lived streams.  The default timeout is now less than the old timeout as
3366      well, so the keepalive will be sent before earlier builds fire their
3367      fatal timeouts.
3368
33692005-10-08  jrandom
3370    * Use the OS clock for stat timing, since it doesn't jump around (though
3371      still use the NTP'ed clock for display)
3372    * Added new DH stats
3373
3374* 2005-10-07  0.6.1.2 released
3375
33762005-10-07  jrandom
3377    * Include the 1 second bandwidth usage on the console rather than the
3378      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
3379      issues.
3380
33812005-10-07  jrandom
3382    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
3383      HTTP response quicker, and initialize the streaming lib's cwin more
3384      carefully.
3385    * Added a small web UI to the new Syndie scheduled updater.  If you log in
3386      as a user authorized to use the remote archive funtionality, you can
3387      request remote archives in your address book to be automatically pulled
3388      down by checking the "scheduled?" checkbox.
3389
33902005-10-05  jrandom
3391    * Allow the first few packets in the stream to fill in their IDs during
3392      handshake (thanks cervantes, Complication, et al!)  This should fix at
3393      least some of the intermittent HTTP POST issues.
3394
33952005-10-04  jrandom
3396    * Syndie patch for single user remote archives (thanks nickless_head!)
3397    * Handle an invalid netDb store (thanks Complication!)
3398
33992005-10-04  jrandom
3400    * Further reduction in unnecessary streaming packets.
3401
34022005-10-03  jrandom
3403    * Properly reject unroutable IP addresses *cough*
3404
34052005-10-03  rangarok
3406    * Changed default update delay to twelve hours, and enforced a minimum
3407      delay of one hour.
3408
34092005-10-03  ragnarok
3410    * Implemented a Syndie auto-updater.  It will automatically pull new posts
3411      from selected syndie archives.  To try it out, add
3412      syndie.updateArchives=<comma seperated list of syndie archives> to your
3413      syndie.config.  Archives must be specified as the full url to archive.txt
3414      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
3415      for new posts every hour.  This can be modified by setting
3416      syndie.updateDelay=<delay in hours> also in syndie.config.
3417
3418* 2005-10-01  0.6.1.1 released
3419
34202005-09-30  ragnarok
3421    * Implemented conditional get for syndie remote archive imports.
3422
34232005-09-30  jrandom
3424    * Killed three more streaming lib bugs, one of which caused excess packets
3425      to be transmitted (dupacking dupacks), one that was the root of many of
3426      the old hung streams (shrinking highest received), and another that was
3427      releasing data too soon.
3428
34292005-09-30  jrandom
3430    * Only allow autodetection of our IP address if we haven't received an
3431      inbound connection in the last two minutes.
3432    * Increase the default max streaming resends to 8 from 5 (and down from
3433      the earlier 10)
3434
34352005-09-29  ragnarok
3436    * Export petnames from syndie to the router's petname db instead of
3437      userhosts.txt.
3438
34392005-09-29  jrandom
3440    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
3441      reseeding - useful on OSes that make it hard to create dot files. 
3442      Thanks Complication (and anon)!
3443    * Fixed the installer version string (thanks Frontier!)
3444    * Added cleaner rejection of invalid IP addresses, shitlist those who send
3445      us invalid IP addresses, verify again that we are not sending invalid IP
3446      addresses, and log an error if it happens. (Thanks Complication, ptm,
3447      and adab!)
3448
3449* 2005-09-29  0.6.1 released
3450
34512005-09-29  jrandom
3452    * Let syndie users modify their metadata.
3453    * Reseed the router on startup if there aren't enough peer references
3454      known locally.  This can be disabled by creating the file .i2pnoreseed
3455      in your home directory, and the existing detection and reseed handling
3456      on the web interface is unchanged.
3457
34582005-09-28  jrandom
3459    * Fix for at least some (all?) of the wrong stream errors in the streaming
3460      lib
3461
34622005-09-27  jrandom
3463    * Properly suggest filenames for attachments in Syndie (thanks all!)
3464    * Fixed the Syndie authorization scheme for single user vs. multiuser
3465
34662005-09-27  jrandom
3467    * I2PTunnel bugfix (thanks Complication!)
3468    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
3469      instead of k/cwin)
3470    * Limit the number of inbound SSU sessions being built at once (using
3471      half of the i2np.udp.maxConcurrentEstablish config prop)
3472    * Don't shitlist on a message send failure alone (unless there aren't any
3473      common transports).
3474    * More careful bandwidth bursting
3475
34762005-09-26  jrandom
3477    * Reworded the SSU introductions config section (thanks duck!)
3478    * Force identity content encoding for I2PTunnel httpserver requests
3479      (thanks redzara!)
3480    * Further x-i2p-gzip bugfixes for the end of streams
3481    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
3482      I2P's performance at 3KBps is another issue)
3483    * Cleaned up some streaming lib structures
3484
34852005-09-25  jrandom
3486    * Allow reseeding on the console if the netDb knows less than 30 peers,
3487      rather than less than 10 (without internet connectivity, we keep the
3488      last 15 router references)
3489    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
3490      more aggressively.
3491    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
3492    * Reduced the default maximum number of streaming lib resends of a packet
3493      (10 retransmits is a bit much with a reasonable RTO)
3494
34952005-09-25  Complication
3496    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
3497      conflict resolution page if the i2paddresshelper parameter differs from
3498      an existing name to destination mapping.
3499
35002005-09-25  jrandom
3501    * Fix a long standing streaming lib bug (in the inactivity detection code)
3502    * Improved handling of initial streaming lib packet retransmissions to
3503      kill the "lost first packet" bug (where a page shows up with the first
3504      few KB missing)
3505    * Add support for initial window sizes greater than 1 - useful for
3506      eepsites to transmit e.g. 4 packets full of data along with the initial
3507      ACK, thereby cutting down on the rtt latency.  The congestion window
3508      size can and does still shrink down to 1 packet though.
3509    * Adjusted the streaming lib retransmission calculation algorithm to be
3510      more TCP-like.
3511
35122005-09-21  redzara
3513    * Use ISO-8859-1 for the susidns xml
3514
35152005-09-21  susi
3516    * Bugfix in susidns for deleting entries
3517
35182005-09-21  jrandom
3519    * Add support for HTTP POST to EepGet
3520    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
3521      put in that URL.
3522
35232005-09-18  jrandom
3524    * Added support for pure 64bit linux with jbigi and the java service
3525      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
3526      et al for help testing!
3527    * UI cleanup in Syndie (thanks gloin and bar!)
3528
35292005-09-18  Ragnarok
3530    * Made MetaNamingService the default naming service.
3531
35322005-09-17  Ragnarok
3533    * Implemented a naming service using Syndie's petname db.  It's not enabled
3534      by default, but you can try it out by setting
3535      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
3536      router.config.
3537    * Implemented a meta naming service that will first lookup names in the
3538      PetNameNamingService then fallback on the HostTxtNamingService.  Which
3539      naming services are checked and in which order is specified by
3540      i2p.nameservicelist.  This will probably become the default naming service
3541      so please help test it out by setting
3542      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
3543     
3544* 2005-09-17  0.6.0.6 released
3545
35462005-09-17  jrandom
3547    * Clean up syndie a bit more and bundle a default introductory post with
3548      both new installs and updates.
3549    * Typo fixes on the console (thanks bar!)
3550
35512005-09-17  jrandom
3552    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
3553      steady state rate, plus a new limit on how fast we transfer when
3554      bursting.  This is different from the old "burst as fast as possible
3555      until we're out of tokens" policy, and should help those with congested
3556      networks.  See /config.jsp to manage this rate.
3557    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
3558      old posts just didn't show up).
3559    * Log properly in EepPost
3560
35612005-09-17  jrandom
3562    * Added the natively compiled jbigi and patched java service wrapper for
3563      OS X.  Thanks Bill Dorsey for letting me use your machine!
3564    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
3565      don't bundle the binutils necessary (and there'd be a naming conflict
3566      if we did).
3567    * Added 'single user' functionality to syndie - if the single user
3568      checkbox on the admin page is checked, all users are allowed to control
3569      the instance and sync up with remote syndie nodes.
3570    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
3571      debugged.
3572
35732005-09-16  jrandom
3574    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
3575      you have i2np.udp.allowLocal=true defined - useful for private nets)
3576
35772005-09-16  jrandom
3578    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
3579      (just specify the spoofed host as an empty string), allowing them to
3580      honor x-i2p-gzip encoding.
3581    * Let windows users build the exes too (thanks bar and redzara!)
3582    * Allow I2PTunnel httpserver operators to disable gzip compression on
3583      individual tunnels with the i2ptunnel.gzip=false client option
3584      (good idea susi!)
3585
35862005-09-16  jrandom
3587    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
3588    * Added runplain.sh for *nix/osx users having problems using the java
3589      service wrapper (called from the install dir as: sh runplain.sh)
3590    * Bundle susidns and syndie, with links on the top nav
3591    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
3592      content-encoding (if offered), reducing the payload size before it
3593      reaches the streaming lib.  The existing compression is at the i2cp
3594      level, so we've been packetizing 4KB of uncompressed data and then
3595      compressing those messages, rather than compressing and then packetizing
3596      4KB of compressed data.  This should reduce the number of round trips
3597      to fetch web pages substantially.
3598    * Adjust the startup and timing of the addressbook so that susidns always
3599      has config to work off, and expose a method for susidns to tell it to
3600      reload its config and rerun.
3601
36022005-09-15  jrandom
3603    * Error handling for failed intro packets (thanks red.hand!)
3604    * More carefully verify intro addresses
3605
36062005-09-13  jrandom
3607    * More careful error handling with introductions (thanks dust!)
3608    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
3609    * Hide the shitlist on the summary so it doesn't confuse new users.
3610
36112005-09-12  comwiz
3612    * Migrated the router tests to junit
3613
36142005-09-12  jrandom
3615    * Removed guaranteed delivery mode entirely (so existing i2phex clients
3616      using it can get the benefits of mode=best_effort).  Guaranteed delivery
3617      is offered at the streaming lib level.
3618    * Improve the peer selection code for peer testing, as everyone now
3619      supports tests.
3620    * Give the watchdog its fangs - if it detects obscene job lag or if
3621      clients have been unable to get a leaseSet for more than 5 minutes,
3622      restart the router.  This was disabled a year ago due to spurious
3623      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
3624      cause of the spurious restarts should be gone.
3625
36262005-09-12  jrandom
3627    * Bugfix for skewed store which could kill a UDP thread (causing complete
3628      comm failure and eventual OOM)
3629
36302005-09-12  jrandom
3631    * More aggressively publish updated routerInfo.
3632    * Expose the flag to force SSU introductions on the router console
3633    * Don't give people the option to disable SNTP time sync, at least not
3634      through the router console, because there is no reason to disable it.
3635      No, not even if your OS is "ntp synced", because chances are, its not.
3636
36372005-09-10  jrandom
3638    * Test the router's reachability earlier and more aggressively
3639    * Use the low level bandwidth limiter's rates for the router console, and
3640      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
3641      the logger config, keep track of the 1 second transfer rates as the stat
3642      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
3643      behavior.
3644
36452005-09-09  jrandom
3646    * Added preliminary support for NAT hole punching through SSU introducers
3647    * Honor peer test results from peers that we have an SSU session with if
3648      those sessions are idle for 3 minutes or more.
3649
36502005-09-09  cervantes
3651    * New build due to change in build number :P (thanks ugha!)
3652
36532005-09-07  BarkerJr
3654    * HTML cleanup for the router console (thanks!)
3655
36562005-09-07  jrandom
3657    * Lay the foundation for 'client routers' - the ability for peers to opt
3658      out of participating in tunnels entirely due to firewall/NAT issues. 
3659      Individual routers have control over where those peers are used in
3660      tunnels - in outbound or inbound, exploratory or client tunnels, or
3661      none at all.  The defaults with this build are to simply act as before -
3662      placing everyone as potential participants in any tunnel.
3663    * Another part of the foundation includes the option for netDb
3664      participants to refuse to answer queries regarding peers who are marked
3665      as unreachable, though this too is disabled by default (meaning the
3666      routerInfo is retrievable from the netDb).
3667
36682005-09-05  jrandom
3669    * Expose the HTTP headers to EepGet status listeners
3670    * Handle DSA key failures properly (if the signature is not invertable, it
3671      is obviously invalid)
3672
36732005-09-04  jrandom
3674    * Don't persist peer profiles until we are shutting down, as the
3675      persistence process gobbles RAM and wall time.
3676    * Bugfix to allow you to check/uncheck the sharedClient setting on the
3677      I2PTunnel web interface (thanks BarkerJr!)
3678    * Be more careful when expiring a failed tunnel message fragment so we
3679      don't drop the data while attempting to read it.
3680
3681* 2005-09-02  0.6.0.5 released
3682
36832005-09-02  jrandom
3684    * Don't refuse to send a netDb store if the targetted peer has failed a
3685      bit (the value was an arbitrary amount).
3686    * Logging changes
3687
3688* 2005-09-01  0.6.0.4 released
3689
36902005-09-01  jrandom
3691    * Don't send out a netDb store of a router if it is more than a few hours
3692      old, even if someone asked us for it.
3693
36942005-08-31  jrandom
3695    * Don't publish leaseSets to the netDb if they will never be looked for -
3696      namely, if they are for destinations that only establish outbound
3697      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
3698      modified to tell the router that it doesn't need to publish their
3699      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
3700      to 'true').
3701    * Don't publish the top 10 peer rankings of each router in the netdb, as
3702      it isn't being watched right now.
3703
37042005-08-29  jrandom
3705    * Added the new test Floodfill netDb
3706
37072005-08-27  jrandom
3708    * Minor logging and optimization tweaks in the router and SDK
3709    * Use ISO-8859-1 in the XML files (thanks redzara!)
3710    * The consolePassword config property can now be used to bypass the router
3711      console's nonce checking, allowing CLI restarts
3712
37132005-08-24  jrandom
3714    * Catch errors with corrupt tunnel messages more gracefully (no need to
3715      kill the thread and cause an OOM...)
3716    * Don't skip shitlisted peers for netDb store messages, as they aren't
3717      necessarily shitlisted by other people (though they probably are).
3718    * Adjust the netDb store per-peer timeout based on each particular peer's
3719      profile (timeout = 4x their average netDb store response time)   
3720    * Don't republish leaseSets to *failed* peers - send them to peers who
3721      replied but just didn't know the value.
3722    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3723      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3724      sent entirely within the first streaming packet anyway, so this won't be
3725      a problem.
3726    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3727      prevent any clients from accessing the server if the handlers get
3728      blocked by the streaming lib or other issues.
3729    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3730      Unknown.
3731
37322005-08-23  jrandom
3733    * Removed the concept of "no bandwidth limit" - if none is specified, its
3734      16KBps in/out.
3735    * Include ack packets in the per-peer cwin throttle (they were part of the
3736      bandwidth limit though).
3737    * Tweak the SSU cwin operation to get more accurrate estimates under
3738      congestions.
3739    * SSU improvements to resend more efficiently.
3740    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3741
3742* 2005-08-21  0.6.0.3 released
3743
37442005-08-21  jrandom
3745    * If we already have an established SSU session with the Charlie helping
3746      test us, cancel the test with the status of "unknown".
3747
37482005-08-17  jrandom
3749    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3750      viability before agreeing to Alice's request.  This doesn't work with
3751      older SSU peer test builds, but is backwards compatible (older nodes
3752      won't ask newer nodes to participate in tests, and newer nodes won't
3753      ask older nodes to either).
3754
37552005-08-12  jrandom
3756    * Keep detailed stats on the peer testing, publishing the results in the
3757      netDb.
3758    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3759      status in a while.
3760    * Make sure to avoid shitlisted peers for peer testing.
3761    * When we get an unknown result to a peer test, try again soon afterwards.
3762    * When a peer tells us that our address is different from what we expect,
3763      if we've done a recent peer test with a result of OK, fire off a peer
3764      test to make sure our IP/port is still valid.  If our test is old or the
3765      result was not OK, accept their suggestion, but queue up a peer test for
3766      later.
3767    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3768      we monitor netDb store progress (to clear up the high netDb.storePeers
3769      stat)
3770
37712005-08-10  jrandom
3772    * Deployed the peer testing implementation to be run every few minutes on
3773      each router, as well as any time the user requests a test manually.  The
3774      tests do not reconfigure the ports at the moment, merely determine under
3775      what conditions the local router is reachable.  The status shown in the
3776      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3777      differently for different peers, "ERR-Reject" if the router cannot
3778      receive unsolicited packets or the peer helping test could not find a 
3779      collaborator, "Unknown" if the test has not been run or the test
3780      participants were unreachable, or "OK" if the router can receive
3781      unsolicited connections and those connections use the same IP and port.
3782
3783* 2005-08-08  0.6.0.2 released
3784
37852005-08-08  jrandom
3786    * Add a configurable throttle to the number of concurrent outbound SSU
3787      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3788      may help those with slow connections to get integrated at the start.
3789    * Further fixlets to the streaming lib
3790
37912005-08-07  Complication
3792    * Display the average clock skew for both SSU and TCP connections
3793
37942005-08-07  jrandom
3795    * Fixed the long standing streaming lib bug where we could lose the first
3796      packet on retransmission.
3797    * Avoid an NPE when a message expires on the SSU queue.
3798    * Adjust the streaming lib's window growth factor with an additional
3799      Vegas-esque congestion detection algorithm.
3800    * Removed an unnecessary SSU session drop
3801    * Reduced the MTU (until we get a working PMTU lib)
3802    * Deferr tunnel acceptance until we know how to reach the next hop,
3803      rejecting it if we can't find them in time.
3804    * If our netDb store of our leaseSet fails, give it a few seconds before
3805      republishing.
3806
3807* 2005-08-03  0.6.0.1 released
3808
38092005-08-03  jrandom
3810    * Backed out an inadvertant change to the netDb store redundancy factor.
3811    * Verify tunnel participant caching.
3812    * Logging cleanup
3813
38142005-08-01  duck
3815    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3816
38172005-08-01  duck
3818    * Fix an addressbook NPE when a new hostname from the master addressbook
3819      didn't exist in the router addressbook.
3820    * Fix an addressbook bug which caused subscriptions not to be parsed at
3821      all. (Oops!)
3822
38232005-07-31  jrandom
3824    * Adjust the netDb search and store per peer timeouts to match the average
3825      measured per peer success times, rather than huge fixed values.
3826    * Optimized and reverified the netDb peer selection / retrieval process
3827      within the kbuckets.
3828    * Drop TCP connections that don't have any useful activity in 10 minutes.
3829    * If i2np.udp.fixedPort=true, never change the externally published port,
3830      even if we are autodetecting the IP address.
3831
3832* 2005-07-27  0.6 released
3833
38342005-07-27  jrandom
3835    * Enabled SSU as the default top priority transport, adjusting the
3836      config.jsp page accordingly.
3837    * Add verification fields to the SSU and TCP connection negotiation (not
3838      compatible with previous builds)
3839    * Enable the backwards incompatible tunnel crypto change as documented in
3840      tunnel-alt.html (have each hop encrypt the received IV before using it,
3841      then encrypt it again before sending it on)
3842    * Disable the I2CP encryption, leaving in place the end to end garlic
3843      encryption (another backwards incompatible change)
3844    * Adjust the protocol versions on the TCP and SSU transports so that they
3845      won't talk to older routers.
3846    * Fix up the config stats handling again
3847    * Fix a rare off-by-one in the SSU fragmentation
3848    * Reduce some unnecessary netDb resending by inluding the peers queried
3849      successfully in the store redundancy count.
3850
38512005-07-22  jrandom
3852    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3853      I2PTunnelServer)
3854    * Minor memory churn reduction in I2CP
3855    * Small stats update
3856
38572005-07-21  jrandom
3858    * Fix in the SDK for a bug which would manifest itself as misrouted
3859      streaming packets when a destination has many concurrent streaming
3860      connections (thanks duck!)
3861    * No more "Graceful shutdown in -18140121441141s"
3862
38632005-07-20  jrandom
3864    * Allow the user to specify an external port # for SSU even if the external
3865      host isn't specified (thanks duck!)
3866
38672005-07-19  jrandom
3868    * Further preparation for removing I2CP crypto
3869    * Added some validation to the DH key agreement (thanks $anon)
3870    * Validate tunnel data message expirations (though not really a problem,
3871      since tunnels expire)
3872    * Minor PRNG threading cleanup
3873
38742005-07-15  cervantes
3875    * Added workaround for an odd win32 bug in the stats configuration console
3876      page which meant only the first checkbox selection was saved.
3877
38782005-07-15  Romster
3879    * Added per group selection toggles in the stats configuration console
3880      page.
3881
38822005-07-13  jrandom
3883    * Fixed a recently injected bug in the multitransport bidding which had
3884      allowed an essentially arbitrary choice of transports, rather than the
3885      properly ordered choice.
3886
38872005-07-13  jrandom
3888    * Fixed a long standing bug where we weren't properly comparing session
3889      tags but instead largely depending upon comparing their hashCode,
3890      causing intermittent decryption errors.
3891
38922005-07-12  jrandom
3893    * Add some data duplication to avoid a recently injected concurrency
3894      problem in the session tag manager (thanks redzara and romster).
3895
38962005-07-11  jrandom
3897    * Reduced the growth factor on the slow start and congestion avoidance for
3898      the streaming lib.
3899    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3900      handlers, rather than launching off new threads which then immediately
3901      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3902    * Don't persist session keys / session tags (not worth it, for now)
3903    * Added some detection and handling code for duplicate session tags being
3904      delivered (root cause still not addressed)
3905    * Make the PRNG's buffer size configurable (via the config property
3906      "i2p.prng.totalBufferSizeKB=4096")
3907    * Disable SSU flooding by default (duh)
3908    * Updates to the StreamSink apps for better throttling tests.
3909
39102005-07-05  jrandom
3911    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3912      buffer, rather than the underlying PRNG's (likely small) one, which in
3913      turn reduces the frequency of recalcing.
3914    * More tuning to reduce temporary allocation churn
3915
39162005-07-04  jrandom
3917    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3918      rather than the IV by itself, preventing an attack that would let
3919      colluding internal adversaries tag a message to determine that they are
3920      in the same tunnel.  Thanks dvorak for the catch!
3921    * Drop long inactive profiles on startup and shutdown
3922    * /configstats.jsp: web interface to pick what stats to log
3923    * Deliver more session tags to account for wider window sizes
3924    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3925    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3926    * UrlLauncher: adjust the browser selection order
3927    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3928    * StreamSinkClient: add support for sending an unlimited amount of data
3929    * Migrate the tests out of the default build jars
3930
39312005-06-22  Comwiz
3932    * Migrate the core tests to junit
3933
39342005-05-25  duck
3935    * Fixed PRNG bug (bugzilla #107)
3936
39372005-05-01  jrandom
3938    * Added a substantial optimization to the AES engine by caching the
3939      prepared session keys (duh).
3940
39412005-05-01  jrandom
3942    * Cleaned up the peers page a bit more.
3943
39442005-04-30  jrandom
3945    * Added a small new page to the web console (/peers.jsp) which contains
3946      the peer connection information.  This will be cleaned up a lot more
3947      before 0.6 is out, but its a start.
3948
39492005-04-30  jrandom
3950    * Reduced some SimpleTimer churn
3951
39522005-04-29  jrandom
3953    * Reduce the peer profile stat coallesce overhead by inlining it with the
3954      reorganize.
3955    * Limit each transport to at most one address (any transport that requires
3956      multiple entry points can include those alternatives in the address).
3957
39582005-04-28  jrandom
3959    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
3960    * Add back the code to handle bids from multiple transports (though there
3961      is still only one transport enabled by default)
3962    * Adjust the router's queueing of outbound client messages when under
3963      heavy load by running the preparatory job in the client's I2CP handler
3964      thread, thereby blocking additional outbound messages when the router is
3965      hosed.
3966    * No need to validate or persist a netDb entry if we already have it
3967
39682005-04-25  smeghead
3969    * Added button to router console for manual update checks.
3970    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
3971      every time the form was submitted even if it hadn't changed.
3972
39732005-04-24  jrandom
3974    * Added a pool of PRNGs using a different synchronization technique,
3975      hopefully sufficient to work around IBM's PRNG bugs until we get our
3976      own Fortuna.
3977    * In the streaming lib, don't jack up the RTT on NACK, and have the window
3978      size bound the not-yet-ready messages to the peer, not the unacked
3979      message count (not sure yet whether this is worthwile).
3980    * Many additions to the messageHistory log.
3981    * Handle out of order tunnel fragment delivery (not an issue on the live
3982      net with TCP, but critical with UDP).
3983
3984* 2005-04-20  0.5.0.7 released
3985
39862005-04-20  jrandom
3987    * In the SDK, we don't actually need to block when we're sending a message
3988      as BestEffort (and these days, we're always sending BestEffort).
3989    * Pass out client messages in fewer (larger) steps.
3990    * Have the InNetMessagePool short circuit dispatch requests.
3991    * Have the message validator take into account expiration to cut down on
3992      false positives at high transfer rates.
3993    * Allow configuration of the probabalistic window size growth rate in the
3994      streaming lib's slow start and congestion avoidance phases, and default
3995      them to a more conservative value (2), rather than the previous value
3996      (1).
3997    * Reduce the ack delay in the streaming lib to 500ms
3998    * Honor choke requests in the streaming lib (only affects those getting
3999      insanely high transfer rates)
4000    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
4001      I2PTunnel client page (thanks maestro^!)
4002
40032005-04-17  sirup
4004    * Added the possibility for i2ptunnel client and httpclient instances to
4005      have their own i2p session (and hence, destination and tunnels).  By
4006      default, tunnels are shared, but that can be changed on the web
4007      interface or with the sharedClient config option in i2ptunnel.config.
4008
40092005-04-17  jrandom
4010    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
4011      this?  If not, I want to drop it (lots of tiny details with lots of
4012      duplicated semantics).
4013
40142005-04-17  zzz
4015    * Added new user-editable eepproxy error page templates.
4016
40172005-04-17  jrandom
4018    * Revamp the tunnel building throttles, fixing a situation where the
4019      rebuild may not recover, and defaulting it to unthrottled (users with
4020      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
4021      advanced router config)
4022
40232005-04-16  jrandom
4024    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
4025
40262005-04-12  jrandom
4027    * Make sure we don't get cached updates (thanks smeghead!)
4028    * Clear out the callback for the TestJob after it passes (only affects the
4029      job timing accounting)
4030
40312005-04-08  smeghead
4032    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
4033
40342005-04-08  smeghead
4035    * Security improvements to TrustedUpdate: signing and verification of the
4036      version string along with the data payload for signed update files
4037      (consequently the positions of the DSA signature and version string fields
4038      have been swapped in the spec for the update file's header); router will
4039      no longer perform a trusted update if the signed update's version is lower
4040      than or equal to the currently running router's version.
4041    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
4042    * Extended TrustedUpdate public API for use by third party applications.
4043
4044* 2005-04-06  0.5.0.6 released
4045
40462005-04-05  jrandom
4047    * Retry I2PTunnel startup if we are unable to build a socketManager for a
4048      client or httpclient tunnel.
4049    * Add some basic sanity checking on the I2CP settings (thanks duck!)
4050
40512005-04-05  jrandom
4052    * After a successfull netDb search for a leaseSet, republish it to all of
4053      the peers we have tried so far who did not give us the key (up to 10),
4054      rather than the old K closest (which may include peers who had given us
4055      the key)
4056    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
4057      republish it every 5 minutes, republish it every 3.  In addition, always
4058      republish as soon as the leaseSet changes (duh^2).
4059    * Minor fix for oddball startup race (thanks travis_bickle!)
4060    * Minor AES update to allow in-place decryption.
4061
40622005-04-03  jrandom
4063    * EepGet fix for open-ended HTTP fetches (such as the news.xml
4064      feeding the NewsFetcher)
4065
40662005-04-01  jrandom
4067    * Allow editing I2PTunnel server instances with five digit ports
4068      (thanks nickless_head!)
4069    * More NewsFetcher debugging for reported weirdness
4070
40712005-04-01  jrandom
4072    * Fix to check for missing news file (thanks smeghead!)
4073    * Added destination display CLI:
4074      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
4075    * Added destination display to the web interface (thanks pnspns)
4076    * Installed CIA backdoor
4077
4078* 2005-03-29  0.5.0.5 released
4079
40802005-03-29  jrandom
4081    * Decreased the initial RTT estimate to 10s to allow more retries.
4082    * Increased the default netDb store replication factor from 2 to 6 to take
4083      into consideration tunnel failures.
4084    * Address some statistical anonymity attacks against the netDb that could
4085      be mounted by an active internal adversary by only answering lookups for
4086      leaseSets we received through an unsolicited store.
4087    * Don't throttle lookup responses (we throttle enough elsewhere)
4088    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
4089      the file (thanks nickster!)
4090    * Updated the I2PTunnel HTML (thanks postman!)
4091    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
4092      which, if matched against the router.config "i2ptunnel.passphrase" value,
4093      skips the nonce check.  If the config prop doesn't exist or is blank, no
4094      passphrase is accepted.
4095    * Implemented HMAC-SHA256.
4096    * Enable the tunnel batching with a 500ms delay by default
4097    * Dropped compatability with 0.5.0.3 and earlier releases
4098
40992005-03-26  jrandom
4100    * Added some error handling and fairly safe to cache data to the streaming
4101      lib (good call Tom!)
4102
41032005-03-25  jrandom
4104    * Fixed up building dependencies for the routerconsole on some more
4105      aggressive compilers (thanks polecat!)
4106
4107* 2005-03-24  0.5.0.4 released
4108
41092005-03-23  jrandom
4110    * Added more intelligent version checking in news.xml, in case we have a
4111      version newer than the one specified.
4112
41132005-03-23  jrandom
4114    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
4115      cvsweb.cgi doesn't puke on us.
4116
41172005-03-23  Connelly
4118    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
4119      stream send data to not be sent if STREAM CLOSE is issued too fast.
4120
41212005-03-23  jrandom
4122    * Implemented the news fetch / update policy code, as configurated on
4123      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
4124      doesn't exist yet, on startup).  No action is taken however, though if
4125      the news.xml specifies that a new release is available, an option to
4126      update will be shown on the router console.
4127    * New initialNews.xml delivered with new installs, and moved news.xml out
4128      of the i2pwww module and into the i2p module so that we can bundle it
4129      within each update.
4130
41312005-03-23  jrandom
4132    * New /configupdate.jsp page for controlling the update / notification
4133      process, as well as various minor related updates.  Note that not all
4134      options are exposed yet, and the update detection code isn't in place
4135      in this commit - it currently says there is always an update available.
4136    * New EepGet component for reliable downloading, with a CLI exposed in
4137      java -cp lib/i2p.jar net.i2p.util.EepGet url
4138    * Added a default signing key to the TrustedUpdate component to be used
4139      for verifying updates.  This signing key can be authenticated via
4140      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
4141    * New public domain SHA1 implementation for the DSA code so that we can
4142      handle signing streams of arbitrary size without excess memory usage
4143      (thanks P.Verdy!)
4144    * Added some helpers to the TrustedUpdate to work off streams and to offer
4145      a minimal CLI:
4146          TrustedUpdate keygen pubKeyFile privKeyFile
4147          TrustedUpdate sign origFile signedFile privKeyFile
4148          TrustedUpdate verify signedFile
4149
41502005-03-22  smeghead
4151    * New TrustedUpdate component for signing/verifying files with a DSA
4152      signature.
4153
41542005-03-21  jrandom
4155    * Fixed the tunnel fragmentation handler to deal with multiple fragments
4156      in a single message properly (rather than release the buffer into the
4157      cache after processing the first one) (duh!)
4158    * Added the batching preprocessor which will bundle together multiple
4159      small messages inside a single tunnel message by delaying their delivery
4160      up to .5s, or whenever the pending data will fill a full message,
4161      whichever comes first.  This is disabled at the moment, since without the
4162      above bugfix widely deployed, lots and lots of messages would fail.
4163    * Within each tunnel pool, stick with a randomly selected peer for up to
4164      .5s before randomizing and selecting again, instead of randomizing the
4165      pool each time a tunnel is needed. 
4166
4167* 2005-03-18  0.5.0.3 released
4168
41692005-03-18  jrandom
4170    * Minor tweak to the timestamper to help reduce small skews
4171    * Adjust the stats published to include only the relevent ones
4172    * Only show the currently used speed calculation on the profile page
4173    * Allow the full max # resends to be sent, rather than piggybacking the
4174      RESET packet along side the final resend (duh)
4175    * Add irc.postman.i2p to the default list of IRC servers for new installs
4176    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
4177      backwards compatability for users running 0.5.0.2.
4178
41792005-03-18  jrandom
4180    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
4181    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
4182
41832005-03-17  jrandom
4184    * Update the old speed calculator and associated profile data points to
4185      use a non-tiered moving average of the tunnel test time, avoiding the
4186      freshness issues of the old tiered speed stats.
4187    * Explicitly synchronize all of the methods on the PRNG, rather than just
4188      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
4189      needs all of them synchronized).
4190    * Properly use the tunnel tests as part of the profile stats.
4191    * Don't flood the jobqueue with sequential persist profile tasks, but
4192      instead, inject a brief scheduling delay between them.
4193    * Reduce the TCP connection establishment timeout to 20s (which is still
4194      absurdly excessive)
4195    * Reduced the max resend delay to 30s so we can get some resends in when
4196      dealing with client apps that hang up early (e.g. wget)
4197    * Added more alternative socketManager factories (good call aum!)
4198
41992005-03-16  jrandom
4200    * Adjust the old speed calculator to include end to end RTT data in its
4201      estimates, and use that as the primary speed calculator again.
4202    * Use the mean of the high capacity speeds to determine the fast
4203      threshold, rather than the median.  Perhaps we should use the mean of
4204      all active non-failing peers?
4205    * Updated the profile page to sort by tier, then alphabetically.
4206    * Added some alternative socketManager factories (good call aum!)
4207
42082005-03-14  jrandom
4209    * New strict speed calculator that goes off the actual number of messages
4210      verifiably sent through the peer by way of tunnels.  Initially, this only
4211      contains the successful message count on inbound tunnels, but may be
4212      augmented later to include verified outbound messages, peers queried in
4213      the netDb, etc.  The speed calculation decays quickly, but should give
4214      a better differential than the previous stat (both values are shown on
4215      the /profiles.jsp page)
4216
42172005-03-11  jrandom
4218    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
4219      minimum (increased on resends as before, of course).
4220    * Always prod the clock update listeners, even if just to tell them that
4221      the time hasn't changed much.
4222    * Added support for explicit peer selection for individual tunnel pools,
4223      which will be useful in debugging but not recommended for use by normal
4224      end users.
4225    * More aggressively search for the next hop's routerInfo on tunnel join.
4226    * Give messages received via inbound tunnels that are bound to remote
4227      locations sufficient time (taking into account clock skew).
4228    * Give alternate direct send messages sufficient time (10s min, not 5s)
4229    * Always give the end to end data message the explicit timeout (though the
4230      old default was sufficient before)
4231    * No need to give end to end messages an insane expiration (+2m), as we
4232      are already handling skew on the receiving side.
4233    * Don't complain too loudly about expired TunnelCreateMessages (at least,
4234      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
4235    * Properly keep the sendBps stat
4236    * When running the router with router.keepHistory=true, log more data to
4237      messageHistory.txt
4238    * Logging updates
4239    * Minor formatting updates
4240
42412005-03-08  jrandom
4242    * More aggressively adjust the clock
4243
42442005-03-07  jrandom
4245    * Fix the HTTP response header filter to allow multiple headers with the
4246      same name (thanks duck and spotteri!)
4247
4248* 2005-03-06  0.5.0.2 released
4249
42502005-03-06  jrandom
4251    * Allow the I2PTunnel web interface to select streaming lib options for
4252      individual client tunnels, rather than sharing them across all of them,
4253      as we do with the session options.  This way people can (and should) set
4254      the irc proxy to interactive and the eepproxy to bulk.
4255    * Added a startRouter.sh script to new installs which simply calls
4256      "sh i2prouter start".  This should make it clear how people should start
4257      I2P.
4258    * Properly expand the HTTP response header buffer (thanks shendaras!)
4259
42602005-03-04  jrandom
4261    * Filter HTTP response headers in the eepproxy, forcing Connection: close
4262      so that broken (/malicious) webservers can't allow persistent
4263      connections.  All HTTP compliant browsers should now always close the
4264      socket.
4265    * Enabled the GZIPInputStream's cache (they weren't cached before)
4266    * Make sure our first send is always a SYN (duh)
4267    * Workaround for some buggy compilers
4268
42692005-03-03  jrandom
4270    * Loop while starting up the I2PTunnel instances, in case the I2CP
4271      listener isn't up yet (thanks detonate!)
4272    * Implement custom reusable GZIP streams to both reduce memory churn
4273      and prevent the exposure of data in the standard GZIP header (creation
4274      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
4275      though has only been tested within the confines of I2P's compression use
4276      (DataHelper.[de]compress).
4277    * Preemptively support the next protocol version, so that after the 0.5.0.2
4278      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
4279
42802005-03-02  jrandom
4281    * Fix one substantial OOM cause (session tag manager was only dropping
4282      tags once the critical limit was met, rather than honoring their
4283      expiration) (duh)
4284    * Lots of small memory fixes
4285    * Double the allowable concurrent outstanding tunnel build tasks (20)
4286
42872005-03-01  jrandom
4288    * Really disable the streaming lib packet caching
4289    * Synchronized a message handling point in the SDK (even though its use is
4290      already essentially single threaded, its better to play it safe)
4291    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
4292      existing one (duh)
4293    * Throttle the number of concurrent pending tunnel builds across all
4294      pools, in addition to simply throttling the number of new requests per
4295      minute for each pool individually.  This should avoid the cascading
4296      failure when tunnel builds take too long, as no new builds will be
4297      created until the previous ones are handled.
4298    * Factored out and extended the DataHelper's unit tests for dealing with
4299      long and date formatting.
4300    * Explicitly specify the HTTP auth realm as "i2prouter", though this
4301      alone doesn't address the bug where jetty asks for authentication too
4302      much.  (thanks orion!)
4303    * Updated the StreamSinkServer to ignore all read bytes, rather than write
4304      them to the filesystem.
4305
43062005-02-27  jrandom
4307    * Don't rerequest leaseSets if there are already pending requests
4308    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
4309      temporary disabled the streaming lib packet caching.
4310    * Reduced the resend RTT penalty to 10s
4311
43122005-02-26  jrandom
4313    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
4314
43152005-02-26  jrandom
4316    * Further streaming lib caching improvements
4317    * Reduce the minimum RTT (used to calculate retry timeouts), but also
4318      increase the RTT on resends.
4319    * Lower the default message size to 4KB from 16KB to further reduce the
4320      chance of failed fragmentation.
4321    * Extend tunnel rebuild throttling to include fallback rebuilds
4322    * If there are less than 20 routers known, don't drop the last 20 (to help
4323      avoid dropping all peers under catastrophic failures)
4324    * New stats for end to end messages - "client.leaseSetFoundLocally",
4325      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
4326
43272005-02-24  jrandom
4328    * Throttle the number of tunnel rebuilds per minute, preventing CPU
4329      overload under catastrophic failures (thanks Tracker and cervantes!)
4330    * Block the router startup process until we've initialized the clock
4331
43322005-02-24  jrandom
4333    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
4334      data in the streaming lib.
4335    * Fixed a streaming lib bug where the connection initiator would fail the
4336      stream if the ACK to their SYN was lost.
4337
43382005-02-23  jrandom
4339    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
4340      get stale tunnel pools, don't you think?
4341
4342* 2005-02-23  0.5.0.1 released
4343
43442005-02-22  jrandom
4345    * Reworked the tunnel (re)building process to remove the tokens and
4346      provide cleaner controls on the tunnels built.
4347    * Fixed situations where the timestamper wanted to test more servers than
4348      were provided (thanks Tracker!)
4349    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
4350      (thanks Tracker!)
4351
43522005-02-22  jrandom
4353    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
4354      try to automatically reconnect on accept()/connect(..)).
4355    * Loop check for expired lease republishing (just in case)
4356
43572005-02-22  jrandom
4358    * Adjusted (and fixed...) the timestamper change detection
4359    * Deal with a rare reordering bug at the beginning of a stream (so we
4360      don't drop it unnecessarily)
4361    * Cleaned up some dropped message handling in the router
4362    * Reduced job queue churn when dealing with a large number of tunnels by
4363      sharing an expiration job
4364    * Keep a separate list of the most recent CRIT messages (shown on the
4365      logs.jsp).  This way they don't get buried among any other messages.
4366    * For clarity, display the tunnel variance config as "Randomization" on
4367      the web console.
4368    * If lease republishing fails (boo! hiss!) try it again
4369    * Actually fix the negative jobLag in the right place (this time)
4370    * Allow reseeding when there are less than 10 known peer references
4371    * Lots of logging updates.
4372
43732005-02-20  jrandom
4374    * Allow the streaming lib resend frequency to drop down to 20s as the
4375      minimum, so that up to 2 retries can get sent on an http request.
4376    * Add further limits to failsafe tunnels.
4377    * Keep exploratory and client tunnel testing and building stats separate.
4378    * Only use the 60s period for throttling tunnel requests due to transient
4379      network overload.
4380    * Rebuild tunnels earlier (1-3m before expiration, by default)
4381    * Cache the next hop's routerInfo for participating tunnels so that the
4382      tunnel participation doesn't depend on the netDb.
4383    * Fixed a long standing bug in the streaming lib where we wouldn't always
4384      unchoke messages when the window size grows.
4385    * Make sure the window size never reaches 0 (duh)
4386
43872005-02-20  jrandom
4388    * Only build failsafe tunnels if we need them
4389    * Properly implement the selectNotFailingPeers so that we get a random
4390      selection of peers, rather than using the strictOrdering (thanks dm!)
4391    * Don't include too many "don't tell me about" peer references in the
4392      lookup message - only send the 10 peer references closest to the target.
4393
43942005-02-19  jrandom
4395    * Only build new extra tunnels on failure if we don't have enough
4396    * Fix a fencepost in the tunnel building so that e.g. a variance of
4397      2 means +/- 2, not +/- 1 (thanks dm!)
4398    * Avoid an NPE on client disconnect
4399    * Never select a shitlisted peer to participate in a tunnel
4400    * Have netDb store messages timeout after 10s, not the full 60s (duh)
4401    * Keep session tags around for a little longer, just in case (grr)
4402    * Cleaned up some closing event issues on the streaming lib
4403    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
4404      so that 0.4.* users will need to do a clean install, but we don't need
4405      to shove an additional 2MB in each update to those already on 0.5.
4406    * Imported the susimail css (oops, thanks susi!)
4407
4408* 2005-02-18  0.5 released
4409
44102005-02-17  jrandom
4411    * If the clock is adjusted during a job run, don't act as if the job took
4412      negative time.
4413
44142005-02-17  jrandom
4415    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
4416
44172005-02-17  jrandom
4418    * Fixed the braindead tunnel testing logic
4419    * If a large number of tunnels are failing (within the last 5-10 minutes)
4420      and the current tunnel pool's configuration allows it, randomly build a
4421      zero hop tunnel to replace failed tunnels.
4422    * Enable postman's POP3 and SMTP tunnels by default
4423
44242005-02-16  jrandom
4425    * Added some error handling when the number of session tags exceeds the
4426      realistic capacity, dropping a random chunk of received tag sets and
4427      conducting some minor analysis of the remaining ones.  This is a part
4428      of a pretty serious error condition, and logs as CRIT (if/when people
4429      see "TOO MANY SESSION TAGS!", please let me know the full log line it
4430      puts in the wrapper.log or /logs.jsp)
4431    * Update the addressbook to only write to the published hosts location
4432      if the addressbook's config contains "should_publish=true" (by default,
4433      it contains "should_publish=false")
4434
44352005-02-16  jrandom
4436    * (Merged the 0.5-pre branch back into CVS HEAD)
4437    * Replaced the old tunnel routing crypto with the one specified in
4438      router/doc/tunnel-alt.html, including updates to the web console to view
4439      and tweak it. 
4440    * Provide the means for routers to reject tunnel requests with a wider
4441      range of responses:
4442        probabalistic rejection, due to approaching overload
4443        transient rejection, due to temporary overload
4444        bandwidth rejection, due to persistent bandwidth overload
4445        critical rejection, due to general router fault (or imminent shutdown)
4446      The different responses are factored into the profiles accordingly.
4447    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
4448      with a series of new properties, relevent to the new tunnel routing code:
4449        inbound.nickname (used on the console)
4450        inbound.quantity (# of tunnels to use in any leaseSets)
4451        inbound.backupQuantity (# of tunnels to keep in the ready)
4452        inbound.length (# of remote peers in the tunnel)
4453        inbound.lengthVariance (if > 0, permute the length by adding a random #
4454                                up to the variance.  if < 0, permute the length
4455                                by adding or subtracting a random # up to the
4456                                variance)
4457        outbound.* (same as the inbound, except for the, uh, outbound tunnels
4458                    in that client's pool)
4459      There are other options, and more will be added later, but the above are
4460      the most relevent ones.
4461    * Replaced Jetty 4.2.21 with Jetty 5.1.2
4462    * Compress all profile data on disk.
4463    * Adjust the reseeding functionality to work even when the JVM's http proxy
4464      is set.
4465    * Enable a poor-man's interactive-flow in the streaming lib by choking the
4466      max window size.
4467    * Reduced the default streaming lib max message size to 16KB (though still
4468      configurable by the user), also doubling the default maximum window
4469      size.
4470    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
4471    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
4472      the first byte of the SHA256.
4473    * Added a new "netId" flag to let routers drop references to other routers
4474      who we won't be able to talk to.
4475    * Extended the timestamper to get a second (or third) opinion whenever it
4476      wants to actually adjust the clock offset.
4477    * Replaced that kludge of a timestamp I2NP message with a full blown
4478      DateMessage.
4479    * Substantial memory optimizations within the router and the SDK to reduce
4480      GC churn.  Client apps and the streaming libs have not been tuned,
4481      however.
4482    * More bugfixes than you can shake a stick at.
4483
44842005-02-13  jrandom
4485    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
4486      only contains 32bit versions, so build your own, placing libjbigi.so in
4487      your install dir if necessary.  (thanks mule!)
4488    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
4489      (thanks spaetz!)
4490
44912005-02-10  smeghead
4492    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
4493      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
4494      Pants are still non-functional at this time so don't mess with it yet
4495      unless you want to potentially mangle your working copy of CVS.
4496
44972005-02-09  duck
4498    * Allow an unneeded newline in the SAM client connection without
4499      disconnecting.
4500
45012005-02-07  jrandom
4502    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
4503
45042005-02-06  Sugadude
4505    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
4506
45072005-02-03  smeghead
4508    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
4509      library from GNU Crypto's CVS HEAD sources.
4510
45112005-01-26  smeghead
4512    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
4513      packages and installed to $i2pinstalldir/scripts.
4514    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
4515      using gij + libgcj, and --sourcedir to run them from the source tree
4516      instead of the installation directory.
4517    * Fixed unreachable for() statement clause in the KBucketImpl class that was
4518      causing gcj to toss a compilation warning (jrandom++).
4519
45202005-01-26  smeghead
4521    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
4522      tests and benchmarks.
4523    * Routerconsole now builds under gcj 3.4.3.
4524    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
4525
45262005-01-25  smeghead
4527    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
4528      supporting apps (except for the routerconsole which is still being
4529      investigated).
4530
45312005-01-24  smeghead
4532    * C#-ification of sam-sharp: interface greatly simplified using delegates
4533      and events; SamBaseEventHandler provides basic implementation and helper
4534      methods but is now optional.
4535    * NAnt buildfile and README added for sam-sharp.
4536
45372005-01-23  smeghead
4538    * Port the java SAM client library to mono/C# and released into the
4539      public domain.  The 0.1 version of this port is available in CVS as
4540      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
4541      library has been removed.
4542
45432005-01-21  Jhor
4544    * Updated jbigi build scripts for OSX.
4545
45462005-01-21  jrandom
4547    * Added support for OSX to the NativeBigInteger code so that it will look
4548      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
4549      is not bundled with the shipped jbigi.jar yet though.
4550
45512005-01-18  jrandom
4552    * Increased the max # session tags maintained and decreased slightly the
4553      period over which they are gathered.
4554
45552005-01-17  jrandom
4556    * Added meaningful support for adjusting the preferred message size in the
4557      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
4558      whatever).  The other side will mimic a reduction (but never an increase).
4559    * Always make sure to use distinct ConnectionOption objects for each
4560      connection (duh)
4561    * Reduced the default ACK delay to 500ms on in the streaming lib
4562    * Only shrink the streaming window once per window
4563    * Don't bundle a new jetty.xml with updates
4564    * Catch another local routerInfo corruption issue on startup.
4565
45662005-01-15  cervantes
4567    * Added support to the eepproxy for URLs such as
4568      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
4569      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
4570
45712005-01-15  jrandom
4572    * Caught a series of (previously unhandled) errors caused by requeueing
4573      messages that had timed out on the TCP transport (thanks mae^!)
4574    * Reduce the barrier to dropping session tags on streaming lib resends -
4575      every fourth send should drop the tags, forcing ElGamal encryption.  This
4576      will help speed up the recovery after a disconnect, rather than the drop
4577      every fifth send.
4578
4579* 2005-01-06  0.4.2.6 released
4580
45812005-01-06  jrandom
4582    * Added a startup message to the addressbook, printing its version number
4583      to stdout (which is sent to wrapper.config) when it loads.
4584    * Updated the addressbook to reread the config file periodically
4585    * Added orion.i2p to the list of eepsites on the default homepage
4586
45872005-01-05  jrandom
4588    * Handle unexpected network read errors more carefully (thanks parg!)
4589    * Added more methods to partially compare (DataHelper) and display
4590      arrays (Base64.encode).
4591    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
4592    * Be more generous on the throttle when just starting up the router
4593    * Fix a missing scheduled event in the streaming lib (caused after reset)
4594    * Add a new DisconnectListener on the I2PSocketManager to allow
4595      notification of session destruction.
4596    * Make sure our own router identity is valid, and if it isn't, build a new
4597      one and restart the router.  Alternately, you can run the Router with
4598      the single command line argument "rebuild" and it will do the same.
4599
46002004-12-31  ragnarok
4601    * Integrated latest addressbook changes (2.0.3) which include support for
4602      deploying as a .war file with no existing addressbook configuration.
4603    * Updated main build process to bundle the addressbook.war in the
4604      i2pinstall.jar and i2pupdate.zip.
4605
46062004-12-31  jrandom
4607    * Speling fxi (thanks digum!)
4608    * Bugfix for the I2PTunnel web interface so that it now properly launches
4609      newly added tunnels that are defined to be run on startup (thanks ugha!)
4610
46112004-12-30  jrandom
4612    * Revised the I2PTunnel client and httpclient connection establishment
4613      throttles.  There is now a pool of threads that build the I2PSocket
4614      connections with a default size of 5, configurable via the I2PTunnel
4615      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
4616      not throttle the number of concurrent builders, but will launch a thread
4617      per socket during establishment).  In addition, sockets accepted but
4618      not yet allocated to one of the connection builders will be destroyed
4619      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
4620      0, it will wait indefinitely).
4621
46222004-12-29  jrandom
4623    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
4624      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
4625    * Don't treat connection inactivity closure as a connection error.
4626
46272004-12-29  jrandom
4628    * Add in a new keepalive event on each TCP connection, proactively sending
4629      a (tiny) time message every minute or two, as well as killing the
4630      connection if no message has been fully sent within 5 minutes or so. 
4631      This should help deal with hung connections from IP address changes.
4632
46332004-12-28  jrandom
4634    * Cleaned up the resending and choking algorithm in the streaming lib.
4635    * Removed the read timeout override for I2PTunnel's httpclient, allowing
4636      it to use the default for the streaming lib.
4637    * Revised ack triggers in the streaming lib.
4638    * Logging.
4639
4640* 2004-12-21  0.4.2.5 released
4641
46422004-12-21  jrandom
4643    * Track a new stat for expired client leases (client.leaseSetExpired).
4644
46452004-12-21  jrandom
4646    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
4647      and added windows info to the headless docs. (thanks ardvark!)
4648    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
4649      a stream (thanks frosk!)
4650    * Add a pair of new stats for monitoring tunnel participation -
4651      tunnel.participatingBytesProcessed (total # bytes transferred) and
4652      tunnel.participatingBytesProcessedActive (total # bytes transferred for
4653      tunnels whose byte count exceed the 10m average).  This should help
4654      further monitor congestion issues.
4655    * Made the NamingService factory property public (thanks susi!)
4656
46572004-12-20  jrandom
4658    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
4659    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
4660      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
4661      reasoning is gone.
4662
46632004-12-19  jrandom
4664    * Fix for a race on startup wrt the new stats (thanks susi!)
4665
46662004-12-19  jrandom
4667    * Added three new stats - router.activePeers, router.fastPeers, and
4668      router.highCapacityPeers, updated every minute
4669
46702004-12-19  jrandom
4671    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
4672      hostname should be sent to the webserver.  By default, new installs will
4673      have an httpserver pointing at their jetty instance with the spoofed
4674      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
4675
46762004-12-19  scintilla
4677    * Convert native jcpuid code from C++ to C. This should alleviate build
4678      problems experienced by some users.
4679
4680* 2004-12-18  0.4.2.4 released
4681
46822004-12-16  jrandom
4683    * Catch another oddball case for a reset connection in the streaming lib.
4684    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
4685      dumps the current state of that peer's profile.  Instead of the full
4686      base64, you can pass in however many characters you have and it will
4687      return the first match found.
4688
46892004-12-16  jrandom
4690    * Remove the randomized factor in the tunnel rejection by bandwidth -
4691      we now accept the request if we've allocated less than our limit
4692      and reject it if we've allocated more.
4693    * Stick to the standard capacity scale on tunnel rejection, even for
4694      the 10m period.
4695    * Build the time message at the very last possible moment
4696
46972004-12-15  jrandom
4698    * Handle hard disconnects more gracefully within the streaming lib, and
4699      log unmonitored events more aggressively.
4700    * If we drop a peer after connection due to clock skew, log it to the
4701      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
4702      the stat 'tcp.disconnectAfterSkew'.
4703    * Fixed the formatting in the skew display
4704    * Added an ERROR message that is fired once after we run out of
4705      routerInfo files (thanks susi!)
4706    * Set the connect timeout equal to the streaming lib's disconnect timeout
4707      if not already specified (the I2PTunnel httpclient already enforces a
4708      60s connect timeout)
4709    * Fix for another connection startup problem in the streaming lib.
4710    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4711    * Adjust the capacity calculations so that tunnel failures alone in the
4712      last 10m will not trigger a 0 capacity rank.
4713
47142004-12-14  jrandom
4715    * Periodically send a message along all I2NP connections with the router's
4716      current time, allowing the receiving peer to determine that the clock
4717      has skewed too much, and hence, disconnect.  For backwards compatability
4718      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4719      next time we have a backwards compatability break, we can put in a proper
4720      message setup for it.
4721
47222004-12-14  jrandom
4723    * Reenable the probabalistic drop on the TCP queues to deal with good old
4724      fashioned bandwidth limiting.  However, by default the probability is
4725      rigged to reserve 0% of the queue free - meaning we just aggressively
4726      fail messages in the queue if we're transferring too slowly.  That
4727      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4728      (or whatever) and the drop code can be disabled with the parameter
4729      'tcp.dropProbabalistically=false'.
4730    * Still penalize a peer on tunnel failure, but don't immediately drop
4731      their capacity to 0.
4732    * More aggressively ACK duplicates
4733    * Randomize the timestamper period
4734    * Display the clock skew on the connection logs when a peer sends it.
4735    * Allow the timestamper to fix skews of up to 10 minutes
4736    * Logging
4737
47382004-12-13  jrandom
4739    * Added some error checking on the new client send job (thanks duck!)
4740    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4741      proportional to the bytes allocated in existing tunnels vs the bytes
4742      allowed through the bandwidth limiter).
4743    * Enable a new configuration parameter for triggering a tunnel rebuild
4744      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4745      before killing the tunnel (default 0).
4746    * Gather more data that we rank capacity by (now we monitor and balance the
4747      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4748    * Fix a truncation/type conversion problem on the long term capacity
4749      values (we were ignoring the daily stats outright)
4750
47512004-12-11  jrandom
4752    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4753      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4754      on .connect, but is unable to transfer any data in any direction.  We now
4755      detect that condition for the I2PTunnelHTTPClient and throw up the right
4756      error page.
4757    * Logging
4758
47592004-12-11  jrandom
4760    * Use a simpler and less memory intensive job for processing outbound
4761      client messages when the session is in mode=bestEffort.  We can
4762      immediately discard the data as soon as its sent the first time,
4763      rather than wait for an ack, since we will never internally resend.
4764    * Reduce some synchronization to avoid a rare deadlock
4765    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4766      case it within the tunnel controller.
4767    * Script cleanup for building jbigi/jcpuid
4768    * Logging
4769
4770* 2004-12-08  0.4.2.3 released
4771
47722004-12-08  jrandom
4773    * Revised the buffering when reading from the SAM client and writing
4774      to the stream.  Also added a thread (sigh) so we don't block the
4775      SAM client from giving us more messages for abnormally long periods
4776      of time.
4777    * Display the router version in the logs on startup (oft requested)
4778    * Fix a race during the closing of a messageOutputStream
4779
47802004-12-06  jrandom
4781    * Don't do a 'passive flush' while there are already outbound messages
4782      unacked.
4783    * Show the reseed link if up to 10 peers profiles are active (thanks
4784      dburton!)
4785
47862004-12-06  jrandom
4787    * Don't propogate streaming connection failures out to the SAM bridge as
4788      fatal errors.
4789    * Dont barf on repeated I2CP closure.
4790
47912004-12-05  jrandom
4792    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4793      getLocalhost call
4794
47952004-12-05  jrandom
4796    * Default the I2CP listener to localhost only, unless overridden by
4797      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4798    * More SAM fixes for things recently broken (whee)
4799
48002004-12-05  jrandom
4801    * Fix the recently broken SAM bridge (duh)
4802    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4803      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4804      StreamSink and StreamSend apps for transferring files.
4805    * Make the passive flush timer fire more frequently.
4806
48072004-12-05  jrandom
4808    * Fixed some links in the console (thanks ugha!) and the javadoc
4809      (thanks dinoman!)
4810    * Fix the stream's passive flush timer (oh, its supposed to work?)
4811
48122004-12-03  jrandom
4813    * Toss in a small pool of threads (3) to execute the events queued up with
4814      the SimpleTimer, as we do currently see the occational event
4815      notification spiking up to a second or so.
4816    * Implement a SAM client API in java, useful for event based streaming (or
4817      for testing the SAM bridge)
4818    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4819      bridge is being run outside of the router).
4820    * Include the SAM test code in the sam.jar
4821    * Remove an irrelevent warning message from SAM, which was caused by
4822      perfectly normal operation due to a session being closed.
4823    * Removed some unnecessary synchronization in the streaming lib's
4824      PacketQueue
4825    * More quickly clean up the memory used by the streaming lib by
4826      immediately killing each packet's resend job as soon as it is ACKed (or
4827      cancelled), so that there are no longer any valid pointers to the
4828      (potentially 32KB) packet.
4829    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4830    * Drop packets that would expand our inbound window beyond our maximum
4831      buffer size (default 32 messages)
4832    * Always read the ACK/NACK data from the verified packets received, even
4833      if we are going to drop them
4834    * Always adjust the window when there are messages ACKed, though do not
4835      change its size except as before.
4836    * Streamlined some synchronization in the router's I2CP handling
4837    * Streamlined some memory allocation in the SAM bridge
4838    * Default the streaming lib to disconnect on inactivity, rather than send
4839      an empty message.
4840
48412004-12-01  jrandom
4842    * Fix for a race in the streaming lib as caused by some odd SAM activity
4843
4844* 2004-12-01  0.4.2.2 released
4845
48462004-12-01  jrandom
4847    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4848      connections to work (thanks duck!)
4849    * Make sure we override the inactivity timeout too
4850
4851* 2004-12-01  0.4.2.1 released
4852
48532004-12-01  jrandom
4854    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4855      include the forged User-agent header.
4856    * Adjust the default read timeout on the eepproxy to 60s, unless
4857      overridden.
4858    * Minor tweak on stream shutdown.
4859
48602004-11-30  jrandom
4861    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4862    * Build in a simple timeout to flush data queued into the I2PSocket but
4863      not yet flushed.
4864    * Don't explicitly flush after each SAM stream write, but leave it up to
4865      the [nonblocking] passive flush.
4866    * Don't whine about 10-99 connection events occurring in a second
4867    * Don't wait for completion of packets that will not be ACKed (duh)
4868    * Adjust the congestion window, even if the packet was resent (duh)
4869    * Make sure to wake up any blocking read()'s when the MessageInputStream
4870      is close()ed (duh)
4871    * Never wait more than the disconnect timeout for a write to complete
4872
48732004-11-29  jrandom
4874    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4875
48762004-11-29  jrandom
4877    * Reduced contention for local client delivery
4878    * Drop the new code that munges the wrapper.config.  Instead, updates that
4879      need to change it will include their own wrapper.config in the
4880      i2pupdate.zip, overwriting the existing file.  If the file
4881      "wrapper.config.updated" is included, it is deleted at first opportunity
4882      and the router shut down, displaying a notice that the router must be
4883      started again cleanly to allow the changes to the wrapper.config to take
4884      effect.
4885    * Properly stop accept()ing I2PSocket connections if we close down the
4886      session (duh).
4887    * Make sure we cancel any outstanding Packets in flight when a connection
4888      is terminated (thanks susi!)
4889    * Split up the I2PTunnel closing a little further.
4890
48912004-11-28  jrandom
4892    * Accept IP address detection changes with a 2-out-of-3 minimum.
4893    * As long as the router is up, keep retrying to bind the I2CP listener.
4894    * Decrease the java service wrapper ping frequency to once every 10
4895      minutes, rather than once every 5 seconds.
4896
48972004-11-27  jrandom
4898    * Some cleanup and bugfixes for the IP address detection code where we
4899      only consider connections that have actually sent and received messages
4900      recently as active, rather than the mere presence of a TCP socket as
4901      activity.
4902
49032004-11-27  jrandom
4904    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4905      lib can do that (without an additional per-connection thread).
4906    * Close the I2PTunnel forwarder threads more aggressively
4907
49082004-11-27  jrandom
4909    * Fix for a fast loop caused by a race in the new streaming library (thanks
4910      DrWoo, frontier, pwk_, and thetower!)
4911    * Minor updates to the SimpleTimer and Connection to help track down a
4912      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4913      many events/tasks fire in a second)
4914    * Minor fixes for races on client disconnects (causing NPEs)
4915
4916* 2004-11-26  0.4.2 released
4917
49182004-11-26  jrandom
4919    * Enable the new streaming lib as the default.  That means, for any
4920      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4921
49222004-11-25  jrandom
4923    * Revised the installer to include start menu and desktop shortcuts for
4924      windows platforms, including pretty icons (thanks DrWoo!)
4925    * Allow clients specified in clients.config to have an explicit startup
4926      delay.
4927    * Update the default install to launch a browser pointing at the console
4928      whenever I2P starts up, rather than only the first time it starts up
4929      (configurable on /configservice.jsp, or in clients.config)
4930    * Bugfix to the clock skew checking code to monitor the delta between
4931      offsets, not the offset itself (duh)
4932    * Router console html update
4933    * New (and uuuuugly) code to verify that the wrapper.config contains
4934      the necessary classpath entries on update.  If it has to update the
4935      wrapper.config, it will stop the JVM and service completely, since the
4936      java service wrapper doesn't reread the wrapper.config on JVM restart -
4937      requiring the user to manually restart the service after an update.
4938    * Increase the TCP connection timeout to 30s (which is obscenely long)
4939
49402004-11-22  jrandom
4941    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4942    * New stat to keep track of slow jobs (ones that take more than a second
4943      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4944
49452004-11-21  jrandom
4946    * Update the I2PTunnel web interface to include an option for the new
4947      streaming lib (which is ignored until the 0.4.2 release).
4948    * Revised the I2PTunnel web interface to keep the I2CP options of client
4949      and httpclient tunnels in sync, as they all share the same I2CP session.
4950
49512004-11-21  jrandom
4952    * Only allow small clock skews after the first 10 minutes of operation
4953      (to prevent later network lag bouncing us way off course - yes, we
4954      really need an NTP impl to balance out the network burps...)
4955    * Revamp the I2PTunnel web interface startup process so that everything
4956      is shown immediately, so that different pieces hanging don't hang
4957      the rest, and other minor bugfixes.
4958    * Take note of SAM startup error (in case you're already running a SAM
4959      bridge...)
4960    * Increase the bandwidth limiter burst values available to 10-60s (or
4961      whatever is placed in /configadvanced.jsp, of course)
4962
49632004-11-21  jrandom
4964    * Allow end of line comments in the hosts.txt and other config files,
4965      using '#' to begin the comments (thanks susi!)
4966    * Add support to I2PTunnel's 'client' feature for picking between multiple
4967      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
4968    * Add a quick link on the left hand nav to reseed if there aren't enough
4969      known peers, as well as link to the config page if there are no active
4970      peers.  Revised config page accordingly.
4971
49722004-11-21  jrandom
4973    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
4974      rather that every 15 minutes, and increase the warning period in which
4975      we refresh tags from 30s to 2 minutes.
4976    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
4977      to close the I2PSocket (leaving it to timeout).
4978
49792004-11-19  jrandom
4980    * Off-by-one fix to the tunnel pool management code, along side some
4981      explicit initialization.  This can affect clients whose lengths are
4982      shorter than the router's default (thanks duck!)
4983
49842004-11-17  jrandom
4985    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
4986      Ragnarok!)
4987
49882004-11-17  jrandom
4989    * Minor logging update.
4990
49912004-11-16  jrandom
4992    * Clean up the propogation of i2psocket options so that various streaming
4993      libs can honor them more precisely
4994
49952004-11-16  jrandom
4996    * Minor logging update
4997
49982004-11-14  jrandom
4999    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
5000    * Fix a leak injected into the SimpleTimer
5001    * Fix a race condition in the tunnel message handling
5002
50032004-11-13  jrandom
5004    * Added throttles on how many I2PTunnel client connections we open at once
5005    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
5006      the streaming library used should take care of any buffering.
5007    * Added a cache for some objects used in I2PTunnel, especially useful when
5008      there are many short lived connections.
5009    * Trimmed the SimpleTimer's processing a bit
5010
50112004-11-10  jrandom
5012    * Allow loading the (mini)streaming connection options from the
5013      environment.
5014    * More defensive programming in the DSA implementation.
5015
50162004-11-08  jrandom
5017    * Remove spurious flush calls from I2PTunnel, and work with the
5018      I2PSocket's output stream directly (as the various implementations
5019      do their own buffering).
5020    * Another pass at a long standing JobQueue bug - dramatically simplify
5021      the job management synchronization since we dont need to deal with
5022      high contention (unlike last year when we had dozens of queue runners
5023      going at once).
5024    * Logging
5025
50262004-11-08  jrandom
5027    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
5028
5029* 2004-11-06  0.4.1.4 released
5030
50312004-11-06  jrandom
5032    * Expose a drop down on the /configclients.jsp to enter the outbound
5033      tunnel depth.
5034    * Improved *hosts.txt loading
5035    * Explicitly override the JVM's timezone settings to use GMT so that
5036      any client applications which use timezones won't leak sensitive
5037      data (thanks gott!)
5038    * Bundle sam.jar in the update (thanks duck!)
5039
50402004-11-06  jrandom
5041    * Fix for a long standing synchronization bug in the SDK that in rare
5042      instances can add a few seconds of lag.
5043
50442004-11-05  jrandom
5045    * Bugfixes and unit tests for the SAM bridge to handle quoted message
5046      parameters, verify proper operation after multiple session lifetimes,
5047      as well as some synchronization problems.
5048    * New properties method on the DataHelper class.
5049    * Address a race on fast disconnecting clients
5050
50512004-11-02  jrandom
5052    * Fix for a long standing synchronization bug in the JobQueue (and added
5053      some kooky flags to make sure it stays dead)
5054    * Update the ministreaming lib to force mode=guaranteed if the default
5055      lib is used, and mode=best_effort for all other libs.
5056
50572004-11-02  jrandom
5058    * Fixed up the configuration overrides for the streaming socket lib
5059      integration so that it properly honors env settings.
5060    * More memory usage streamlining (last major revamp for now, i promise)
5061
50622004-11-01  jrandom
5063    * Increase the tunnel test timeout rapidly if our tunnels are failing.
5064    * Honor message expirations for some tunnel jobs that were prematurely
5065      expired.
5066    * Streamline memory usage with temporary object caches and more efficient
5067      serialization for SHA256 calculation, logging, and both I2CP and I2NP
5068      message handling.
5069    * Fix some situations where we forward messages too eagerly.  For a
5070      request at the tunnel endpoint, if the tunnel is inbound and the target
5071      is remote, honor the message by tunnel routing the data rather than
5072      sending it directly to the requested location.
5073
50742004-10-30  jrandom
5075    * Cache the temporary objects used in the AES encryption/decryption
5076      process so that AES doesn't require any memory allocation to process
5077      data.
5078    * Dramatically reduce memory usage within various crypto implementations
5079      by avoiding unnecessary (though simplifying) buffers.
5080    * If we specify some tags to be sent in an I2CP message explicitly, use
5081      only those, not those plus a new set (otherwise we aren't sure on ACK
5082      which set was delivered)
5083    * Allow configuration for the partial send timeout (how long before
5084      resending a message down a different tunnel in a lease).  This can be
5085      updated with the "router.clientPartialSendTimeout" router config prop.
5086    * Logging
5087
50882004-10-29  jrandom
5089    * Strip the Referer, Via, and From headers completely, rather than
5090      inserting a bogus value ("i2p").  This should help with the use of
5091      SnipSnap and Geeklog (thanks nickster and DrWoo!)
5092
50932004-10-27  jrandom
5094    * Fix a strange race condition on i2cp client disconnect.
5095    * win98 startup fixes (thanks tester-1 and ardvark!)
5096    * include build scripts for the new streaming lib (which is NOT ready
5097      for use yet, but you can hack around with it)
5098
50992004-10-24  jrandom
5100    * Allow explicit inclusion of session tags in the SDK, enabling the
5101      resending of tags bundled with messages that would not otherwise
5102      be ACKed.
5103    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
5104      no DeliveryStatusMessage will be bundled (and as such, client apps using
5105      it will need to do their own session tag ack/nack).
5106    * Handle client errors when notifying them of message availability.
5107    * New StreamSinkSend which sends a file to a destination and disconnects.
5108    * Update the I2PSocketManagerFactory to build the specific
5109      I2PSocketManager instance based on the "i2p.streaming.manager" property,
5110      containing the class name of the I2PSocketManager to instantiate.
5111
51122004-10-23  jrandom
5113    * Minor ministreaming lib refactoring to simplify integration of the full
5114      streaming lib.
5115    * Minor bugfixes to data structure serialization.
5116
5117* 2004-10-18  0.4.1.3 released
5118
51192004-10-18  jrandom
5120    * Allow sending messages with a section of a byte array.
5121    * Reduced stats published.
5122
51232004-10-17  jrandom
5124    * Don't b0rk on whitespace in the router address.
5125
51262004-10-16  jrandom
5127    * More aggressively reduce the capacity of peers if their tunnels are
5128      failing so that we move off them quicker.
5129    * Simplify some data structure serialization for reuse in the streaming
5130      lib, as well as add support for signing and verifying partial byte
5131      arrays.
5132    * Logging updates
5133
51342004-10-16  jrandom
5135    * Increased the default minimum tunnel test time to 5 seconds, since we
5136      still see the occational message processing time spike to 2 seconds.
5137    * Update the SimpleTimer to allow rescheduling a task thats already
5138      queued (useful for the new streaming lib).
5139
51402004-10-15  jrandom
5141    * Replaced old minimum tunnel test timeout of 1s with a configurable
5142      value (router.config property "router.tunnelTestMinimum", with the
5143      default of 2s).
5144
51452004-10-14  jrandom
5146    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
5147      peer, so don't use it as a key point of the IsFailing calculator.
5148      We still use it as a key point of the Capacity calculator, however.
5149
51502004-10-14  jrandom
5151    * Allow for a configurable tunnel "growth factor", rather than trying
5152      to achieve a steady state.  This will let us grow gradually when
5153      the router is needed more, rather than blindly accepting the request
5154      or arbitrarily choking it at an averaged value.  Configure this with
5155      "router.tunnelGrowthFactor" in the router.config (default "1.5").
5156    * Adjust the tunnel test timeouts dynamically - rather than the old
5157      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
5158      test time (the deviation factor can be adjusted by setting
5159      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
5160      find the 'good' tunnels.
5161    * Added some crazy debugging to try and track down an intermittent hang.
5162
51632004-10-13  jrandom
5164    * Fix the probabalistic tunnel reject (we always accepted everything,
5165      since the docs on java.util.Random.nextDouble() are wrong..)
5166    * Fixed a race on startup (thanks Quadn!)
5167
51682004-10-12  jrandom
5169    * Disable the probabalistic drop by default (enable via the router config
5170      property "tcp.dropProbabalistically=true")
5171    * Disable the actual watchdog shutdown by default, but keep track of more
5172      variables and log a lot more when it occurs (enable via the router
5173      config property "watchdog.haltOnHang=true")
5174    * Implement some tunnel participation smoothing by refusing requests
5175      probabalistically as our participating tunnel count exceeds the previous
5176      hour's, or when the 10 minute average tunnel test time exceeds the 60
5177      minute average tunnel test time.  The probabilities in both cases are
5178      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
5179      and you had previously only participated in 50, you'll have a 25% chance
5180      of accepting a subsequent request.
5181
5182* 2004-10-10  0.4.1.2 released
5183
51842004-10-10  cervantes
5185    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
5186      the request.
5187
51882004-10-09  jrandom
5189    * Added a watchdog timer to do some baseline liveliness checking to help
5190      debug some odd errors.
5191    * Added a pair of summary stats for bandwidth usage, allowing easy export
5192      with the other stats ("bw.sendBps" and "bw.receiveBps")
5193    * Trimmed another memory allocation on message reception.
5194
51952004-10-08  jrandom
5196    * Revamp the AESInputStream so it doesn't allocate any temporary objects
5197      during its operation.
5198
51992004-10-08  jrandom
5200    * Don't kill the establisher threads during a soft restart.
5201    * Attempt to validate the peer's routerInfo earlier during handshaking.
5202    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
5203      during its operation.
5204
52052004-10-07  jrandom
5206    * Reimplement the I2NP reading with less temporary memory allocation.
5207      There is still significant GC churn, especially under load, but this
5208      should help.
5209    * Catch some oddball errors in the transport (message timeout while
5210      establishing).
5211
52122004-10-07  jrandom
5213    * Expire queued messages even when the writer is blocked.
5214    * Reimplement most of the I2NP writing with less temporary memory
5215      allocations (I2NP reading still gobbles memory).
5216
52172004-10-06  jrandom
5218    * Implement an active queue management scheme on the TCP transports,
5219      dropping messages probabalistically as the queue fills up.  The
5220      estimated queue capacity is determined by the rate at which messages
5221      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
5222      we exceed 1/2 of the estimated capacity, we drop messages throughout
5223      the queue probabalistically with regards to their size.  This is based
5224      on RFC 2309's RED, with the minimum threshold set to 1/2 the
5225      estimated connection capacity.  We may want to consider using a send
5226      rate and queue size measured across all connections, to deal with our
5227      own local bandwidth saturation, but we'll try the per-con metrics first.
5228
52292004-10-06  jrandom
5230    * Enable explicit disabling of the systray entirely for windows machines
5231      with strange configurations: add -Dsystray.disable=true to the java
5232      command line.  (thanks mihi!)
5233
52342004-10-05  jrandom
5235    * Allow peers on the same LAN to communicate with each other safely even
5236      when they cannot talk to each other through the external address.
5237
52382004-10-05  jrandom
5239    * Display how much time is left before the graceful shutdown is complete.
5240    * Debug some improperly failed messages on timeout or disconnection.
5241
52422004-10-05  jrandom
5243    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
5244      (thanks mule!)
5245    * Handle some more error conditions regarding abruptly closing sockets
5246      (thanks Jonva!)
5247
52482004-10-04  jrandom
5249    * Update the shitlist to reject a peer for an exponentially increasing
5250      period of time (with an upper bounds of an hour). 
5251    * Various minor stat and debugging fixes
5252
52532004-10-03  jrandom
5254    * Add a new stat logging component to optionally dump the raw stats to
5255      disk as they are generated, rather than rely upon the summarized data.
5256      By default, this is off, but the router property "stat.logFilters" can
5257      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
5258      which will be written to the file "stats.log" (or whatever the property
5259      "stat.logFile" is set to).  This can also log profile related stats,
5260      such as "dbResponseTime" or "tunnelTestResponseTime".
5261
52622004-10-02  jrandom
5263    * Assure that we quickly fail messages bound for shitlisted peers.
5264    * Address a race on startup where the first peer contacted could hang the
5265      router (thanks Romster!)
5266    * Only whine about an intermittent inability to query the time server once
5267
52682004-10-02  jrandom
5269    * Command line utility to verify a peer's reachability - simply run
5270      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
5271      will print out whether that peer is reachable or not (using a simple
5272      verification handshake).
5273
5274* 2004-10-01  0.4.1.1 released
5275
52762004-10-01  jrandom
5277    * Handle partial reseeds, caused by seeds going away before the download
5278      completes (thanks Sugadude!)
5279
52802004-10-01  jrandom
5281    * Explicitly refuse IPv6 addresses, since only some peers support
5282      them and we want fully reachable peers.
5283
52842004-10-01  jrandom
5285    * Additional error handling for a variety of transport layer errors.
5286
5287* 2004-09-30  0.4.1 released (not backwards compatible)
5288
52892004-09-30  jrandom
5290    * Bundle the configuration necessary to run an eepsite out of the box
5291      with Jetty - simply edit ./eepsite/docroot/index.html and give people
5292      the key listed on the I2PTunnel configuration page, and its up.
5293    * Router console cleanup, and some (off by default) tunnels -
5294      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
5295      irc.baffled.i2p (port 7661)
5296
52972004-09-29  jrandom
5298    * Always wipe the Jetty work directory on startup, so that web updates
5299      are reflected immediately (Jetty does not honor the cache across
5300      multiple executions)
5301
53022004-09-27  jrandom
5303    * Limit the number of connection tags saved to 10,000.  This is a huge
5304      limit, but consumes no more than 1MB of RAM.  For now, we drop them
5305      randomly after reaching that size, forcing those dropped peers to use
5306      a full DH negotiation.
5307    * HTML cleanup in the console.
5308
53092004-09-26  jrandom
5310    * Complete rewrite of the TCP transport with IP autodetection and
5311      low CPU overhead reconnections.  More concise connectivity errors
5312      are listed on the /oldconsole.jsp as well.  The IP autodetection works
5313      by listening to the first person who tells you what your IP address is
5314      when you have not defined one yourself and you have no other TCP
5315      connections.
5316    * Update to the I2NP message format to add transparent verification at
5317      the I2NP level (beyond standard TCP verification).
5318    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
5319      implementation (rather than verifying with E(H(key)), we now verify with
5320      E(H(iv))).
5321    * The above changes are NOT BACKWARDS COMPATIBLE.
5322    * Removed all of the old unused PHTTP code.
5323    * Refactor various methods and clean up some javadoc.
5324
53252004-09-21  jrandom
5326    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
5327      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
5328      but values stored in the later take precedence.  Both are queried on
5329      lookup.
5330
53312004-09-16  jrandom
5332    * Refactor the TCP transport to deal with changing identities gracefully,
5333      and to prevent some wasted effort by keeping track of what host+port
5334      combinations we are connected to (rather than just the identities).  Also
5335      catch a few configuration errors earlier.
5336    * Removed no longer relevent methods from the Transport API that were
5337      exposing ideas that probably shouldn't be exposed.
5338    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
5339      updates)
5340
53412004-09-13  jrandom
5342    * Update for the SDK reconnection to deal with overflow.
5343    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
5344      rounding on lifetime bandwidth used [thanks gott!]).
5345
5346* 2004-09-08  0.4.0.1 released
5347
53482004-09-08  jrandom
5349    * Updated the "Active:" peer count to display the # of connections as well
5350      as the number of recently active router identities.
5351    * Implement some basic updating code - on startup, if there is a file named
5352      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
5353      then restart.
5354    * Added an ugly little script to allow launching the router on win9x
5355      machines without a dos box (using javaw to run a .bat file).
5356    * Logging updates.
5357    * Updated VERSION constants to 0.4.0.1
5358
53592004-09-08  hypercubus
5360    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
5361      hopefully any other affected *nix systems) now properly discards non-
5362      essential directories after installation.
5363    * Support for Win9x in the installer and postinstall.bat.
5364    * Changed the name of the default installation directory on all platforms
5365      from "I2P" to "i2p" in the installer.
5366    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
5367      other configuration files.
5368
53692004-09-07  cervantes:
5370    * Proxy recursion disabled by default (strict)
5371    * Password Authentication for session commands
5372    * Support for http://path?i2paddresshelper=BASE64
5373    * Support for http://i2p/BASE64/path syntax
5374
53752004-09-07  jrandom
5376    * Make sure that peers placed in the 'fast' group are ones we both know
5377      how to reach and have been able to reach recently.  These peers may
5378      still be placed in the 'high capacity' group however (though that group
5379      is only queried if the 'fast' group is too small)
5380    * Include some updates to the ProgileOrganizer's CLI.
5381
53822004-09-07  jrandom
5383    * Disable the timestamper by default for all applications except the router
5384      (enable via -Dtime.disabled=false)
5385    * Simplify the retrieval of the full destination with text based browsers.
5386    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
5387
53882004-09-07  jrandom
5389    * Write the native libraries to the current directory when they are loaded
5390      from a resource, and load them from that file on subsequent runs (in
5391      turn, we no longer *cough* delete the running libraries...)
5392    * Added support for a graceful restart.
5393    * Added new pseudo-shutdown hook specific to the router, allowing
5394      applications to request tasks to be run when the router shuts down.  We
5395      use this for integration with the service manager, since otherwise a
5396      graceful shutdown would cause a timeout, followed by a forced hard
5397      shutdown.
5398    * Made the capacity calculator a bit more dynamic by not outright ignoring
5399      the otherwise valid capacity data for a period with a single rejected
5400      tunnel (except for the 10 minute period).  In addition, peers with an
5401      equal capacity are ordered by speed rather than by their hashes.
5402    * Cleaned up the SimpleTimer, addressing some threading and synchronization
5403      issues.
5404    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
5405      associated session (unless there are other clients using it), and deal
5406      with a closed session when starting a new I2PTunnel instance.
5407    * Refactoring and logging.
5408
54092004-09-06  jrandom
5410    * Address a race condition in the key management code that would manifest
5411      itself as a corrupt router identity.
5412    * Properly clear old transport addresses from being displayed on the old
5413      console after soft restarts.
5414    * Properly refuse to load the client applications more than once in the
5415      same JVM.
5416    * Added support for a graceful restart (a graceful shutdown followed by a
5417      full JVM restart - useful for restarting client apps).
5418    * More defensive programming, HTML cleanup, logging
5419    * wrapper.config cleanup of duplicate lines
5420
54212004-09-04  jrandom
5422    * Added some basic guards to prevent multiple instances from running.
5423      Specifically, a file "router.ping" in the install directory which is
5424      written to once a minute - if that file exists and has been modified
5425      within the last minute, refuse to start up.  In turn, adjust the
5426      service wrapper to wait a minute before restarting a crashed JVM.
5427    * Create a "work" directory in the I2P install dir which Jetty will
5428      use for all of its temporary files.
5429    * Tell the browser not to cache most of the router console's pages.
5430
54312004-09-04  jrandom
5432    * Update the SDK to automatically reconnect indefinitely with an
5433      exponential delay on retries (capped at 5 minutes).
5434
5435* 2004-09-03  0.4 released
5436
54372004-09-03  jrandom
5438    * Updated default wrapper.config to deal with the hard restart option
5439    * Include the history.txt in the /help.jsp page
5440    * HTML updates (wrapper.log, and no more unix scripts)
5441    * Updated VERSION constants to 0.4
5442
54432004-09-03  hypercubus
5444    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
5445    * Temporarily removed install_i2p_service_unix and
5446      uninstall_i2p_service_unix from distribution packages.
5447    * postinstall.bat/postinstall.sh cleans installation directory of all files
5448      not applicable to the host OS.
5449
54502004-09-03  oOo
5451    * Added some filters to the HTTP request, replacing the User-Agent,
5452      Referrer, Via, and From headers, which helps until we have a more
5453      comprehensive filtering system.
5454
54552004-09-03  jrandom
5456    * Disabled the old listener on port 7655.
5457
54582004-09-02  jrandom
5459    * Cleaned up the base build.xml, adding a new target ("updater") which
5460      builds the file i2pupdate.tar.bz2 which can be safely extracted over
5461      existing installs.
5462
54632004-xx-xx  jrandom
5464    * Implemented the new web architecture and router console
5465    * Implemented I2PTunnel web interface, and revamped startup process.
5466    * Revamped peer selection code to address skew.
5467    * Removed all temporary threads from the router and the SDK.
5468    * Bugfix dealing with timeouts and resends.
5469    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
5470
54712004-xx-xx  hypercubus
5472    * Implemented the new installation process.
5473    * Integrated systray
5474    * Integrated service manager
5475
54762004-xx-xx  oOo
5477    * Implemented ?i2paddresshelper= hook
5478    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
5479
54802004-xx-xx  Nightblade
5481    * libSAM updates.
5482
54832004-xx-xx  cervantes
5484    * Imported i2pProxy.pac proxy script in with the build.
5485
5486* 2004-08-20  0.3.4.3 released
5487* 2004-08-12  0.3.4.2 released
5488* 2004-08-08  0.3.4.1 released
5489* 2004-07-29  0.3.4 released
5490* 2004-07-23  0.3.3 released
5491* 2004-07-16  0.3.2.3 released
5492* 2004-07-14  0.3.2.2 released
5493* 2004-07-11  0.3.2.1 released
5494* 2004-07-07  0.3.2 released
5495* 2004-06-25  0.3.1.5 released
5496* 2004-05-23  0.3.1.4 released
5497* 2004-05-20  0.3.1.3 released
5498* 2004-05-13  0.3.1.2 released
5499* 2004-05-07  0.3.1.1 released
5500* 2004-04-30  0.3.1 released
5501* 2004-04-20  0.3.0.4 released
5502* 2004-04-04  0.3.0.3 released
5503* 2004-03-30  0.3.0.2 released
5504* 2004-03-25  0.3.0.1 released
5505* 2004-03-21  0.3.0 released
5506* 2004-03-10  0.2.5.4 released
5507* 2004-03-04  0.2.5.3 released
5508* 2004-02-28  0.2.5.2 released
5509* 2004-02-27  0.2.5.1 released
5510* 2004-02-25  0.2.5 released
5511* 2004-02-19  0.2.4.2 released
5512* 2004-02-15  0.2.4.1 released
5513* 2004-02-14  0.2.4 released
5514* 2004-01-27  0.2.3.6 released
5515* 2004-01-21  0.2.3.5 released
5516* 2004-01-14  0.2.3.4 released
5517* 2003-12-29  0.2.3.3 released
5518* 2003-12-27  0.2.3.2 released
5519* 2003-12-25  0.2.3.1 released
5520* 2003-12-13  0.2.3 released
5521* 2003-12-01  0.2.2 released
5522* 2003-11-18  0.2.1.1 released
5523* 2003-11-12  0.2.1 released
5524* 2003-11-09  0.2.0.3 released
5525* 2003-11-08  0.2.0.2 released
5526* 2003-11-03  0.2.0.1 released
5527* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.