source: history.txt @ 3766724

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

2009-04-06 sponge

SimpleScheduler? SimpleTimer2 debugging added.
Fix build files for desktopgui.

  • Property mode set to 100644
File size: 238.0 KB
Line 
12009-04-06 sponge
2    * Debugging to make SimpleTimer2 and SimpleScheduler easier to debug.
3    * Fix for the config files in the GUI from mathiasdm
4
52009-04-04 sponge
6    * Hopeful fixups to the infamous orpahned tunnel problem.
7    * BOB now 0.0.5
8
92009-04-04 zzz
10    * NTCP: Don't bid on messages too big to handle
11
122009-04-03 zzz
13    * Console:
14      - Fix bug with IE buttons not working,
15        because it sends the label instead of the value
16      - Display version of downloaded update
17    * Update:
18      - Change default to "Download and verify"
19      - Change news fetch default to 24h (was 12h)
20
212009-04-03 sponge
22    * Fix broken dependencies for BOB.jar
23    * Router build version incremented to 5.
24
252009-04-02 zzz
26    * Profiles:
27      - Remove unused calculators and RateStats:
28        CapacityCalculator, StrictSpeedCalculator, IsFailingCalculator;
29        sendFailureSize, processSuccessRate, processfailureRate, commErrorRate,
30        tunnelTestResponseTimeSlow
31      - Reduced number of Rates in these RateStats:
32        sendSuccessSize, receiveSize, rejectRate, failRate
33      - ~5KB/profile savings total
34      - Deflate speed calculation once an hour instead of once a day,
35        to improve fast tier selection
36      - Remove dup comment in persisted files
37    * StatisticsManager - effective in 0.7.2:
38      - Spoof uptime to 90m for all
39      - Change tunnel stats from 10m to 60m
40    * Transport:
41      - Maintain a router hash -> IP map in transport,
42        to support additional IP checks (unused for now)
43      - Catch error on pre-2.6 kernels
44      - Some concurrent conversion
45      - Fix an HTML error on peers.jsp
46
472009-04-01 zzz
48    * I2PTunnel: Fix tunnel close
49      http://forum.i2p/viewtopic.php?t=3231
50
512009-03-30 zzz
52    * I2CP:
53      - Implement BandwidthLimitsMessage
54      - Have i2psnark use new message, remove
55        build dependency on router
56    * Peer Selection:
57      - Limit peers to a max % of all tunnels with
58        router.maxTunnelPercentage=nn, default 33
59      - Add chart to tunnels.jsp to see results
60
61* 2009-03-29  0.7.1 released
62
632009-03-29 Complication
64    * Update versions, package release
65
662009-03-27 zzz
67    * Add readme_fr.html
68    * License splash update
69    * Catch rare TunnelGatewayMessage AIOOB, root cause unknown
70
712009-03-24 zzz
72    * I2PTunnel:
73      - Add some warnings about new features
74      - Fix encrypted leasesets broken in about -4
75      - Suppress log error on manual stop
76      - Fix NPE on close of a tunnel not open yet
77    * Transport:
78      - Increase default bw to 64/32, burst 80/40
79    * Tunnels: Change some fragmentation errors to warns
80
812009-03-16 zzz
82    * help.jsp: Add some
83    * I2PTunnel: Cleanup
84    * I2PTunnelHTTPClient: Fix NPE on delayed open
85    * I2PTunnelHTTPServer: Maybe catch an NPE
86    * SOCKS: Allow .onion addresses for onioncat testing
87    * Tunnel: Catch a rare AIOOB
88
892009-03-09 zzz
90    * Client:
91      - Clean up retry code
92      - Bring I2CP listen error to the summary bar
93        http://forum.i2p/viewtopic.php?t=3133
94    * I2PSnark: Remove the http from the add torrent box
95    * I2PTunnel:
96      - Add persistent key option for standard and IRC clients
97      - Add delay-open option for clients
98      - Get regenerate-dest-on-reconnect working
99      - Add default key file name
100      - Add link to addressbook
101      - I2PSink: Send protocol byte
102    * OCMOSJ:
103      - Change from 5% reply requests to at least
104        once per minute, in hopes of reducing IRC drops
105      - More clean up of the cache cleaning
106    * Routerconsole: Don't OOM configpeer.jsp on huge blocklists
107
1082009-02-26 zzz
109    * I2CP Client: Add support for muxing
110    * I2PTunnel:
111      - Add new IRCServer tunnel type
112      - Add SOCKS 4/4a support
113      - Catch OOMs in HTTPServer
114      - Name the IRCClient filter threads
115      - Port Streamr to I2PTunnel
116      - The beginnings of SOCKS UDP support
117    * Naming: Add reverse lookup by hash
118    * OCMOSJ: Clean up the cache cleaning
119    * Router: Move addShutdownTask from Router to I2PAppContext
120      so that apps can register more easily
121    * Routerconsole:
122      - Thread hard shutdown and restart requests from the routerconsole,
123        and add a delay even if no tunnels, to allow time for a UI response
124      - Sort the summary bar destinations
125      - Move dest-to-hash converter to new helper class so we can
126        use it in i2ptunnel
127
1282009-02-22 sponge
129    * BOB: Orphan tunnel issue fix, bump BOB version
130    * bump to Build 6
131
1322009-02-16 zzz
133    * Streaming lib: Plug timer leak, don't send keepalives
134      after close, don't disconnect hard after close
135
1362009-02-15 zzz
137    * Add licenses to all packages
138    * I2PSession: Concurrent _messagesReceived
139    * i2psnark: tmp file removal try #3
140    * I2PTunnel:
141      - Don't buffer POST data in HTTPClient
142      - Display destination even when stopped
143      - Enable key generation, dest modification, and
144        hashcash estimation in the GUI
145      - Add new CONNECT client
146    * NetDb: Enforce 60s minimum leaseset publish interval
147    * Streaming lib:
148      - Plug connection leak
149      - Move ConEvent from SimpleTimer to SimpleScheduler
150      - Move RetransmissionTimer (ResendPacketEvent)
151        from SimpleTimer to new SimpleTimer2
152      - Move ActivityTimer and Flusher from SimpleTimer to RetransmissionTimer
153      - SimpleTimer2 allows specifying "fuzz" to reduce
154        timer queue churn further
155    * Susidns: Fix save of new dest broken in 0.7
156    * TunnelPool:
157      - Allow leasesets with reduced leases for robustness and startup speed
158      - Plug in-progress build leak
159
1602009-02-07 zzz
161    * ClientConnectionRunner, Shitlist, TunnelDispatcher:
162      Update using concurrent
163    * Streaming ConnectionHandler: Bound SYN queue and
164      use concurrent to prevent blowup
165    * HTTP Proxy: Fix error msg for b32 addresses
166    * I2CP: Implement optional reduce tunnels on idle - not hooked
167      in to i2ptunnel GUI yet - still needs tweaks
168    * I2CP MessageReader: Prevent rare NPE
169    * I2CP Writer: Rewrite using concurrent
170    * i2psnark: Add torrent and connection count
171    * I2PTunnel & I2CP:
172      - Fix tunnel reduction/restore, hook in the GUI
173      - Hook leaseset encryption into the GUI
174      - Implement saves for all the new stuff
175      - Add cancel button
176      - Add b32 display for non-http servers
177      - Prep for CONNECT
178      - Fix error msg when connection goes away
179    * NetDb: Remove all DataPublisher stuff
180    * Wrapper: Remove dup timeout
181
1822009-02-02 sponge
183    * Final? cleanups to Slackbuilds.
184    * ant target for Slackbuilds.
185
1862009-02-01 sponge
187    * Slackbuild files... if we can have them for Debian, why not :-)
188
1892009-02-01 zzz
190    * Convert some inner classes to static (findbugs)
191    * DataHelper.readLong(): Was returning -1 on EOF instead
192      of throwing exception
193    * i2psnark: Increase tunnels and pipeline to 3
194    * NTCP: Use a java.util.concurrent execution queue instead of
195      SimpleTimer for afterSend() to reduce lock contention
196    * Remove source from susimail.war, susidns.war, i2ptunnel.war (85KB)
197    * Routerconsole:
198      - Move common methods to new HelperBase class
199      - Make reseed link a button
200    * SimpleScheduler: New replacement for SimpleTimer when events
201      will not be rescheduled or cancelled, to reduce SimpleTimer
202      lock contention
203    * Tunnel Pool:
204      - Remove tunnel from participating if can't contact next hop
205      - Fail outbound build faster if can't contact first hop
206    * Wrapper: Remove dup timeout
207
2082009-01-31 dream
209    * Debian files
210
2112009-01-31 sponge
212    * One line BOB discarded interger fix
213      (not that it mattered at this point)
214
2152009-01-25 zzz
216    * Build files:
217      - Don't bundle unneeded XML parser xercesImpl.jar (1MB)
218      - Don't include unneeded stuff in Copy, Delete, Exec.jar (300KB)
219    * I2CP:
220      Implement new I2CP message ReconfigureSessionMessage.
221      Will be used for tunnel reduction.
222    * I2PTunnel Edit Pages:
223      - Change default length to 2+0
224      - Cleanup helper code
225      - Prevent null spoofhost
226      - Stub out the following new options (C=client, S=server):
227        + Access list (S)
228        + Certificate type (S)
229        + Encrypted LeaseSet (S)
230        + New dest on idle restart (C)
231        + Tunnel closure on idle (C)
232        + Tunnel reduction on idle (C,S)
233    * I2PTunnel Socks:
234      - Add support for SOCKS to GUI
235      - Don't NPE on SOCKS 4, just close
236      - Don't have SOCKS build a new dest for every request
237      - Beginnings of SOCKS configuration by port
238      - HTML error msg for attempted HTTP access
239    * LeaseSet: Add encrypt/decrypt methods
240    * netdb.jsp: Don't show stats by default
241    * OCMOSJ: Bundle a reply when we switch tunnel or lease,
242      to detect failure sooner
243    * PublishLocalRouterInfoJob:
244      - Delay for 5m at startup
245      - Run every 20m (was 7.5m)
246    * RebuildRouterInfoJob: Don't run it
247    * Router: Add a keyring for decrypting leases
248    * Routerconsole: Add configkeyring.jsp
249    * SummaryHelper.getTransferred() move to DataHelper,
250      rename to formatSize(), use on tunnels.jsp
251    * Streaming, I2CP, Client Message sending:
252      Pass message timeout through new I2CP message
253      SendMessageExpiresMessage, so that the router
254      uses the same expiration as the streaming lib.
255      Should help reliability.
256    * Streaming: TCB control block sharing
257
258* 2009-01-24  0.7 released
259
2602009-01-24 Complication
261    * Update versions, package release
262
2632009-01-17 zzz
264    * NTCP: Prevent two NTCP Pumpers
265
2662009-01-14 zzz
267    * config.jsp: Fix burst seconds display
268    * HTTPClient: Fix per-tunnel settings for i2cp.gzip and
269      i2ptunnel.httpclient.send* (thx tino)
270    * i2psnark:
271      - Fix double completion message
272      - Add crstrack
273    * initialNews.xml: Add .de (thx echelon)
274    * Message: Always distribute an inbound msg back out
275      a tunnel to foil a possible latency-measuring attack
276      (welterde)
277    * Naming:
278      - Change base32 names to *.b32.i2p
279      - Add i2p.naming.hostsTxt.useB32 config
280    * profiles.jsp: Remove 1m column
281    * SAM: Don't build tests by default
282    * Streaming:
283      - Prevent a rare NPE
284      - Reduce initial RTT to 8s (was 10s)
285    * tunnels.jsp: Add netdb links
286
2872009-01-08 zzz
288    * addressbook: Prevent Base32 hostnames
289    * build.xml: Remove readme_xx.html from updater
290    * configtunnels.jsp: Fix display of outbound backup count
291    * configupdate.jsp: Fix corruption of update URLs
292    * i2psnark: Recognize Robert 0.3 and 4
293    * ExploreJob/SearchJob - fix brokenness:
294      - Give each search a minimum of time even at the end
295      - Fix ExploreJob exclude peer list
296      - Always add floodfills to exclude peer list
297      - Don't queue keys for exploration or run ExploreJob
298        if floodfill
299      - Allow floodfills to return non-floodfills in
300        a DSRM msg so exploration works
301    * ExploreJob/SearchJob - more fixes:
302      - Disable ExploreKeySelectorJob completely, just have
303        StartExplorersJob select a random key if queue is empty
304      - Add netDb.alwaysQuery=[B64Hash] for debugging
305      - Queue results of exploration for more exploration
306      - Floodfills periodically shuffle their KBuckets, and
307        FloodfillPeerSelector sorts more keys, so that
308        exploration works well
309    * Shitlist: Reduce max time to 30m (was 60m)
310    * Streaming:
311      - Reduce default initial window size from 12 to 6,
312         to account for the MTU increase in the last release
313         and try to limit initial packet loss
314      - Reduce fast retransmit threshold from 3 to 2
315    * Transport: Don't shitlist a peer if we are at our
316      connection limit
317
3182009-01-03 zzz
319    * config.jsp: Move the buttons up
320    * configservice.jsp: Clean up and fix the broken (?)
321      browser launch configuration
322    * i2psnark:
323      - Try again to remove the i2psnarkurl files on shutdown
324      - Sort torrents with a locale-based sort
325    * NetDb:
326      - Expire routers with introducers after 90m.
327        This should improve reachability to firewalled routers
328        by keeping introducer info current.
329      - Expire routers with no addresses after 90m.
330      - Convert to java concurrent
331    * Stats: Add router.memoryUsed, graph by default
332    * Summary bar: Remove spurious UDP warning on startup
333    * UpdateHandler: Make extensible for upcoming
334      torrent updater
335
3362008-12-15 zzz
337    * Remove apps/ bogobot jdom pants q rome stasher syndie
338
3392008-12-14 zzz
340    * Contexts: Add int getProperty(String prop, int default)
341    * I2PAppThread: Constructor fix
342    * More split classes into their own files for mkvore
343    * Streaming: Don't build test cases by default
344    * Summary bar: Replace links with buttons
345    * Transport:
346      - Cleanup max connections code
347      - Add i2np.udp.maxConnections
348      - Set max connections based on share bandwidth
349      - Add haveCapacity() that can be used for connection
350        throttling in the router
351      - Reject IBGW/OBEP requests when near connection limit
352      - Reduce idle timeout when near connection limit
353    * Tunnel request handler:
354      - Require tunnel.dropLoad* stats
355      - Speed up request loop
356    * I2CP, HostsTxtNamingService, I2PTunnel:
357      Implement Base32 Hash hostnames, via the naming service.
358      Names are of the form [52-characters].i2p, where
359      the 52 characters are the Base32 representation of our
360      256-byte hash. The client requests a lookup of the hash
361      via a brief I2CP session using new I2CP request/reply
362      messages. The router looks up the leaseset for the hash
363      to convert the hash to a dest. Convert the I2PTunnel
364      'preview' links to use Base32 hostnames as a
365      demonstration.
366
3672008-12-08 zzz
368    * ATalk: Move from core to apps
369    * Blocklists: enable by default, include blocklist file
370      in new installs
371    * Build: Add findbugs target
372    * Cleanup of removed netdb stats
373    * Console:
374      - Don't display restart button if no wrapper
375      - Remove PRNG stats
376    * Eepsite: Disable jetty webapps by default for new installs
377    * i2psnark:
378      - Add default i2psnark.config for new installs
379      - Remove wishlist link
380      - Recognize robert and i2psnarkxl clients
381      - Increase max files to 256
382    * Increase standalone heap size to 128MB
383    * NetDb: Split classes into their own files for mkvore
384    * PeerManager: Fix NPE on early shutdown
385    * SusiDNS: Add textareas
386    * Transport:
387      - Fixes, avoid NPEs, and cleanups when NTCP and/or UDP transports disabled
388      - More TCP removal cleanup
389      - Clean up bandwidth limiting, centralize defaults
390      - Force burst to be >= limit
391      - Increase default bw to 48/24, burst 64/32
392    * Tunnels: Avoid two NPEs on corrupt fragments
393
3942008-12-01 zzz
395    * i2psnark:
396      - Refactor to allow running a single Snark without a SnarkManager again,
397        by moving some things from SnarkManager to I2PSnarkUtil,
398        having Snark call completeListener callbacks,
399        and having Storage call storageListener callbacks.
400        This is in preparation for using Snark for router updates.
401        Step 2 is to allow multiple I2PSnarkUtil instances.
402      - Big rewrite of Storage to open file descriptors on demand, and
403        close them when unused, so we can support large numbers of torrents.
404
405    * i2psnark:
406      - Remove static instances of I2PSnarkUtil, ConnectionAcceptor,
407        and PeerCoordinatorSet
408      - Convert static classes in Snark to listeners
409      - Fix Snark to work in single torrent mode again
410      - Should now work with multiple single Snarks
411
412    * i2psnark:
413      - Use new I2PAppThread that does not call global listeners on OOM,
414        so that OOMing apps will not shutdown the whole router.
415
416    * i2psnark:
417      - Don't create SnarkManager instance until first call,
418        so it doesn't create the i2psnark dir, read the config,
419        etc., for single Snark instances.
420      - Don't read i2psnark.config twice; fix setting
421        i2psnark.dir
422      - More Snark constructor changes for calling from router
423      - Make max connections per torrent configurable
424
425    * SAM:
426      - Use new I2PAppThread that does not call global listeners on OOM,
427        so that OOMing SAM will not shutdown the whole router.
428
429* 2008-12-01  0.6.5 released
430
4312008-12-01 Complication
432    * Update versions, package release, fix typo in comment
433
4342008-11-26 zzz
435    * Fix Windows UrlLauncher
436
4372008-11-21 zzz
438    * Cache DNS and negative DNS for 5m (was 1m and forever)
439    * Delay shitlist cleaner at startup
440    * Strip wrapper properties from client config
441    * Define multiple cert type
442    * Prohibit negative maxSends in streaming
443    * HTML fixup on configtunnels.jsp
444    * Increase wrapper exit timeout from default 15s to 30s
445
4462008-11-20 zzz
447    * I2PTunnel: Handle missing fields in edit pages better
448    * Move DummyNetworkDatabaseFacade to his own file
449      to help the build dependencies
450    * Drop old tcp transport and old tunnel build sources
451    * EepGet:
452      - Better handling of 504 gateway timeout
453        (keep going up to limit of retry count rather
454         than just one more partial fetch)
455      - Add -t cmd line option for timeout
456      - Better handling of 403, 409, 503 errors
457      - Don't keep going after unknown return code
458      - Don't delay before exiting after a failure
459
4602008-11-15 zzz
461    * Build files:
462      - Don't die if depend not available
463      - Only verify Jetty hash once
464      - Add streaming lib tests to depend task
465    * I2CP Compression:
466      - Add i2cp.gzip option (default true)
467      - Add compression stats
468      - Don't bother compressing if really small
469
4702008-11-13 zzz
471    * Streaming:
472      - Add more info to Connection.toString() for debugging
473      - Fix lifetimeMessages{Sent,Received} stats
474      - Reduce RTT damping to 0.875 (was 0.9)
475      - Add a stream.con.initialRTT.{in,out} stats
476    * Build files:
477      - Use the depend task with caching for more accurate dependencies
478      - Make sure the routerconsole gets the latest router version
479      - Fix addressbook repeated builds
480    * HTTPClient: Add config options to pass Via, Referer,
481      and User-Agent through
482    * Blocklists: Fix lists with hashes only
483
4842008-11-11 zzz
485    * Streaming - Fix several bugs and improve performance
486      when the initial data is larger than one MTU,
487      e.g. HTTP GETs with large URLs, CGI params or cookies,
488      or large HTTP POSTS:
489      - Don't reject additional packets received without a
490        send stream ID (i.e. sent before the SYN ACK was received)
491      - Put unknown non-SYN packets on the SYN queue also
492        so they won't be rejected
493      - Reduce flusher delay to 250ms (was 500)
494      - Flush unless window is full (was window is non-empty)
495    * Streaming: Enforce a minimum MTU of 512
496    * I2PTunnel: Change "interactive" max window size to 16 (was 1)
497    * NetDb: Fix a deadlock caused by last checkin
498
4992008-11-09 zzz
500    * build.xml: Build speedups:
501      - Don't distclean in the updaterRouter target
502      - Don't make prepUpdate and prepupdateSmall depend
503        on distclean
504      - Don't make susimail build always clean
505      - Make pkg depend on distclean to be sure
506      - Clean out more routerconsole and susidns files in 'ant clean'
507      - i2ptunnel, routerconsole, susidns:
508        Only build WEB-INF when necessary
509      - systray: Only build jar when necessary
510      - Don't build i2psnark standalone for the updater target
511    * configclients.jsp: Provide a link when starting a webapp
512    * configtunnels.jsp:
513      - Code cleanup
514      - Add 4-hop option
515      - Remove +/- 0-2 option
516    * javadoc: Add some more package.html files
517    * I2PTunnelHTTPServer: Put the requestor's dest hash
518      in the request headers
519    * Jetty: Add a I2PRequestLog class to log request dest hash
520    * NetDb: Don't drop routerInfos if we have connectivity
521      issues or other problems
522    * NTCP: Lower idle timeout to 10m (was 15m)
523    * Routerconsole: Replace wtf msg w/ something nicer
524    * Tunnel BuildHandler: add config router.participantOnly,
525      set to true to refuse OBEP and IBGW roles, should
526      reduce connections significantly if set.
527
5282008-11-02 zzz
529    * Certificates:
530      - Add a signed Certificate type
531      - Add a main() to PrivateKeyFile to generate
532        Destinations with various Certificate types
533      - Add a VerifiedDestination class to check Certificates
534        of various types
535      - Add a HashCash library from http://www.nettgryppa.com/code/
536        (no distribution restrictions)
537      - Allow non-null Certificates in addressbook
538    * I2PTunnel: Move some wayward stats to the I2PTunnel group
539    * NamingServices: Implement caching in the abstract class
540    * NewsFetcher: Fix last updated time
541    * Streaming: Increase MTU to 1730 (was 960);
542      see ConnectionOptions.java for analysis
543    * Throttle: Reduce default max tunnels to 2000 (was 2500)
544    * clients.config: Disable SAM and BOB by default for new installs
545
5462008-10-26 zzz
547    * config.jsp: Add more help
548    * peers.jsp: Clean up 'Listening on' formatting
549    * profiles.jsp: Don't override locale number format
550    * netdb.jsp: Indicate if hidden
551    * summary.jsp: Indicate if hidden
552    * i2ptunnel/edit.jsp: Disable word wrap in textarea
553    * Blocklist: Change logging from ERROR to WARN
554    * FloodfillMonitor:
555       - Fix ff count (we forgot ourselves)
556       - Don't become ff if hidden
557    * HandleFloodfillDatabaseLookupMessageJob:
558      Send back your routerinfo with the DSRM if not ff to
559      spread the word that you aren't ff anymore
560    * I2Ping:
561       - Add -n count option
562       - Add rtt output
563       - Enhance help
564       - Fix option handling
565    * More findbugs cleanups
566    * NetDb:
567       - Fix behavior when router.isHidden=true
568       - Delay StartExplorersJob for 10m at startup
569       - Update dbLookup profile stats in FloodOnlySearchJob
570         and FloodfillVerifyStoreJob
571       - Fix response time store in profile in SearchJob
572    * Stats:
573       - Remove unused tunnel.buildSuccess and tunnel.buildFailure
574       - Remove tunnel.buildRequestTime and 5m rate stats from
575         netDb, effective in next release
576    * UDP:
577       - Don't do peer tests when hidden
578       - Don't offer to introduce when hidden
579       - Don't continually rebuild routerInfo when hidden
580       - Don't continually rebuild routerInfo when
581         i2np.udp.internalPort is set but i2np.udp.port is not
582       - Remove some unused functions
583
5842008-10-20 zzz
585    * configclients.jsp: Handle clients with no args
586    * index.jsp: Add readme_nl.html (thanks mathiasdm!),
587      readme_sv.html (thanks hottuna!)
588    * Big findbugs cleanup
589    * Client: Prevent a race causing session reconnect
590    * FloodfillMonitor:
591       - Don't become ff if clock skew is high
592       - Rebuild routerinfo immediately when ff status changes
593    * FloodOnlySearchJob: Recover better if the floodfills
594      you know are no longer floodfill or are gone
595    * Installer: Bump min JRE to 1.5
596    * ShellCommand: Fix main()
597
5982008-10-14 zzz
599    * index.jsp: Add multilanguage support for readme.html;
600      add readme_de.html (thanks devzero!)
601    * configupdate.jsp, configadvanced.jsp:
602      Disable word wrap in textareas
603    * install*.txt: Update for 1.5
604    * summary.jsp: Remove failing peer count
605
6062008-10-10 zzz
607    * Profiles: Reduce reject penalty in
608      capacity calculation to avoid a congestion collapse
609    * Throttle: Change reject to BANDWIDTH from CRIT on shutdown
610      for improved anonymity
611    * Tunnels: Implement random discard to enforce share limit
612    * Tunnel Tests: Add time for outbound delay, to avoid
613      congestion collapse
614    * UDPPacketReader: Adjust logging
615    * build files: Change to source=1.5, target=1.5
616    * configpeer.jsp: Table cleanup
617    * i2psnark: Change default tunnel length from 1+1 to 2+0
618    * peers.jsp: Change <,> to in,out for UDP
619
6202008-10-09 sponge
621    * Update version to -3
622    * BOB database threadlocking fixes
623
6242008-10-08 sponge
625    * Update version to -2
626    * Bugfixes and additions to BOB
627
6282008-10-07 sponge
629    * Bugfixes and additions to streaming.
630    * Added SimpleStore class in utils.
631    * Fixed SimpleTimer class to allow exit.
632    * BOB (Basic Open Bridge) added.
633
634* 2008-10-05  0.6.4 released
635
6362008-10-05 Complication
637    * Update versions, package release
638
6392008-09-29 zzz
640    * i2psnark: Add codevoid link, remove mastertracker
641
6422008-09-23 zzz
643    * config.jsp: Add some reachability help
644    * configpeer.jsp: Add blocklist info
645    * help.jsp: Add link to German FAQ
646    * tunnels.jsp: Fix inactive participating count
647    * SearchReplyJob: Don't look up references to shitlisted peers
648    * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
649
6502008-09-20 zzz
651    * NetDb: Fix the totally broken "check new routers against blocklist"
652      code from 3 checkins ago
653    * tunnels.jsp: Sort participating tunnels by usage, display rate
654
6552008-09-19 zzz
656    * Tunnels:
657      - Add missing message accounting for inbound gateways,
658        we were underestimating participating traffic because of it,
659        and the tunnels were classified "inactive"
660      - Add participating tunnel role on tunnels.jsp
661
6622008-09-18 zzz
663    * Throttle:
664      - Correctly check inbound and outbound total bw limits separately
665      - Fix up and actually use the tunnel.participatingMessageCount stat,
666        favor it if lower than the total bw stat, so that
667        client traffic isn't included for throttle decisions
668      - Reduce min message count from 60 to 40
669    * Tunnel Dispatcher:
670      - Add tunnel.participatingBandwidth stat
671      - Remove all 3h and 24h stats
672
6732008-09-15 zzz
674    * FloodOnlySearchJob:
675      - Ask non-floodfill peers if we don't know any floodfills
676      - Lookup hashes in the DatabaseSearchReplyMessage if we
677        don't know enough floodfills
678    * NetDb: Check new routers against blocklist
679    * Router: Shutdown clients first
680    * Throttle:
681      - Use 60s rather than 10m tunnel.participatingMessageCount stat
682      - Fix a summary bar message
683    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
684      every 20s, rather than at tunnel expiration, to maintain
685      a more current stat
686    * Tunnel Pool:
687      - Prevent excess zero-hop tunnels
688      - Always wait before looping in BuildExecutor
689    * configlogging.jsp: Increase box width
690    * logs.jsp: Remove unused connection log, cut wrapper log output in half
691
6922008-09-12 zzz
693    * Blocklist: Fix a log message format
694    * HarvesterJob: Don't instantiate if disabled
695    * i2psnark:
696      - Add config i2psnark.linkPrefix to enable access to completed
697        torrents from a different machine - examples:
698           i2psnark.linkPrefix=file://///localserver/path/to/files/
699           i2psnark.linkPrefix=http://localwebserver/path/
700        (Stop i2psnark, add to i2psnark.config, restart)
701      - Remove Galen and NickyB trackers
702    * NetDb: Add netDb.exploreKeySet stat
703    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
704      and ?r=. to view our own; change links on other pages too
705    * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
706
7072008-09-06 zzz
708    * EepGet command line: Fix byte counts after a failed resume
709    * NTCP: Mark unreachable on outbound connection timeout
710    * Shitlist: Fix partial shitlisting (still unused though)
711    * Summary Bar: Warn if firewalled and floodfill
712    * Throttle: Combine current and last bw measurement,
713      reduce default max tunnels to 2500 (was 3000)
714    * Tunnel BuildHandler: Logging cleanup
715    * UpdateHandler: Cleanup, clarify failure message
716    * DataHelper: Prepare for 999 day uptime :)
717
7182008-08-29 zzz
719    * Tunnel BuildExecutor: Debug cleanup
720    * Profiles: Penalize capacity when tunnel build request times out
721    * Shutdown: Call the shutdown hooks before the router shutdown
722      rather than after
723    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
724
7252008-08-27 zzz
726    * Floodfill Peer Selector: Prefer already-connected floodfill
727      peer for direct RouterInfo stores, to mimimize floodfill
728      connections
729    * Peer Profiles: Classify connected peers as "active",
730      which will help improve the fast pool
731    * Transport Manager: Add isEstablished(Hash)
732    * NTCP: Reduce max idle time from 20m to 15m
733    * NetDb stats: Post-0.6.3 clean up
734
735* 2008-08-24  0.6.3 released
736
7372008-08-24 Complication
738    * Update versions, package release
739
7402008-08-20 zzz
741    * Blocklists: Handle blank lines and \r\n in blocklist.txt
742    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
743      default is 500 (very high for now)
744    * Persistent data store: Increase write limit from 300 to 600
745      so floodfill routers don't get backed up
746
7472008-08-13 zzz
748    * i2psnark: Fix OOM vulnerability by checking incoming message length
749      (thanks devzero!)
750
7512008-08-04 zzz
752    * Floodfill Peer Selector:
753      - Avoid peers whose netdb is old, or have a recent failed store,
754        or are forever-shitlisted
755
7562008-07-30 zzz
757    * Blocklists:
758      - New, disabled by default, except for blocking of
759        forever-shitlisted peers. See source for instructions
760        and file format.
761    * Transport - Reject peers from inbound connections:
762      - Check IP against blocklist
763      - Check router hash against forever-shitlist, then block IP
764
7652008-07-16 zzz
766    * configpeer.jsp: New
767    * i2psnark: Open completed files read-only the first time
768    * profiles.jsp: Show bonuses, link to configpeer.jsp
769    * PRNG: Move logging from wrapper to router log
770    * SSU:
771        Don't proactively reconnect until 30m idle, so
772        we don't lose introducer tags prematurely
773
7742008-07-16 Oldaris
775    * Imports cleanup
776
7772008-07-07 zzz
778    * i2psnark:
779      - Repair corrupted files with wrong length rather than die
780      - Register shutdown hook to properly shutdown torrents when
781        the router shuts down, hopefully will reduce corruption
782      - Add Galen tracker
783      - Add a note about how to change directory
784    * HTTP Proxy: Don't show jump links for unknown jump hosts
785    * KeyManager:
786      - Don't write router key backup when leaseSet keys are updated
787      - Synchronize to prevent concurrent writes (thanks Galen!)
788      - Backup keys every 7 days instead of every 5 minutes
789    * LoadTestManager: Don't instantiate, it's disabled
790    * Router console: Flag placeholder pages as noncacheable
791    * Streaming lib:
792      - Change some logging from WARN to INFO
793      - Clean up toString()
794    * SSU:
795      - Try to pick better introducers by checking shitlist,
796        wasUnreachable list, failing list, and idle times
797      - To keep introducer connections up and valid,
798        periodically send a "ping" (a data packet with no data and no acks)
799        to everybody that has been an introducer in the last two hours
800      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
801      - Remove some 60s and 5m stats, leave only the 10m ones
802      - Narrow the range for the retransmit time after an allocation fail
803      - Adjust some logging
804
8052008-06-30 zzz
806    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
807    * i2psnark:
808      - Fix NPE caused by race (thanks echelon!)
809      - Add mastertracker, remove de-ebook
810    * NTCP:
811      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
812      - Fix failsafe stats
813    * PersistentDataStore: More leaseSet code cleanup
814    * SimpleTimer: Change congestion message from error to warn
815
8162008-06-24 zzz
817    * FloodfillMonitorJob: Change range from 5-7 to 4-6
818    * NTCP: Remove getIsInbound(), duplicate of isInbound()
819    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
820    * Router console: add placeholder pages for i2psnark, i2ptunnel,
821      susidns, and susimail for use when the .wars are not running
822    * Streaming lib: Increase max window size to 128
823
8242008-06-22 welterde
825    * Optimize I2PDatagramDissector
826
8272008-06-20 zzz
828    * configclients.jsp: Add start button for clients and webapps.
829    * PRNG: Add two stats
830    * Summary bar:
831      - Display Warning for TCP private IP address
832      - Display PRNG stats
833    * OutNetMessage: Change cache logging from WARN to INFO
834
8352008-06-17 zzz
836    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
837    * Summary bar: Display helpful errror message when UDP bind fails
838    * UDP: Don't bid when UDP bind fails
839    * configclients.jsp: Implement saves for clients and webapps.
840
8412008-06-16 zzz
842    * UDP: Prevent 100% CPU when UDP bind fails;
843      change bind fail message from ERROR to CRIT
844    * Refactor LoadClientAppsJob.java, move some functions to new
845      ClientAppConfig.java, to make them easily available to
846      new configclients.jsp
847    * RouterConsoleRunner: Use a new config file, webapps.config,
848      to control which .wars in webapps/ get run. Apps are enabled
849      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
850      Config file is written if it does not exist.
851      Implement methods for use by new configclients.jsp.
852    * configclients.jsp: New. For both clients and webapps.
853      Saves are not yet implemented.
854
8552008-06-10 zzz
856    * Floodfill: Add new FloodfillMonitorJob, which tracks active
857      floodfills, and automatically enables/disables floodfill on
858      Class O routers to maintain 5-7 total active floodfills
859    * NetDb Stats:
860      - Remove several more stats
861      - Don't publish bw stats in first hour of uptime
862      - Publish floodfill stats even if other stats are disabled
863      - Changes not effective until 0.6.2.1 to provide cover.
864    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
865      startup, so peers don't list us as failing.
866    * graphs.jsp: Fix a bug where it tries to display the combined
867      bandwidth graph when it isn't available
868
8692008-06-09 zzz
870    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
871
8722008-06-09 zzz
873    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
874    * News:
875      - Add display of last updated and last checked time
876        on index.jsp and configupdate.jsp
877      - Add a function to get update version (unused for now)
878    * config.jsp: Add another warning
879
8802008-06-07 zzz
881    * NetDb: Tweak some logging on lease problems
882    * Shitlist:
883      - Add shitlistForever() and isShitlistedForever(), unused for now
884      - Sort the HTML output by router hash
885    * netdb.jsp:
886      - Sort the lease HTML output by dest hash, local first
887      - Sort the router HTML output by router hash
888
8892008-06-06 zzz
890    * LeaseSet:
891      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
892        to make later LeaseSet comparisons reliable. This cleans up the code too.
893      - Fix broken old vs. new LeaseSet comparison
894        in ClientConnectionRunner.requestLeaseSet(),
895        so that we only sign and publish a new LeaseSet when it's really new.
896        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
897        and floodfill router load, since locked_buildNewLeaseSet() generates
898        the same LeaseSet as before quite frequently, often just seconds apart.
899
9002008-06-05 zzz
901    * LeaseSet - code cleanup:
902      - Add exception to enforce max # of leases = 6, should be plenty
903      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
904        leases and then immediately remove them again, triggering
905        the new leaseSet size exception
906      - Remove the now unused LeaseSet.removeLease(lease) and
907        LeaseSet.removeLease(index)
908      - Store first and last expiration for efficiency
909    * Peer Profiles - Preparation for using bonuses:
910      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
911      - Persist CapacityBonus rather than ReachabilityBonus
912      - Include SpeedBonus in the Speed calculation
913      - Prevent negative values in Speed and Capacity when using bonuses
914      - Clean up SpeedCalculator.java
915    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
916    * Add some config files for a future small distribution
917    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
918
9192008-06-01 zzz
920    * Client Apps: Add new parameter for clients.config,
921        clientApp.x.startOnLoad=false, to disable loading
922        (for SAM for example). Defaults to true of course.
923    * Logging: Move common WARN output to DEBUG so we can ask users to
924        set the default log level to WARN without massive spewage
925    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
926      not just the Fast tier, since we don't use them for tunnels anyway
927    * SAM: Add some compiler flexibility to two obscure makefiles
928    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
929      (sponge's suggestion)
930    * summary bar:
931      - Hide ident, provide a tooltip and a link
932      - Add a warning if you are firewalled and class O
933
9342008-06-07 Complication
935    * Fix version in news.xml so it could be published
936
937* 2008-06-07  0.6.2 released
938
9392008-06-07 Complication
940    * Write announcement and prepare for release
941
9422008-05-29 zzz
943    * Fix up initialNews.xml
944
9452008-05-27 zzz
946    * Transport:
947      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
948      - UDP: Don't bid when IP address missing, mark unreachable
949
9502008-05-26 zzz
951    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
952    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
953    * build.xml:
954      - Add an updaterSmall target which includes only the essentials
955      - Add an updaterRouter target which includes only i2p.jar and router.jar
956      - Clean up the build file some
957      - Remove empty eepsite/ and subdirs from i2pupdate.zip
958    * configtunnels.jsp: Add warning
959    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
960    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
961
9622008-05-22 welterde
963    * Change jetty download location in build script
964
9652008-05-20 zzz
966    * Reachability:
967      - Call the previously unused profile.tunnelTestFailed()
968        (redefined to include a probability argument)
969        and severely downgrade a peer's capacity upon failures,
970        depending on tunnel length and direction.
971        This will help push unreachable and malicious peers
972        out of the High Capacity tier.
973      - Put recent fail rate on profiles.jsp
974    * ProfileOrganizer: Logging cleanup
975    * eepsite_index.html: Update add-host and jump links
976    * HTTP Proxy: Remove trevorreznik jump server from list
977
9782008-05-20 welterde
979    * implemented PrivateKeyFile
980
9812008-05-18 zzz
982    * Throttle: Reject tunnels for first 20m uptime (was 10m)
983    * TunnelPeerSelectors:
984       - Re-enable strict ordering of peers,
985         based on XOR distance from a random hash
986       - Restrict peers with uptime < 90m from tunnels (was 2h),
987         which is really 60m due to rounding in netDb publishing.
988    * i2psnark:
989       - Limit max pipelined requests from a single peer to 128KB
990         (was unlimited; i2p-bt default is 5 * 64KB)
991       - Increase max uploaders per torrent to 6 (was 4)
992       - Reduce max connections per torrent to 16 (was 24) to increase
993         unchoke time and reduce memory consumption
994       - Strictly enforce max connections per torrent
995       - Choke more gradually when over BW limit
996    * help.jsp: Add a link to the FAQ
997    * peers.jsp: Fix UDP direction indicators
998    * hosts.txt: Add update.postman.i2p
999
10002008-05-12 zzz
1001    * Outbound message:
1002      - Tweak the cache key for efficiency
1003    * Stats:
1004      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
1005    * Summary bar:
1006      - Add messages when dropping tunnel requests due to load
1007    * Update Handler:
1008      - Add postman to the list
1009    * i2psnark:
1010      - Randomize the PeerCheckerTask start times to make global limiting
1011        work better
1012      - Calculate bw limits using 40s rather than 4m averages to make
1013        bw limiting work better
1014      - Change default bw limit from uplimit/3 to uplimit/2 due to
1015        overhead reduction from the leaseset bundling change
1016    * libjbigi:
1017      - Add documentation on dynamic build option
1018      - Add two speed tests to the build script
1019      - Clean up the build script, make it easier to build dynamic
1020
10212008-05-10 zzz
1022    * NetDb: Don't write the my.info file to disk, it isn't used for anything
1023    * Stats:
1024      - Simplify oldstats.jsp if no events in a stat
1025      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
1026        (caused by an SSU hack)
1027    * Update Handler:
1028      - Add option to download and verify only
1029      - Add distinct error message if version check fails
1030
10312008-05-09 welterde
1032    * Add an update URL to the list
1033
10342008-05-07 zzz
1035    * Reachability:
1036      - Restrict peers requiring introducers from inbound tunnels,
1037        since it's slow and unreliable... and many of them advertise
1038        NTCP, which seems unlikely to work
1039      - Provide warning on summary bar if firewalled with inbound NTCP enabled
1040    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
1041      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
1042      at startup (you didn't get any data unless you set the log level anyway)
1043    * oldstats.jsp: Don't put 2 decimal places on integer event counts
1044    * Remove the Internals link from the menu bar
1045    * i2psnark: Extend startup delay from 1 to 3 minutes
1046
10472008-05-06 welterde
1048    * HTTP Proxy: Add i2jump.i2p jump service
1049
10502008-05-05 zzz
1051    * NetDb Stats: Cleanup of commented out stats
1052    * Outbound message:
1053      - Fix a couple of tunnel cache cleaning bugs
1054      - Cache based on source+dest pairs rather than just dest
1055      - Send the reply leaseSet only when necessary,
1056        rather than all the time (big savings in overhead)
1057      - Enable persistent lease selection again
1058      - Logging tweaks
1059    * Reachability:
1060      - Restrict <= .32 SSU-only peers from inbound tunnels,
1061        since they don't know if they are unreachable
1062      - Have SSU bid aggressively when it has less than 3 peers, so
1063        we can determine our IP address and do peer testing.
1064        Otherwise a router may never determine its IP address or reachability status.
1065    * Summary bar:
1066      - Add reachability status
1067      - Add participating tunnel acceptance status
1068    * Throttle: Reject tunnels for first 10m uptime
1069    * I2PTunnel: Change default outproxy to false.i2p
1070    * profiles.jsp: Add router version
1071
1072* 2008-04-26  0.6.1.33 released
1073
10742008-04-20 zzz
1075    * Outbound message/Reachability:
1076      - Fix a bug from -19 causing the persistent lease selection
1077        removed in -17 to be back again
1078      - Use netDb-listed-unreachable instead of detected-unreachable
1079        for exclusion of unreachable peers from selected leases,
1080        as there are potential anonymity problems with using
1081        detected-unreachable
1082      - Tweak logging some more
1083    * NetDb stats: Remove a couple more including the inefficient stat_identities
1084
10852008-04-17 zzz
1086    * Reachability:
1087      - Track unreachable peers persistently
1088        (i.e. separately from shitlist, and not cleared when they contact us)
1089      - Exclude detected unreachable peers from inbound tunnels
1090      - Exclude detected unreachable peers from selected leases
1091      - Exclude detected unreachable floodfill peers from lookups
1092      - Show unreachable status on profiles.jsp
1093
10942008-04-16 zzz
1095    * SSU/Reachability:
1096      - Extend shitlist time from 4-8m to 40-60m
1097      - Add some shitlist logging
1098      - Don't shitlist twice when unreachable on all transports
1099      - Exclude netDb-listed unreachable peers from inbound tunnels;
1100        this won't help much since there are very few of these now
1101      - Remove 10s delay on inbound UDP connections used for the
1102        0.6.1.10 transition
1103      - Track and display UDP connection direction on peers.jsp
1104      - Show shitlist status in-line on profiles.jsp
1105
11062008-04-15 zzz
1107    * SSU Reachability/PeerTestManager:
1108      - Back out strict peer ordering until we fix SSU
1109      - Back out persistent lease selection until we fix SSU
1110      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
1111      - Increase known Charlie time to 10m; 3m wasn't enough
1112      - Don't continue retransmitting peer test if we know Charlie
1113      - Don't run multiple peer tests at once
1114      - Tighten test frequency range to 6.5-19.5m, was 0-26m
1115
11162008-04-12 zzz
1117    * Addressbook: Disallow '.-' and '-.' in host names
1118    * NTCP: Don't drop a connection unless both directions are idle;
1119            Fix idle time for outbound connections
1120    * Outbound message: Make sure cached lease is in current leaseSet
1121    * Stats: Put all NetworkDatabase stats in same group
1122    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
1123    * i2psnark: Add locking to prevent two I2CP connections
1124
11252008-04-07 zzz
1126    * i2psnark:
1127      - Implement upstream bandwidth limiting
1128      - Fix a rare NPE at startup/shutdown
1129      - Really increase retries for .torrent fetch
1130    * profiles.jsp: Minor cleanup
1131    * DataHelper: Only format < 5s as ms
1132    * Eepget: Fix percentage output on command line eepget retries
1133    * Lower partipating message priority from 400 to 200
1134    * NTCP: Add a debug message
1135    * Outbound message: Minor cleanup
1136
11372008-03-30 zzz
1138    * ExploratoryPeerSelector: Try NonFailing even more
1139    * HostsTxtNamingService: Add reverse lookup support
1140    * Outbound message: Minor cleanup
1141    * i2psnark TrackerClient: Minor cleanup
1142    * checklist.txt: Minor edit
1143    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
1144    * i2ptunnel.config: Change CVS client to mtn
1145    * netdb.jsp: Show leaseSet destinations using reverse lookup
1146    * profiles.jsp: First cut at showing floodfill data
1147
11482008-03-27 zzz
1149    * Send messages for the same destination to the same inbound
1150      lease to reduce out-of-order delivery.
1151    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
1152      for now, as it prevents speed rating of those peers
1153
11542008-03-26 zzz
1155    * ReseedHandler: Support multiple urls,
1156      add netdb.i2p2.de as a 2nd default
1157
11582008-03-25 zzz
1159    * i2psnark:
1160      - Add support for secondary open trackers
1161      - Refactor and simplify the TrackerClient code
1162      - Add welterde's tracker to the default list
1163      - Don't have eepget retry announces
1164      - Slow down tracker contacts if they've failed for a while
1165      - Add some debug support showing connections (?p=2)
1166    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
1167
11682008-03-22 zzz
1169    * NewsFetcher: Fix bug causing fetch every 10m
1170
11712008-03-22 zzz
1172    * Tunnel Testing:
1173      - Fix counting so it really takes 4 consecutive failures
1174        rather than 4 total to remove a tunnel
1175      - Credit or blame goes to the exploratory tunnel as well
1176        as the tunnel being tested
1177      - Adjust tunnel test timeout based on tunnel length
1178    * ExploratoryPeerSelector: Tweak logging
1179    * ProfileOrganizer: Adjust integration calculation again
1180    * build.xml: Add to help
1181    * checklist.txt: Tweak
1182    * readme.html: Fix forum links
1183    * netDb: Remove tunnel.testFailedTime
1184
11852008-03-19 zzz
1186    * ExploratoryPeerSelector:
1187      - Exclude floodfill peers
1188      - Tweak the HighCap vs. NonFailing decision; try NonFailing
1189        at least a minimum % of the time
1190    * i2psnark: Increase retries for .torrent fetch
1191    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
1192      containing an IP
1193    * readme.html: Reorder some items
1194    * Stats: Add some more required stats
1195    * Streaming lib: Fix slow start to be exponential growth,
1196      fix congestion avoidance to be linear growth.
1197      Should speed up local connections a lot, and remote
1198      connections a little.
1199
12002008-03-14 zzz
1201    * Floodfill Search:
1202       - Prefer heard-from, unfailing, unshitlisted floodfill peers
1203
12042008-03-14 zzz
1205    * ProfileOrganizer:
1206       - Use more recent stats to calculate integration
1207       - Show that fast peers are also high-capacity on profiles.jsp
1208    * readme.html: Update Syndie link
1209    * TunnelPool: Update comments
1210    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
1211      get rid of the 60s tunnel stats
1212      (effective as of .33 to provide cover)
1213
12142008-03-13 zzz
1215    * Floodfill Search:
1216       - Fix a bug that caused a single FloodfillOnlySearchJob
1217         instance to be run multiple times, with unpredictable
1218         results
1219       - Select ff peers randomly to improve reliability
1220       - Add some bulletproofing
1221
12222008-03-11 zzz
1223    * ProfileOrganizer:
1224       - Don't require a peer to be high-capacity to be
1225         well-integrated (not used for anything right now,
1226         but want to get it right for possible floodfill verification)
1227       - Don't fall back to median for high-capacity threshold
1228         if the mean is higher than the median, this prevents
1229         frequent large high-capacity counts
1230       - Fix high-capacity selector that picked one too many
1231    * Console: put well-integrated count back in the summary
1232
12332008-03-10 zzz
1234    * EepGet: Fix byte count for bytesTransferred status listeners
1235      (fixes command line status)
1236    * UpdateHandler:
1237       - Fix byte count display
1238       - Display final status on router console
1239       - Don't allow multiple update jobs to queue up
1240       - Increase max retries
1241       - Code cleanup
1242       - Don't show 'check for update' button when update in progress
1243       - Enhance error messages
1244    * NetDb: Comment out published netDb stats disabled for .32
1245
12462008-03-08 zzz
1247    * TunnelPeerSelectors: Implement strict ordering of peers,
1248      based on XOR distance from a random hash
1249      separately generated for each tunnel pool
1250
12512008-03-07 zzz
1252    * Naming: Optimize lookups for a destkey
1253    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
1254      - Prevent peers with matching IPs from joining same tunnel.
1255        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
1256        Default is 2 (disallow routers in same /16).
1257        Set with router.defaultPool.IPRestriction=x
1258      - Comment out unused RebuildPeriod pool setting
1259      - Add random key to pool in preparation for XOR peer ordering
1260    * SusiMail: Add 'Create Account' link
1261    * TunnelDispatcher: Change a common wtf error to a warn
1262
12632008-03-05 zzz
1264    * Naming: Make HostsTxt the sole default NamingService
1265      (was Meta = PetName + HostsTxt)
1266    * Naming: Add two new experimental NamingServices, EepGet and Exec,
1267      not enabled by default -
1268      see source comments in core/java/src/net/i2p/client/naming
1269      for configuration instructions
1270    * i2psnark: Don't do a naming lookup for Base64 destkeys
1271    * i2psnark: Add a StartAll button
1272    * Stats: Add code to disable most stats to save memory.
1273      Set on configstats.jsp or set stat.full=false to disable the stats.
1274      (true by default for now)
1275
12762008-03-09 Complication
1277    * Give the Jetty build file ability to ask permission
1278      before downloading the Jetty archive from the web,
1279      and to verify its SHA1 + MD5 hashes. Adjust the main build file
1280      in accordance with this change.
1281    * Improve the release checklist.
1282
1283* 2008-03-09  0.6.1.32 released
1284
12852008-03-07 zzz
1286    * Update news and version numbers
1287
12882008-03-01 zzz
1289    * Fix netdb.knownLeaseSets count reported by floodfill routers
1290      (was broken by -3)
1291
12922008-02-27 zzz
1293    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
1294    * i2psnark: Remove orion and gaytorrents from default tracker list
1295    * Remove orion from jump list and from eepsite_index.html
1296    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
1297    * Capitalize OutboundMessageDistributor job name
1298    * TunnelPool: Add a warning if all tunnels are backlogged
1299
13002008-02-26 zzz
1301    * Reintroduce NTCP backlog pushback, with switch back to
1302      previous tunnel when no longer backlogged
1303    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
1304    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
1305
13062008-02-21 zzz
1307    * Raise inbound default bandwidth to 32KBps
1308    * Fix config.jsp that showed 0KBps share bandwidth by default
1309
13102008-02-19 zzz
1311    * Addressbook: Disallow '--' in host names except in IDN,
1312      add some reserved host names
1313    * I2PTunnel: Clarify edit form
1314    * NetDb: Remove many stats from netDb, effective as of .32
1315    * profiles.jsp: Display capabilities
1316    * Tunnels: Enforce max tunnel length of 8, catch an index error
1317      http://forum.i2p/viewtopic.php?t=2561
1318
13192008-02-16 zzz
1320    * Fix race in TunnelDispatcher which caused
1321      participating tunnel count to seesaw -
1322      should increase network capacity
1323    * Leave participating tunnels in 10s batches for efficiency
1324    * Update participating tunnel ratestat when leaving a tunnel too,
1325      to generate a smoother graph
1326    * Fix tunnel.participatingMessageCount stat to include all
1327      participating tunnels, not just outbound endpoints
1328    * Simplify Expire Tunnel job name
1329
13302008-02-13 zzz
1331    * PersistentDataStore: Write out 300 records every 10 min
1332      rather than 1 every 10 sec;
1333      Don't store leasesets to disk or read them in
1334    * Combine rates for pools with the same length setting
1335      in the new tunnel build algorithm
1336    * Clarify a log message in the UpdateHandler
1337
13382008-02-13 zzz
1339    * Make graphs clickable to get larger graphs
1340    * Change SimpleTimer CRIT to a WARN, increase threshold
1341    * Checklist update
1342
13432008-02-11 welterde
1344    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
1345
13462008-02-10 zzz
1347    * Add new tunnel build algorithm (preliminary)
1348    * Change NTCP backlogged message from error to warning
1349    * Checklist updates
1350
1351* 2008-02-10  0.6.1.31 released
1352
13532008-02-10 Complication
1354    * Update news and version numbers
1355
13562008-02-06 zzz
1357    * build.xml: Add some apps to javadoc
1358    * checklist.txt: Add some things
1359    * news.xml: make links relative
1360    * runplain.sh: Add some comments
1361    * wrapper.config: Add some comments
1362
13632008-02-05 Complication
1364    * Change the dates too (sorry for such forgetfulness!)
1365
13662008-02-04 Complication
1367    * Also use the new key for checking, and add it into news.xml
1368
13692008-02-04 Complication
1370    * Added my release signing key into TrustedUpdate.java
1371
13722008-01-31 zzz
1373    * NewsFetcher: Change fetch failed from error to warning
1374    * installer: Fix URL and "email"
1375    * checklist.txt: New release checklist
1376
13772008-01-29 zzz
1378    * Addressbook: Change default subscription
1379    * ConfigUpdateHandler: Change default news URL
1380    * initialNews.xml: Update version to .31
1381    * news.xml: More updates
1382    * hosts.txt: Add i2p-projekt.i2p
1383    * readme.html: More URL updates
1384    * SusiDNS: Change references to default subscription
1385
13862008-01-28 zzz
1387    * news.xml: Updates, still preliminary
1388    * ReseedHandler: Change default URL
1389    * i2ptunnel.config: Change default outproxies
1390    * readme.html: Change *.i2p.net URLs
1391    * help.jsp: Change *.i2p.net URLs
1392    * eepsite_index.html: Change stats.i2p addressbook subscription URL
1393    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
1394
1395* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
1396
13972008-01-08 zzz
1398    * addressbook: Limit size of subscribed hosts.txt,
1399        don't save old etag or last-modified data
1400    * EepGet: Add some logging,
1401        enforce size limits even when size not in returned header,
1402        don't return old etag or last-modified data,
1403        don't call transferFailed listener more than once
1404    * Sign my update signing key
1405    * NewsFetcher: add last-modified support, reduce number of retries
1406    * Error pages: add icon and logo,
1407        clarify 'destination not found' and 'proxy not found' pages
1408
14092008-01-07 zzz
1410    * profiles.jsp formatting cleanup
1411    * NTCP: Reduce max idle time from 60m to 20m
1412    * NTCP: Fix idle time on connections with zero messages,
1413      correctly drop these connections
1414
14152008-01-03 zzz
1416    * addressbook: Do basic validation of hostnames and destkeys
1417    * susidns: Add support for the private addressbook,
1418      update the text and links somewhat
1419
14202008-01-02 zzz
1421    * Add stats.i2p to the jump list
1422    * Impose 20MB limit on POSTs and catch OOMs in POST
1423    * eepsite_index.html: add stats.i2p services
1424    * addressbook: log source of new keys; disallow dests > 516 bytes
1425    * addressbook: convert hostnames to lower case to prevent duplicates
1426    * susidns: generalize references to orion
1427
14282007-12-29 zzz
1429    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
1430    * Allow commas in router.trustedUpdateKeys and router.updateURL again
1431    * Change default news host from dev.i2p.net to dev.i2p
1432    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
1433
14342007-12-28 zzz
1435    * Add zzz's update signing key
1436
14372007-12-26 Complication
1438    * Improve reseed handler (less repetitive code,
1439      avoid reporting errors when less than 10% of fetches fail)
1440
14412007-12-26 Complication
1442    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
1443      and unescape them in DataHelper.loadProps() to support
1444      saving and loading config properties with line breaks
1445    * Change the update URLs textbox into a textarea like keys have,
1446      so different URLs go on different lines
1447    * Modify TrustedUpdate to provide a method which supplies a key list
1448      delimited with CR LF line breaks
1449    * Modify DEFAULT_UPDATE_URL to supply a default URL list
1450      delimited with CR LF line breaks
1451    * Modify selectUpdateURL() to handle URL lists
1452      delimited by any kind of line breaks
1453    * Start saving trusted update keys
1454    * Improve formatting on configupdate.jsp
1455
14562007-12-22 zzz
1457    * Add support for multiple update URLs
1458    * Change default for update to use i2p proxy,
1459      add several URLs as defaults
1460    * Enable trusted key form on configupdate.jsp
1461    * Clarify the 'destination not found' error page
1462
14632007-12-16 zzz
1464    * i2psnark: remove anonymitytracker from default list
1465
14662007-12-10 zzz
1467    * Fix NPE in CLI TrustedUpdate keygen
1468
14692007-12-02 Complication
1470    * Commit SAM v2 patch from mkvore (thank you!)
1471    * Minor reformatting to preserve consistent whitespace
1472      in old SAM classes (new classes unaltered)
1473
14742007-12-01 Complication
1475    * Separate the checks "does Jetty .zip file need downloading"
1476      and "does Jetty .zip file need extracting" in the Jetty buildfile.
1477      First download (unless already done), then extract (unless done).
1478
14792007-11-26 zzz
1480    * i2psnark: add timeout for receive inactivity
1481
14822007-11-24 zzz
1483    * i2psnark: increase streaming lib write timeout to 240 sec and change
1484      timeout action from "ping" to "disconect", as the fix in .30 to
1485      honor options on outbound connections led to hung outbound connections
1486      (bitfield never transmitted, connection never dropped)
1487
14882007-11-06 jrandom
1489    * add i2host.i2p to the jump list
1490
14912007-10-11 zzz
1492    * IRC Proxy: Fix several possible anonymity holes:
1493      - Block CTCP in NOTICE messages
1494      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
1495      - Check for lower case commands
1496    (Thanks sponge!)
1497
14982007-10-07  jrandom
1499    * back out the NTCP backlog pushback, as it could be used to mount an
1500      active anonymity attack.
1501
1502* 2007-10-07  0.6.1.30 released
1503
15042007-10-07  Complication
1505    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
1506      broke retrying.
1507
15082007-09-27  zzz
1509    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
1510    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
1511      fix some of the sorting
1512
15132007-09-22  zzz
1514    * Send messages for the same destination out the same outbound
1515      tunnel to reduce out-of-order delivery.
1516
15172007-09-19  zzz
1518    * i2psnark: Fix broken multifile torrent Delete;
1519        cleanup Storage resources in AddTorrent;
1520        don't autostart torrent after Create
1521
15222007-09-18  zzz
1523    * eepsite_index.html: Add links to trevorreznik address book
1524    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
1525    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
1526    * i2psnark: Don't make outbound connections to already-connected peers
1527    * i2psnark: Debug logging cleanup
1528
15292007-09-14  zzz
1530    * eepget: Increase header timeout to 45s
1531    * HTTP proxy: Return a better error message for localhost requests
1532    * tunnels: Fix PooledTunnelCreatorConfig memory leak
1533
15342007-09-09  zzz
1535    * eepget: Add support for Last-Modified and If-Modified-Since
1536    * addressbook: Finish incomplete support for Last-Modified
1537
15382007-09-08  zzz
1539    * eepget: Copy over SocketTimeout.java file from syndie
1540
15412007-09-07  jrandom
1542    * eepget: Merge timeout support from syndie
1543
1544* 2007-08-23  0.6.1.29 released
1545
15462007-08-12  zzz
1547    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
1548      tweak the eepsite and troubleshooting sections
1549
15502007-08-11  zzz
1551    * Add stats for individual tunnel rates (nice when graphed)
1552    * i2psnark: Fix outbound tunnel nickname
1553
15542007-08-05  Complication
1555    * Update the sharing calculator on config.jsp
1556      and explain the trade-off even more thoroughly.
1557
15582007-08-04  Complication
1559    * Lower the threshold between the K and L bandwidth class,
1560      so that K is now < 12 KB/s, instead of <= 16 KB/s.
1561      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
1562      participate in routing, if they keep the default share percentage.
1563
15642007-07-16  zzz
1565    * i2psnark: Add tooltip info for choked/uninterested
1566
15672007-07-16  zzz
1568    * Make selection of graphed data configurable via configstats.jsp,
1569      remove most of the default graphs to save some memory
1570
15712007-07-15  zzz
1572    * Add current values to graph legends
1573    * Fix up previous Rate fix to check for divide by zero
1574
15752007-07-14  Complication
1576    * Take the post-download routerInfo size check back out of ReseedHandler,
1577      since it wasn't helpful, and a lower limit caused false warnings.
1578    * Give EepGet ability to enforce a min/max HTTP response size.
1579    * Enforce a maximum response size of 8 MB when ReseedHandler
1580      downloads into a ByteArrayOutputStream.
1581    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
1582      change invocation from RouterConsoleRunner accordingly.
1583    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
1584      provide status reports to indicate the progress of reseeding.
1585    * Enable icon for default eepsite, and the index page
1586      of the router console (more later).
1587
15882007-07-14  zzz
1589    * Clean up graphs.jsp - set K=1024 where appropriate,
1590      output image sizes in html, catch ooms, other minor tweaks
1591    * Fix current event count truncation which fixes graphs with low
1592      60-sec event counts displaying high values
1593      (bw.* and router.* graphs for example were 1.5x too high)
1594      Affects all "events per period" (non-lifetime) counts.
1595
15962007-07-09  zzz
1597    * i2psnark: give a better error message for a non-i2p torrent
1598
15992007-07-07  zzz
1600    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
1601      SSU will notify/restart NTCP when the external address changes.
1602      Now you can enable inbound TCP without a static IP or dyndns service.
1603
16042007-07-04  zzz
1605    * Display calculated share bandwidth and remove load testing
1606      on config.jsp
1607
16082007-07-01  zzz
1609    * Replace broken option i2np.udp.alwaysPreferred with
1610      i2np.udp.preferred and adjust UDP bids; possible settings are
1611      "false" (default), "true", and "always".
1612      Default setting results in same behavior as before
1613      (NTCP is preferred unless it isn't established and UDP is established).
1614      Use to compare NTCP and UDP transports.
1615
16162007-06-27  jrandom
1617    * fix for a streaming lib bug that could leave a thread waiting
1618      indefinitely (thanks Complication!)
1619
16202007-06-16  Complication
1621    * First pass on EepGet and ReseedHandler improvements,
1622      please avoid use on routers which matter!
1623    * Give EepGet ability of downloading into an OutputStream,
1624      such as the ByteArrayOutputStream of ReseedHandler.
1625    * Detect failure to reseed better, report it persistently
1626      and more verbosely, provide a link to logs
1627      and suggest manual reseed.
1628
16292007-05-06  Complication
1630    * Fix the build.xml file, so the preppkg build target won't try copying files
1631      which became deprecated with the old Syndie (thanks for alerting, itsu!)
1632
16332007-03-31  zzz
1634    * Add trevorreznik jump server to the http proxy error page
1635    * Add anonymity to the trackers supporting details links in i2psnark
1636
16372007-03-24  zzz
1638    * Remove Syndie from build targets and navbar
1639
16402007-03-22  zzz
1641    * i2psnark tracker handling tweaks:
1642    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
1643    -   Add Base URL to tracker list configuration
1644    -   Web page links built from tracker list Base URLs
1645    -   Only build and sort tracker list once
1646    -   Add anonymityWeb tracker to default list
1647    -   Add tooltip info for TrackerErrs
1648    -   Stop torrent if not registered with tracker
1649    -   Mark temp files as delete on exit
1650
16512007-03-18  zzz
1652    * i2psnark: Cleanup some handling of saved partial pieces
1653    * i2psnark: Put bit counting in Bitfield.java for efficiency
1654    * i2psnark: Save torrent completion state in i2psnark.config
1655
1656* 2007-03-17  0.6.1.28 released
1657
16582007-03-13  zzz
1659    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
1660
16612007-03-12  jrandom
1662    * dodge a race on startup (thanks zzz!)
1663
16642007-03-10  zzz
1665    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
1666      (RFC 2988) to reduce early RTO values
1667
16682007-03-08  zzz
1669    * i2psnark changes to improve upload performance:
1670    *  Implement total uploader limit (10)
1671    *  Don't timeout non-piece messages out
1672    *  Change chunk size to 32K (was 64K)
1673    *  Change request limit to 64K (was 256K)
1674    * i2psnark: Disconnect from seeds when complete
1675
16762007-03-07  zzz
1677    * Remove dynamic router keys from config.jsp
1678
16792007-03-07  zzz
1680    * Streaming lib changes to improve upstream performance during congestion:
1681    *   Change min window size from 12 to 1
1682    *   Change max timeout from 10 to 45 sec
1683    *   Change initial timeout from 10 to 15 sec
1684    *   Change intial window size for i2psnark from 12 to 1
1685    *   Change slow start growth rate for i2psnark from 1/2 to 1
1686
16872007-03-04  zzz
1688    * Update eepsite_index.html
1689
16902007-03-03  zzz
1691    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
1692    * Add a updaterWithJetty build target
1693
16942007-03-03  zzz
1695    * Implement priority sending for NTCP
1696    * Disable trimForOverload() in tunnel BuildExecutor which
1697      was preventing tunnel builds when outbound traffic was high
1698      (i.e. most of the time when running i2psnark)
1699
17002007-02-28  zzz
1701    * i2psnark: File reopen cleanup
1702
17032007-02-28  zzz
1704    * i2psnark: Add peer details to web page
1705
1706* 2007-02-15  0.6.1.27 released
1707
17082007-02-15  jrandom
1709    * Limit the whispering floodfill sends to at most 3 randomly
1710      chosen from the known floodfill peers
1711
17122007-02-14  jrandom
1713    * Don't filter out KICK and H(ide oper status) IRC messages
1714      (thanks Takk and postman!)
1715
17162007-02-13  jrandom
1717    * Tell our peers about who we know in the floodfill netDb every
1718      6 hours or so, mitigating the situation where peers lose track
1719      of floodfill routers.
1720    * Disable the Syndie updater (people should use the new Syndie,
1721      not this one)
1722    * Disable the eepsite tunnel by default
1723
17242007-01-30  zzz
1725    * i2psnark: Don't hold _snarks lock while checking a snark,
1726      so web page is responsive at startup
1727
17282007-01-29  zzz
1729    * i2psnark: Add NickyB tracker
1730
17312007-01-28  zzz
1732    * i2psnark: Don't hold sendQueue lock while flushing output,
1733      to make everything run smoother
1734
17352007-01-27  zzz
1736    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
1737
17382007-01-20  Complication
1739    * Drop overlooked comment
1740
17412007-01-20  Complication
1742    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
1743      instead of System, so setting a reseed URL in advanced configuration has effect.
1744    * Clean out obsolete reseed code from ConfigNetHandler.
1745
17462007-01-20  zzz
1747    * i2psnark: More choking rotation tweaks
1748    * Improve performance by not reading in the whole
1749      piece from disk for each request. A huge memory savings
1750      on 1MB torrents with many peers.
1751
17522007-01-17  zzz
1753    * Add new HTTP Proxy error message for non-http protocols
1754
17552007-01-17  zzz
1756    * Add note on Syndie index.html steering people to new Syndie
1757
17582007-01-16  zzz
1759    * i2psnark: Fix crash when autostart off and
1760      tcrrent started manually
1761
17622007-01-16  zzz
1763    * i2psnark: Fix bug caused by last i2psnark checkin
1764      (ConnectionAcceptor not started)
1765    * Don't start PeerCoordinator, ConnectionAcceptor,
1766      and TrackerClient unless starting torrent
1767
17682007-01-15  jrandom
1769    * small guard against unnecessary streaming lib reset packets
1770      (thanks Complication!)
1771
17722007-01-15  zzz
1773    * i2psnark: Add 'Stop All' link on web page
1774    * Add some links to trackers and forum on web page
1775    * Don't start tunnel if 'Autostart' unchecked
1776    * Fix torrent restart bug by reopening file descriptors
1777
17782007-01-14  zzz
1779    * i2psnark: Improvements for torrents with > 4 leechers:
1780      choke based on upload rate when seeding, and
1781      be smarter and fairer about rotating choked peers.
1782    * Handle two common i2psnark OOM situations rather
1783      than shutting down the whole thing.
1784    * Fix reporting to tracker of remaining bytes for
1785      torrents > 4GB (but ByteMonsoon still has a bug)
1786
17872006-10-29  zzz
1788    * i2psnark: Fix and enable generation of multifile torrents,
1789      print error if no tracker selected at create-torrent,
1790      fix stopping a torrent that hasn't started successfully,
1791      add eBook and GayTorrents trackers to form,
1792      web page formatting tweaks
1793
1794* 2006-10-10  0.6.1.26 released
1795
17962006-10-29  Complication
1797    * Ensure we get NTP samples from more diverse sources
1798      (0.pool.ntp.org, 1.pool.ntp.org, etc)
1799    * Discard median-based peer skew calculator as framed average works,
1800      and adjusting its percentage can make it behave median-like
1801    * Require more data points (from at least 20 peers)
1802      before considering a peer skew measurement reliable
1803
18042006-10-10  jrandom
1805    * Removed the status display from the console, as its more confusing
1806      than informative (though the content is still displayed in the HTML)
1807
18082006-10-08  Complication
1809    * Add a framed average peer clock skew calculator
1810    * Add config property "router.clockOffsetSanityCheck" to determine
1811      if NTP-suggested clock offsets get sanity checked (default "true")
1812    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
1813      by more than 5 seconds, or make it more than 20 seconds total
1814    * Decrease log level in getMedianPeerClockSkew()
1815
18162006-09-29  zzz
1817    * i2psnark: Second try at synchronization fix - synch addRequest()
1818      completely rather than just portions of it and requestNextPiece()
1819
18202006-09-27  jrandom
1821    * added HMAC-SHA256
1822    * properly use CRLF with EepPost
1823    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
1824    * PBE session key generation (with 1000 rounds of SHA256)
1825    * misc SDK helper functions
1826
18272006-09-26  Complication
1828    * Take back another inadverent logging change in NTCPConnection
1829
18302006-09-26  Complication
1831    * Take back an accidental log level change
1832
18332006-09-26  Complication
1834    * Subclass from Clock a RouterClock which can access router transports,
1835      with the goal of developing it to second-guess NTP results
1836    * Make transports report clock skew in seconds
1837    * Adjust renderStatusHTML() methods accordingly
1838    * Show average for NTCP clock skews too
1839    * Give transports a getClockSkews() method to report clock skews
1840    * Give transport manager a getClockSkews() method to aggregate results
1841    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
1842      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
1843    * Extra explicitness in NTCP classes to denote unit of time.
1844    * Fix some places in NTCPConnection where milliseconds and seconds were confused
1845
18462006-09-25  zzz
1847    * i2psnark: Paranoid copy before writing pieces,
1848      recheck files on completion, redownload bad pieces
1849    * i2psnark: Don't contact tracker as often when seeding
1850
18512006-09-24  zzz
1852    * i2psnark: Add some synchronization to prevent rare problem
1853      after restoring orphan piece
1854
18552006-09-20  zzz
1856    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
1857      rapid choke/unchokes
1858    * i2psnark: Truncate long TrackerErr messages on web page
1859
18602006-09-16  zzz
1861    * i2psnark: Implement retransmission of requests. This
1862      eliminates one cause of complete stalls with a peer.
1863      This problem is common on torrents with a small number of
1864      active peers where there are no choke/unchokes to kickstart things.
1865
18662006-09-13  zzz
1867    * i2psnark: Fix restoral of partial pieces broken by last patch
1868
18692006-09-13  zzz
1870    * i2psnark: Mark a peer's requests as unrequested on disconnect,
1871      preventing premature end game
1872    * i2psnark: Randomize selection of next piece during end game
1873    * i2psnark: Don't restore a partial piece to a peer that is already working on it
1874    * i2psnark: strip ".torrent" on web page
1875    * i2psnark: Limit piece size in generated torrent to 1MB max
1876
18772006-09-09  zzz
1878    * i2psnark: Add "Stalled" indication and stat totals on web page
1879
18802006-09-09  zzz
1881    * i2psnark: Fix bug where new peers would always be sent an "interested"
1882      regardless of actual interest
1883    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
1884      memory and efficiency problems
1885
1886* 2006-09-09  0.6.1.25 released
1887
18882006-09-08  jrandom
1889    * Tweak the PRNG logging so it only displays error messages if there are
1890      problems
1891    * Disable dynamic router keys for the time being, as they don't offer
1892      meaningful security, may hurt the router, and makes it harder to
1893      determine the network health.  The code to restart on SSU IP change is
1894      still enabled however.
1895    * Disable tunnel load testing, leaning back on the tiered selection for
1896      the time being.
1897    * Spattering of bugfixes
1898
18992006-09-07  zzz
1900    * i2psnark: Increase output timeout from 2 min to 4 min
1901    * i2psnark: Orphan debug msg cleanup
1902    * i2psnark: More web rate report cleanup
1903
19042006-09-05  zzz
1905    * i2psnark: Implement basic partial-piece saves across connections
1906    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
1907      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
1908      code in i2psnark ineffective. Will have to research why there is transmit but
1909      not receive inactivity code. With the current connection limit of 24 peers
1910      we aren't in any danger of keeping out new peers by keeping inactive ones.
1911    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
1912    * i2psnark: Fix dropped chunk handling
1913    * i2psnark: Web rate report cleanup
1914
19152006-09-04  zzz
1916    * i2psnark: Report cleared trackerErr immediately
1917    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
1918    * i2psnark: Set up new connections more quickly
1919    * i2psnark: Don't delay tracker fetch when setting up lots of connections
1920    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
1921
19222006-09-04  zzz
1923    * Enable pipelining in i2psnark
1924    * Make i2psnark tunnel default be 1 + 0-1
1925
19262006-09-03  zzz
1927    * Add rate reporting to i2psnark
1928
19292006-09-03  Complication
1930    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
1931    * Print messages about addressbook size to give better overview
1932    * Enable delete function in published addressbook
1933
19342006-08-21  Complication
1935    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
1936
19372006-08-03  jrandom
1938    * Decrease the recently modified tunnel building timeout, though keep
1939      the scaling on their processing
1940
19412006-07-31  jrandom
1942    * Increase the tunnel building timeout
1943    * Avoid a rare race (thanks bar!)
1944    * Fix the bandwidth capacity publishing code to factor in share percentage
1945      and outbound throttling (oops)
1946
19472006-07-29  Complication
1948    * Treat NTP responses from unexpected stratums like failures
1949
1950* 2006-07-28  0.6.1.24 released
1951
19522006-07-28  jrandom
1953    * Don't try to reverify too many netDb entries at once (thanks
1954      cervantes and Complication!)
1955
19562006-07-28  jrandom
1957    * Actually fix the threading deadlock issue in the netDb (removing
1958      the synchronized access to individual kbuckets while validating
1959      individual entries) (thanks cervantes, postman, frosk, et al!)
1960
1961* 2006-07-27  0.6.1.23 released
1962
19632006-07-27  jrandom
1964    * Cut down NTCP connection establishments once we know the peer is skewed
1965      (rather than wait for full establishment before verifying)
1966    * Removed a lock on the stats framework when accessing rates, which
1967      shouldn't be a problem, assuming rates are created (pretty much) all at
1968      once and merely updated during the lifetime of the jvm.
1969
19702006-07-27  jrandom
1971    * Further NTCP write status cleanup
1972    * Handle more oddly-timed NTCP disconnections (thanks bar!)
1973
19742006-07-26  jrandom
1975    * When dropping a netDb router reference, only accept newer
1976      references as part of the update check
1977    * If we have been up for a while, don't accept really old
1978      router references (published 2 or more days ago)
1979    * Drop router references once they are no longer valid, even if
1980      they were allowed in due to the lax restrictions on startup
1981
19822006-07-26  jrandom
1983    * Every time we create a new router identity, add an entry to the
1984      new "identlog.txt" text file in the I2P install directory.  For
1985      debugging purposes, publish the count of how many identities the
1986      router has cycled through, though not the identities itself.
1987    * Cleaned up the way the multitransport shitlisting worked, and
1988      added per-transport shitlists
1989    * When dropping a router reference locally, first fire a netDb
1990      lookup for the entry
1991    * Take the peer selection filters into account when organizing the
1992      profiles (thanks Complication!)
1993    * Avoid some obvious configuration errors for the NTCP transport
1994      (invalid ports, "null" ip, etc)
1995    * Deal with some small NTCP bugs found in the wild (unresolveable
1996      hosts, strange network discons, etc)
1997    * Send our netDb info to peers we have direct NTCP connections to
1998      after each 6-12 hours of connection uptime
1999    * Clean up the NTCP reading and writing queue logic to avoid some
2000      potential delays
2001    * Allow people to specify the IP that the SSU transport binds on
2002      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
2003
2004* 2006-07-18  0.6.1.22 released
2005
20062006-07-18  jrandom
2007    * Add a failsafe to the NTCP transport to make sure we keep
2008      pumping writes when we should.
2009    * Properly reallow 16-32KBps routers in the default config
2010      (thanks Complication!)
2011
20122006-07-16  Complication
2013    * Collect tunnel build agree/reject/expire statistics
2014      for each bandwidth tier of peers (and peers of unknown tiers,
2015      even if those shouldn't exist)
2016
20172006-07-14  jrandom
2018    * Improve the multitransport shitlisting (thanks Complication!)
2019    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
2020      the default configuration (thanks for the stats Complication!)
2021    * Properly allow older router references to load on startup
2022      (thanks bar, Complication, et al!)
2023    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
2024      hopefully today's changes should make this unnecessary (thanks void!)
2025    * Improved NTCP buffering
2026    * Close NTCP connections if we are too backlogged when writing to them
2027
20282006-07-04  jrandom
2029    * New NIO-based tcp transport (NTCP), enabled by default for outbound
2030      connections only.  Those who configure their NAT/firewall to allow
2031      inbound connections and specify the external host and port
2032      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
2033      SSU is still enabled for use by default for all users as a fallback.
2034    * Substantial bugfix to the tunnel gateway processing to transfer
2035      messages sequentially instead of interleaved
2036    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
2037      GNU/Classpath based JVMs
2038    * Adjust the Fortuna PRNG's pooling system to reduce contention on
2039      refill with a background thread to refill the output buffer
2040    * Add per-transport support for the shitlist
2041    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
2042      contention
2043
20442006-07-01  Complication
2045    * Ensure that the I2PTunnel web interface won't update tunnel settings
2046      for shared clients when a non-shared client is modified
2047      (thanks for spotting, BarkerJr!)
2048
20492006-06-14  cervantes
2050    * Small tweak to I2PTunnel CSS, so it looks better with desktops
2051      that use Bitstream Vera fonts @ 96 dpi
2052
2053* 2006-06-14  0.6.1.21 released
2054
20552006-06-13  jrandom
2056    * Use a minimum uptime of 2 hours, not 4 (oops)
2057
20582006-06-13  jrandom
2059    * Cut down the proactive rejections due to queue size - if we are
2060      at the point of having decrypted the request off the queue, might
2061      as well let it through, rather than waste that decryption
2062
20632006-06-11  Kloug
2064    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
2065      outstanding pings/pongs
2066
20672006-06-10  jrandom
2068    * Further reduction in proactive rejections
2069
20702006-06-09  jrandom
2071    * Don't let the pending tunnel request queue grow beyond reason
2072      (letting things sit for up to 30s when they fail after 10s
2073      seems a bit... off)
2074
20752006-06-08  jrandom
2076    * Be more conservative in the proactive rejections
2077
20782006-06-04  Complication
2079    * Trim out sending a blank line before USER in susimail.
2080      Seemed to break in rare cases, thanks for reporting, Brachtus!
2081
2082* 2006-06-04  0.6.1.20 released
2083
20842006-06-04  jrandom
2085    * Reduce the SSU ack frequency
2086    * Tweaked the tunnel rejection settings to reject less aggressively
2087
20882006-05-31  jrandom
2089    * Only send netDb searches to the floodfill peers for the time being
2090    * Add some proof of concept filters for tunnel participation.  By default,
2091      it will skip peers with an advertised bandwith of less than 32KBps or
2092      an advertised uptime of less than 2 hours.  If this is sufficient, a
2093      safer implementation of these filters will be implemented.
2094
2095* 2006-05-18  0.6.1.19 released
2096
20972006-05-18  jrandom
2098    * Made the SSU ACKs less frequent when possible
2099
21002006-05-17  Complication
2101    * Fix some oversights in my previous changes:
2102      adjust some loglevels, make a few statements less wasteful,
2103      make one comparison less confusing and more likely to log unexpected values
2104
21052006-05-17  jrandom
2106    * Make the peer page sortable
2107    * SSU modifications to cut down on unnecessary connection failures
2108
21092006-05-16  jrandom
2110    * Further shitlist randomizations
2111    * Adjust the stats monitored for detecting cpu overload when dropping new
2112      tunnel requests
2113
21142006-05-15  jrandom
2115    * Add a load dependent throttle on the pending inbound tunnel request
2116      backlog
2117    * Increased the tunnel test failure slack before killing a tunnel
2118
21192006-05-13  Complication
2120    * Separate growth factors for tunnel count and tunnel test time
2121    * Reduce growth factors, so probabalistic throttle would activate
2122    * Square probAccept values to decelerate stronger when far from average
2123    * Create a bandwidth stat with approximately 15-second half life
2124    * Make allowTunnel() check the 1-second bandwidth for overload
2125      before doing allowance calculations using 15-second bandwidth
2126    * Tweak the overload detector in BuildExecutor to be more sensitive
2127      for rising edges, add ability to initiate tunnel drops
2128    * Add a function to seek and drop the highest-rate participating tunnel,
2129      keeping a fixed+random grace period between such drops.
2130      It doesn't seem very effective, so disabled by default
2131      ("router.dropTunnelsOnOverload=true" to enable)
2132
21332006-05-11  jrandom
2134    * PRNG bugfix (thanks cervantes and Complication!)
2135
2136* 2006-05-09  0.6.1.18 released
2137
21382006-05-09  jrandom
2139    * Further tunnel creation timeout revamp
2140
21412006-05-07  Complication
2142    * Fix problem whereby repeated calls to allowed() would make
2143      the 1-tunnel exception permit more than one concurrent build
2144
21452006-05-06  jrandom
2146    * Readjust the tunnel creation timeouts to reject less but fail earlier,
2147      while tracking the extended timeout events.
2148
21492006-05-04  jrandom
2150    * Short circuit a highly congested part of the stat logging unless its
2151      required (may or may not help with a synchronization issue reported by
2152      andreas)
2153
21542006-05-03  Complication
2155    * Allow a single build attempt to proceed despite 1-minute overload
2156      only if the 1-second rate shows enough spare bandwidth
2157      (e.g. overload has already eased)
2158
21592006-05-02  Complication
2160    * Correct a misnamed property in SummaryHelper.java
2161      to avoid confusion
2162    * Make the maximum allowance of our own concurrent
2163      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
2164      within the fixed range 2..10
2165    * While overloaded, try to avoid completely choking our own build attempts,
2166      instead prefer limiting them to 1
2167
21682006-05-01  jrandom
2169    * Adjust the tunnel build timeouts to cut down on expirations, and
2170      increased the SSU connection establishment retransmission rate to
2171      something less glacial.
2172    * For the first 5 minutes of uptime, be less aggressive with tunnel
2173      exploration, opting for more reliable peers to start with.
2174
21752006-05-01  jrandom
2176    * Fix for a netDb lookup race (thanks cervantes!)
2177
21782006-04-27  jrandom
2179    * Avoid a race in the message reply registry (thanks cervantes!)
2180
21812006-04-27  jrandom
2182    * Fixed the tunnel expiration desync code (thanks Complication!)
2183
2184* 2006-04-23  0.6.1.17 released
2185
21862006-04-19  jrandom
2187    * Adjust how we pick high capacity peers to allow the inclusion of fast
2188      peers (the previous filter assumed an old usage pattern)
2189    * New set of stats to help track per-packet-type bandwidth usage better
2190    * Cut out the proactive tail drop from the SSU transport, for now
2191    * Reduce the frequency of tunnel build attempts while we're saturated
2192    * Don't drop tunnel requests as easily - prefer to explicitly reject them
2193
2194* 2006-04-15  0.6.1.16 released
2195
21962006-04-15  jrandom
2197    * Adjust the proactive tunnel request dropping so we will reject what we
2198      can instead of dropping so much (but still dropping if we get too far
2199      overloaded)
2200
22012006-04-14  jrandom
2202    * 0 isn't very random
2203    * Adjust the tunnel drop to be more reasonable
2204
22052006-04-14  jrandom
2206    * -28.00230115311259 is not between 0 and 1 in any universe I know.
2207    * Made the bw-related tunnel join throttle much simpler
2208
22092006-04-14  jrandom
2210    * Make some more stats graphable, and allow some internal tweaking on the
2211      tunnel pairing for creation and testing.
2212
2213* 2006-04-13  0.6.1.15 released
2214
22152006-04-12  jrandom
2216    * Added a further failsafe against trying to queue up too many messages to
2217      a peer.
2218
22192006-04-12  jrandom
2220    * Watch out for failed syndie index fetches (thanks bar!)
2221
22222006-04-11  jrandom
2223    * Throttling improvements on SSU - throttle all transmissions to a peer
2224      when we are retransmitting, not just retransmissions.  Also, if
2225      we're already retransmitting to a peer, probabalistically tail drop new
2226      messages targetting that peer, based on the estimated wait time before
2227      transmission.
2228    * Fixed the rounding error in the inbound tunnel drop probability.
2229
22302006-04-10  jrandom
2231    * Include a combined send/receive graph (good idea cervantes!)
2232    * Proactively drop inbound tunnel requests probabalistically as the
2233      estimated queue time approaches our limit, rather than letting them all
2234      through up to that limit.
2235
22362006-04-08  jrandom
2237    * Stat summarization fix (removing the occational holes in the jrobin
2238      graphs)
2239
22402006-04-08  jrandom
2241    * Process inbound tunnel requests more efficiently
2242    * Proactively drop inbound tunnel requests if the queue before we'd
2243      process it in is too long (dynamically adjusted by cpu load)
2244    * Adjust the tunnel rejection throttle to reject requeusts when we have to
2245      proactively drop too many requests.
2246    * Display the number of pending inbound tunnel join requests on the router
2247      console (as the "handle backlog")
2248    * Include a few more stats in the default set of graphs
2249
22502006-04-06  jrandom
2251    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
2252
22532006-04-06  jrandom
2254    * Fixed a typo in the reply cleanup code
2255
2256* 2006-04-05  0.6.1.14 released
2257
22582006-04-05  jrandom
2259    * Cut down on the time that we allow a tunnel creation request to sit by
2260      without response, and reject tunnel creation requests that are lagged
2261      locally.  Also switch to a bounded FIFO instead of a LIFO
2262    * Threading tweaks for the message handling (thanks bar!)
2263    * Don't add addresses to syndie with blank names (thanks Complication!)
2264    * Further ban clearance
2265
22662006-04-05  jrandom
2267    * Fix during the ssu handshake to avoid an unnecessary failure on
2268      packet retransmission (thanks ripple!)
2269    * Fix during the SSU handshake to use the negotiated session key asap,
2270      rather than using the intro key for more than we should (thanks ripple!)
2271    * Fixes to the message reply registry (thanks Complication!)
2272    * More comprehensive syndie banning (for repeated pushes)
2273    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
2274      testing purposes
2275    * Put a floor back on the capacity threshold, so too many failing peers
2276      won't cause us to pick very bad peers (unless we have very few good
2277      ones)
2278    * Bugfix to cut down on peers using introducers unneessarily (thanks
2279      Complication!)
2280    * Reduced the default streaming lib message size to fit into a single
2281      tunnel message, rather than require 5 tunnel messages to be transferred
2282      without loss before recomposition.  This reduces throughput, but should
2283      increase reliability, at least for the time being.
2284    * Misc small bugfixes in the router (thanks all!)
2285    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
2286
22872006-04-01  jrandom
2288    * Take out the router watchdog's teeth (don't restart on leaseset failure)
2289    * Filter the IRC ping/pong messages, as some clients send unsafe
2290      information in them (thanks aardvax and dust!)
2291
22922006-03-30  jrandom
2293    * Substantially reduced the lock contention in the message registry (a
2294      major hotspot that can choke most threads).  Also reworked the locking
2295      so we don't need per-message timer events
2296    * No need to have additional per-peer message clearing, as they are
2297      either unregistered individually or expired.
2298    * Include some of the more transient tunnel throttling
2299
2300* 2006-03-26  0.6.1.13 released
2301
23022006-03-25  jrandom
2303    * Added a simple purge and ban of syndie authors, shown as the
2304      "Purge and ban" button on the addressbook for authors that are already
2305      on the ignore list.  All of their entries and metadata are deleted from
2306      the archive, and the are transparently filtered from any remote
2307      syndication (so no user on the syndie instance will pull any new posts
2308      from them)
2309    * More strict tunnel join throtting when congested
2310
23112006-03-24  jrandom
2312    * Try to desync tunnel building near startup (thanks Complication!)
2313    * If we are highly congested, fall back on only querying the floodfill
2314      netDb peers, and only storing to those peers too
2315    * Cleaned up the floodfill-only queries
2316
23172006-03-21  jrandom
2318    * Avoid a very strange (unconfirmed) bug that people using the systray's
2319      browser picker dialog could cause by disabling the GUI-based browser
2320      picker.
2321    * Cut down on subsequent streaming lib reset packets transmitted
2322    * Use a larger MTU more often
2323    * Allow netDb searches to query shitlisted peers, as the queries are
2324      indirect.
2325    * Add an option to disable non-floodfill netDb searches (non-floodfill
2326      searches are used by default, but can be disabled by adding
2327      netDb.floodfillOnly=true to the advanced config)
2328
23292006-03-20  jrandom
2330    * Fix to allow for some slack when coalescing stats
2331    * Workaround some oddball errors
2332
23332006-03-18  jrandom
2334    * Added a new graphs.jsp page to show all of the stats being harvested
2335
23362006-03-18  jrandom
2337    * Made the netDb search load limitations a little less stringent
2338    * Add support for specifying the number of periods to be plotted on the
2339      graphs - e.g. to plot only the last hour of a stat that is averaged at
2340      the 60 second period, add &periodCount=60
2341
23422006-03-17  jrandom
2343    * Add support for graphing the event count as well as the average stat
2344      value (done by adding &showEvents=true to the URL).  Also supports
2345      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
2346      the title (&hideTitle=true).
2347    * Removed an unnecessary arbitrary filter on the profile organizer so we
2348      can pick high capacity and fast peers more appropriately
2349
23502006-03-16  jrandom
2351    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
2352      console.  Selected stats can be harvested automatically and fed into
2353      in-memory RRD databases, and those databases can be served up either as
2354      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
2355      details).  A base set of stats are harvested by default, but an
2356      alternate list can be specified by setting the 'stat.summaries' list on
2357      the advanced config.  For instance:
2358      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
2359    * HTML tweaking for the general config page (thanks void!)
2360    * Odd NPE fix (thanks Complication!)
2361
23622006-03-15  Complication
2363    * Trim out an old, inactive IP second-guessing method
2364      (thanks for spotting, Anonymous!)
2365
23662006-03-15  jrandom
2367    * Further stat cleanup
2368    * Keep track of how many peers we are actively trying to communicate with,
2369      beyond those who are just trying to communicate with us.
2370    * Further router tunnel participation throttle revisions to avoid spurious
2371      rejections
2372    * Rate stat display cleanup (thanks ripple!)
2373    * Don't even try to send messages that have been queued too long
2374
23752006-03-05  zzz
2376    * Remove the +++--- from the logs on i2psnark startup
2377
23782006-03-05  jrandom
2379    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
2380    * Give netDb lookups to floodfill peers more time, as they are much more
2381      likely to succeed (thereby cutting down on the unnecessary netDb
2382      searches outside the floodfill set)
2383    * Fix to the SSU IP detection code so we won't use introducers when we
2384      don't need them (thanks Complication!)
2385    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
2386      peers given to it
2387    * Don't let netDb searches wander across too many peers
2388    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
2389      as its too volatile to have much meaning.
2390    * Don't bork if a Syndie post is missing an entry.sml
2391
23922006-03-05  Complication
2393    * Reduce exposed statistical information,
2394      to make build and uptime tracking more expensive
2395
23962006-03-04  Complication
2397    * Fix the announce URL of orion's tracker in Snark sources
2398
23992006-03-03  Complication
2400    * Explicit check for an index out of bounds exception while parsing
2401      an inbound IRC command (implicit check was there already)
2402
24032006-03-01  jrandom
2404    * More aggressive tunnel throttling as we approach our bandwidth limit,
2405      and throttle based off periods wider than 1 second.
2406    * Included Doubtful Salmon's syndie stylings (thanks!)
2407
24082006-02-27  zzz
2409    * Update error page templates to add \r, Connection: close, and
2410      Proxy-connection: close to headers.
2411
2412* 2006-02-27  0.6.1.12 released
2413
24142006-02-27  jrandom
2415    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
2416      machines, rather than the generic jbigi (until we have an athlon64
2417      optimized version)
2418
24192006-02-26  jrandom
2420    * Switch from the bouncycastle to the gnu-crypto implementation for
2421      SHA256, as benchmarks show a 10-30% speedup.
2422    * Removed some unnecessary object caches
2423    * Don't close i2psnark streams prematurely
2424
24252006-02-25  jrandom
2426    * Made the Syndie permalinks in the thread view point to the blog view
2427    * Disabled TCP again (since the live net seems to be doing well w/out it)
2428    * Fix the message time on inbound SSU establishment (thanks zzz!)
2429    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
2430      just starts up
2431
24322006-02-24  jrandom
2433    * Rounding calculation cleanup in the stats, and avoid an uncontested
2434      mutex (thanks ripple!)
2435    * SSU handshake cleanup to help force incompatible peers to stop nagging
2436      us by both not giving them an updated reference to us and by dropping
2437      future handshake packets from them.
2438
24392006-02-23  jrandom
2440    * Increase the SSU retransmit ceiling (for slow links)
2441    * Estimate the sender's SSU MTU (to help see if we agree)
2442
24432006-02-22  jrandom
2444    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
2445    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
2446      links
2447    * Further class validator refactorings
2448
24492006-02-22  jrandom
2450    * Handle a rare race under high bandwidth situations in the SSU transport
2451    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
2452
24532006-02-21  Complication
2454    * Reactivate TCP tranport by default, in addition to re-allowing
2455
2456* 2006-02-21  0.6.1.11 released
2457
24582006-02-21  jrandom
2459    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
2460      heap when backlogged (and so that the messages queued up on it don't sit
2461      there forever)
2462    * Further SSU memory cleanup
2463    * Clean up the address regeneration code so it knows when to rebuild the
2464      local info more precisely.
2465
24662006-02-20  jrandom
2467    * Properly enable TCP this time (oops)
2468    * Deal with multiple form handlers on the same page in the console without
2469      being too annoying (thanks blubb and bd_!)
2470
24712006-02-20  jrandom
2472    * Reenable the TCP transport as a fallback (we'll continue to muck with
2473      debugging SSU-only elsewhere)
2474
24752006-02-20  jrandom
2476    * Major SSU and router tuning to reduce contention, memory usage, and GC
2477      churn.  There are still issues to be worked out, but this should be a
2478      substantial improvement.
2479    * Modified the optional netDb harvester task to support choosing whether
2480      to use (non-anonymous) direct connections or (anonymous) exploratory
2481      tunnels to do the harvesting.  Harvesting itself is enabled via the
2482      advanced config "netDb.shouldHarvest=true" (default is false) and the
2483      connection type can be chosen via "netDb.harvestDirectly=false" (default
2484      is false).
2485
24862006-02-19  dust
2487    * Added pruning of suckers history (it used to grow indefinitely).
2488
24892006-02-19  jrandom
2490    * Moved the current net's reseed URL to a different location than where
2491      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
2492    * More aggressively expire inbound messages (on receive, not just on send)
2493    * Add in a hook for breaking backwards compatibility in the SSU wire
2494      protocol directly by including a version as part of the handshake.  The
2495      version is currently set to 0, however, so the wire protocol from this
2496      build is compatible with all earlier SSU implementations.
2497    * Increased the number of complete message readers, cutting down
2498      substantially on the delay processing inbound messages.
2499    * Delete the message history file on startup
2500    * Reworked the restart/shutdown display on the console (thanks bd_!)
2501
25022006-02-18  jrandom
2503    * Migrate the outbound packets from a central component to the individual
2504      per-peer components, substantially cutting down on lock contention when
2505      dealing with higher degrees.
2506    * Load balance the outbound SSU transfers evenly across peers, rather than
2507      across messages (so peers with few messages won't be starved by peers
2508      with many).
2509    * Reduce the frequency of router info rebuilds (thanks bar!)
2510
25112006-02-18  jrandom
2512    * Add a new AIMD throttle in SSU to control the number of concurrent
2513      messages being sent to a given peer, in addition to the throttle on the
2514      number of concurrent bytes to that peer.
2515    * Adjust the existing SSU outbound queue to throttle based on the queue's
2516      lag, not an arbitrary number of packets.
2517
25182006-02-17  jrandom
2519    * Properly fix the build request queue throttling, using queue age to
2520      detect congestion, rather than queue size.
2521
25222006-02-17  jrandom
2523    * Disable the message history log file by default (duh - feel free to
2524      delete messageHistory.txt after upgrading.  thanks deathfatty!)
2525    * Limit the size of the inbound tunnel build request queue so we don't
2526      get an insane backlog of requests that we're bound to reject, and adjust
2527      the queue processing so we keep on churning through them when we've got
2528      a backlog.
2529    * Small fixes for the multiuser syndie operation (thanks Complication!)
2530    * Renamed modified PRNG classes that were imported from gnu-crypto so we
2531      don't conflict with JVMs using that as a JCE provider (thanks blx!)
2532
2533* 2006-02-16  0.6.1.10 released
2534
25352006-02-16  jrandom
2536    * Add a new toggle to the web config to enable/disable the load testing
2537
25382006-02-16  jrandom
2539    * Dropped much of the abandonware from the apps/ directory
2540
25412006-02-16  jrandom
2542    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
2543    * Initial sucker refactoring to simplify reuse of the html parsing
2544    * Beginnings of hooks to push imported rss/atom out to remote syndie
2545      archives automatically (though not enabled currently)
2546    * Further SSU peer test cleanup
2547
25482006-02-15  jrandom
2549    * Add in per-blog RSS feeds to Syndie
2550    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
2551      with the posts, marking additional attachments as Media RSS enclosures
2552      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
2553      per item.
2554    * Don't allow the default syndie user to be set to something invalid if
2555      its in single user mode.
2556
25572006-02-15  jrandom
2558    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
2559      longer backwards compatible (and should not be used until 0.6.1.1 is
2560      out)
2561
25622006-02-14  jrandom
2563    * Syndie ui bugfixes (thanks all!)
2564
25652006-02-13  jrandom
2566    * Use the current directory for some temporary I2PSnark files, rather than
2567      the OS default temp dir (thanks anon!)
2568    * Increase the base streaming lib window size (still shrinks to 1 on
2569      retransmission though, of course)
2570    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
2571    * Implement fast retransmit in the streaming lib (fires at most once per
2572      packet), and increased the default ack delay to 2 seconds (from .5s)
2573    * Don't ask for garlic level message acks for end to end messages unless
2574      they're useful (e.g. to ack session tags)
2575
25762006-02-12  cervantes
2577    * Use a different santisation method for some SML attributes
2578    * Make router console update config save button actually save.
2579    * Fix console bandwidth limiter burst rate dropdowns, so the display
2580      relates to what is saved in the config.
2581   
25822006-02-12  cervantes
2583    * SML is now stricter in it's formatting (attributes should only use
2584      double quotes instead of being allowed to mix with singles).
2585    * Using apostrophes in SML attributes will no longer invalidate the tag.
2586    * Some instances of [blog] tag description were not being displayed
2587      correctly.
2588
25892006-02-12  jrandom
2590    * Further SSU peer test throttling
2591    * Put the most common router console features on the main index page too
2592
25932006-02-11  jrandom
2594    * Be more careful about SSU peer test floods
2595
25962006-02-09  jrandom
2597    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
2598
25992006-02-08  jrandom
2600    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
2601      bundled a precompiled libjbigi.so in the jbigi.jar
2602    * Cleaned up the synchronization for some SSU packet handling code
2603    * Allow explicit rejection of more lagged tunnel build requests, rather
2604      than dropping them outright
2605    * Use lighter load testing
2606
26072006-02-07  jrandom
2608    * Handle HTTP headers without any values (thanks Sugadude!)
2609    * Don't show the option to make Syndie multiuser, since very few people
2610      need it, and multiuser mode is a lot more complex to use.  Geeks can
2611      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
2612      (or in the router's advanced config, for the embedded Syndie)
2613    * When a peer rejects participation in a tunnel, they mean it (duh)
2614    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
2615    * Remove a throttle on the size of the SSU active outbound pool, since
2616      it was essentially arbitrary
2617    * Use a more appropriate SSU bloom filter size
2618    * Don't "proactively" drop SSU connections if we have partially received
2619      inbound messages (duh)
2620    * Migrate most of the message state across SSU connection reestablishment
2621
26222006-02-06  jrandom
2623    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
2624      piggybacked
2625
26262006-02-05  jrandom
2627    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
2628      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
2629      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
2630    * Enable the messageHistory.txt by default, for debugging
2631
26322006-02-05  jrandom
2633    * Substantial bugfix for the duplicate message detection in the transport
2634      layer
2635    * Handle tunnel build responses ASAP, rather than queueing them up to wait
2636      in line (processing them is really fast - just a few AES loops)
2637    * Don't bother handling build requests that we have queued up for a while
2638      locally, as the requestor will have timed it out anyway (perhaps we
2639      should reply regardless, but with a backoff instead?)
2640
26412006-02-04  jrandom
2642    * Further tunnel test cleanup and disabling of the old tunnel creation
2643      code
2644
26452006-02-04  jrandom
2646    * Clean up and reenable the tunnel testing for the new tunnel system.
2647
26482006-02-04  jrandom
2649    * Don't cache the archive.txt in syndie when fetching it through the web
2650      interface.
2651    * Logging updates
2652
26532006-02-03  jrandom
2654    * Added further replay prevention on the tunnel build requests
2655    * More aggressive streaming lib closing on reset
2656
26572006-02-03  jrandom
2658    * More aggressive refusal of peers from the wrong network (oops)
2659
26602006-02-01  jrandom
2661    * Instruct the router to reseed against a new URL, for migration purposes:
2662      http://dev.i2p.net/i2pdb2/
2663    * Aggressive error handling during UDP packet creation (thanks cervantes)
2664
26652006-02-01  jrandom
2666    * Fix the new tunnel creation crypto, including the addition of a 4 byte
2667      "next message ID" to the encrypted request structure in the spec.
2668    * Backwards incompatible change, using the new tunnel creation crypto, the
2669      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
2670      with the old incompatible network).
2671    * Reworked the leaseSet request process to handle a race condition
2672    * Disable the TCP transport
2673    * Run four separate threads on the job queue to cut down on job lag
2674
26752006-01-28  jrandom
2676    * Removed a race that could show up in leaseSet requesting with the new
2677      tunnel building process
2678
26792006-01-25  jrandom
2680    * Run the peer profile coalescing/reorganization outside the job queue
2681      (on one of the timers), to cut down on some job queue congestion.  Also,
2682      trim old profiles while running, not just when starting up.
2683    * Slightly more sane intra-floodfill-node netDb activity (only flood new
2684      entries)
2685    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
2686      source of the bug is not yet addressed)
2687    * Better I2PSnark reconnection handling
2688    * Further cleanup in the new tunnel build process
2689    * Make sure we expire old participants properly
2690    * Remove much of the transient overload throttling (it wasn't using a good
2691      metric)
2692
26932006-01-25  dust
2694    * Fix IRC client proxy to use ISO-8859-1.
2695
26962006-01-22  jrandom
2697    * New tunnel build process - does not use the new crypto or new peer
2698      selection strategies.  However, it does drop the fallback tunnel
2699      procedure, except for tunnels who are configured to allow them, or for
2700      the exploratory pool during bootstrapping or after a catastrophic
2701      failure.  This new process prefers to fail rather than use too-short
2702      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
2703      it may expose more tunnel failures to the user.
2704    * Always prefer normal tunnels to fallback tunnels.
2705    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
2706      bar!)
2707    * Do all of the netDb entry writing in a separate thread, avoiding
2708      duplicates and batching them up.
2709
27102006-01-19  Complication
2711    * Explain better where eepsite's destkey can be found
2712
27132006-01-18  cervantes
2714    * Add title attributes to all external links in Syndie, so we can rollover
2715      and quickly see if it's worth clicking on.
2716    * Fixed a minor compiler warning.
2717
27182006-01-17  jrandom
2719    * First pass of the new tunnel creation crypto, specified in the new
2720      router/doc/tunnel-alt-creation.html (referenced in the current
2721      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
2722      than in the test code, but the code verifies the technical viability, so
2723      further scrutiny would be warranted.
2724
27252006-01-16  cervantes
2726    * Dragged I2P kicking and screaming into 2006 (Oops)
2727
27282006-01-14  cervantes
2729    * Removed entirely misleading memory status from the console summary.
2730       
27312006-01-13  cervantes
2732    * Further Syndie layout hardening and typeface balancing.
2733
2734* 2006-01-12  0.6.1.9 released
2735
27362006-01-12  jrandom
2737    * Only create the loadtest.log if requested to do so (thanks zzz!)
2738    * Make sure we cleanly take into consideration the appropriate data
2739      points when filtering out duplicate messages in the message validator,
2740      and report the right bloom filter false positives rate (not used for
2741      anything except debugging)
2742
27432006-01-12  cervantes
2744    * Syndie CSS tweaks to removed some redundant declarations, improve font
2745      scaling and layout robustness. Improved cross browser compatibility
2746      (in other words "kicked IE"). Tightened the look of the blog template
2747      a little.
2748
27492006-01-11  Complication
2750    * CSS comment fixes
2751
27522006-01-11  jrandom
2753    * Include the attachments/blogs/etc for comments on the blog view
2754    * Syndie HTML fixes (thanks cervantes!)
2755    * Make sure we fully reset the objects going into our cache before we
2756      reuse them (thanks zzz!)
2757
27582006-01-10  jrandom
2759    * Added the per-post list of attachments/blogs/etc to the blog view in
2760      Syndie (though this does not yet include comments or some further
2761      refinements)
2762    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
2763      removing the dox box (though also removes the restart functionality...)
2764    * Give the i2p.exe the correct java.library.path to support the systray
2765      dll (thanks Bobcat, Sugadude, anon!)
2766
27672006-01-09  jrandom
2768    * Removed a longstanding bug that had caused unnecessary router identity
2769      churn due to clock skew
2770    * Temporarily sanity check within the streaming lib for long pending
2771      writes
2772    * Added support for a blog-wide logo to Syndie, and automated the pushing
2773      of updated extended blog info data along side the metadata.
2774
27752006-01-09  jrandom
2776    * Bugfix for a rare SSU error (thanks cervantes!)
2777    * More progress on the blog interface, allowing customizable blog-wide
2778      links.
2779
27802006-01-08  jrandom
2781    * First pass of the new blog interface, though without much of the useful
2782      customization features (coming soon)
2783
27842006-01-04  jrandom
2785    * Rather than profile individual tunnels for throughput over their
2786      lifetime, do so at 1 minute intervals (allowing less frequently active
2787      tunnels to be more fairly measured).
2788    * Run the live tunnel load test across two tunnels at a time, by default.
2789      The load test runs for a random period from 90s to the tunnel lifetime,
2790      self paced.  This should help gathering data for profiling peers that
2791      are in exploratory tunnels.
2792
27932006-01-03  jrandom
2794    * Calculate the overall peer throughput across the 3 fastest one minute
2795      tunnel throughput values, rather than the single fastest throughput.
2796    * Degrade the profiled throughput data over time (cutting the profiled
2797      peaks in half once a day, on average)
2798    * Enable yet another new speed calculation for profiling peers, using the
2799      peak throughput from individual tunnels that a peer is participating in,
2800      rather than across all tunnels they are participating in.  This helps
2801      gather a fairer peer throughput measurement, since it won't allow a slow
2802      high capacity peer seem to have a higher throughput (pushing a little
2803      data across many tunnels at once, as opposed to lots of data across a
2804      single tunnel).  This degrades over time like the other.
2805    * Add basic OS/2 support to the jbigi code (though we do not bundle a
2806      precompiled OS/2 library)
2807
28082006-01-01  jrandom
2809    * Disable multifile torrent creation in I2PSnark's web UI for the moment
2810      (though it can still seed and participate in multifile swarms)
2811    * Enable a new speed calculation for profiling peers, using their peak
2812      1 minute average tunnel throughput as their speed.
2813
28142005-12-31  jrandom
2815    * Include a simple torrent creator in the I2PSnark web UI
2816    * Further streaming lib closing improvements
2817    * Refactored the load test components to run off live tunnels (though,
2818      still not safe for normal/anonymous load testing)
2819
28202005-12-30  jrandom
2821    * Close streams more gracefully
2822
28232005-12-30  jrandom
2824    * Small streaming lib bugfixes for the modified timeouts
2825    * Minor Syndie/Sucker RSS html fix
2826    * Small synchronization fix in I2PSnark (thanks fsm!)
2827
28282005-12-30  jrandom
2829    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
2830      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
2831      some distros (e.g. mandriva)
2832
28332005-12-29  jrandom
2834    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
2835      actually correct
2836
28372005-12-27  jrandom
2838    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
2839      the clock is too skewed to do anything useful (check the year and month,
2840      not just the hour and minute).
2841    * Fixed the read/write timeouts in the streaming lib (so that it actually
2842      honors them now)
2843    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
2844      torrent closing)
2845    * Handle an oddball tunnel creation failure (thanks Xunk)
2846
28472005-12-26  Complication
2848    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
2849    * HTML readability cosmetics on "Peers" page
2850
2851* 2005-12-22  0.6.1.8 released
2852
28532005-12-22  jrandom
2854    * Bundle the standalone I2PSnark launcher in the installer and update
2855      process (launch as "java -jar launch-i2psnark.jar", viewing the
2856      interface on http://localhost:8002/)
2857    * Don't autostart swarming torrents by default so that you can run a
2858      standalone I2PSnark from the I2P install dir and not have the embedded
2859      I2PSnark autolaunch the torrents that the standalone instance is running
2860    * Fixed a rare streaming lib bug that could let a blocking call wait
2861      forever.
2862
28632005-12-22  jrandom
2864    * Cleaned up some buffer synchronization issues in I2PSnark that could
2865      cause blockage.
2866
28672005-12-21  jrandom
2868    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
2869      behavior)
2870    * Fixed the I2PSnark bug that would lose track of live peers
2871
28722005-12-20  jrandom
2873    * Enabled the control in I2PSnark to toggle whether torrents should be
2874      started automatically or not
2875    * Hopefully finished the last hook to close down torrents completely when
2876      they're stopped.
2877
28782005-12-19  jrandom
2879    * Fix for old Syndie blog bookmarks (thanks Complication!)
2880    * Fix for I2PSnark to accept incoming connections again (oops)
2881    * Randomize the order that peers from the tracker are contacted
2882
28832005-12-19  jrandom
2884    * I2PSnark logging, disconnect old inactive peers rather than new ones,
2885      memory usage reduction, better OOM handling, and a shared connection
2886      acceptor.
2887    * Cleaned up the Syndie blog page and the resulting filters (viewing a
2888      blog from the blog page shows threads started by the selected author,
2889      not those that they merely participate in)
2890
28912005-12-18  jrandom
2892    * Added a standalone runner for the I2PSnark web ui (build with the
2893      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
2894      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
2895    * Further I2PSnark error handling
2896
28972005-12-17  jrandom
2898    * Let multiuser accounts authorize themselves to access the remote
2899      functionality again (thanks Ch0Hag!)
2900    * Adjust the JVM heap size to 128MB for new installs (existing users can
2901      accomplish this by editing wrapper.config, adding the line
2902      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
2903      of the router).  This is relevent for heavy usage of I2PSnark in the
2904      router console.
2905
29062005-12-17  jrandom
2907    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
2908      'piece' sizes grow larger than before.
2909
29102005-12-16  jrandom
2911    * Added some I2PSnark sanity checks, an OOMListener when running
2912      standalone, and a guard against keeping memory tied up indefinitely.
2913    * Sanity check on the watchdog (thanks zzz!)
2914    * Handle invalid HTTP requests in I2PTunnel a little better
2915
29162005-12-16  jrandom
2917    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
2918      properly (thanks Complication!)
2919    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
2920      b0rking in the DirMonitor, etc)
2921
29222005-12-16  jrandom
2923    * Try to run a torrent in readonly mode if we can't write to the file, and
2924      handle failures a little more gracefully (thanks polecat!)
2925
29262005-12-16  jrandom
2927    * Refuse torrents with too many files (128), avoiding ulimit errors.
2928    * Remove an fd leak in I2PSnark
2929    * Further I2PSnark web UI cleanup
2930
29312005-12-15  jrandom
2932    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
2933
29342005-12-15  jrandom
2935    * Added multitorrent support to I2PSnark, accessible currently by running
2936      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
2937      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
2938      their data in that directory as well.  Removing the .torrent file stops
2939      participation, and it is currently set to seed indefinitely.  Completion
2940      is logged to the logger and standard output, with further UI interaction
2941      left to the (work in progress) web UI.
2942
29432005-12-14  jrandom
2944    * Fix to drop peer references when we shitlist people again (thanks zzz!)
2945    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
2946      (thanks Complication!)
2947
29482005-12-13  zzz
2949    * Don't test tunnels expiring within 90 seconds
2950    * Defer Test Tunnel jobs if job lag too large
2951    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
2952      job lag for tunnel build backoff, allowing for more agile handling
2953      (since the stat is only updated once a minute)
2954    * Use tunnel length override if all tunnels are expiring within one
2955      minute.
2956
29572005-12-13  jrandom
2958    * Fixed I2PSnark's handling of some torrent files to deal with those
2959      created by Azureus and I2PRufus (it didn't know how to deal with
2960      additional meta info, such as path.utf-8 or name.utf-8).
2961
29622005-12-09  zzz
2963    * Create different strategies for exploratory tunnels (which are difficult
2964      to create) and client tunnels (which are much easier)
2965    * Gradually increase number of parallel build attempts as tunnel expiry
2966      nears.
2967    * Temporarily shorten attempted build tunnel length if builds using
2968      configured tunnel length are unsuccessful
2969    * React more aggressively to tunnel failure than routine tunnel
2970      replacement
2971    * Make tunnel creation times randomized - there is existing code to
2972      randomize the tunnels but it isn't effective due to the tunnel creation
2973      strategy. Currently, most tunnels get built all at once, at about 2 1/2
2974      to 3 minutes before expiration. The patch fixes this by fixing the
2975      randomization, and by changing the overlap time (with old tunnels) to a
2976      range of 2 to 4 minutes.
2977    * Reduce number of excess tunnels. Lots of excess tunnels get created due
2978      to overlapping calls. Just about anything generated a call which could
2979      build many tunnels all at once, even if tunnel building was already in
2980      process.
2981    * Miscellaneous router console enhancements
2982
29832005-12-08  jrandom
2984    * Minor bugfix in SSU for dealing with corrupt packets
2985    * Added some hooks for load testing
2986
29872005-12-07  jrandom
2988    * Added a first pass at a blog view in Syndie
2989
29902005-12-07  jrandom
2991    * Expand the thread we're viewing to its leaf
2992    * Bugfix on intraday ordering (children are always newer than parents)
2993
29942005-12-05  jrandom
2995    * Added an RDF and XML thread export to Syndie, reachable at
2996      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
2997      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
2998      displays all threads.
2999
30002005-12-04  TLorD
3001    * Patch for the C SAM library to null terminate strings on copy (thanks!)
3002
30032005-12-04  jrandom
3004    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
3005    * Always include ourselves in the favorite authors (since we don't
3006      bookmark ourselves)
3007
30082005-12-03  jrandom
3009    * Use newgroup-like tags by default in Syndie's interface
3010
30112005-12-03  jrandom
3012    * Added support for a 'most recent posts' view that CofE requested, which
3013      includes the ability to filter by age (e.g. posts by your favorite
3014      authors in the last 5 days).
3015
30162005-12-03  jrandom
3017    * Adjusted Syndie to use the threaded view that cervantes suggested, which
3018      displays a a single thread path at a time - from root to leaf - rather
3019      than a depth first traversal.
3020
30212005-12-03  jrandom
3022    * Package up a standalone Syndie install into a "syndie-standalone.zip",
3023      buildable with "ant syndie".  It extracts into ./syndie/, launches with
3024      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
3025      running a single user Syndie instance (by default).  It also creates a
3026      default subscription to syndiemedia without any anonymity (using no
3027      proxy).  Upgrades can be done by just replacing the syndie.war with the
3028      one from I2P.
3029
3030* 2005-12-01  0.6.1.7 released
3031
30322005-12-01  jrandom
3033    * Add a new criteria to the tunnel join throttle, backing off people if we
3034      are failing to talk to our peers more than usual.
3035
30362005-11-30  jrandom
3037    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
3038      new commons-logging-api.jar to commons-logging.jar, which it replaces.
3039      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
3040      separate jdom or rome, as they're inside syndie.war.
3041
30422005-11-30  jrandom
3043    * Don't let the TCP transport alone shitlist a peer, since other
3044      transports may be working.  Also display whether TCP connections are
3045      inbound or outbound on the peers page.
3046    * Fixed some substantial bugs in the SSU introducers where we wouldn't
3047      talk to anyone who didn't expose an IP (even if they had introducers),
3048      among other goofy things.
3049    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
3050      rather than sending one a packet at 3s, then another a packet at 6s,
3051      and a third a packet at 9s.
3052    * Fixed Syndie attachments (oops)
3053
30542005-11-29  zzz
3055    * Added a link to orion's jump page on the 'key not found' error page.
3056
30572005-11-29  jrandom
3058    * Further Syndie UI cleanup
3059    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
3060      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
3061      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
3062      will be removed as soon as its integrated into Jetty.  This patch allows
3063      posting content in various character sets.
3064      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
3065    * Upgraded new installs to the latest stable jetty (5.1.6), though this
3066      isn't pushed as part of the update yet, as there aren't any critical
3067      bugs.
3068
30692005-11-29  jrandom
3070    * Added back in the OSX jbigi, which was accidentally removed a few revs
3071      back (thanks for the bug report stoerte!)  New installs will get the
3072      full jbigi, or you can pull the jbigi.jar from CVS by going to
3073      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
3074      and clicking on the first "download" link, saving that jbigi.jar to
3075      lib/jbigi.jar in your I2P installation directory.  After restarting your
3076      router, it should load up fine.
3077
30782005-11-27  jrandom
3079    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
3080      because firefox [and others?] delay rendering until they fetch the css).
3081    * Make sure we fire the shutdown tasks when regenerating a new identity
3082      (thanks picsou!)
3083    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
3084    * Don't drop SSU sessions if they're still transmitting data successfully,
3085      even if there are transmission failures
3086    * Adjusted the time summarization to display hours after 119m, not 90m
3087    * Further EepGet cleanup (grr)
3088
3089* 2005-11-26 0.6.1.6 released
3090
30912005-11-26  jrandom
3092    * Update the sorting in Syndie to consider children 'newer' than parents,
3093      even if they have the same message ID (duh)
3094    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
3095    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
3096    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
3097      better)
3098
30992005-11-26  jrandom
3100    * Be more explicit about what messages we will handle through a client
3101      tunnel, and how we will handle them.  This cuts off a set of attacks
3102      that an active adversary could mount, though they're probably nonobvious
3103      and would require at least some sophistication.
3104
31052005-11-26  Raccoon23
3106    * Added support for 'dynamic keys' mode, where the router creates a new
3107      router identity whenever it detects a substantial change in its public
3108      address (read: SSU IP or port).  This only offers minimal additional
3109      protection against trivial attackers, but should provide functional
3110      improvement for people who have periodic IP changes, since their new
3111      router address would not be shitlisted while their old one would be.
3112    * Added further infrastructure for restricted route operation, but its use
3113      is not recommended.
3114
31152005-11-25  jrandom
3116    * Further Syndie UI cleanups
3117    * Logging cleanup
3118    * Fixed link to fproxy.tino.i2p (thanks zzz!)
3119
31202005-11-25  jrandom
3121    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
3122    * Cleaned up the syndie threaded display to show the last updated date for
3123      a subthread, and to highlight threads updated in the last two days.
3124
31252005-11-24  jrandom
3126    * Fix to save syndication settings in Syndie (thanks spaetz!)
3127
31282005-11-23  jrandom
3129    * Removed spurious streaming lib RTO increase (it wasn't helpful)
3130    * Streamlined the tunnel batching to schedule batch transmissions more
3131      appropriately.
3132    * Default tunnel pool variance to 2 +0-1 hops
3133
31342005-11-21  jrandom
3135    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
3136      within I2PTunnel.
3137    * Increase the maximum SSU retransmission timeout to accomodate slower or
3138      more congested links (though SSU's RTO calculation will usually use a
3139      much lower timeout)
3140    * Moved the streaming lib timed events off the main timer queues and onto
3141      a streaming lib specific set of timer queues.  Streaming lib timed
3142      events are more likely to have lock contention on the I2CP socket while
3143      other timed events in the router are (largely) independent.
3144    * Fixed a case sensitive lookup bug (thanks tino!)
3145    * Syndie cleanup - new edit form on the preview page, and fixed some blog
3146      links (thanks tino!)
3147
31482005-11-19  jrandom
3149    * Implemented a trivial pure java PMTU backoff strategy, switching between
3150      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
3151    * Fixed new user registration in Syndie (thanks Complication!)
3152
31532005-11-17  jrandom
3154    * More cautious file handling in Syndie
3155
31562005-11-16  jrandom
3157    * More aggressive I2PTunnel content encoding munging to work around some
3158      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
3159      even when only identity is specified, etc).  I2PTunnelHTTPServer now
3160      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
3161      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
3162      or X-Accept-encoding headers.  Eepsite operators who do not know to
3163      check for X-Accept-encoding will simply use the identity encoding.
3164
3165* 2005-11-15  0.6.1.5 released
3166
31672005-11-14  jrandom
3168    * Migrate to the new Syndie interface
3169
31702005-11-11  jrandom
3171    * Add filtering threads by author to Syndie, populated with authors in the
3172      user's addressbook
3173    * When creating the default user, add
3174      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
3175      configured to automatically pull updates.  (what other archives should
3176      be included?)
3177    * Tiny servlet to help dole out the new routerconsole themes, and bundle
3178      the installer/resources/themes/** into ./docs/themes/** on both install
3179      and update.
3180
31812005-11-11  cervantes
3182    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
3183      being progressively rolled out to other sections at later dates.
3184      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
3185      layout and styling.
3186    * Implemented console themes. Users can create their own themes by
3187      creating css files in: {i2pdir}/docs/themes/console/{themename}/
3188      and activating it using the routerconsole.theme={themename} advanced
3189      config property. Look at the example incomplete "defCon1" theme.
3190      Note: This is very much a work in progress. Folks might want to hold-off
3191      creating their own skins until the markup has solidified.
3192    * Added "routerconsole.javascript.disabled=true" to disable console
3193      client-side scripting and "routerconsole.css.disabled=true" to remove
3194      css styling (only rolled out in the i2ptunnel interface currently)
3195    * Fixed long standing bug with i2ptunnel client and server edit screens
3196      where tunnel count and depth properties would fail to save. Added
3197      backup quantity and variance configuration options.
3198    * Added basic accessibility support (key shortcuts, linear markup, alt and
3199      title information and form labels).
3200    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
3201
32022005-11-11  jrandom
3203    * Default Syndie to single user mode, and automatically log into a default
3204      user account (additional accounts can be logged into with the 'switch'
3205      or login pages, and new accounts can be created with the register page).
3206    * Disable the 'automated' column on the Syndie addressbook unless the user
3207      is appropriately authorized (good idea Polecat!)
3208
32092005-11-10  jrandom
3210    * First pass to a new threaded Syndie interface, which isn't enabled by
3211      default, as its not done yet.
3212
32132005-11-06  jrandom
3214    * Include SSU establishment failure in the peer profile as a commError,
3215      as we do for TCP establishment failures.
3216    * Don't throttle the initial transmission of a message because of ongoing
3217      retransmissions to a peer, since the initial transmission of a message
3218      is more valuable than a retransmission (since it has less latency).
3219    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
3220
32212005-11-05  jrandom
3222    * Include the most recent ACKs with packets, rather than only sending an
3223      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
3224      increasing sequence numbers, while each message ID in SSU is random, so
3225      we don't get the benefit of later ACKs implicitly ACKing earlier
3226      messages.
3227    * Reduced the max retransmission timeout for SSU
3228    * Don't try to send messages queued up for a long time waiting for
3229      establishment.
3230
32312005-11-05  dust
3232    * Fix sucker to delete its temporary files.
3233    * Improve sucker's sml output some.
3234    * Fix Exception in SMLParser for weird sml.
3235
32362005-11-03  zzz
3237    * Added a new error page to the eepproxy to differentiate the full 60
3238      second timeout from the immediate "I don't know this base64" failure.
3239
32402005-11-01  jrandom
3241    * Added a few more css elements (thanks identiguy!)
3242
32432005-10-31  jrandom
3244    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
3245    * Removed a potentially infinitely recursive call (oops)
3246
32472005-10-30  dust
3248    * Merge sucker into syndie with a rssimport.jsp page.
3249    * Add getContentType() to EepGet.
3250    * Make chunked transfer work (better) with EepGet.
3251    * Do replaceAll("<","&lt;") for logs.
3252
3253* 2005-10-29  0.6.1.4 released
3254
32552005-10-29  jrandom
3256    * Improved the bandwidth throtting on tunnel participation, especially for
3257      low bandwidth peers.
3258    * Improved failure handling in SSU with proactive reestablishment of
3259      failing idle peers, and rather than shitlisting a peer who failed too
3260      much, drop the SSU session and allow a new attempt (which, if it fails,
3261      will cause a shitlisting)
3262    * Clarify the cause of the shitlist on the profiles page, and include
3263      bandwidth limiter info at the bottom of the peers page.
3264
32652005-10-26  jrandom
3266    * In Syndie, propogate the subject and tags in a reply, and show the parent
3267      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
3268    * Streamline some netDb query handling to run outside the jobqueue -
3269      which means they'll run on the particular SSU thread that handles the
3270      message.  This should help out heavily loaded netDb peers.
3271
32722005-10-25  jrandom
3273    * Defer netDb searches for newly referenced peers until we actually want
3274      them
3275    * Ignore netDb references to peers on our shitlist
3276    * Set the timeout for end to end client messages to the max delay after
3277      finding the leaseSet, so we don't have as many expired messages floating
3278      around.
3279    * Add a floor to the streaming lib window size
3280    * When we need to send a streaming lib ACK, try to retransmit one of the
3281      unacked packets instead (with updated ACK/NACK fields, of course).  The
3282      bandwidth cost of an unnecessary retransmission should be minor as
3283      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
3284      the probability of a necessary retransmission.
3285    * Adjust the streaming lib cwin algorithm to allow growth after a full
3286      cwin messages if the rtt is trending downwards.  If it is not, use the
3287      existing algorithm.
3288    * Increased the maximum rto size in the streaming lib.
3289    * Load balancing bugfix on end to end messages to distribute across
3290      tunnels more evenly.
3291
32922005-10-22  jrandom
3293    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
3294      ./prngseed.rnd (if they exist), and reseeding it with data out of
3295      various crypto operations (unused bits in a DH exchange, intermediary
3296      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
3297      The Fortuna implementation under gnu.crypto.prng has been modified to
3298      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
3299      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
3300      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
3301      wrapper around it is, of course, public domain.
3302
33032005-10-20  dust
3304    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
3305      always shared. (thx for info Ragnarok)
3306    * Fix crash in Sucker with some bad html.
3307
33082005-10-20  jrandom
3309    * Workaround a bug in GCJ's Calendar implementation
3310    * Propery throw an exception in the streaming lib if we try to write to a
3311      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
3312      GregorK!)
3313
33142005-10-19  jrandom
3315    * Ported the snark bittorrent client to I2P such that it is compatible
3316      with i2p-bt and azneti2p.  For usage information, grab an update and run
3317      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
3318      but adding in support would be fairly easy (see PeerAcceptor.java:49)
3319    * Don't allow leaseSets expiring too far in the future (thanks postman)
3320
33212005-10-19  jrandom
3322    * Bugfix for the auto-update code to handle different usage patterns
3323    * Decreased the addressbook recheck frequency to once every 12 hours
3324      instead of hourly.
3325    * Handle dynamically changing the HMAC size (again, unless your nym is
3326      toad or jrandom, ignore this ;)
3327    * Cleaned up some synchronization/locking code
3328
33292005-10-17  dust
3330    * Exchange the remaining URL with EepGet in Sucker.
3331    * Allow /TOPIC irc command.
3332
33332005-10-17  jrandom
3334    * Allow an env prop to configure whether we want to use the backwards
3335      compatible (but not standards compliant) HMAC-MD5, or whether we want
3336      to use the not-backwards compatible (but standards compliant) one.  No
3337      one should touch this setting, unless your name is toad or jrandom ;)
3338    * Added some new dummy facades
3339    * Be more aggressive on loading up the router.config before building the
3340      router context
3341    * Added new hooks for apps to deal with previously undefined I2NP message
3342      types without having to modify any code.
3343    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
3344
33452005-10-14  jrandom
3346    * More explicit filter for linux/PPC building (thanks anon!)
3347    * Fixed Syndie's Sucker to not explicitly reference something only found
3348      in sun's JVM (thanks cervantes!)
3349    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
3350
3351* 2005-10-14  0.6.1.3 released
3352
33532005-10-14  jrandom
3354    * Added a key explaining peers.jsp a bit (thanks tethra!)
3355
33562005-10-13  dust
3357    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
3358      then be injected into Syndie with the Syndie CLI.
3359    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
3360      RSS/Atom parsing.
3361
33622005-10-13  jrandom
3363    * SSU retransmission choke bugfix (== != !=)
3364    * Include initial transmissions in the retransmission choke, so that
3365      if we are already retransmitting a message, we won't send anything
3366      to that peer other than that message (or ACKs, if necessary)
3367
33682005-10-12  jrandom
3369    * Choke SSU retransmissions to a peer while there is already a
3370      retransmission in flight to them.  This currently lets other initial
3371      transmissions through, since packet loss is often sporadic, but maybe
3372      this should block initial transmissions as well?
3373    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
3374    * Filter QUIT messages in the I2PTunnelIRCClient proxy
3375
33762005-10-11  jrandom
3377    * Piggyback the SSU partial ACKs with data packets.  This is backwards
3378      compatible.
3379    * Syndie RSS renderer bugfix, plus now include the full entry instead of
3380      just the blurb before the cut.
3381
33822005-10-11  jrandom
3383    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
3384      yet piggybacked).  This is backwards compatible.
3385    * SML parser cleanup in Syndie
3386
33872005-10-10  dust
3388    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
3389      outbound IRC commands for anonymity and security purposes, removing all
3390      CTCP messages except ACTION, as well as stripping the hostname from the
3391      USER message (while leaving the nick and 'full name').  The IRC proxy
3392      doesn't use this by default, but you can enable it by creating a new
3393      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
3394      to "ircclient" in i2ptunnel.config.
3395
33962005-10-10  jrandom
3397    * I2PTunnel http client config cleanup and stats
3398    * Minor SSU congestion tweaks and stats
3399    * Reduced netDb exploration period
3400
34012005-10-09  jrandom
3402    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
3403      java -jar lib/syndie.jar
3404    * Beginnings of the Syndie logging cleanup
3405    * Delete corrupt Syndie posts
3406
34072005-10-09  jrandom
3408    * Now that the streaming lib works reasonably, set the default inactivity
3409      event to send a 0 byte keepalive payload, rather than disconnecting the
3410      stream.  This should cut the irc netsplits and help out with other long
3411      lived streams.  The default timeout is now less than the old timeout as
3412      well, so the keepalive will be sent before earlier builds fire their
3413      fatal timeouts.
3414
34152005-10-08  jrandom
3416    * Use the OS clock for stat timing, since it doesn't jump around (though
3417      still use the NTP'ed clock for display)
3418    * Added new DH stats
3419
3420* 2005-10-07  0.6.1.2 released
3421
34222005-10-07  jrandom
3423    * Include the 1 second bandwidth usage on the console rather than the
3424      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
3425      issues.
3426
34272005-10-07  jrandom
3428    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
3429      HTTP response quicker, and initialize the streaming lib's cwin more
3430      carefully.
3431    * Added a small web UI to the new Syndie scheduled updater.  If you log in
3432      as a user authorized to use the remote archive funtionality, you can
3433      request remote archives in your address book to be automatically pulled
3434      down by checking the "scheduled?" checkbox.
3435
34362005-10-05  jrandom
3437    * Allow the first few packets in the stream to fill in their IDs during
3438      handshake (thanks cervantes, Complication, et al!)  This should fix at
3439      least some of the intermittent HTTP POST issues.
3440
34412005-10-04  jrandom
3442    * Syndie patch for single user remote archives (thanks nickless_head!)
3443    * Handle an invalid netDb store (thanks Complication!)
3444
34452005-10-04  jrandom
3446    * Further reduction in unnecessary streaming packets.
3447
34482005-10-03  jrandom
3449    * Properly reject unroutable IP addresses *cough*
3450
34512005-10-03  rangarok
3452    * Changed default update delay to twelve hours, and enforced a minimum
3453      delay of one hour.
3454
34552005-10-03  ragnarok
3456    * Implemented a Syndie auto-updater.  It will automatically pull new posts
3457      from selected syndie archives.  To try it out, add
3458      syndie.updateArchives=<comma seperated list of syndie archives> to your
3459      syndie.config.  Archives must be specified as the full url to archive.txt
3460      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
3461      for new posts every hour.  This can be modified by setting
3462      syndie.updateDelay=<delay in hours> also in syndie.config.
3463
3464* 2005-10-01  0.6.1.1 released
3465
34662005-09-30  ragnarok
3467    * Implemented conditional get for syndie remote archive imports.
3468
34692005-09-30  jrandom
3470    * Killed three more streaming lib bugs, one of which caused excess packets
3471      to be transmitted (dupacking dupacks), one that was the root of many of
3472      the old hung streams (shrinking highest received), and another that was
3473      releasing data too soon.
3474
34752005-09-30  jrandom
3476    * Only allow autodetection of our IP address if we haven't received an
3477      inbound connection in the last two minutes.
3478    * Increase the default max streaming resends to 8 from 5 (and down from
3479      the earlier 10)
3480
34812005-09-29  ragnarok
3482    * Export petnames from syndie to the router's petname db instead of
3483      userhosts.txt.
3484
34852005-09-29  jrandom
3486    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
3487      reseeding - useful on OSes that make it hard to create dot files. 
3488      Thanks Complication (and anon)!
3489    * Fixed the installer version string (thanks Frontier!)
3490    * Added cleaner rejection of invalid IP addresses, shitlist those who send
3491      us invalid IP addresses, verify again that we are not sending invalid IP
3492      addresses, and log an error if it happens. (Thanks Complication, ptm,
3493      and adab!)
3494
3495* 2005-09-29  0.6.1 released
3496
34972005-09-29  jrandom
3498    * Let syndie users modify their metadata.
3499    * Reseed the router on startup if there aren't enough peer references
3500      known locally.  This can be disabled by creating the file .i2pnoreseed
3501      in your home directory, and the existing detection and reseed handling
3502      on the web interface is unchanged.
3503
35042005-09-28  jrandom
3505    * Fix for at least some (all?) of the wrong stream errors in the streaming
3506      lib
3507
35082005-09-27  jrandom
3509    * Properly suggest filenames for attachments in Syndie (thanks all!)
3510    * Fixed the Syndie authorization scheme for single user vs. multiuser
3511
35122005-09-27  jrandom
3513    * I2PTunnel bugfix (thanks Complication!)
3514    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
3515      instead of k/cwin)
3516    * Limit the number of inbound SSU sessions being built at once (using
3517      half of the i2np.udp.maxConcurrentEstablish config prop)
3518    * Don't shitlist on a message send failure alone (unless there aren't any
3519      common transports).
3520    * More careful bandwidth bursting
3521
35222005-09-26  jrandom
3523    * Reworded the SSU introductions config section (thanks duck!)
3524    * Force identity content encoding for I2PTunnel httpserver requests
3525      (thanks redzara!)
3526    * Further x-i2p-gzip bugfixes for the end of streams
3527    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
3528      I2P's performance at 3KBps is another issue)
3529    * Cleaned up some streaming lib structures
3530
35312005-09-25  jrandom
3532    * Allow reseeding on the console if the netDb knows less than 30 peers,
3533      rather than less than 10 (without internet connectivity, we keep the
3534      last 15 router references)
3535    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
3536      more aggressively.
3537    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
3538    * Reduced the default maximum number of streaming lib resends of a packet
3539      (10 retransmits is a bit much with a reasonable RTO)
3540
35412005-09-25  Complication
3542    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
3543      conflict resolution page if the i2paddresshelper parameter differs from
3544      an existing name to destination mapping.
3545
35462005-09-25  jrandom
3547    * Fix a long standing streaming lib bug (in the inactivity detection code)
3548    * Improved handling of initial streaming lib packet retransmissions to
3549      kill the "lost first packet" bug (where a page shows up with the first
3550      few KB missing)
3551    * Add support for initial window sizes greater than 1 - useful for
3552      eepsites to transmit e.g. 4 packets full of data along with the initial
3553      ACK, thereby cutting down on the rtt latency.  The congestion window
3554      size can and does still shrink down to 1 packet though.
3555    * Adjusted the streaming lib retransmission calculation algorithm to be
3556      more TCP-like.
3557
35582005-09-21  redzara
3559    * Use ISO-8859-1 for the susidns xml
3560
35612005-09-21  susi
3562    * Bugfix in susidns for deleting entries
3563
35642005-09-21  jrandom
3565    * Add support for HTTP POST to EepGet
3566    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
3567      put in that URL.
3568
35692005-09-18  jrandom
3570    * Added support for pure 64bit linux with jbigi and the java service
3571      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
3572      et al for help testing!
3573    * UI cleanup in Syndie (thanks gloin and bar!)
3574
35752005-09-18  Ragnarok
3576    * Made MetaNamingService the default naming service.
3577
35782005-09-17  Ragnarok
3579    * Implemented a naming service using Syndie's petname db.  It's not enabled
3580      by default, but you can try it out by setting
3581      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
3582      router.config.
3583    * Implemented a meta naming service that will first lookup names in the
3584      PetNameNamingService then fallback on the HostTxtNamingService.  Which
3585      naming services are checked and in which order is specified by
3586      i2p.nameservicelist.  This will probably become the default naming service
3587      so please help test it out by setting
3588      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
3589     
3590* 2005-09-17  0.6.0.6 released
3591
35922005-09-17  jrandom
3593    * Clean up syndie a bit more and bundle a default introductory post with
3594      both new installs and updates.
3595    * Typo fixes on the console (thanks bar!)
3596
35972005-09-17  jrandom
3598    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
3599      steady state rate, plus a new limit on how fast we transfer when
3600      bursting.  This is different from the old "burst as fast as possible
3601      until we're out of tokens" policy, and should help those with congested
3602      networks.  See /config.jsp to manage this rate.
3603    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
3604      old posts just didn't show up).
3605    * Log properly in EepPost
3606
36072005-09-17  jrandom
3608    * Added the natively compiled jbigi and patched java service wrapper for
3609      OS X.  Thanks Bill Dorsey for letting me use your machine!
3610    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
3611      don't bundle the binutils necessary (and there'd be a naming conflict
3612      if we did).
3613    * Added 'single user' functionality to syndie - if the single user
3614      checkbox on the admin page is checked, all users are allowed to control
3615      the instance and sync up with remote syndie nodes.
3616    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
3617      debugged.
3618
36192005-09-16  jrandom
3620    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
3621      you have i2np.udp.allowLocal=true defined - useful for private nets)
3622
36232005-09-16  jrandom
3624    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
3625      (just specify the spoofed host as an empty string), allowing them to
3626      honor x-i2p-gzip encoding.
3627    * Let windows users build the exes too (thanks bar and redzara!)
3628    * Allow I2PTunnel httpserver operators to disable gzip compression on
3629      individual tunnels with the i2ptunnel.gzip=false client option
3630      (good idea susi!)
3631
36322005-09-16  jrandom
3633    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
3634    * Added runplain.sh for *nix/osx users having problems using the java
3635      service wrapper (called from the install dir as: sh runplain.sh)
3636    * Bundle susidns and syndie, with links on the top nav
3637    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
3638      content-encoding (if offered), reducing the payload size before it
3639      reaches the streaming lib.  The existing compression is at the i2cp
3640      level, so we've been packetizing 4KB of uncompressed data and then
3641      compressing those messages, rather than compressing and then packetizing
3642      4KB of compressed data.  This should reduce the number of round trips
3643      to fetch web pages substantially.
3644    * Adjust the startup and timing of the addressbook so that susidns always
3645      has config to work off, and expose a method for susidns to tell it to
3646      reload its config and rerun.
3647
36482005-09-15  jrandom
3649    * Error handling for failed intro packets (thanks red.hand!)
3650    * More carefully verify intro addresses
3651
36522005-09-13  jrandom
3653    * More careful error handling with introductions (thanks dust!)
3654    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
3655    * Hide the shitlist on the summary so it doesn't confuse new users.
3656
36572005-09-12  comwiz
3658    * Migrated the router tests to junit
3659
36602005-09-12  jrandom
3661    * Removed guaranteed delivery mode entirely (so existing i2phex clients
3662      using it can get the benefits of mode=best_effort).  Guaranteed delivery
3663      is offered at the streaming lib level.
3664    * Improve the peer selection code for peer testing, as everyone now
3665      supports tests.
3666    * Give the watchdog its fangs - if it detects obscene job lag or if
3667      clients have been unable to get a leaseSet for more than 5 minutes,
3668      restart the router.  This was disabled a year ago due to spurious
3669      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
3670      cause of the spurious restarts should be gone.
3671
36722005-09-12  jrandom
3673    * Bugfix for skewed store which could kill a UDP thread (causing complete
3674      comm failure and eventual OOM)
3675
36762005-09-12  jrandom
3677    * More aggressively publish updated routerInfo.
3678    * Expose the flag to force SSU introductions on the router console
3679    * Don't give people the option to disable SNTP time sync, at least not
3680      through the router console, because there is no reason to disable it.
3681      No, not even if your OS is "ntp synced", because chances are, its not.
3682
36832005-09-10  jrandom
3684    * Test the router's reachability earlier and more aggressively
3685    * Use the low level bandwidth limiter's rates for the router console, and
3686      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
3687      the logger config, keep track of the 1 second transfer rates as the stat
3688      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
3689      behavior.
3690
36912005-09-09  jrandom
3692    * Added preliminary support for NAT hole punching through SSU introducers
3693    * Honor peer test results from peers that we have an SSU session with if
3694      those sessions are idle for 3 minutes or more.
3695
36962005-09-09  cervantes
3697    * New build due to change in build number :P (thanks ugha!)
3698
36992005-09-07  BarkerJr
3700    * HTML cleanup for the router console (thanks!)
3701
37022005-09-07  jrandom
3703    * Lay the foundation for 'client routers' - the ability for peers to opt
3704      out of participating in tunnels entirely due to firewall/NAT issues. 
3705      Individual routers have control over where those peers are used in
3706      tunnels - in outbound or inbound, exploratory or client tunnels, or
3707      none at all.  The defaults with this build are to simply act as before -
3708      placing everyone as potential participants in any tunnel.
3709    * Another part of the foundation includes the option for netDb
3710      participants to refuse to answer queries regarding peers who are marked
3711      as unreachable, though this too is disabled by default (meaning the
3712      routerInfo is retrievable from the netDb).
3713
37142005-09-05  jrandom
3715    * Expose the HTTP headers to EepGet status listeners
3716    * Handle DSA key failures properly (if the signature is not invertable, it
3717      is obviously invalid)
3718
37192005-09-04  jrandom
3720    * Don't persist peer profiles until we are shutting down, as the
3721      persistence process gobbles RAM and wall time.
3722    * Bugfix to allow you to check/uncheck the sharedClient setting on the
3723      I2PTunnel web interface (thanks BarkerJr!)
3724    * Be more careful when expiring a failed tunnel message fragment so we
3725      don't drop the data while attempting to read it.
3726
3727* 2005-09-02  0.6.0.5 released
3728
37292005-09-02  jrandom
3730    * Don't refuse to send a netDb store if the targetted peer has failed a
3731      bit (the value was an arbitrary amount).
3732    * Logging changes
3733
3734* 2005-09-01  0.6.0.4 released
3735
37362005-09-01  jrandom
3737    * Don't send out a netDb store of a router if it is more than a few hours
3738      old, even if someone asked us for it.
3739
37402005-08-31  jrandom
3741    * Don't publish leaseSets to the netDb if they will never be looked for -
3742      namely, if they are for destinations that only establish outbound
3743      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
3744      modified to tell the router that it doesn't need to publish their
3745      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
3746      to 'true').
3747    * Don't publish the top 10 peer rankings of each router in the netdb, as
3748      it isn't being watched right now.
3749
37502005-08-29  jrandom
3751    * Added the new test Floodfill netDb
3752
37532005-08-27  jrandom
3754    * Minor logging and optimization tweaks in the router and SDK
3755    * Use ISO-8859-1 in the XML files (thanks redzara!)
3756    * The consolePassword config property can now be used to bypass the router
3757      console's nonce checking, allowing CLI restarts
3758
37592005-08-24  jrandom
3760    * Catch errors with corrupt tunnel messages more gracefully (no need to
3761      kill the thread and cause an OOM...)
3762    * Don't skip shitlisted peers for netDb store messages, as they aren't
3763      necessarily shitlisted by other people (though they probably are).
3764    * Adjust the netDb store per-peer timeout based on each particular peer's
3765      profile (timeout = 4x their average netDb store response time)   
3766    * Don't republish leaseSets to *failed* peers - send them to peers who
3767      replied but just didn't know the value.
3768    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
3769      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
3770      sent entirely within the first streaming packet anyway, so this won't be
3771      a problem.
3772    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
3773      prevent any clients from accessing the server if the handlers get
3774      blocked by the streaming lib or other issues.
3775    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
3776      Unknown.
3777
37782005-08-23  jrandom
3779    * Removed the concept of "no bandwidth limit" - if none is specified, its
3780      16KBps in/out.
3781    * Include ack packets in the per-peer cwin throttle (they were part of the
3782      bandwidth limit though).
3783    * Tweak the SSU cwin operation to get more accurrate estimates under
3784      congestions.
3785    * SSU improvements to resend more efficiently.
3786    * Added a basic scheduler to eepget to fetch multiple files sequentially.
3787
3788* 2005-08-21  0.6.0.3 released
3789
37902005-08-21  jrandom
3791    * If we already have an established SSU session with the Charlie helping
3792      test us, cancel the test with the status of "unknown".
3793
37942005-08-17  jrandom
3795    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
3796      viability before agreeing to Alice's request.  This doesn't work with
3797      older SSU peer test builds, but is backwards compatible (older nodes
3798      won't ask newer nodes to participate in tests, and newer nodes won't
3799      ask older nodes to either).
3800
38012005-08-12  jrandom
3802    * Keep detailed stats on the peer testing, publishing the results in the
3803      netDb.
3804    * Don't overwrite the status with 'unknown' unless we haven't had a valid
3805      status in a while.
3806    * Make sure to avoid shitlisted peers for peer testing.
3807    * When we get an unknown result to a peer test, try again soon afterwards.
3808    * When a peer tells us that our address is different from what we expect,
3809      if we've done a recent peer test with a result of OK, fire off a peer
3810      test to make sure our IP/port is still valid.  If our test is old or the
3811      result was not OK, accept their suggestion, but queue up a peer test for
3812      later.
3813    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
3814      we monitor netDb store progress (to clear up the high netDb.storePeers
3815      stat)
3816
38172005-08-10  jrandom
3818    * Deployed the peer testing implementation to be run every few minutes on
3819      each router, as well as any time the user requests a test manually.  The
3820      tests do not reconfigure the ports at the moment, merely determine under
3821      what conditions the local router is reachable.  The status shown in the
3822      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
3823      differently for different peers, "ERR-Reject" if the router cannot
3824      receive unsolicited packets or the peer helping test could not find a 
3825      collaborator, "Unknown" if the test has not been run or the test
3826      participants were unreachable, or "OK" if the router can receive
3827      unsolicited connections and those connections use the same IP and port.
3828
3829* 2005-08-08  0.6.0.2 released
3830
38312005-08-08  jrandom
3832    * Add a configurable throttle to the number of concurrent outbound SSU
3833      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
3834      may help those with slow connections to get integrated at the start.
3835    * Further fixlets to the streaming lib
3836
38372005-08-07  Complication
3838    * Display the average clock skew for both SSU and TCP connections
3839
38402005-08-07  jrandom
3841    * Fixed the long standing streaming lib bug where we could lose the first
3842      packet on retransmission.
3843    * Avoid an NPE when a message expires on the SSU queue.
3844    * Adjust the streaming lib's window growth factor with an additional
3845      Vegas-esque congestion detection algorithm.
3846    * Removed an unnecessary SSU session drop
3847    * Reduced the MTU (until we get a working PMTU lib)
3848    * Deferr tunnel acceptance until we know how to reach the next hop,
3849      rejecting it if we can't find them in time.
3850    * If our netDb store of our leaseSet fails, give it a few seconds before
3851      republishing.
3852
3853* 2005-08-03  0.6.0.1 released
3854
38552005-08-03  jrandom
3856    * Backed out an inadvertant change to the netDb store redundancy factor.
3857    * Verify tunnel participant caching.
3858    * Logging cleanup
3859
38602005-08-01  duck
3861    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
3862
38632005-08-01  duck
3864    * Fix an addressbook NPE when a new hostname from the master addressbook
3865      didn't exist in the router addressbook.
3866    * Fix an addressbook bug which caused subscriptions not to be parsed at
3867      all. (Oops!)
3868
38692005-07-31  jrandom
3870    * Adjust the netDb search and store per peer timeouts to match the average
3871      measured per peer success times, rather than huge fixed values.
3872    * Optimized and reverified the netDb peer selection / retrieval process
3873      within the kbuckets.
3874    * Drop TCP connections that don't have any useful activity in 10 minutes.
3875    * If i2np.udp.fixedPort=true, never change the externally published port,
3876      even if we are autodetecting the IP address.
3877
3878* 2005-07-27  0.6 released
3879
38802005-07-27  jrandom
3881    * Enabled SSU as the default top priority transport, adjusting the
3882      config.jsp page accordingly.
3883    * Add verification fields to the SSU and TCP connection negotiation (not
3884      compatible with previous builds)
3885    * Enable the backwards incompatible tunnel crypto change as documented in
3886      tunnel-alt.html (have each hop encrypt the received IV before using it,
3887      then encrypt it again before sending it on)
3888    * Disable the I2CP encryption, leaving in place the end to end garlic
3889      encryption (another backwards incompatible change)
3890    * Adjust the protocol versions on the TCP and SSU transports so that they
3891      won't talk to older routers.
3892    * Fix up the config stats handling again
3893    * Fix a rare off-by-one in the SSU fragmentation
3894    * Reduce some unnecessary netDb resending by inluding the peers queried
3895      successfully in the store redundancy count.
3896
38972005-07-22  jrandom
3898    * Use the small thread pool for I2PTunnelHTTPServer (already used for
3899      I2PTunnelServer)
3900    * Minor memory churn reduction in I2CP
3901    * Small stats update
3902
39032005-07-21  jrandom
3904    * Fix in the SDK for a bug which would manifest itself as misrouted
3905      streaming packets when a destination has many concurrent streaming
3906      connections (thanks duck!)
3907    * No more "Graceful shutdown in -18140121441141s"
3908
39092005-07-20  jrandom
3910    * Allow the user to specify an external port # for SSU even if the external
3911      host isn't specified (thanks duck!)
3912
39132005-07-19  jrandom
3914    * Further preparation for removing I2CP crypto
3915    * Added some validation to the DH key agreement (thanks $anon)
3916    * Validate tunnel data message expirations (though not really a problem,
3917      since tunnels expire)
3918    * Minor PRNG threading cleanup
3919
39202005-07-15  cervantes
3921    * Added workaround for an odd win32 bug in the stats configuration console
3922      page which meant only the first checkbox selection was saved.
3923
39242005-07-15  Romster
3925    * Added per group selection toggles in the stats configuration console
3926      page.
3927
39282005-07-13  jrandom
3929    * Fixed a recently injected bug in the multitransport bidding which had
3930      allowed an essentially arbitrary choice of transports, rather than the
3931      properly ordered choice.
3932
39332005-07-13  jrandom
3934    * Fixed a long standing bug where we weren't properly comparing session
3935      tags but instead largely depending upon comparing their hashCode,
3936      causing intermittent decryption errors.
3937
39382005-07-12  jrandom
3939    * Add some data duplication to avoid a recently injected concurrency
3940      problem in the session tag manager (thanks redzara and romster).
3941
39422005-07-11  jrandom
3943    * Reduced the growth factor on the slow start and congestion avoidance for
3944      the streaming lib.
3945    * Adjusted some of the I2PTunnelServer threading to use a small pool of
3946      handlers, rather than launching off new threads which then immediately
3947      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
3948    * Don't persist session keys / session tags (not worth it, for now)
3949    * Added some detection and handling code for duplicate session tags being
3950      delivered (root cause still not addressed)
3951    * Make the PRNG's buffer size configurable (via the config property
3952      "i2p.prng.totalBufferSizeKB=4096")
3953    * Disable SSU flooding by default (duh)
3954    * Updates to the StreamSink apps for better throttling tests.
3955
39562005-07-05  jrandom
3957    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
3958      buffer, rather than the underlying PRNG's (likely small) one, which in
3959      turn reduces the frequency of recalcing.
3960    * More tuning to reduce temporary allocation churn
3961
39622005-07-04  jrandom
3963    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
3964      rather than the IV by itself, preventing an attack that would let
3965      colluding internal adversaries tag a message to determine that they are
3966      in the same tunnel.  Thanks dvorak for the catch!
3967    * Drop long inactive profiles on startup and shutdown
3968    * /configstats.jsp: web interface to pick what stats to log
3969    * Deliver more session tags to account for wider window sizes
3970    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
3971    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
3972    * UrlLauncher: adjust the browser selection order
3973    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
3974    * StreamSinkClient: add support for sending an unlimited amount of data
3975    * Migrate the tests out of the default build jars
3976
39772005-06-22  Comwiz
3978    * Migrate the core tests to junit
3979
39802005-05-25  duck
3981    * Fixed PRNG bug (bugzilla #107)
3982
39832005-05-01  jrandom
3984    * Added a substantial optimization to the AES engine by caching the
3985      prepared session keys (duh).
3986
39872005-05-01  jrandom
3988    * Cleaned up the peers page a bit more.
3989
39902005-04-30  jrandom
3991    * Added a small new page to the web console (/peers.jsp) which contains
3992      the peer connection information.  This will be cleaned up a lot more
3993      before 0.6 is out, but its a start.
3994
39952005-04-30  jrandom
3996    * Reduced some SimpleTimer churn
3997
39982005-04-29  jrandom
3999    * Reduce the peer profile stat coallesce overhead by inlining it with the
4000      reorganize.
4001    * Limit each transport to at most one address (any transport that requires
4002      multiple entry points can include those alternatives in the address).
4003
40042005-04-28  jrandom
4005    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
4006    * Add back the code to handle bids from multiple transports (though there
4007      is still only one transport enabled by default)
4008    * Adjust the router's queueing of outbound client messages when under
4009      heavy load by running the preparatory job in the client's I2CP handler
4010      thread, thereby blocking additional outbound messages when the router is
4011      hosed.
4012    * No need to validate or persist a netDb entry if we already have it
4013
40142005-04-25  smeghead
4015    * Added button to router console for manual update checks.
4016    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
4017      every time the form was submitted even if it hadn't changed.
4018
40192005-04-24  jrandom
4020    * Added a pool of PRNGs using a different synchronization technique,
4021      hopefully sufficient to work around IBM's PRNG bugs until we get our
4022      own Fortuna.
4023    * In the streaming lib, don't jack up the RTT on NACK, and have the window
4024      size bound the not-yet-ready messages to the peer, not the unacked
4025      message count (not sure yet whether this is worthwile).
4026    * Many additions to the messageHistory log.
4027    * Handle out of order tunnel fragment delivery (not an issue on the live
4028      net with TCP, but critical with UDP).
4029
4030* 2005-04-20  0.5.0.7 released
4031
40322005-04-20  jrandom
4033    * In the SDK, we don't actually need to block when we're sending a message
4034      as BestEffort (and these days, we're always sending BestEffort).
4035    * Pass out client messages in fewer (larger) steps.
4036    * Have the InNetMessagePool short circuit dispatch requests.
4037    * Have the message validator take into account expiration to cut down on
4038      false positives at high transfer rates.
4039    * Allow configuration of the probabalistic window size growth rate in the
4040      streaming lib's slow start and congestion avoidance phases, and default
4041      them to a more conservative value (2), rather than the previous value
4042      (1).
4043    * Reduce the ack delay in the streaming lib to 500ms
4044    * Honor choke requests in the streaming lib (only affects those getting
4045      insanely high transfer rates)
4046    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
4047      I2PTunnel client page (thanks maestro^!)
4048
40492005-04-17  sirup
4050    * Added the possibility for i2ptunnel client and httpclient instances to
4051      have their own i2p session (and hence, destination and tunnels).  By
4052      default, tunnels are shared, but that can be changed on the web
4053      interface or with the sharedClient config option in i2ptunnel.config.
4054
40552005-04-17  jrandom
4056    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
4057      this?  If not, I want to drop it (lots of tiny details with lots of
4058      duplicated semantics).
4059
40602005-04-17  zzz
4061    * Added new user-editable eepproxy error page templates.
4062
40632005-04-17  jrandom
4064    * Revamp the tunnel building throttles, fixing a situation where the
4065      rebuild may not recover, and defaulting it to unthrottled (users with
4066      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
4067      advanced router config)
4068
40692005-04-16  jrandom
4070    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
4071
40722005-04-12  jrandom
4073    * Make sure we don't get cached updates (thanks smeghead!)
4074    * Clear out the callback for the TestJob after it passes (only affects the
4075      job timing accounting)
4076
40772005-04-08  smeghead
4078    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
4079
40802005-04-08  smeghead
4081    * Security improvements to TrustedUpdate: signing and verification of the
4082      version string along with the data payload for signed update files
4083      (consequently the positions of the DSA signature and version string fields
4084      have been swapped in the spec for the update file's header); router will
4085      no longer perform a trusted update if the signed update's version is lower
4086      than or equal to the currently running router's version.
4087    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
4088    * Extended TrustedUpdate public API for use by third party applications.
4089
4090* 2005-04-06  0.5.0.6 released
4091
40922005-04-05  jrandom
4093    * Retry I2PTunnel startup if we are unable to build a socketManager for a
4094      client or httpclient tunnel.
4095    * Add some basic sanity checking on the I2CP settings (thanks duck!)
4096
40972005-04-05  jrandom
4098    * After a successfull netDb search for a leaseSet, republish it to all of
4099      the peers we have tried so far who did not give us the key (up to 10),
4100      rather than the old K closest (which may include peers who had given us
4101      the key)
4102    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
4103      republish it every 5 minutes, republish it every 3.  In addition, always
4104      republish as soon as the leaseSet changes (duh^2).
4105    * Minor fix for oddball startup race (thanks travis_bickle!)
4106    * Minor AES update to allow in-place decryption.
4107
41082005-04-03  jrandom
4109    * EepGet fix for open-ended HTTP fetches (such as the news.xml
4110      feeding the NewsFetcher)
4111
41122005-04-01  jrandom
4113    * Allow editing I2PTunnel server instances with five digit ports
4114      (thanks nickless_head!)
4115    * More NewsFetcher debugging for reported weirdness
4116
41172005-04-01  jrandom
4118    * Fix to check for missing news file (thanks smeghead!)
4119    * Added destination display CLI:
4120      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
4121    * Added destination display to the web interface (thanks pnspns)
4122    * Installed CIA backdoor
4123
4124* 2005-03-29  0.5.0.5 released
4125
41262005-03-29  jrandom
4127    * Decreased the initial RTT estimate to 10s to allow more retries.
4128    * Increased the default netDb store replication factor from 2 to 6 to take
4129      into consideration tunnel failures.
4130    * Address some statistical anonymity attacks against the netDb that could
4131      be mounted by an active internal adversary by only answering lookups for
4132      leaseSets we received through an unsolicited store.
4133    * Don't throttle lookup responses (we throttle enough elsewhere)
4134    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
4135      the file (thanks nickster!)
4136    * Updated the I2PTunnel HTML (thanks postman!)
4137    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
4138      which, if matched against the router.config "i2ptunnel.passphrase" value,
4139      skips the nonce check.  If the config prop doesn't exist or is blank, no
4140      passphrase is accepted.
4141    * Implemented HMAC-SHA256.
4142    * Enable the tunnel batching with a 500ms delay by default
4143    * Dropped compatability with 0.5.0.3 and earlier releases
4144
41452005-03-26  jrandom
4146    * Added some error handling and fairly safe to cache data to the streaming
4147      lib (good call Tom!)
4148
41492005-03-25  jrandom
4150    * Fixed up building dependencies for the routerconsole on some more
4151      aggressive compilers (thanks polecat!)
4152
4153* 2005-03-24  0.5.0.4 released
4154
41552005-03-23  jrandom
4156    * Added more intelligent version checking in news.xml, in case we have a
4157      version newer than the one specified.
4158
41592005-03-23  jrandom
4160    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
4161      cvsweb.cgi doesn't puke on us.
4162
41632005-03-23  Connelly
4164    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
4165      stream send data to not be sent if STREAM CLOSE is issued too fast.
4166
41672005-03-23  jrandom
4168    * Implemented the news fetch / update policy code, as configurated on
4169      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
4170      doesn't exist yet, on startup).  No action is taken however, though if
4171      the news.xml specifies that a new release is available, an option to
4172      update will be shown on the router console.
4173    * New initialNews.xml delivered with new installs, and moved news.xml out
4174      of the i2pwww module and into the i2p module so that we can bundle it
4175      within each update.
4176
41772005-03-23  jrandom
4178    * New /configupdate.jsp page for controlling the update / notification
4179      process, as well as various minor related updates.  Note that not all
4180      options are exposed yet, and the update detection code isn't in place
4181      in this commit - it currently says there is always an update available.
4182    * New EepGet component for reliable downloading, with a CLI exposed in
4183      java -cp lib/i2p.jar net.i2p.util.EepGet url
4184    * Added a default signing key to the TrustedUpdate component to be used
4185      for verifying updates.  This signing key can be authenticated via
4186      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
4187    * New public domain SHA1 implementation for the DSA code so that we can
4188      handle signing streams of arbitrary size without excess memory usage
4189      (thanks P.Verdy!)
4190    * Added some helpers to the TrustedUpdate to work off streams and to offer
4191      a minimal CLI:
4192          TrustedUpdate keygen pubKeyFile privKeyFile
4193          TrustedUpdate sign origFile signedFile privKeyFile
4194          TrustedUpdate verify signedFile
4195
41962005-03-22  smeghead
4197    * New TrustedUpdate component for signing/verifying files with a DSA
4198      signature.
4199
42002005-03-21  jrandom
4201    * Fixed the tunnel fragmentation handler to deal with multiple fragments
4202      in a single message properly (rather than release the buffer into the
4203      cache after processing the first one) (duh!)
4204    * Added the batching preprocessor which will bundle together multiple
4205      small messages inside a single tunnel message by delaying their delivery
4206      up to .5s, or whenever the pending data will fill a full message,
4207      whichever comes first.  This is disabled at the moment, since without the
4208      above bugfix widely deployed, lots and lots of messages would fail.
4209    * Within each tunnel pool, stick with a randomly selected peer for up to
4210      .5s before randomizing and selecting again, instead of randomizing the
4211      pool each time a tunnel is needed. 
4212
4213* 2005-03-18  0.5.0.3 released
4214
42152005-03-18  jrandom
4216    * Minor tweak to the timestamper to help reduce small skews
4217    * Adjust the stats published to include only the relevent ones
4218    * Only show the currently used speed calculation on the profile page
4219    * Allow the full max # resends to be sent, rather than piggybacking the
4220      RESET packet along side the final resend (duh)
4221    * Add irc.postman.i2p to the default list of IRC servers for new installs
4222    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
4223      backwards compatability for users running 0.5.0.2.
4224
42252005-03-18  jrandom
4226    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
4227    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
4228
42292005-03-17  jrandom
4230    * Update the old speed calculator and associated profile data points to
4231      use a non-tiered moving average of the tunnel test time, avoiding the
4232      freshness issues of the old tiered speed stats.
4233    * Explicitly synchronize all of the methods on the PRNG, rather than just
4234      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
4235      needs all of them synchronized).
4236    * Properly use the tunnel tests as part of the profile stats.
4237    * Don't flood the jobqueue with sequential persist profile tasks, but
4238      instead, inject a brief scheduling delay between them.
4239    * Reduce the TCP connection establishment timeout to 20s (which is still
4240      absurdly excessive)
4241    * Reduced the max resend delay to 30s so we can get some resends in when
4242      dealing with client apps that hang up early (e.g. wget)
4243    * Added more alternative socketManager factories (good call aum!)
4244
42452005-03-16  jrandom
4246    * Adjust the old speed calculator to include end to end RTT data in its
4247      estimates, and use that as the primary speed calculator again.
4248    * Use the mean of the high capacity speeds to determine the fast
4249      threshold, rather than the median.  Perhaps we should use the mean of
4250      all active non-failing peers?
4251    * Updated the profile page to sort by tier, then alphabetically.
4252    * Added some alternative socketManager factories (good call aum!)
4253
42542005-03-14  jrandom
4255    * New strict speed calculator that goes off the actual number of messages
4256      verifiably sent through the peer by way of tunnels.  Initially, this only
4257      contains the successful message count on inbound tunnels, but may be
4258      augmented later to include verified outbound messages, peers queried in
4259      the netDb, etc.  The speed calculation decays quickly, but should give
4260      a better differential than the previous stat (both values are shown on
4261      the /profiles.jsp page)
4262
42632005-03-11  jrandom
4264    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
4265      minimum (increased on resends as before, of course).
4266    * Always prod the clock update listeners, even if just to tell them that
4267      the time hasn't changed much.
4268    * Added support for explicit peer selection for individual tunnel pools,
4269      which will be useful in debugging but not recommended for use by normal
4270      end users.
4271    * More aggressively search for the next hop's routerInfo on tunnel join.
4272    * Give messages received via inbound tunnels that are bound to remote
4273      locations sufficient time (taking into account clock skew).
4274    * Give alternate direct send messages sufficient time (10s min, not 5s)
4275    * Always give the end to end data message the explicit timeout (though the
4276      old default was sufficient before)
4277    * No need to give end to end messages an insane expiration (+2m), as we
4278      are already handling skew on the receiving side.
4279    * Don't complain too loudly about expired TunnelCreateMessages (at least,
4280      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
4281    * Properly keep the sendBps stat
4282    * When running the router with router.keepHistory=true, log more data to
4283      messageHistory.txt
4284    * Logging updates
4285    * Minor formatting updates
4286
42872005-03-08  jrandom
4288    * More aggressively adjust the clock
4289
42902005-03-07  jrandom
4291    * Fix the HTTP response header filter to allow multiple headers with the
4292      same name (thanks duck and spotteri!)
4293
4294* 2005-03-06  0.5.0.2 released
4295
42962005-03-06  jrandom
4297    * Allow the I2PTunnel web interface to select streaming lib options for
4298      individual client tunnels, rather than sharing them across all of them,
4299      as we do with the session options.  This way people can (and should) set
4300      the irc proxy to interactive and the eepproxy to bulk.
4301    * Added a startRouter.sh script to new installs which simply calls
4302      "sh i2prouter start".  This should make it clear how people should start
4303      I2P.
4304    * Properly expand the HTTP response header buffer (thanks shendaras!)
4305
43062005-03-04  jrandom
4307    * Filter HTTP response headers in the eepproxy, forcing Connection: close
4308      so that broken (/malicious) webservers can't allow persistent
4309      connections.  All HTTP compliant browsers should now always close the
4310      socket.
4311    * Enabled the GZIPInputStream's cache (they weren't cached before)
4312    * Make sure our first send is always a SYN (duh)
4313    * Workaround for some buggy compilers
4314
43152005-03-03  jrandom
4316    * Loop while starting up the I2PTunnel instances, in case the I2CP
4317      listener isn't up yet (thanks detonate!)
4318    * Implement custom reusable GZIP streams to both reduce memory churn
4319      and prevent the exposure of data in the standard GZIP header (creation
4320      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
4321      though has only been tested within the confines of I2P's compression use
4322      (DataHelper.[de]compress).
4323    * Preemptively support the next protocol version, so that after the 0.5.0.2
4324      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
4325
43262005-03-02  jrandom
4327    * Fix one substantial OOM cause (session tag manager was only dropping
4328      tags once the critical limit was met, rather than honoring their
4329      expiration) (duh)
4330    * Lots of small memory fixes
4331    * Double the allowable concurrent outstanding tunnel build tasks (20)
4332
43332005-03-01  jrandom
4334    * Really disable the streaming lib packet caching
4335    * Synchronized a message handling point in the SDK (even though its use is
4336      already essentially single threaded, its better to play it safe)
4337    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
4338      existing one (duh)
4339    * Throttle the number of concurrent pending tunnel builds across all
4340      pools, in addition to simply throttling the number of new requests per
4341      minute for each pool individually.  This should avoid the cascading
4342      failure when tunnel builds take too long, as no new builds will be
4343      created until the previous ones are handled.
4344    * Factored out and extended the DataHelper's unit tests for dealing with
4345      long and date formatting.
4346    * Explicitly specify the HTTP auth realm as "i2prouter", though this
4347      alone doesn't address the bug where jetty asks for authentication too
4348      much.  (thanks orion!)
4349    * Updated the StreamSinkServer to ignore all read bytes, rather than write
4350      them to the filesystem.
4351
43522005-02-27  jrandom
4353    * Don't rerequest leaseSets if there are already pending requests
4354    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
4355      temporary disabled the streaming lib packet caching.
4356    * Reduced the resend RTT penalty to 10s
4357
43582005-02-26  jrandom
4359    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
4360
43612005-02-26  jrandom
4362    * Further streaming lib caching improvements
4363    * Reduce the minimum RTT (used to calculate retry timeouts), but also
4364      increase the RTT on resends.
4365    * Lower the default message size to 4KB from 16KB to further reduce the
4366      chance of failed fragmentation.
4367    * Extend tunnel rebuild throttling to include fallback rebuilds
4368    * If there are less than 20 routers known, don't drop the last 20 (to help
4369      avoid dropping all peers under catastrophic failures)
4370    * New stats for end to end messages - "client.leaseSetFoundLocally",
4371      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
4372
43732005-02-24  jrandom
4374    * Throttle the number of tunnel rebuilds per minute, preventing CPU
4375      overload under catastrophic failures (thanks Tracker and cervantes!)
4376    * Block the router startup process until we've initialized the clock
4377
43782005-02-24  jrandom
4379    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
4380      data in the streaming lib.
4381    * Fixed a streaming lib bug where the connection initiator would fail the
4382      stream if the ACK to their SYN was lost.
4383
43842005-02-23  jrandom
4385    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
4386      get stale tunnel pools, don't you think?
4387
4388* 2005-02-23  0.5.0.1 released
4389
43902005-02-22  jrandom
4391    * Reworked the tunnel (re)building process to remove the tokens and
4392      provide cleaner controls on the tunnels built.
4393    * Fixed situations where the timestamper wanted to test more servers than
4394      were provided (thanks Tracker!)
4395    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
4396      (thanks Tracker!)
4397
43982005-02-22  jrandom
4399    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
4400      try to automatically reconnect on accept()/connect(..)).
4401    * Loop check for expired lease republishing (just in case)
4402
44032005-02-22  jrandom
4404    * Adjusted (and fixed...) the timestamper change detection
4405    * Deal with a rare reordering bug at the beginning of a stream (so we
4406      don't drop it unnecessarily)
4407    * Cleaned up some dropped message handling in the router
4408    * Reduced job queue churn when dealing with a large number of tunnels by
4409      sharing an expiration job
4410    * Keep a separate list of the most recent CRIT messages (shown on the
4411      logs.jsp).  This way they don't get buried among any other messages.
4412    * For clarity, display the tunnel variance config as "Randomization" on
4413      the web console.
4414    * If lease republishing fails (boo! hiss!) try it again
4415    * Actually fix the negative jobLag in the right place (this time)
4416    * Allow reseeding when there are less than 10 known peer references
4417    * Lots of logging updates.
4418
44192005-02-20  jrandom
4420    * Allow the streaming lib resend frequency to drop down to 20s as the
4421      minimum, so that up to 2 retries can get sent on an http request.
4422    * Add further limits to failsafe tunnels.
4423    * Keep exploratory and client tunnel testing and building stats separate.
4424    * Only use the 60s period for throttling tunnel requests due to transient
4425      network overload.
4426    * Rebuild tunnels earlier (1-3m before expiration, by default)
4427    * Cache the next hop's routerInfo for participating tunnels so that the
4428      tunnel participation doesn't depend on the netDb.
4429    * Fixed a long standing bug in the streaming lib where we wouldn't always
4430      unchoke messages when the window size grows.
4431    * Make sure the window size never reaches 0 (duh)
4432
44332005-02-20  jrandom
4434    * Only build failsafe tunnels if we need them
4435    * Properly implement the selectNotFailingPeers so that we get a random
4436      selection of peers, rather than using the strictOrdering (thanks dm!)
4437    * Don't include too many "don't tell me about" peer references in the
4438      lookup message - only send the 10 peer references closest to the target.
4439
44402005-02-19  jrandom
4441    * Only build new extra tunnels on failure if we don't have enough
4442    * Fix a fencepost in the tunnel building so that e.g. a variance of
4443      2 means +/- 2, not +/- 1 (thanks dm!)
4444    * Avoid an NPE on client disconnect
4445    * Never select a shitlisted peer to participate in a tunnel
4446    * Have netDb store messages timeout after 10s, not the full 60s (duh)
4447    * Keep session tags around for a little longer, just in case (grr)
4448    * Cleaned up some closing event issues on the streaming lib
4449    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
4450      so that 0.4.* users will need to do a clean install, but we don't need
4451      to shove an additional 2MB in each update to those already on 0.5.
4452    * Imported the susimail css (oops, thanks susi!)
4453
4454* 2005-02-18  0.5 released
4455
44562005-02-17  jrandom
4457    * If the clock is adjusted during a job run, don't act as if the job took
4458      negative time.
4459
44602005-02-17  jrandom
4461    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
4462
44632005-02-17  jrandom
4464    * Fixed the braindead tunnel testing logic
4465    * If a large number of tunnels are failing (within the last 5-10 minutes)
4466      and the current tunnel pool's configuration allows it, randomly build a
4467      zero hop tunnel to replace failed tunnels.
4468    * Enable postman's POP3 and SMTP tunnels by default
4469
44702005-02-16  jrandom
4471    * Added some error handling when the number of session tags exceeds the
4472      realistic capacity, dropping a random chunk of received tag sets and
4473      conducting some minor analysis of the remaining ones.  This is a part
4474      of a pretty serious error condition, and logs as CRIT (if/when people
4475      see "TOO MANY SESSION TAGS!", please let me know the full log line it
4476      puts in the wrapper.log or /logs.jsp)
4477    * Update the addressbook to only write to the published hosts location
4478      if the addressbook's config contains "should_publish=true" (by default,
4479      it contains "should_publish=false")
4480
44812005-02-16  jrandom
4482    * (Merged the 0.5-pre branch back into CVS HEAD)
4483    * Replaced the old tunnel routing crypto with the one specified in
4484      router/doc/tunnel-alt.html, including updates to the web console to view
4485      and tweak it. 
4486    * Provide the means for routers to reject tunnel requests with a wider
4487      range of responses:
4488        probabalistic rejection, due to approaching overload
4489        transient rejection, due to temporary overload
4490        bandwidth rejection, due to persistent bandwidth overload
4491        critical rejection, due to general router fault (or imminent shutdown)
4492      The different responses are factored into the profiles accordingly.
4493    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
4494      with a series of new properties, relevent to the new tunnel routing code:
4495        inbound.nickname (used on the console)
4496        inbound.quantity (# of tunnels to use in any leaseSets)
4497        inbound.backupQuantity (# of tunnels to keep in the ready)
4498        inbound.length (# of remote peers in the tunnel)
4499        inbound.lengthVariance (if > 0, permute the length by adding a random #
4500                                up to the variance.  if < 0, permute the length
4501                                by adding or subtracting a random # up to the
4502                                variance)
4503        outbound.* (same as the inbound, except for the, uh, outbound tunnels
4504                    in that client's pool)
4505      There are other options, and more will be added later, but the above are
4506      the most relevent ones.
4507    * Replaced Jetty 4.2.21 with Jetty 5.1.2
4508    * Compress all profile data on disk.
4509    * Adjust the reseeding functionality to work even when the JVM's http proxy
4510      is set.
4511    * Enable a poor-man's interactive-flow in the streaming lib by choking the
4512      max window size.
4513    * Reduced the default streaming lib max message size to 16KB (though still
4514      configurable by the user), also doubling the default maximum window
4515      size.
4516    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
4517    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
4518      the first byte of the SHA256.
4519    * Added a new "netId" flag to let routers drop references to other routers
4520      who we won't be able to talk to.
4521    * Extended the timestamper to get a second (or third) opinion whenever it
4522      wants to actually adjust the clock offset.
4523    * Replaced that kludge of a timestamp I2NP message with a full blown
4524      DateMessage.
4525    * Substantial memory optimizations within the router and the SDK to reduce
4526      GC churn.  Client apps and the streaming libs have not been tuned,
4527      however.
4528    * More bugfixes than you can shake a stick at.
4529
45302005-02-13  jrandom
4531    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
4532      only contains 32bit versions, so build your own, placing libjbigi.so in
4533      your install dir if necessary.  (thanks mule!)
4534    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
4535      (thanks spaetz!)
4536
45372005-02-10  smeghead
4538    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
4539      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
4540      Pants are still non-functional at this time so don't mess with it yet
4541      unless you want to potentially mangle your working copy of CVS.
4542
45432005-02-09  duck
4544    * Allow an unneeded newline in the SAM client connection without
4545      disconnecting.
4546
45472005-02-07  jrandom
4548    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
4549
45502005-02-06  Sugadude
4551    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
4552
45532005-02-03  smeghead
4554    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
4555      library from GNU Crypto's CVS HEAD sources.
4556
45572005-01-26  smeghead
4558    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
4559      packages and installed to $i2pinstalldir/scripts.
4560    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
4561      using gij + libgcj, and --sourcedir to run them from the source tree
4562      instead of the installation directory.
4563    * Fixed unreachable for() statement clause in the KBucketImpl class that was
4564      causing gcj to toss a compilation warning (jrandom++).
4565
45662005-01-26  smeghead
4567    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
4568      tests and benchmarks.
4569    * Routerconsole now builds under gcj 3.4.3.
4570    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
4571
45722005-01-25  smeghead
4573    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
4574      supporting apps (except for the routerconsole which is still being
4575      investigated).
4576
45772005-01-24  smeghead
4578    * C#-ification of sam-sharp: interface greatly simplified using delegates
4579      and events; SamBaseEventHandler provides basic implementation and helper
4580      methods but is now optional.
4581    * NAnt buildfile and README added for sam-sharp.
4582
45832005-01-23  smeghead
4584    * Port the java SAM client library to mono/C# and released into the
4585      public domain.  The 0.1 version of this port is available in CVS as
4586      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
4587      library has been removed.
4588
45892005-01-21  Jhor
4590    * Updated jbigi build scripts for OSX.
4591
45922005-01-21  jrandom
4593    * Added support for OSX to the NativeBigInteger code so that it will look
4594      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
4595      is not bundled with the shipped jbigi.jar yet though.
4596
45972005-01-18  jrandom
4598    * Increased the max # session tags maintained and decreased slightly the
4599      period over which they are gathered.
4600
46012005-01-17  jrandom
4602    * Added meaningful support for adjusting the preferred message size in the
4603      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
4604      whatever).  The other side will mimic a reduction (but never an increase).
4605    * Always make sure to use distinct ConnectionOption objects for each
4606      connection (duh)
4607    * Reduced the default ACK delay to 500ms on in the streaming lib
4608    * Only shrink the streaming window once per window
4609    * Don't bundle a new jetty.xml with updates
4610    * Catch another local routerInfo corruption issue on startup.
4611
46122005-01-15  cervantes
4613    * Added support to the eepproxy for URLs such as
4614      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
4615      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
4616
46172005-01-15  jrandom
4618    * Caught a series of (previously unhandled) errors caused by requeueing
4619      messages that had timed out on the TCP transport (thanks mae^!)
4620    * Reduce the barrier to dropping session tags on streaming lib resends -
4621      every fourth send should drop the tags, forcing ElGamal encryption.  This
4622      will help speed up the recovery after a disconnect, rather than the drop
4623      every fifth send.
4624
4625* 2005-01-06  0.4.2.6 released
4626
46272005-01-06  jrandom
4628    * Added a startup message to the addressbook, printing its version number
4629      to stdout (which is sent to wrapper.config) when it loads.
4630    * Updated the addressbook to reread the config file periodically
4631    * Added orion.i2p to the list of eepsites on the default homepage
4632
46332005-01-05  jrandom
4634    * Handle unexpected network read errors more carefully (thanks parg!)
4635    * Added more methods to partially compare (DataHelper) and display
4636      arrays (Base64.encode).
4637    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
4638    * Be more generous on the throttle when just starting up the router
4639    * Fix a missing scheduled event in the streaming lib (caused after reset)
4640    * Add a new DisconnectListener on the I2PSocketManager to allow
4641      notification of session destruction.
4642    * Make sure our own router identity is valid, and if it isn't, build a new
4643      one and restart the router.  Alternately, you can run the Router with
4644      the single command line argument "rebuild" and it will do the same.
4645
46462004-12-31  ragnarok
4647    * Integrated latest addressbook changes (2.0.3) which include support for
4648      deploying as a .war file with no existing addressbook configuration.
4649    * Updated main build process to bundle the addressbook.war in the
4650      i2pinstall.jar and i2pupdate.zip.
4651
46522004-12-31  jrandom
4653    * Speling fxi (thanks digum!)
4654    * Bugfix for the I2PTunnel web interface so that it now properly launches
4655      newly added tunnels that are defined to be run on startup (thanks ugha!)
4656
46572004-12-30  jrandom
4658    * Revised the I2PTunnel client and httpclient connection establishment
4659      throttles.  There is now a pool of threads that build the I2PSocket
4660      connections with a default size of 5, configurable via the I2PTunnel
4661      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
4662      not throttle the number of concurrent builders, but will launch a thread
4663      per socket during establishment).  In addition, sockets accepted but
4664      not yet allocated to one of the connection builders will be destroyed
4665      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
4666      0, it will wait indefinitely).
4667
46682004-12-29  jrandom
4669    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
4670      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
4671    * Don't treat connection inactivity closure as a connection error.
4672
46732004-12-29  jrandom
4674    * Add in a new keepalive event on each TCP connection, proactively sending
4675      a (tiny) time message every minute or two, as well as killing the
4676      connection if no message has been fully sent within 5 minutes or so. 
4677      This should help deal with hung connections from IP address changes.
4678
46792004-12-28  jrandom
4680    * Cleaned up the resending and choking algorithm in the streaming lib.
4681    * Removed the read timeout override for I2PTunnel's httpclient, allowing
4682      it to use the default for the streaming lib.
4683    * Revised ack triggers in the streaming lib.
4684    * Logging.
4685
4686* 2004-12-21  0.4.2.5 released
4687
46882004-12-21  jrandom
4689    * Track a new stat for expired client leases (client.leaseSetExpired).
4690
46912004-12-21  jrandom
4692    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
4693      and added windows info to the headless docs. (thanks ardvark!)
4694    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
4695      a stream (thanks frosk!)
4696    * Add a pair of new stats for monitoring tunnel participation -
4697      tunnel.participatingBytesProcessed (total # bytes transferred) and
4698      tunnel.participatingBytesProcessedActive (total # bytes transferred for
4699      tunnels whose byte count exceed the 10m average).  This should help
4700      further monitor congestion issues.
4701    * Made the NamingService factory property public (thanks susi!)
4702
47032004-12-20  jrandom
4704    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
4705    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
4706      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
4707      reasoning is gone.
4708
47092004-12-19  jrandom
4710    * Fix for a race on startup wrt the new stats (thanks susi!)
4711
47122004-12-19  jrandom
4713    * Added three new stats - router.activePeers, router.fastPeers, and
4714      router.highCapacityPeers, updated every minute
4715
47162004-12-19  jrandom
4717    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
4718      hostname should be sent to the webserver.  By default, new installs will
4719      have an httpserver pointing at their jetty instance with the spoofed
4720      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
4721
47222004-12-19  scintilla
4723    * Convert native jcpuid code from C++ to C. This should alleviate build
4724      problems experienced by some users.
4725
4726* 2004-12-18  0.4.2.4 released
4727
47282004-12-16  jrandom
4729    * Catch another oddball case for a reset connection in the streaming lib.
4730    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
4731      dumps the current state of that peer's profile.  Instead of the full
4732      base64, you can pass in however many characters you have and it will
4733      return the first match found.
4734
47352004-12-16  jrandom
4736    * Remove the randomized factor in the tunnel rejection by bandwidth -
4737      we now accept the request if we've allocated less than our limit
4738      and reject it if we've allocated more.
4739    * Stick to the standard capacity scale on tunnel rejection, even for
4740      the 10m period.
4741    * Build the time message at the very last possible moment
4742
47432004-12-15  jrandom
4744    * Handle hard disconnects more gracefully within the streaming lib, and
4745      log unmonitored events more aggressively.
4746    * If we drop a peer after connection due to clock skew, log it to the
4747      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
4748      the stat 'tcp.disconnectAfterSkew'.
4749    * Fixed the formatting in the skew display
4750    * Added an ERROR message that is fired once after we run out of
4751      routerInfo files (thanks susi!)
4752    * Set the connect timeout equal to the streaming lib's disconnect timeout
4753      if not already specified (the I2PTunnel httpclient already enforces a
4754      60s connect timeout)
4755    * Fix for another connection startup problem in the streaming lib.
4756    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
4757    * Adjust the capacity calculations so that tunnel failures alone in the
4758      last 10m will not trigger a 0 capacity rank.
4759
47602004-12-14  jrandom
4761    * Periodically send a message along all I2NP connections with the router's
4762      current time, allowing the receiving peer to determine that the clock
4763      has skewed too much, and hence, disconnect.  For backwards compatability
4764      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
4765      next time we have a backwards compatability break, we can put in a proper
4766      message setup for it.
4767
47682004-12-14  jrandom
4769    * Reenable the probabalistic drop on the TCP queues to deal with good old
4770      fashioned bandwidth limiting.  However, by default the probability is
4771      rigged to reserve 0% of the queue free - meaning we just aggressively
4772      fail messages in the queue if we're transferring too slowly.  That
4773      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
4774      (or whatever) and the drop code can be disabled with the parameter
4775      'tcp.dropProbabalistically=false'.
4776    * Still penalize a peer on tunnel failure, but don't immediately drop
4777      their capacity to 0.
4778    * More aggressively ACK duplicates
4779    * Randomize the timestamper period
4780    * Display the clock skew on the connection logs when a peer sends it.
4781    * Allow the timestamper to fix skews of up to 10 minutes
4782    * Logging
4783
47842004-12-13  jrandom
4785    * Added some error checking on the new client send job (thanks duck!)
4786    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
4787      proportional to the bytes allocated in existing tunnels vs the bytes
4788      allowed through the bandwidth limiter).
4789    * Enable a new configuration parameter for triggering a tunnel rebuild
4790      (tunnel.maxTunnelFailures), where that is the max allowed test failures
4791      before killing the tunnel (default 0).
4792    * Gather more data that we rank capacity by (now we monitor and balance the
4793      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
4794    * Fix a truncation/type conversion problem on the long term capacity
4795      values (we were ignoring the daily stats outright)
4796
47972004-12-11  jrandom
4798    * Fix the missing HTTP timeout, which was caused by the deferred syn used
4799      by default.  This, in turn, meant the I2PSocket creation doesn't fail
4800      on .connect, but is unable to transfer any data in any direction.  We now
4801      detect that condition for the I2PTunnelHTTPClient and throw up the right
4802      error page.
4803    * Logging
4804
48052004-12-11  jrandom
4806    * Use a simpler and less memory intensive job for processing outbound
4807      client messages when the session is in mode=bestEffort.  We can
4808      immediately discard the data as soon as its sent the first time,
4809      rather than wait for an ack, since we will never internally resend.
4810    * Reduce some synchronization to avoid a rare deadlock
4811    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
4812      case it within the tunnel controller.
4813    * Script cleanup for building jbigi/jcpuid
4814    * Logging
4815
4816* 2004-12-08  0.4.2.3 released
4817
48182004-12-08  jrandom
4819    * Revised the buffering when reading from the SAM client and writing
4820      to the stream.  Also added a thread (sigh) so we don't block the
4821      SAM client from giving us more messages for abnormally long periods
4822      of time.
4823    * Display the router version in the logs on startup (oft requested)
4824    * Fix a race during the closing of a messageOutputStream
4825
48262004-12-06  jrandom
4827    * Don't do a 'passive flush' while there are already outbound messages
4828      unacked.
4829    * Show the reseed link if up to 10 peers profiles are active (thanks
4830      dburton!)
4831
48322004-12-06  jrandom
4833    * Don't propogate streaming connection failures out to the SAM bridge as
4834      fatal errors.
4835    * Dont barf on repeated I2CP closure.
4836
48372004-12-05  jrandom
4838    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
4839      getLocalhost call
4840
48412004-12-05  jrandom
4842    * Default the I2CP listener to localhost only, unless overridden by
4843      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
4844    * More SAM fixes for things recently broken (whee)
4845
48462004-12-05  jrandom
4847    * Fix the recently broken SAM bridge (duh)
4848    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
4849      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
4850      StreamSink and StreamSend apps for transferring files.
4851    * Make the passive flush timer fire more frequently.
4852
48532004-12-05  jrandom
4854    * Fixed some links in the console (thanks ugha!) and the javadoc
4855      (thanks dinoman!)
4856    * Fix the stream's passive flush timer (oh, its supposed to work?)
4857
48582004-12-03  jrandom
4859    * Toss in a small pool of threads (3) to execute the events queued up with
4860      the SimpleTimer, as we do currently see the occational event
4861      notification spiking up to a second or so.
4862    * Implement a SAM client API in java, useful for event based streaming (or
4863      for testing the SAM bridge)
4864    * Added support to shut down the SAM bridge on OOM (useful if the SAM
4865      bridge is being run outside of the router).
4866    * Include the SAM test code in the sam.jar
4867    * Remove an irrelevent warning message from SAM, which was caused by
4868      perfectly normal operation due to a session being closed.
4869    * Removed some unnecessary synchronization in the streaming lib's
4870      PacketQueue
4871    * More quickly clean up the memory used by the streaming lib by
4872      immediately killing each packet's resend job as soon as it is ACKed (or
4873      cancelled), so that there are no longer any valid pointers to the
4874      (potentially 32KB) packet.
4875    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
4876    * Drop packets that would expand our inbound window beyond our maximum
4877      buffer size (default 32 messages)
4878    * Always read the ACK/NACK data from the verified packets received, even
4879      if we are going to drop them
4880    * Always adjust the window when there are messages ACKed, though do not
4881      change its size except as before.
4882    * Streamlined some synchronization in the router's I2CP handling
4883    * Streamlined some memory allocation in the SAM bridge
4884    * Default the streaming lib to disconnect on inactivity, rather than send
4885      an empty message.
4886
48872004-12-01  jrandom
4888    * Fix for a race in the streaming lib as caused by some odd SAM activity
4889
4890* 2004-12-01  0.4.2.2 released
4891
48922004-12-01  jrandom
4893    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
4894      connections to work (thanks duck!)
4895    * Make sure we override the inactivity timeout too
4896
4897* 2004-12-01  0.4.2.1 released
4898
48992004-12-01  jrandom
4900    * Strip out any of the Accept-* HTTP header lines, and always make sure to
4901      include the forged User-agent header.
4902    * Adjust the default read timeout on the eepproxy to 60s, unless
4903      overridden.
4904    * Minor tweak on stream shutdown.
4905
49062004-11-30  jrandom
4907    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
4908    * Build in a simple timeout to flush data queued into the I2PSocket but
4909      not yet flushed.
4910    * Don't explicitly flush after each SAM stream write, but leave it up to
4911      the [nonblocking] passive flush.
4912    * Don't whine about 10-99 connection events occurring in a second
4913    * Don't wait for completion of packets that will not be ACKed (duh)
4914    * Adjust the congestion window, even if the packet was resent (duh)
4915    * Make sure to wake up any blocking read()'s when the MessageInputStream
4916      is close()ed (duh)
4917    * Never wait more than the disconnect timeout for a write to complete
4918
49192004-11-29  jrandom
4920    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
4921
49222004-11-29  jrandom
4923    * Reduced contention for local client delivery
4924    * Drop the new code that munges the wrapper.config.  Instead, updates that
4925      need to change it will include their own wrapper.config in the
4926      i2pupdate.zip, overwriting the existing file.  If the file
4927      "wrapper.config.updated" is included, it is deleted at first opportunity
4928      and the router shut down, displaying a notice that the router must be
4929      started again cleanly to allow the changes to the wrapper.config to take
4930      effect.
4931    * Properly stop accept()ing I2PSocket connections if we close down the
4932      session (duh).
4933    * Make sure we cancel any outstanding Packets in flight when a connection
4934      is terminated (thanks susi!)
4935    * Split up the I2PTunnel closing a little further.
4936
49372004-11-28  jrandom
4938    * Accept IP address detection changes with a 2-out-of-3 minimum.
4939    * As long as the router is up, keep retrying to bind the I2CP listener.
4940    * Decrease the java service wrapper ping frequency to once every 10
4941      minutes, rather than once every 5 seconds.
4942
49432004-11-27  jrandom
4944    * Some cleanup and bugfixes for the IP address detection code where we
4945      only consider connections that have actually sent and received messages
4946      recently as active, rather than the mere presence of a TCP socket as
4947      activity.
4948
49492004-11-27  jrandom
4950    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
4951      lib can do that (without an additional per-connection thread).
4952    * Close the I2PTunnel forwarder threads more aggressively
4953
49542004-11-27  jrandom
4955    * Fix for a fast loop caused by a race in the new streaming library (thanks
4956      DrWoo, frontier, pwk_, and thetower!)
4957    * Minor updates to the SimpleTimer and Connection to help track down a
4958      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
4959      many events/tasks fire in a second)
4960    * Minor fixes for races on client disconnects (causing NPEs)
4961
4962* 2004-11-26  0.4.2 released
4963
49642004-11-26  jrandom
4965    * Enable the new streaming lib as the default.  That means, for any
4966      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
4967
49682004-11-25  jrandom
4969    * Revised the installer to include start menu and desktop shortcuts for
4970      windows platforms, including pretty icons (thanks DrWoo!)
4971    * Allow clients specified in clients.config to have an explicit startup
4972      delay.
4973    * Update the default install to launch a browser pointing at the console
4974      whenever I2P starts up, rather than only the first time it starts up
4975      (configurable on /configservice.jsp, or in clients.config)
4976    * Bugfix to the clock skew checking code to monitor the delta between
4977      offsets, not the offset itself (duh)
4978    * Router console html update
4979    * New (and uuuuugly) code to verify that the wrapper.config contains
4980      the necessary classpath entries on update.  If it has to update the
4981      wrapper.config, it will stop the JVM and service completely, since the
4982      java service wrapper doesn't reread the wrapper.config on JVM restart -
4983      requiring the user to manually restart the service after an update.
4984    * Increase the TCP connection timeout to 30s (which is obscenely long)
4985
49862004-11-22  jrandom
4987    * Update to the SAM bridge to reduce some unnecessary memory allocation.
4988    * New stat to keep track of slow jobs (ones that take more than a second
4989      to excute).  This is published in the netDb as jobQueue.jobRunSlow
4990
49912004-11-21  jrandom
4992    * Update the I2PTunnel web interface to include an option for the new
4993      streaming lib (which is ignored until the 0.4.2 release).
4994    * Revised the I2PTunnel web interface to keep the I2CP options of client
4995      and httpclient tunnels in sync, as they all share the same I2CP session.
4996
49972004-11-21  jrandom
4998    * Only allow small clock skews after the first 10 minutes of operation
4999      (to prevent later network lag bouncing us way off course - yes, we
5000      really need an NTP impl to balance out the network burps...)
5001    * Revamp the I2PTunnel web interface startup process so that everything
5002      is shown immediately, so that different pieces hanging don't hang
5003      the rest, and other minor bugfixes.
5004    * Take note of SAM startup error (in case you're already running a SAM
5005      bridge...)
5006    * Increase the bandwidth limiter burst values available to 10-60s (or
5007      whatever is placed in /configadvanced.jsp, of course)
5008
50092004-11-21  jrandom
5010    * Allow end of line comments in the hosts.txt and other config files,
5011      using '#' to begin the comments (thanks susi!)
5012    * Add support to I2PTunnel's 'client' feature for picking between multiple
5013      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
5014    * Add a quick link on the left hand nav to reseed if there aren't enough
5015      known peers, as well as link to the config page if there are no active
5016      peers.  Revised config page accordingly.
5017
50182004-11-21  jrandom
5019    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
5020      rather that every 15 minutes, and increase the warning period in which
5021      we refresh tags from 30s to 2 minutes.
5022    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
5023      to close the I2PSocket (leaving it to timeout).
5024
50252004-11-19  jrandom
5026    * Off-by-one fix to the tunnel pool management code, along side some
5027      explicit initialization.  This can affect clients whose lengths are
5028      shorter than the router's default (thanks duck!)
5029
50302004-11-17  jrandom
5031    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
5032      Ragnarok!)
5033
50342004-11-17  jrandom
5035    * Minor logging update.
5036
50372004-11-16  jrandom
5038    * Clean up the propogation of i2psocket options so that various streaming
5039      libs can honor them more precisely
5040
50412004-11-16  jrandom
5042    * Minor logging update
5043
50442004-11-14  jrandom
5045    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
5046    * Fix a leak injected into the SimpleTimer
5047    * Fix a race condition in the tunnel message handling
5048
50492004-11-13  jrandom
5050    * Added throttles on how many I2PTunnel client connections we open at once
5051    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
5052      the streaming library used should take care of any buffering.
5053    * Added a cache for some objects used in I2PTunnel, especially useful when
5054      there are many short lived connections.
5055    * Trimmed the SimpleTimer's processing a bit
5056
50572004-11-10  jrandom
5058    * Allow loading the (mini)streaming connection options from the
5059      environment.
5060    * More defensive programming in the DSA implementation.
5061
50622004-11-08  jrandom
5063    * Remove spurious flush calls from I2PTunnel, and work with the
5064      I2PSocket's output stream directly (as the various implementations
5065      do their own buffering).
5066    * Another pass at a long standing JobQueue bug - dramatically simplify
5067      the job management synchronization since we dont need to deal with
5068      high contention (unlike last year when we had dozens of queue runners
5069      going at once).
5070    * Logging
5071
50722004-11-08  jrandom
5073    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
5074
5075* 2004-11-06  0.4.1.4 released
5076
50772004-11-06  jrandom
5078    * Expose a drop down on the /configclients.jsp to enter the outbound
5079      tunnel depth.
5080    * Improved *hosts.txt loading
5081    * Explicitly override the JVM's timezone settings to use GMT so that
5082      any client applications which use timezones won't leak sensitive
5083      data (thanks gott!)
5084    * Bundle sam.jar in the update (thanks duck!)
5085
50862004-11-06  jrandom
5087    * Fix for a long standing synchronization bug in the SDK that in rare
5088      instances can add a few seconds of lag.
5089
50902004-11-05  jrandom
5091    * Bugfixes and unit tests for the SAM bridge to handle quoted message
5092      parameters, verify proper operation after multiple session lifetimes,
5093      as well as some synchronization problems.
5094    * New properties method on the DataHelper class.
5095    * Address a race on fast disconnecting clients
5096
50972004-11-02  jrandom
5098    * Fix for a long standing synchronization bug in the JobQueue (and added
5099      some kooky flags to make sure it stays dead)
5100    * Update the ministreaming lib to force mode=guaranteed if the default
5101      lib is used, and mode=best_effort for all other libs.
5102
51032004-11-02  jrandom
5104    * Fixed up the configuration overrides for the streaming socket lib
5105      integration so that it properly honors env settings.
5106    * More memory usage streamlining (last major revamp for now, i promise)
5107
51082004-11-01  jrandom
5109    * Increase the tunnel test timeout rapidly if our tunnels are failing.
5110    * Honor message expirations for some tunnel jobs that were prematurely
5111      expired.
5112    * Streamline memory usage with temporary object caches and more efficient
5113      serialization for SHA256 calculation, logging, and both I2CP and I2NP
5114      message handling.
5115    * Fix some situations where we forward messages too eagerly.  For a
5116      request at the tunnel endpoint, if the tunnel is inbound and the target
5117      is remote, honor the message by tunnel routing the data rather than
5118      sending it directly to the requested location.
5119
51202004-10-30  jrandom
5121    * Cache the temporary objects used in the AES encryption/decryption
5122      process so that AES doesn't require any memory allocation to process
5123      data.
5124    * Dramatically reduce memory usage within various crypto implementations
5125      by avoiding unnecessary (though simplifying) buffers.
5126    * If we specify some tags to be sent in an I2CP message explicitly, use
5127      only those, not those plus a new set (otherwise we aren't sure on ACK
5128      which set was delivered)
5129    * Allow configuration for the partial send timeout (how long before
5130      resending a message down a different tunnel in a lease).  This can be
5131      updated with the "router.clientPartialSendTimeout" router config prop.
5132    * Logging
5133
51342004-10-29  jrandom
5135    * Strip the Referer, Via, and From headers completely, rather than
5136      inserting a bogus value ("i2p").  This should help with the use of
5137      SnipSnap and Geeklog (thanks nickster and DrWoo!)
5138
51392004-10-27  jrandom
5140    * Fix a strange race condition on i2cp client disconnect.
5141    * win98 startup fixes (thanks tester-1 and ardvark!)
5142    * include build scripts for the new streaming lib (which is NOT ready
5143      for use yet, but you can hack around with it)
5144
51452004-10-24  jrandom
5146    * Allow explicit inclusion of session tags in the SDK, enabling the
5147      resending of tags bundled with messages that would not otherwise
5148      be ACKed.
5149    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
5150      no DeliveryStatusMessage will be bundled (and as such, client apps using
5151      it will need to do their own session tag ack/nack).
5152    * Handle client errors when notifying them of message availability.
5153    * New StreamSinkSend which sends a file to a destination and disconnects.
5154    * Update the I2PSocketManagerFactory to build the specific
5155      I2PSocketManager instance based on the "i2p.streaming.manager" property,
5156      containing the class name of the I2PSocketManager to instantiate.
5157
51582004-10-23  jrandom
5159    * Minor ministreaming lib refactoring to simplify integration of the full
5160      streaming lib.
5161    * Minor bugfixes to data structure serialization.
5162
5163* 2004-10-18  0.4.1.3 released
5164
51652004-10-18  jrandom
5166    * Allow sending messages with a section of a byte array.
5167    * Reduced stats published.
5168
51692004-10-17  jrandom
5170    * Don't b0rk on whitespace in the router address.
5171
51722004-10-16  jrandom
5173    * More aggressively reduce the capacity of peers if their tunnels are
5174      failing so that we move off them quicker.
5175    * Simplify some data structure serialization for reuse in the streaming
5176      lib, as well as add support for signing and verifying partial byte
5177      arrays.
5178    * Logging updates
5179
51802004-10-16  jrandom
5181    * Increased the default minimum tunnel test time to 5 seconds, since we
5182      still see the occational message processing time spike to 2 seconds.
5183    * Update the SimpleTimer to allow rescheduling a task thats already
5184      queued (useful for the new streaming lib).
5185
51862004-10-15  jrandom
5187    * Replaced old minimum tunnel test timeout of 1s with a configurable
5188      value (router.config property "router.tunnelTestMinimum", with the
5189      default of 2s).
5190
51912004-10-14  jrandom
5192    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
5193      peer, so don't use it as a key point of the IsFailing calculator.
5194      We still use it as a key point of the Capacity calculator, however.
5195
51962004-10-14  jrandom
5197    * Allow for a configurable tunnel "growth factor", rather than trying
5198      to achieve a steady state.  This will let us grow gradually when
5199      the router is needed more, rather than blindly accepting the request
5200      or arbitrarily choking it at an averaged value.  Configure this with
5201      "router.tunnelGrowthFactor" in the router.config (default "1.5").
5202    * Adjust the tunnel test timeouts dynamically - rather than the old
5203      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
5204      test time (the deviation factor can be adjusted by setting
5205      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
5206      find the 'good' tunnels.
5207    * Added some crazy debugging to try and track down an intermittent hang.
5208
52092004-10-13  jrandom
5210    * Fix the probabalistic tunnel reject (we always accepted everything,
5211      since the docs on java.util.Random.nextDouble() are wrong..)
5212    * Fixed a race on startup (thanks Quadn!)
5213
52142004-10-12  jrandom
5215    * Disable the probabalistic drop by default (enable via the router config
5216      property "tcp.dropProbabalistically=true")
5217    * Disable the actual watchdog shutdown by default, but keep track of more
5218      variables and log a lot more when it occurs (enable via the router
5219      config property "watchdog.haltOnHang=true")
5220    * Implement some tunnel participation smoothing by refusing requests
5221      probabalistically as our participating tunnel count exceeds the previous
5222      hour's, or when the 10 minute average tunnel test time exceeds the 60
5223      minute average tunnel test time.  The probabilities in both cases are
5224      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
5225      and you had previously only participated in 50, you'll have a 25% chance
5226      of accepting a subsequent request.
5227
5228* 2004-10-10  0.4.1.2 released
5229
52302004-10-10  cervantes
5231    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
5232      the request.
5233
52342004-10-09  jrandom
5235    * Added a watchdog timer to do some baseline liveliness checking to help
5236      debug some odd errors.
5237    * Added a pair of summary stats for bandwidth usage, allowing easy export
5238      with the other stats ("bw.sendBps" and "bw.receiveBps")
5239    * Trimmed another memory allocation on message reception.
5240
52412004-10-08  jrandom
5242    * Revamp the AESInputStream so it doesn't allocate any temporary objects
5243      during its operation.
5244
52452004-10-08  jrandom
5246    * Don't kill the establisher threads during a soft restart.
5247    * Attempt to validate the peer's routerInfo earlier during handshaking.
5248    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
5249      during its operation.
5250
52512004-10-07  jrandom
5252    * Reimplement the I2NP reading with less temporary memory allocation.
5253      There is still significant GC churn, especially under load, but this
5254      should help.
5255    * Catch some oddball errors in the transport (message timeout while
5256      establishing).
5257
52582004-10-07  jrandom
5259    * Expire queued messages even when the writer is blocked.
5260    * Reimplement most of the I2NP writing with less temporary memory
5261      allocations (I2NP reading still gobbles memory).
5262
52632004-10-06  jrandom
5264    * Implement an active queue management scheme on the TCP transports,
5265      dropping messages probabalistically as the queue fills up.  The
5266      estimated queue capacity is determined by the rate at which messages
5267      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
5268      we exceed 1/2 of the estimated capacity, we drop messages throughout
5269      the queue probabalistically with regards to their size.  This is based
5270      on RFC 2309's RED, with the minimum threshold set to 1/2 the
5271      estimated connection capacity.  We may want to consider using a send
5272      rate and queue size measured across all connections, to deal with our
5273      own local bandwidth saturation, but we'll try the per-con metrics first.
5274
52752004-10-06  jrandom
5276    * Enable explicit disabling of the systray entirely for windows machines
5277      with strange configurations: add -Dsystray.disable=true to the java
5278      command line.  (thanks mihi!)
5279
52802004-10-05  jrandom
5281    * Allow peers on the same LAN to communicate with each other safely even
5282      when they cannot talk to each other through the external address.
5283
52842004-10-05  jrandom
5285    * Display how much time is left before the graceful shutdown is complete.
5286    * Debug some improperly failed messages on timeout or disconnection.
5287
52882004-10-05  jrandom
5289    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
5290      (thanks mule!)
5291    * Handle some more error conditions regarding abruptly closing sockets
5292      (thanks Jonva!)
5293
52942004-10-04  jrandom
5295    * Update the shitlist to reject a peer for an exponentially increasing
5296      period of time (with an upper bounds of an hour). 
5297    * Various minor stat and debugging fixes
5298
52992004-10-03  jrandom
5300    * Add a new stat logging component to optionally dump the raw stats to
5301      disk as they are generated, rather than rely upon the summarized data.
5302      By default, this is off, but the router property "stat.logFilters" can
5303      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
5304      which will be written to the file "stats.log" (or whatever the property
5305      "stat.logFile" is set to).  This can also log profile related stats,
5306      such as "dbResponseTime" or "tunnelTestResponseTime".
5307
53082004-10-02  jrandom
5309    * Assure that we quickly fail messages bound for shitlisted peers.
5310    * Address a race on startup where the first peer contacted could hang the
5311      router (thanks Romster!)
5312    * Only whine about an intermittent inability to query the time server once
5313
53142004-10-02  jrandom
5315    * Command line utility to verify a peer's reachability - simply run
5316      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
5317      will print out whether that peer is reachable or not (using a simple
5318      verification handshake).
5319
5320* 2004-10-01  0.4.1.1 released
5321
53222004-10-01  jrandom
5323    * Handle partial reseeds, caused by seeds going away before the download
5324      completes (thanks Sugadude!)
5325
53262004-10-01  jrandom
5327    * Explicitly refuse IPv6 addresses, since only some peers support
5328      them and we want fully reachable peers.
5329
53302004-10-01  jrandom
5331    * Additional error handling for a variety of transport layer errors.
5332
5333* 2004-09-30  0.4.1 released (not backwards compatible)
5334
53352004-09-30  jrandom
5336    * Bundle the configuration necessary to run an eepsite out of the box
5337      with Jetty - simply edit ./eepsite/docroot/index.html and give people
5338      the key listed on the I2PTunnel configuration page, and its up.
5339    * Router console cleanup, and some (off by default) tunnels -
5340      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
5341      irc.baffled.i2p (port 7661)
5342
53432004-09-29  jrandom
5344    * Always wipe the Jetty work directory on startup, so that web updates
5345      are reflected immediately (Jetty does not honor the cache across
5346      multiple executions)
5347
53482004-09-27  jrandom
5349    * Limit the number of connection tags saved to 10,000.  This is a huge
5350      limit, but consumes no more than 1MB of RAM.  For now, we drop them
5351      randomly after reaching that size, forcing those dropped peers to use
5352      a full DH negotiation.
5353    * HTML cleanup in the console.
5354
53552004-09-26  jrandom
5356    * Complete rewrite of the TCP transport with IP autodetection and
5357      low CPU overhead reconnections.  More concise connectivity errors
5358      are listed on the /oldconsole.jsp as well.  The IP autodetection works
5359      by listening to the first person who tells you what your IP address is
5360      when you have not defined one yourself and you have no other TCP
5361      connections.
5362    * Update to the I2NP message format to add transparent verification at
5363      the I2NP level (beyond standard TCP verification).
5364    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
5365      implementation (rather than verifying with E(H(key)), we now verify with
5366      E(H(iv))).
5367    * The above changes are NOT BACKWARDS COMPATIBLE.
5368    * Removed all of the old unused PHTTP code.
5369    * Refactor various methods and clean up some javadoc.
5370
53712004-09-21  jrandom
5372    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
5373      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
5374      but values stored in the later take precedence.  Both are queried on
5375      lookup.
5376
53772004-09-16  jrandom
5378    * Refactor the TCP transport to deal with changing identities gracefully,
5379      and to prevent some wasted effort by keeping track of what host+port
5380      combinations we are connected to (rather than just the identities).  Also
5381      catch a few configuration errors earlier.
5382    * Removed no longer relevent methods from the Transport API that were
5383      exposing ideas that probably shouldn't be exposed.
5384    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
5385      updates)
5386
53872004-09-13  jrandom
5388    * Update for the SDK reconnection to deal with overflow.
5389    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
5390      rounding on lifetime bandwidth used [thanks gott!]).
5391
5392* 2004-09-08  0.4.0.1 released
5393
53942004-09-08  jrandom
5395    * Updated the "Active:" peer count to display the # of connections as well
5396      as the number of recently active router identities.
5397    * Implement some basic updating code - on startup, if there is a file named
5398      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
5399      then restart.
5400    * Added an ugly little script to allow launching the router on win9x
5401      machines without a dos box (using javaw to run a .bat file).
5402    * Logging updates.
5403    * Updated VERSION constants to 0.4.0.1
5404
54052004-09-08  hypercubus
5406    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
5407      hopefully any other affected *nix systems) now properly discards non-
5408      essential directories after installation.
5409    * Support for Win9x in the installer and postinstall.bat.
5410    * Changed the name of the default installation directory on all platforms
5411      from "I2P" to "i2p" in the installer.
5412    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
5413      other configuration files.
5414
54152004-09-07  cervantes:
5416    * Proxy recursion disabled by default (strict)
5417    * Password Authentication for session commands
5418    * Support for http://path?i2paddresshelper=BASE64
5419    * Support for http://i2p/BASE64/path syntax
5420
54212004-09-07  jrandom
5422    * Make sure that peers placed in the 'fast' group are ones we both know
5423      how to reach and have been able to reach recently.  These peers may
5424      still be placed in the 'high capacity' group however (though that group
5425      is only queried if the 'fast' group is too small)
5426    * Include some updates to the ProgileOrganizer's CLI.
5427
54282004-09-07  jrandom
5429    * Disable the timestamper by default for all applications except the router
5430      (enable via -Dtime.disabled=false)
5431    * Simplify the retrieval of the full destination with text based browsers.
5432    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
5433
54342004-09-07  jrandom
5435    * Write the native libraries to the current directory when they are loaded
5436      from a resource, and load them from that file on subsequent runs (in
5437      turn, we no longer *cough* delete the running libraries...)
5438    * Added support for a graceful restart.
5439    * Added new pseudo-shutdown hook specific to the router, allowing
5440      applications to request tasks to be run when the router shuts down.  We
5441      use this for integration with the service manager, since otherwise a
5442      graceful shutdown would cause a timeout, followed by a forced hard
5443      shutdown.
5444    * Made the capacity calculator a bit more dynamic by not outright ignoring
5445      the otherwise valid capacity data for a period with a single rejected
5446      tunnel (except for the 10 minute period).  In addition, peers with an
5447      equal capacity are ordered by speed rather than by their hashes.
5448    * Cleaned up the SimpleTimer, addressing some threading and synchronization
5449      issues.
5450    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
5451      associated session (unless there are other clients using it), and deal
5452      with a closed session when starting a new I2PTunnel instance.
5453    * Refactoring and logging.
5454
54552004-09-06  jrandom
5456    * Address a race condition in the key management code that would manifest
5457      itself as a corrupt router identity.
5458    * Properly clear old transport addresses from being displayed on the old
5459      console after soft restarts.
5460    * Properly refuse to load the client applications more than once in the
5461      same JVM.
5462    * Added support for a graceful restart (a graceful shutdown followed by a
5463      full JVM restart - useful for restarting client apps).
5464    * More defensive programming, HTML cleanup, logging
5465    * wrapper.config cleanup of duplicate lines
5466
54672004-09-04  jrandom
5468    * Added some basic guards to prevent multiple instances from running.
5469      Specifically, a file "router.ping" in the install directory which is
5470      written to once a minute - if that file exists and has been modified
5471      within the last minute, refuse to start up.  In turn, adjust the
5472      service wrapper to wait a minute before restarting a crashed JVM.
5473    * Create a "work" directory in the I2P install dir which Jetty will
5474      use for all of its temporary files.
5475    * Tell the browser not to cache most of the router console's pages.
5476
54772004-09-04  jrandom
5478    * Update the SDK to automatically reconnect indefinitely with an
5479      exponential delay on retries (capped at 5 minutes).
5480
5481* 2004-09-03  0.4 released
5482
54832004-09-03  jrandom
5484    * Updated default wrapper.config to deal with the hard restart option
5485    * Include the history.txt in the /help.jsp page
5486    * HTML updates (wrapper.log, and no more unix scripts)
5487    * Updated VERSION constants to 0.4
5488
54892004-09-03  hypercubus
5490    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
5491    * Temporarily removed install_i2p_service_unix and
5492      uninstall_i2p_service_unix from distribution packages.
5493    * postinstall.bat/postinstall.sh cleans installation directory of all files
5494      not applicable to the host OS.
5495
54962004-09-03  oOo
5497    * Added some filters to the HTTP request, replacing the User-Agent,
5498      Referrer, Via, and From headers, which helps until we have a more
5499      comprehensive filtering system.
5500
55012004-09-03  jrandom
5502    * Disabled the old listener on port 7655.
5503
55042004-09-02  jrandom
5505    * Cleaned up the base build.xml, adding a new target ("updater") which
5506      builds the file i2pupdate.tar.bz2 which can be safely extracted over
5507      existing installs.
5508
55092004-xx-xx  jrandom
5510    * Implemented the new web architecture and router console
5511    * Implemented I2PTunnel web interface, and revamped startup process.
5512    * Revamped peer selection code to address skew.
5513    * Removed all temporary threads from the router and the SDK.
5514    * Bugfix dealing with timeouts and resends.
5515    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
5516
55172004-xx-xx  hypercubus
5518    * Implemented the new installation process.
5519    * Integrated systray
5520    * Integrated service manager
5521
55222004-xx-xx  oOo
5523    * Implemented ?i2paddresshelper= hook
5524    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
5525
55262004-xx-xx  Nightblade
5527    * libSAM updates.
5528
55292004-xx-xx  cervantes
5530    * Imported i2pProxy.pac proxy script in with the build.
5531
5532* 2004-08-20  0.3.4.3 released
5533* 2004-08-12  0.3.4.2 released
5534* 2004-08-08  0.3.4.1 released
5535* 2004-07-29  0.3.4 released
5536* 2004-07-23  0.3.3 released
5537* 2004-07-16  0.3.2.3 released
5538* 2004-07-14  0.3.2.2 released
5539* 2004-07-11  0.3.2.1 released
5540* 2004-07-07  0.3.2 released
5541* 2004-06-25  0.3.1.5 released
5542* 2004-05-23  0.3.1.4 released
5543* 2004-05-20  0.3.1.3 released
5544* 2004-05-13  0.3.1.2 released
5545* 2004-05-07  0.3.1.1 released
5546* 2004-04-30  0.3.1 released
5547* 2004-04-20  0.3.0.4 released
5548* 2004-04-04  0.3.0.3 released
5549* 2004-03-30  0.3.0.2 released
5550* 2004-03-25  0.3.0.1 released
5551* 2004-03-21  0.3.0 released
5552* 2004-03-10  0.2.5.4 released
5553* 2004-03-04  0.2.5.3 released
5554* 2004-02-28  0.2.5.2 released
5555* 2004-02-27  0.2.5.1 released
5556* 2004-02-25  0.2.5 released
5557* 2004-02-19  0.2.4.2 released
5558* 2004-02-15  0.2.4.1 released
5559* 2004-02-14  0.2.4 released
5560* 2004-01-27  0.2.3.6 released
5561* 2004-01-21  0.2.3.5 released
5562* 2004-01-14  0.2.3.4 released
5563* 2003-12-29  0.2.3.3 released
5564* 2003-12-27  0.2.3.2 released
5565* 2003-12-25  0.2.3.1 released
5566* 2003-12-13  0.2.3 released
5567* 2003-12-01  0.2.2 released
5568* 2003-11-18  0.2.1.1 released
5569* 2003-11-12  0.2.1 released
5570* 2003-11-09  0.2.0.3 released
5571* 2003-11-08  0.2.0.2 released
5572* 2003-11-03  0.2.0.1 released
5573* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.