source: history.txt @ 2f6ae99

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

2009-06-05 sponge

  • BOB now cleans up tunnels, although they can take up to 5 minutes to disapear. This is due to the fact that the streaming lib doesn't actually remove the connections properly and kill them off when the manager is destroyed. I'm not certain if this is a bug, or a feature, but it sure is annoying, and you have to wait for the connections to time out. What should happen is the streaming lib should cause an IO error to the pending read or write.
  • Property mode set to 100644
File size: 255.2 KB
Line 
12009-06-05 sponge
2    * BOB now cleans up tunnels, although they can take up to 5 minutes to
3      disapear. This is due to the fact that the streaming lib doesn't
4      actually remove the connections properly and kill them off when the
5      manager is destroyed. I'm not certain if this is a bug, or a feature,
6      but it sure is annoying, and you have to wait for the connections to
7      time out. What should happen is the streaming lib should cause an IO
8      error to the pending read or write.
9
102009-05-30 zzz
11    * Console:
12      - config.jsp now cause graceful restart
13      - More peers.jsp and profiles.jsp cleanup
14      - tunnels.jsp improvements
15      - Use CSS for form messages
16      - Goodbye nonce spoof messages (sorry jr)
17      - config.jsp: Comment out unused burst config code
18      - Don't forget Serbia!
19      - configadvanced.jsp cleanup
20    * LoadTestManager: Delete, unused
21    * Peer Selector: Make strict order opaque to hash value
22    * SendGarlicMessageJob: Delete, unused
23    * Session Keys:
24      - Don't instantiate unused SessionKeyPersistenceHelper
25      - Use TransientSessionKeyManager instead of PersistentSessionKeyManager
26      - Add generics to TransientSessionKeyManager to help understand it
27      - Change initial session map size to 64 (was 1024)
28      - Prepare for per-destination SessionKeyManagers in ElGamalAESEngine
29      - More stubs for per-destination managers in the client manager
30    * Transports:
31      - Adjust bids when near conn capacity
32    * UDP:
33      - Remove unused stats and test code
34      - Only save IP when it changes
35    * UPnP:
36      - Prevent NPE after ParserException
37      - Tweak to help startup problems?
38      - Retry port forward if it fails
39      - Make peers.jsp display faster
40      - Lengthen POST timeout
41      - More comments
42
432009-05-29 sponge
44    * added big fat start/stop lock into BOB
45    * added zap command to shut down BOB... now we need a way to start it
46      after it stops. :-)
47
482009-05-27 Mathiasdm
49    * Increase sendProcessingTime some more, add a property to configure.
50      Configure with 'router.defaultProcessingTimeThrottle'.
51
522009-05-27 Mathiasdm
53    * Increased sendProcessingTime limits and added testSuccessTime
54      to avoid unwanted throttling
55
562009-05-26 Mathiasdm
57    * Throttling extension by looking at sendProcessingTime
58
592009-05-26 zzz
60    * Console:
61      - configlogging.jsp cleanup
62      - Flags tweak
63    * NetDb:
64      - Don't send our own hash in the don't-include list when exploring
65      - Remove any pending write when removing a RouterInfo
66      - Cleanup to use routerHash()
67    * Streaming: Hopefuly fix infinite loop in the SYN queue handler
68
692009-05-25 zzz
70    * GeoIP:
71      - Save our own location in the config
72      - Check whole netDb at startup (last try didn't work)
73    * NTCP:
74      - Increase routerinfo send frequency to every 90m (was 9h)
75      - Don't send 3 floodfill infos at startup or with routerinfo
76    * Profile Organizer: Increase min fast peers based on
77      number of local destinations
78    * Timestamper:
79      - Use GeoIP to query a closer ntp source if available
80      - Lengthen query time if well-synced
81      - Cleanup
82
832009-05-24 mkvore
84    * SAM: logging some exceptions at INFO level instead of ERROR
85
862009-05-24 zzz
87    * Connection limits / throttle:
88      - Better limits when no inbound TCP
89        (limit inbound and outbound separately)
90      - Don't offer to SSU introduce when near connection limit
91    * Console:
92      - Move flags from icons/ to docs/icons
93      - peers.jsp cleanup
94      - Add readme_zh.html
95    * GeoIP:
96      - Check netDb SSU IP too
97      - Check whole netDb at startup
98    * NTCP: Log who is sending us big messages
99    * UPnP: Move logging from wrapper log to router log
100
1012009-05-23 Mathiasdm
102    * Router netDB:
103      - Added flags to the netDB page
104
1052009-05-22 Mathiasdm
106    * desktopgui:
107      - Updating works in general config
108      - Switched to Swingworker threads for improved responsiveness
109
1102009-05-21 zzz
111    * Router Watchdog:
112      - Log memory stats
113      - Dump threads on linux
114      - Restart after 20 minutes (give the dog his teeth back)
115
1162009-05-21 zzz
117    * DataStore:
118      - Adjust interface to have persistent and non-persistent methods,
119        to prepare for partial storage in RAM
120    * ExpireRoutersJob:
121      - Rewrite, not enabled yet
122    * I2Punnel:
123      - Increase eepsite default to 3+0 for new installs
124    * PersistentDataStore:
125      - Cleanup, simplify, and concurrentify
126      - Tweak stats
127      - Remove write limit
128      - Flush to disk on shutdown
129      - Don't write out what we just read in
130    * Router and console:
131      - Bundle geoIP files and flags in new installs,
132        spiff up tunnels.jsp and profiles.jsp.
133        Existing installs can get files with 'ant updaterWIthGeoIP'
134        or in the console docs bundle 'ant consoleDocs'
135      - Use flags for shitlist and peers.jsp too
136      - Tweak tunnels.jsp to show class letters
137      - Hide in-progress details on tunnels.jsp
138      - Add a little color to confignav
139      - Remove 'no skew' message
140      - More message tweaks if no wrapper
141    * TunnelManager:
142      - Remove now-unused isInUse()
143    * UPnP:
144      - Fix up port binding, add some logging on bind fails
145      - Force IPv4 only for binds
146
1472009-05-20 Mathiasdm
148    * General configuration enabled by default
149    * General configuration speed tab works completely
150
1512009-05-17 zzz
152    * Merge i2p.i2p.zzz.upnp branch
153     * Major changes:
154      - Detect IP with UPnP
155      - Open firewall ports with UPnP
156      - Detect IP by checking local interface addresses
157      - Enable TCP auto-IP and auto-port by default, if UDP status is "OK"
158      - Network configuration page rework
159     * Other stuff:
160      - Remove unused verifyupdate.jsp
161     * Details of the UPnP and related Transport changes:
162      - Add UDP Port configuration to config.jsp
163      - Don't restart router when configs change on config.jsp;
164        simply rebuild router info.
165      - Clean up some port config code in UDP
166      - Implement UPnP enable/disable
167      - Start to rework inbound configuration
168      - Tweak UPnP warning messages
169      - Start of callbacks from UPnP to transports
170      - Tell UDP local addresses at startup
171      - NTCP Port must now be either auto or configured;
172        now defaults to auto; and configured now trumps auto.
173        Port configuration now does not affect whether inbound
174        NTCP is enabled - the host configuration alone can do that.
175      - i2np.ntcp.autoip=true redefined to enable inbound only if
176        SSU reachability is OK. i2np.ntcp.autoip=always for the old behavior.
177        autoip default is now "true".
178        i2np.ntcp.hostname=xxx now trumps i2np.tcp.autoip.
179      - SSU always tells NTCP when status changes.
180      - Implement config save of new IP address options
181      - Implement local address and UPnP configuration of UDP address
182      - Limit received port to 1024 minimum
183      - Simplify bw form
184      - Add config link to UPnP status
185      - Make short timeouts for UPnP HTTP POST so we don't hang when
186        the UPnP device goes away
187      - Fix a bug in UPnP HTTP Server timeout
188      - Make short timeouts for the XML parser so we don't hang when
189        the UPnP device goes away - same as for HTTP POST
190      - Stuff the port mapping requester into a thread so it doesn't
191        delay everything for several seconds
192      - Handle UPnP devices that return IP = 0.0.0.0
193      - Better HTML output when no IP found
194      - Tweak logging
195      - Set Disposer thread name
196      - Keep the control point running after we find an IGD,
197        so that we get notifications of it leaving or
198        coming back or replaced.
199      - Detect UPnP start failure
200      - Sort local addresses
201      - Store last IP for future laptop mode
202      - Subscribe to service, doesn't seem to do anything though,
203        need to test it more
204      - Change UPnP listener port defaults, allow configuration option
205      - Don't notify for non-changed options on config.jsp
206      - Simplify config.jsp some more
207      - No longer use i2np.udp.forceIntroducers
208      - Tweak UDP port qualification
209      - Fix allowing low ports again
210      - Add option to completely disable NTCP, for those behind nasty firewalls
211      - Use SSU reachability rather than global reachability for determining NTCP reachability,
212        since we are now reporting NTCP reachability too
213      - Tweak the config sub-navbar
214      - Don't start UPnP if we have a public interface address
215      - Fix setting IP to a local interface address
216      - Work on the configuration help some more
217      - Rework UDP peers.jsp table a little
218      - Don't let UDP bid on messages that are too long
219      - Clean up the max fragments code in UDP
220
2212009-05-17 zzz
222    * Build files:
223      - Remove unneeded ant.jar from package (900KB)
224      - Fail on Jsp compile errors
225    * FloodfillVerifyJob: Don't consider an older search result as verified
226    * logs.jsp: Add link to config
227    * NetDb: Lower the routerinfo expiration again
228    * SusiDNS:
229      - Reduce displayed entries from 300 to 100
230      - Add ability to go forward or back
231      - Make textareas bigger
232      - Clean up file names
233      - Clarify messages about filter and search
234
235* 2009-05-16  0.7.3 released
236
2372009-05-16 Complication
238    * Update versions, package release
239
2402009-05-12 sponge
241    * BOB clean up, change println's to _log.warn, bump BOB version
242    * I2PSessionMuxedImpl.java changes as per zzz, and they test OK for me.
243
2442009-05-12 mkvore
245    * SAM: fix: warnings when generating javadoc
246
2472009-05-11 zzz
248    * Connect client: Fix NPE when used with advanced i2ptunnel features
249    * Context: Don't instantiate unused AdminManager
250    * logs.jsp: Put critical log at the top
251    * NetDb: Don't accept stores of our own LeaseSets or RouterInfo
252
2532009-05-11 mkvore
254    * SAM: fix: removed ERROR level logging when a client disconnects
255
2562009-05-09 sponge
257    * merge
258
2592009-05-09 sponge
260    * fixed OOM on lock (woops! my bad!)
261
2622009-05-08 Mathiasdm
263    * desktopgui: moved files to stop polluting the namespace
264          (everything now in net.i2p.desktopgui)
265    * desktopgui: some variable renaming in general configuration
266
2672009-05-07 mkvore
268    * SAM: version 3 added
269    * SAM: blocking case corrected on simultaneous client connection (v.1-3)
270
2712009-05-07 zzz
272    * Add nibble.i2p to proxy list and hosts.txt
273
2742009-05-07 zzz
275    * Addressbook: Name the thread
276    * Console:
277      - More IE button fixes, try harder to not refresh the iframe after shutdown
278      - Disable idle options for streamr client, it will never be
279        idle because it pings the server
280    * Floodfill Monitor: Slow down the volunteers
281    * Throttle: Throttle at 90% so we throttle before we WRED
282
2832009-05-06 Mathiasdm
284    * Improvements to popup menu rightclick action
285    * Added general configuration options (still not available by default)
286    * General fixes
287    * Added ant build options (irc says eche|on would like that ;))
288
2892009-05-06 sponge
290    * Hopefully the last fixes for BOB.
291    * Fixes to prevent race in client-side I2CP and Notifier.
292
2932009-05-03 sponge
294    * More hopeful fixes for BOB.
295    * Added new Robert ID to snark
296
2972009-05-01 zzz
298    * Build files:
299      - Fix up susidns build file so it will work with gcj
300      - Add consoleDocs target
301    * Client: Fix race NPE (thanks sponge)
302    * Console: fix ERR-UDP Disabled and Inbound TCP host/port not set
303    * I2CP: Fix race NPE
304    * I2PTunnel:
305      - Try to fix locking to prevent duplicate destinations when using
306        the new option new-dest-on-resume. Still not right for shared clients
307        but should be better for non-shared.
308    * Router console:
309      - Add jbigi and cpu info to logs.jsp
310    * Session key manager:
311      - Log before a hang maybe
312    * URL Launcher:
313      - Launcher on linux was stopping after trying opera, whether it succeeded or failed.
314        Now it keeps going to try firefox, etc. as designed.
315      - Extend default delay from 5s to 15s so it will reliably start
316
3172009-04-27 sponge
318    * more BOB fixes, complete with warnings when things go wrong, and
319      success messages when things turn around and go right. Terminates
320      early so that applications wait no more than 10 seconds or so.
321    * Reversed a few earlier patches that caused some odd behavior.
322    * Changed some core println()'s to debugging messages.
323
3242009-04-27 zzz
325    * Build files:
326      - New updaterWithJettyFixes target, build it for pkg
327      - Pass compiler args down from top build.xml
328    * GarlicMessageBuilder: Reduce bundled tags to 40 (was 100)
329    * i2psnark: Add Postman2 tracker
330    * I2PTunnel: Allow spaces in dest and proxy lists
331    * NetDb:
332      - Adjust RouterInfo expiration down to control memory usage
333      - Display LeaseSets and RouterInfos on separate console pages
334    * NTCP:
335      - Correct the meanings of the i2np.ntcp.autoip and i2np.ntcp.autoport
336        advanced config. If you have one of these set but not the other, you
337        will have to adjust your configuration on config.jsp.
338    * RouterConsole: iframe tweaks
339    * StatisticsManager: Cleanup
340    * Streaming: Don't let jrandom yell so loud
341    * Tunnel Pool: Don't self-destruct if more than 6 IB tunnels configured
342
3432009-04-25 sponge
344    * I2PSessionMuxedImpl atomic fixes
345    * BOB fixes. This should be the final bug wack. Good Luck to everybody!
346
3472009-04-23 zzz
348    * Blocklist: cleanup
349    * eepget: handle -h, --help, bad options, etc.
350      (http://forum.i2p/viewtopic.php?p=16261#16261)
351    * Fragmenter: don't re-throw the corrupt fragment IllegalStateException,
352      to limit the damage - root cause still not found
353    * i2psnark: (http://forum.i2p/viewtopic.php?t=3317)
354      - Change file limit to 512 (was 256)
355      - Change size limit to 10GB (was 5GB)
356      - Change request size to 16KB (was 32KB)
357      - Change pipeline to 5 (was 3)
358    * logs.jsp: Move version info to the top
359    * Jetty: Fix temp dir name handling on windows, which was
360      causing susidns not to start
361      (http://forum.i2p/viewtopic.php?t=3364)
362    * NTCP: Prevent IllegalStateException
363    * PeerProfile:
364      - Replace a hot lock with concurrent RW lock
365      - Rewrite ugly IP Restriction code
366      - Also use transport IP in restriction code
367    * RouterConsole: Make summary bar a refreshing iframe
368    * Transport: Start the previously unused CleanupUnreachable
369
3702009-04-21 sponge
371    * Code janitor work, basic corrections involving @Override, and
372      appling final where it is important. Also fixed some equals methods
373      and commented places that need fixing.
374
3752009-04-18 Complication
376    * Fix typo in "news.xml", no build number increase.
377
378* 2009-04-18  0.7.2 released
379
3802009-04-18 Complication
381    * Update versions, package release
382
3832009-04-17 sponge
384    * fixed setIP, just be sure to distclean before building :-)
385    * more lint taken care of as well.
386
3872009-04-17 sponge
388    * setIP wants to be a static method in the class, but it produces
389      warnings about it being static from other code.
390
3912009-04-17 sponge
392    * Catch NPE in NTCP.
393      This possibly augments fix 2009-04-11 welterde below.
394    * Various LINT on NTCP sources, and removal of space-wasting
395      spaces at end of lines in sources touched.
396
3972009-04-13 Mathiasdm
398    * Bugfix on tray icon updating
399    * Some more work on the general configuration menu
400      (currently not added to the tray icon menu yet, needs more work)
401    * Tweaked the desktopgui logo
402
4032009-04-13 Mathiasdm
404    * Added I2P version and GUI version to desktopgui
405    * Tweaks to the tray icon menu
406    * Some starting work on a GUI general configuration menu
407    * Bugfix allowing spaces in directory structure
408
4092009-04-13 welterde
410    * small fix in the eepproxy
411
4122009-04-11 welterde
413    * fixed NPE in NTCP transport
414
4152009-04-11 sponge
416    * i2ptunnel janitorial work and fixes on most locks.
417      Some locks still need work, and are marked with LINT in the comment.
418      Just grep for "LINT" to see where the remaining places are.
419
4202009-04-10 sponge
421    * More BOB threadgroup fixes, plus debug dump when things go wrong.
422    * Fixes to streaminglib, I2CP, which are related to the TG problem.
423    * JavaDocs fixups.
424
4252009-04-08 sponge
426    * More hopeful fixups to the infamous orpahned tunnel problem. *Sigh*
427
4282009-04-08 zzz
429    * IPV6/localhost:
430      - Enable IPv6 stack in the JVM, hopefully won't break anything
431      - Patch Jetty to support binding to IPv6 addresses
432      - Allow multiple bind addresses for the router console
433        in the clients.config file; for new installs the
434        default is now "127.0.0.1,::1"
435      - Change most instances of "localhost" to "127.0.0.1"
436        throughout the code
437    * Router:
438      - Move some classes to private static inner
439
4402009-04-07 sponge
441    * BOB prevent jvac from optimizing out thread-group code from -10
442
4432009-04-07 zzz
444    * NTCP: Prevent occasional NPE introduced in -4
445    * streamr: Synchronize DatagramMaker
446
4472009-04-07 sponge
448    * SimpleTimer2, SimpleScheduler fixed so that the threads all run from
449      The main threadgroup, not in the current possible child threadgroup.
450      So long as any SimpleTimer2/SimpleScheduler is started *BEFORE* any
451      child threadgroups, the constructors are threadgroup safe. What would
452      be super cool is if they were to be all jailed within thier very own
453      threadgroup too, but, I2P isn't up to the task of this yet.
454    * Fixes to BOB to ensure the above is true.
455
4562009-04-06 sponge
457    * Debugging to make SimpleTimer2 and SimpleScheduler easier to debug.
458    * Fix for the config files in the GUI from mathiasdm
459
4602009-04-04 sponge
461    * Hopeful fixups to the infamous orpahned tunnel problem.
462    * BOB now 0.0.5
463
4642009-04-04 zzz
465    * NTCP: Don't bid on messages too big to handle
466
4672009-04-03 zzz
468    * Console:
469      - Fix bug with IE buttons not working,
470        because it sends the label instead of the value
471      - Display version of downloaded update
472    * Update:
473      - Change default to "Download and verify"
474      - Change news fetch default to 24h (was 12h)
475
4762009-04-03 sponge
477    * Fix broken dependencies for BOB.jar
478    * Router build version incremented to 5.
479
4802009-04-02 zzz
481    * Profiles:
482      - Remove unused calculators and RateStats:
483        CapacityCalculator, StrictSpeedCalculator, IsFailingCalculator;
484        sendFailureSize, processSuccessRate, processfailureRate, commErrorRate,
485        tunnelTestResponseTimeSlow
486      - Reduced number of Rates in these RateStats:
487        sendSuccessSize, receiveSize, rejectRate, failRate
488      - ~5KB/profile savings total
489      - Deflate speed calculation once an hour instead of once a day,
490        to improve fast tier selection
491      - Remove dup comment in persisted files
492    * StatisticsManager - effective in 0.7.2:
493      - Spoof uptime to 90m for all
494      - Change tunnel stats from 10m to 60m
495    * Transport:
496      - Maintain a router hash -> IP map in transport,
497        to support additional IP checks (unused for now)
498      - Catch error on pre-2.6 kernels
499      - Some concurrent conversion
500      - Fix an HTML error on peers.jsp
501
5022009-04-01 zzz
503    * I2PTunnel: Fix tunnel close
504      http://forum.i2p/viewtopic.php?t=3231
505
5062009-03-30 zzz
507    * I2CP:
508      - Implement BandwidthLimitsMessage
509      - Have i2psnark use new message, remove
510        build dependency on router
511    * Peer Selection:
512      - Limit peers to a max % of all tunnels with
513        router.maxTunnelPercentage=nn, default 33
514      - Add chart to tunnels.jsp to see results
515
516* 2009-03-29  0.7.1 released
517
5182009-03-29 Complication
519    * Update versions, package release
520
5212009-03-27 zzz
522    * Add readme_fr.html
523    * License splash update
524    * Catch rare TunnelGatewayMessage AIOOB, root cause unknown
525
5262009-03-24 zzz
527    * I2PTunnel:
528      - Add some warnings about new features
529      - Fix encrypted leasesets broken in about -4
530      - Suppress log error on manual stop
531      - Fix NPE on close of a tunnel not open yet
532    * Transport:
533      - Increase default bw to 64/32, burst 80/40
534    * Tunnels: Change some fragmentation errors to warns
535
5362009-03-16 zzz
537    * help.jsp: Add some
538    * I2PTunnel: Cleanup
539    * I2PTunnelHTTPClient: Fix NPE on delayed open
540    * I2PTunnelHTTPServer: Maybe catch an NPE
541    * SOCKS: Allow .onion addresses for onioncat testing
542    * Tunnel: Catch a rare AIOOB
543
5442009-03-09 zzz
545    * Client:
546      - Clean up retry code
547      - Bring I2CP listen error to the summary bar
548        http://forum.i2p/viewtopic.php?t=3133
549    * I2PSnark: Remove the http from the add torrent box
550    * I2PTunnel:
551      - Add persistent key option for standard and IRC clients
552      - Add delay-open option for clients
553      - Get regenerate-dest-on-reconnect working
554      - Add default key file name
555      - Add link to addressbook
556      - I2PSink: Send protocol byte
557    * OCMOSJ:
558      - Change from 5% reply requests to at least
559        once per minute, in hopes of reducing IRC drops
560      - More clean up of the cache cleaning
561    * Routerconsole: Don't OOM configpeer.jsp on huge blocklists
562
5632009-02-26 zzz
564    * I2CP Client: Add support for muxing
565    * I2PTunnel:
566      - Add new IRCServer tunnel type
567      - Add SOCKS 4/4a support
568      - Catch OOMs in HTTPServer
569      - Name the IRCClient filter threads
570      - Port Streamr to I2PTunnel
571      - The beginnings of SOCKS UDP support
572    * Naming: Add reverse lookup by hash
573    * OCMOSJ: Clean up the cache cleaning
574    * Router: Move addShutdownTask from Router to I2PAppContext
575      so that apps can register more easily
576    * Routerconsole:
577      - Thread hard shutdown and restart requests from the routerconsole,
578        and add a delay even if no tunnels, to allow time for a UI response
579      - Sort the summary bar destinations
580      - Move dest-to-hash converter to new helper class so we can
581        use it in i2ptunnel
582
5832009-02-22 sponge
584    * BOB: Orphan tunnel issue fix, bump BOB version
585    * bump to Build 6
586
5872009-02-16 zzz
588    * Streaming lib: Plug timer leak, don't send keepalives
589      after close, don't disconnect hard after close
590
5912009-02-15 zzz
592    * Add licenses to all packages
593    * I2PSession: Concurrent _messagesReceived
594    * i2psnark: tmp file removal try #3
595    * I2PTunnel:
596      - Don't buffer POST data in HTTPClient
597      - Display destination even when stopped
598      - Enable key generation, dest modification, and
599        hashcash estimation in the GUI
600      - Add new CONNECT client
601    * NetDb: Enforce 60s minimum leaseset publish interval
602    * Streaming lib:
603      - Plug connection leak
604      - Move ConEvent from SimpleTimer to SimpleScheduler
605      - Move RetransmissionTimer (ResendPacketEvent)
606        from SimpleTimer to new SimpleTimer2
607      - Move ActivityTimer and Flusher from SimpleTimer to RetransmissionTimer
608      - SimpleTimer2 allows specifying "fuzz" to reduce
609        timer queue churn further
610    * Susidns: Fix save of new dest broken in 0.7
611    * TunnelPool:
612      - Allow leasesets with reduced leases for robustness and startup speed
613      - Plug in-progress build leak
614
6152009-02-07 zzz
616    * ClientConnectionRunner, Shitlist, TunnelDispatcher:
617      Update using concurrent
618    * Streaming ConnectionHandler: Bound SYN queue and
619      use concurrent to prevent blowup
620    * HTTP Proxy: Fix error msg for b32 addresses
621    * I2CP: Implement optional reduce tunnels on idle - not hooked
622      in to i2ptunnel GUI yet - still needs tweaks
623    * I2CP MessageReader: Prevent rare NPE
624    * I2CP Writer: Rewrite using concurrent
625    * i2psnark: Add torrent and connection count
626    * I2PTunnel & I2CP:
627      - Fix tunnel reduction/restore, hook in the GUI
628      - Hook leaseset encryption into the GUI
629      - Implement saves for all the new stuff
630      - Add cancel button
631      - Add b32 display for non-http servers
632      - Prep for CONNECT
633      - Fix error msg when connection goes away
634    * NetDb: Remove all DataPublisher stuff
635    * Wrapper: Remove dup timeout
636
6372009-02-02 sponge
638    * Final? cleanups to Slackbuilds.
639    * ant target for Slackbuilds.
640
6412009-02-01 sponge
642    * Slackbuild files... if we can have them for Debian, why not :-)
643
6442009-02-01 zzz
645    * Convert some inner classes to static (findbugs)
646    * DataHelper.readLong(): Was returning -1 on EOF instead
647      of throwing exception
648    * i2psnark: Increase tunnels and pipeline to 3
649    * NTCP: Use a java.util.concurrent execution queue instead of
650      SimpleTimer for afterSend() to reduce lock contention
651    * Remove source from susimail.war, susidns.war, i2ptunnel.war (85KB)
652    * Routerconsole:
653      - Move common methods to new HelperBase class
654      - Make reseed link a button
655    * SimpleScheduler: New replacement for SimpleTimer when events
656      will not be rescheduled or cancelled, to reduce SimpleTimer
657      lock contention
658    * Tunnel Pool:
659      - Remove tunnel from participating if can't contact next hop
660      - Fail outbound build faster if can't contact first hop
661    * Wrapper: Remove dup timeout
662
6632009-01-31 dream
664    * Debian files
665
6662009-01-31 sponge
667    * One line BOB discarded interger fix
668      (not that it mattered at this point)
669
6702009-01-25 zzz
671    * Build files:
672      - Don't bundle unneeded XML parser xercesImpl.jar (1MB)
673      - Don't include unneeded stuff in Copy, Delete, Exec.jar (300KB)
674    * I2CP:
675      Implement new I2CP message ReconfigureSessionMessage.
676      Will be used for tunnel reduction.
677    * I2PTunnel Edit Pages:
678      - Change default length to 2+0
679      - Cleanup helper code
680      - Prevent null spoofhost
681      - Stub out the following new options (C=client, S=server):
682        + Access list (S)
683        + Certificate type (S)
684        + Encrypted LeaseSet (S)
685        + New dest on idle restart (C)
686        + Tunnel closure on idle (C)
687        + Tunnel reduction on idle (C,S)
688    * I2PTunnel Socks:
689      - Add support for SOCKS to GUI
690      - Don't NPE on SOCKS 4, just close
691      - Don't have SOCKS build a new dest for every request
692      - Beginnings of SOCKS configuration by port
693      - HTML error msg for attempted HTTP access
694    * LeaseSet: Add encrypt/decrypt methods
695    * netdb.jsp: Don't show stats by default
696    * OCMOSJ: Bundle a reply when we switch tunnel or lease,
697      to detect failure sooner
698    * PublishLocalRouterInfoJob:
699      - Delay for 5m at startup
700      - Run every 20m (was 7.5m)
701    * RebuildRouterInfoJob: Don't run it
702    * Router: Add a keyring for decrypting leases
703    * Routerconsole: Add configkeyring.jsp
704    * SummaryHelper.getTransferred() move to DataHelper,
705      rename to formatSize(), use on tunnels.jsp
706    * Streaming, I2CP, Client Message sending:
707      Pass message timeout through new I2CP message
708      SendMessageExpiresMessage, so that the router
709      uses the same expiration as the streaming lib.
710      Should help reliability.
711    * Streaming: TCB control block sharing
712
713* 2009-01-24  0.7 released
714
7152009-01-24 Complication
716    * Update versions, package release
717
7182009-01-17 zzz
719    * NTCP: Prevent two NTCP Pumpers
720
7212009-01-14 zzz
722    * config.jsp: Fix burst seconds display
723    * HTTPClient: Fix per-tunnel settings for i2cp.gzip and
724      i2ptunnel.httpclient.send* (thx tino)
725    * i2psnark:
726      - Fix double completion message
727      - Add crstrack
728    * initialNews.xml: Add .de (thx echelon)
729    * Message: Always distribute an inbound msg back out
730      a tunnel to foil a possible latency-measuring attack
731      (welterde)
732    * Naming:
733      - Change base32 names to *.b32.i2p
734      - Add i2p.naming.hostsTxt.useB32 config
735    * profiles.jsp: Remove 1m column
736    * SAM: Don't build tests by default
737    * Streaming:
738      - Prevent a rare NPE
739      - Reduce initial RTT to 8s (was 10s)
740    * tunnels.jsp: Add netdb links
741
7422009-01-08 zzz
743    * addressbook: Prevent Base32 hostnames
744    * build.xml: Remove readme_xx.html from updater
745    * configtunnels.jsp: Fix display of outbound backup count
746    * configupdate.jsp: Fix corruption of update URLs
747    * i2psnark: Recognize Robert 0.3 and 4
748    * ExploreJob/SearchJob - fix brokenness:
749      - Give each search a minimum of time even at the end
750      - Fix ExploreJob exclude peer list
751      - Always add floodfills to exclude peer list
752      - Don't queue keys for exploration or run ExploreJob
753        if floodfill
754      - Allow floodfills to return non-floodfills in
755        a DSRM msg so exploration works
756    * ExploreJob/SearchJob - more fixes:
757      - Disable ExploreKeySelectorJob completely, just have
758        StartExplorersJob select a random key if queue is empty
759      - Add netDb.alwaysQuery=[B64Hash] for debugging
760      - Queue results of exploration for more exploration
761      - Floodfills periodically shuffle their KBuckets, and
762        FloodfillPeerSelector sorts more keys, so that
763        exploration works well
764    * Shitlist: Reduce max time to 30m (was 60m)
765    * Streaming:
766      - Reduce default initial window size from 12 to 6,
767         to account for the MTU increase in the last release
768         and try to limit initial packet loss
769      - Reduce fast retransmit threshold from 3 to 2
770    * Transport: Don't shitlist a peer if we are at our
771      connection limit
772
7732009-01-03 zzz
774    * config.jsp: Move the buttons up
775    * configservice.jsp: Clean up and fix the broken (?)
776      browser launch configuration
777    * i2psnark:
778      - Try again to remove the i2psnarkurl files on shutdown
779      - Sort torrents with a locale-based sort
780    * NetDb:
781      - Expire routers with introducers after 90m.
782        This should improve reachability to firewalled routers
783        by keeping introducer info current.
784      - Expire routers with no addresses after 90m.
785      - Convert to java concurrent
786    * Stats: Add router.memoryUsed, graph by default
787    * Summary bar: Remove spurious UDP warning on startup
788    * UpdateHandler: Make extensible for upcoming
789      torrent updater
790
7912008-12-15 zzz
792    * Remove apps/ bogobot jdom pants q rome stasher syndie
793
7942008-12-14 zzz
795    * Contexts: Add int getProperty(String prop, int default)
796    * I2PAppThread: Constructor fix
797    * More split classes into their own files for mkvore
798    * Streaming: Don't build test cases by default
799    * Summary bar: Replace links with buttons
800    * Transport:
801      - Cleanup max connections code
802      - Add i2np.udp.maxConnections
803      - Set max connections based on share bandwidth
804      - Add haveCapacity() that can be used for connection
805        throttling in the router
806      - Reject IBGW/OBEP requests when near connection limit
807      - Reduce idle timeout when near connection limit
808    * Tunnel request handler:
809      - Require tunnel.dropLoad* stats
810      - Speed up request loop
811    * I2CP, HostsTxtNamingService, I2PTunnel:
812      Implement Base32 Hash hostnames, via the naming service.
813      Names are of the form [52-characters].i2p, where
814      the 52 characters are the Base32 representation of our
815      256-byte hash. The client requests a lookup of the hash
816      via a brief I2CP session using new I2CP request/reply
817      messages. The router looks up the leaseset for the hash
818      to convert the hash to a dest. Convert the I2PTunnel
819      'preview' links to use Base32 hostnames as a
820      demonstration.
821
8222008-12-08 zzz
823    * ATalk: Move from core to apps
824    * Blocklists: enable by default, include blocklist file
825      in new installs
826    * Build: Add findbugs target
827    * Cleanup of removed netdb stats
828    * Console:
829      - Don't display restart button if no wrapper
830      - Remove PRNG stats
831    * Eepsite: Disable jetty webapps by default for new installs
832    * i2psnark:
833      - Add default i2psnark.config for new installs
834      - Remove wishlist link
835      - Recognize robert and i2psnarkxl clients
836      - Increase max files to 256
837    * Increase standalone heap size to 128MB
838    * NetDb: Split classes into their own files for mkvore
839    * PeerManager: Fix NPE on early shutdown
840    * SusiDNS: Add textareas
841    * Transport:
842      - Fixes, avoid NPEs, and cleanups when NTCP and/or UDP transports disabled
843      - More TCP removal cleanup
844      - Clean up bandwidth limiting, centralize defaults
845      - Force burst to be >= limit
846      - Increase default bw to 48/24, burst 64/32
847    * Tunnels: Avoid two NPEs on corrupt fragments
848
8492008-12-01 zzz
850    * i2psnark:
851      - Refactor to allow running a single Snark without a SnarkManager again,
852        by moving some things from SnarkManager to I2PSnarkUtil,
853        having Snark call completeListener callbacks,
854        and having Storage call storageListener callbacks.
855        This is in preparation for using Snark for router updates.
856        Step 2 is to allow multiple I2PSnarkUtil instances.
857      - Big rewrite of Storage to open file descriptors on demand, and
858        close them when unused, so we can support large numbers of torrents.
859
860    * i2psnark:
861      - Remove static instances of I2PSnarkUtil, ConnectionAcceptor,
862        and PeerCoordinatorSet
863      - Convert static classes in Snark to listeners
864      - Fix Snark to work in single torrent mode again
865      - Should now work with multiple single Snarks
866
867    * i2psnark:
868      - Use new I2PAppThread that does not call global listeners on OOM,
869        so that OOMing apps will not shutdown the whole router.
870
871    * i2psnark:
872      - Don't create SnarkManager instance until first call,
873        so it doesn't create the i2psnark dir, read the config,
874        etc., for single Snark instances.
875      - Don't read i2psnark.config twice; fix setting
876        i2psnark.dir
877      - More Snark constructor changes for calling from router
878      - Make max connections per torrent configurable
879
880    * SAM:
881      - Use new I2PAppThread that does not call global listeners on OOM,
882        so that OOMing SAM will not shutdown the whole router.
883
884* 2008-12-01  0.6.5 released
885
8862008-12-01 Complication
887    * Update versions, package release, fix typo in comment
888
8892008-11-26 zzz
890    * Fix Windows UrlLauncher
891
8922008-11-21 zzz
893    * Cache DNS and negative DNS for 5m (was 1m and forever)
894    * Delay shitlist cleaner at startup
895    * Strip wrapper properties from client config
896    * Define multiple cert type
897    * Prohibit negative maxSends in streaming
898    * HTML fixup on configtunnels.jsp
899    * Increase wrapper exit timeout from default 15s to 30s
900
9012008-11-20 zzz
902    * I2PTunnel: Handle missing fields in edit pages better
903    * Move DummyNetworkDatabaseFacade to his own file
904      to help the build dependencies
905    * Drop old tcp transport and old tunnel build sources
906    * EepGet:
907      - Better handling of 504 gateway timeout
908        (keep going up to limit of retry count rather
909         than just one more partial fetch)
910      - Add -t cmd line option for timeout
911      - Better handling of 403, 409, 503 errors
912      - Don't keep going after unknown return code
913      - Don't delay before exiting after a failure
914
9152008-11-15 zzz
916    * Build files:
917      - Don't die if depend not available
918      - Only verify Jetty hash once
919      - Add streaming lib tests to depend task
920    * I2CP Compression:
921      - Add i2cp.gzip option (default true)
922      - Add compression stats
923      - Don't bother compressing if really small
924
9252008-11-13 zzz
926    * Streaming:
927      - Add more info to Connection.toString() for debugging
928      - Fix lifetimeMessages{Sent,Received} stats
929      - Reduce RTT damping to 0.875 (was 0.9)
930      - Add a stream.con.initialRTT.{in,out} stats
931    * Build files:
932      - Use the depend task with caching for more accurate dependencies
933      - Make sure the routerconsole gets the latest router version
934      - Fix addressbook repeated builds
935    * HTTPClient: Add config options to pass Via, Referer,
936      and User-Agent through
937    * Blocklists: Fix lists with hashes only
938
9392008-11-11 zzz
940    * Streaming - Fix several bugs and improve performance
941      when the initial data is larger than one MTU,
942      e.g. HTTP GETs with large URLs, CGI params or cookies,
943      or large HTTP POSTS:
944      - Don't reject additional packets received without a
945        send stream ID (i.e. sent before the SYN ACK was received)
946      - Put unknown non-SYN packets on the SYN queue also
947        so they won't be rejected
948      - Reduce flusher delay to 250ms (was 500)
949      - Flush unless window is full (was window is non-empty)
950    * Streaming: Enforce a minimum MTU of 512
951    * I2PTunnel: Change "interactive" max window size to 16 (was 1)
952    * NetDb: Fix a deadlock caused by last checkin
953
9542008-11-09 zzz
955    * build.xml: Build speedups:
956      - Don't distclean in the updaterRouter target
957      - Don't make prepUpdate and prepupdateSmall depend
958        on distclean
959      - Don't make susimail build always clean
960      - Make pkg depend on distclean to be sure
961      - Clean out more routerconsole and susidns files in 'ant clean'
962      - i2ptunnel, routerconsole, susidns:
963        Only build WEB-INF when necessary
964      - systray: Only build jar when necessary
965      - Don't build i2psnark standalone for the updater target
966    * configclients.jsp: Provide a link when starting a webapp
967    * configtunnels.jsp:
968      - Code cleanup
969      - Add 4-hop option
970      - Remove +/- 0-2 option
971    * javadoc: Add some more package.html files
972    * I2PTunnelHTTPServer: Put the requestor's dest hash
973      in the request headers
974    * Jetty: Add a I2PRequestLog class to log request dest hash
975    * NetDb: Don't drop routerInfos if we have connectivity
976      issues or other problems
977    * NTCP: Lower idle timeout to 10m (was 15m)
978    * Routerconsole: Replace wtf msg w/ something nicer
979    * Tunnel BuildHandler: add config router.participantOnly,
980      set to true to refuse OBEP and IBGW roles, should
981      reduce connections significantly if set.
982
9832008-11-02 zzz
984    * Certificates:
985      - Add a signed Certificate type
986      - Add a main() to PrivateKeyFile to generate
987        Destinations with various Certificate types
988      - Add a VerifiedDestination class to check Certificates
989        of various types
990      - Add a HashCash library from http://www.nettgryppa.com/code/
991        (no distribution restrictions)
992      - Allow non-null Certificates in addressbook
993    * I2PTunnel: Move some wayward stats to the I2PTunnel group
994    * NamingServices: Implement caching in the abstract class
995    * NewsFetcher: Fix last updated time
996    * Streaming: Increase MTU to 1730 (was 960);
997      see ConnectionOptions.java for analysis
998    * Throttle: Reduce default max tunnels to 2000 (was 2500)
999    * clients.config: Disable SAM and BOB by default for new installs
1000
10012008-10-26 zzz
1002    * config.jsp: Add more help
1003    * peers.jsp: Clean up 'Listening on' formatting
1004    * profiles.jsp: Don't override locale number format
1005    * netdb.jsp: Indicate if hidden
1006    * summary.jsp: Indicate if hidden
1007    * i2ptunnel/edit.jsp: Disable word wrap in textarea
1008    * Blocklist: Change logging from ERROR to WARN
1009    * FloodfillMonitor:
1010       - Fix ff count (we forgot ourselves)
1011       - Don't become ff if hidden
1012    * HandleFloodfillDatabaseLookupMessageJob:
1013      Send back your routerinfo with the DSRM if not ff to
1014      spread the word that you aren't ff anymore
1015    * I2Ping:
1016       - Add -n count option
1017       - Add rtt output
1018       - Enhance help
1019       - Fix option handling
1020    * More findbugs cleanups
1021    * NetDb:
1022       - Fix behavior when router.isHidden=true
1023       - Delay StartExplorersJob for 10m at startup
1024       - Update dbLookup profile stats in FloodOnlySearchJob
1025         and FloodfillVerifyStoreJob
1026       - Fix response time store in profile in SearchJob
1027    * Stats:
1028       - Remove unused tunnel.buildSuccess and tunnel.buildFailure
1029       - Remove tunnel.buildRequestTime and 5m rate stats from
1030         netDb, effective in next release
1031    * UDP:
1032       - Don't do peer tests when hidden
1033       - Don't offer to introduce when hidden
1034       - Don't continually rebuild routerInfo when hidden
1035       - Don't continually rebuild routerInfo when
1036         i2np.udp.internalPort is set but i2np.udp.port is not
1037       - Remove some unused functions
1038
10392008-10-20 zzz
1040    * configclients.jsp: Handle clients with no args
1041    * index.jsp: Add readme_nl.html (thanks mathiasdm!),
1042      readme_sv.html (thanks hottuna!)
1043    * Big findbugs cleanup
1044    * Client: Prevent a race causing session reconnect
1045    * FloodfillMonitor:
1046       - Don't become ff if clock skew is high
1047       - Rebuild routerinfo immediately when ff status changes
1048    * FloodOnlySearchJob: Recover better if the floodfills
1049      you know are no longer floodfill or are gone
1050    * Installer: Bump min JRE to 1.5
1051    * ShellCommand: Fix main()
1052
10532008-10-14 zzz
1054    * index.jsp: Add multilanguage support for readme.html;
1055      add readme_de.html (thanks devzero!)
1056    * configupdate.jsp, configadvanced.jsp:
1057      Disable word wrap in textareas
1058    * install*.txt: Update for 1.5
1059    * summary.jsp: Remove failing peer count
1060
10612008-10-10 zzz
1062    * Profiles: Reduce reject penalty in
1063      capacity calculation to avoid a congestion collapse
1064    * Throttle: Change reject to BANDWIDTH from CRIT on shutdown
1065      for improved anonymity
1066    * Tunnels: Implement random discard to enforce share limit
1067    * Tunnel Tests: Add time for outbound delay, to avoid
1068      congestion collapse
1069    * UDPPacketReader: Adjust logging
1070    * build files: Change to source=1.5, target=1.5
1071    * configpeer.jsp: Table cleanup
1072    * i2psnark: Change default tunnel length from 1+1 to 2+0
1073    * peers.jsp: Change <,> to in,out for UDP
1074
10752008-10-09 sponge
1076    * Update version to -3
1077    * BOB database threadlocking fixes
1078
10792008-10-08 sponge
1080    * Update version to -2
1081    * Bugfixes and additions to BOB
1082
10832008-10-07 sponge
1084    * Bugfixes and additions to streaming.
1085    * Added SimpleStore class in utils.
1086    * Fixed SimpleTimer class to allow exit.
1087    * BOB (Basic Open Bridge) added.
1088
1089* 2008-10-05  0.6.4 released
1090
10912008-10-05 Complication
1092    * Update versions, package release
1093
10942008-09-29 zzz
1095    * i2psnark: Add codevoid link, remove mastertracker
1096
10972008-09-23 zzz
1098    * config.jsp: Add some reachability help
1099    * configpeer.jsp: Add blocklist info
1100    * help.jsp: Add link to German FAQ
1101    * tunnels.jsp: Fix inactive participating count
1102    * SearchReplyJob: Don't look up references to shitlisted peers
1103    * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
1104
11052008-09-20 zzz
1106    * NetDb: Fix the totally broken "check new routers against blocklist"
1107      code from 3 checkins ago
1108    * tunnels.jsp: Sort participating tunnels by usage, display rate
1109
11102008-09-19 zzz
1111    * Tunnels:
1112      - Add missing message accounting for inbound gateways,
1113        we were underestimating participating traffic because of it,
1114        and the tunnels were classified "inactive"
1115      - Add participating tunnel role on tunnels.jsp
1116
11172008-09-18 zzz
1118    * Throttle:
1119      - Correctly check inbound and outbound total bw limits separately
1120      - Fix up and actually use the tunnel.participatingMessageCount stat,
1121        favor it if lower than the total bw stat, so that
1122        client traffic isn't included for throttle decisions
1123      - Reduce min message count from 60 to 40
1124    * Tunnel Dispatcher:
1125      - Add tunnel.participatingBandwidth stat
1126      - Remove all 3h and 24h stats
1127
11282008-09-15 zzz
1129    * FloodOnlySearchJob:
1130      - Ask non-floodfill peers if we don't know any floodfills
1131      - Lookup hashes in the DatabaseSearchReplyMessage if we
1132        don't know enough floodfills
1133    * NetDb: Check new routers against blocklist
1134    * Router: Shutdown clients first
1135    * Throttle:
1136      - Use 60s rather than 10m tunnel.participatingMessageCount stat
1137      - Fix a summary bar message
1138    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
1139      every 20s, rather than at tunnel expiration, to maintain
1140      a more current stat
1141    * Tunnel Pool:
1142      - Prevent excess zero-hop tunnels
1143      - Always wait before looping in BuildExecutor
1144    * configlogging.jsp: Increase box width
1145    * logs.jsp: Remove unused connection log, cut wrapper log output in half
1146
11472008-09-12 zzz
1148    * Blocklist: Fix a log message format
1149    * HarvesterJob: Don't instantiate if disabled
1150    * i2psnark:
1151      - Add config i2psnark.linkPrefix to enable access to completed
1152        torrents from a different machine - examples:
1153           i2psnark.linkPrefix=file://///localserver/path/to/files/
1154           i2psnark.linkPrefix=http://localwebserver/path/
1155        (Stop i2psnark, add to i2psnark.config, restart)
1156      - Remove Galen and NickyB trackers
1157    * NetDb: Add netDb.exploreKeySet stat
1158    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
1159      and ?r=. to view our own; change links on other pages too
1160    * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
1161
11622008-09-06 zzz
1163    * EepGet command line: Fix byte counts after a failed resume
1164    * NTCP: Mark unreachable on outbound connection timeout
1165    * Shitlist: Fix partial shitlisting (still unused though)
1166    * Summary Bar: Warn if firewalled and floodfill
1167    * Throttle: Combine current and last bw measurement,
1168      reduce default max tunnels to 2500 (was 3000)
1169    * Tunnel BuildHandler: Logging cleanup
1170    * UpdateHandler: Cleanup, clarify failure message
1171    * DataHelper: Prepare for 999 day uptime :)
1172
11732008-08-29 zzz
1174    * Tunnel BuildExecutor: Debug cleanup
1175    * Profiles: Penalize capacity when tunnel build request times out
1176    * Shutdown: Call the shutdown hooks before the router shutdown
1177      rather than after
1178    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
1179
11802008-08-27 zzz
1181    * Floodfill Peer Selector: Prefer already-connected floodfill
1182      peer for direct RouterInfo stores, to mimimize floodfill
1183      connections
1184    * Peer Profiles: Classify connected peers as "active",
1185      which will help improve the fast pool
1186    * Transport Manager: Add isEstablished(Hash)
1187    * NTCP: Reduce max idle time from 20m to 15m
1188    * NetDb stats: Post-0.6.3 clean up
1189
1190* 2008-08-24  0.6.3 released
1191
11922008-08-24 Complication
1193    * Update versions, package release
1194
11952008-08-20 zzz
1196    * Blocklists: Handle blank lines and \r\n in blocklist.txt
1197    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
1198      default is 500 (very high for now)
1199    * Persistent data store: Increase write limit from 300 to 600
1200      so floodfill routers don't get backed up
1201
12022008-08-13 zzz
1203    * i2psnark: Fix OOM vulnerability by checking incoming message length
1204      (thanks devzero!)
1205
12062008-08-04 zzz
1207    * Floodfill Peer Selector:
1208      - Avoid peers whose netdb is old, or have a recent failed store,
1209        or are forever-shitlisted
1210
12112008-07-30 zzz
1212    * Blocklists:
1213      - New, disabled by default, except for blocking of
1214        forever-shitlisted peers. See source for instructions
1215        and file format.
1216    * Transport - Reject peers from inbound connections:
1217      - Check IP against blocklist
1218      - Check router hash against forever-shitlist, then block IP
1219
12202008-07-16 zzz
1221    * configpeer.jsp: New
1222    * i2psnark: Open completed files read-only the first time
1223    * profiles.jsp: Show bonuses, link to configpeer.jsp
1224    * PRNG: Move logging from wrapper to router log
1225    * SSU:
1226        Don't proactively reconnect until 30m idle, so
1227        we don't lose introducer tags prematurely
1228
12292008-07-16 Oldaris
1230    * Imports cleanup
1231
12322008-07-07 zzz
1233    * i2psnark:
1234      - Repair corrupted files with wrong length rather than die
1235      - Register shutdown hook to properly shutdown torrents when
1236        the router shuts down, hopefully will reduce corruption
1237      - Add Galen tracker
1238      - Add a note about how to change directory
1239    * HTTP Proxy: Don't show jump links for unknown jump hosts
1240    * KeyManager:
1241      - Don't write router key backup when leaseSet keys are updated
1242      - Synchronize to prevent concurrent writes (thanks Galen!)
1243      - Backup keys every 7 days instead of every 5 minutes
1244    * LoadTestManager: Don't instantiate, it's disabled
1245    * Router console: Flag placeholder pages as noncacheable
1246    * Streaming lib:
1247      - Change some logging from WARN to INFO
1248      - Clean up toString()
1249    * SSU:
1250      - Try to pick better introducers by checking shitlist,
1251        wasUnreachable list, failing list, and idle times
1252      - To keep introducer connections up and valid,
1253        periodically send a "ping" (a data packet with no data and no acks)
1254        to everybody that has been an introducer in the last two hours
1255      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
1256      - Remove some 60s and 5m stats, leave only the 10m ones
1257      - Narrow the range for the retransmit time after an allocation fail
1258      - Adjust some logging
1259
12602008-06-30 zzz
1261    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
1262    * i2psnark:
1263      - Fix NPE caused by race (thanks echelon!)
1264      - Add mastertracker, remove de-ebook
1265    * NTCP:
1266      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
1267      - Fix failsafe stats
1268    * PersistentDataStore: More leaseSet code cleanup
1269    * SimpleTimer: Change congestion message from error to warn
1270
12712008-06-24 zzz
1272    * FloodfillMonitorJob: Change range from 5-7 to 4-6
1273    * NTCP: Remove getIsInbound(), duplicate of isInbound()
1274    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
1275    * Router console: add placeholder pages for i2psnark, i2ptunnel,
1276      susidns, and susimail for use when the .wars are not running
1277    * Streaming lib: Increase max window size to 128
1278
12792008-06-22 welterde
1280    * Optimize I2PDatagramDissector
1281
12822008-06-20 zzz
1283    * configclients.jsp: Add start button for clients and webapps.
1284    * PRNG: Add two stats
1285    * Summary bar:
1286      - Display Warning for TCP private IP address
1287      - Display PRNG stats
1288    * OutNetMessage: Change cache logging from WARN to INFO
1289
12902008-06-17 zzz
1291    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
1292    * Summary bar: Display helpful errror message when UDP bind fails
1293    * UDP: Don't bid when UDP bind fails
1294    * configclients.jsp: Implement saves for clients and webapps.
1295
12962008-06-16 zzz
1297    * UDP: Prevent 100% CPU when UDP bind fails;
1298      change bind fail message from ERROR to CRIT
1299    * Refactor LoadClientAppsJob.java, move some functions to new
1300      ClientAppConfig.java, to make them easily available to
1301      new configclients.jsp
1302    * RouterConsoleRunner: Use a new config file, webapps.config,
1303      to control which .wars in webapps/ get run. Apps are enabled
1304      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
1305      Config file is written if it does not exist.
1306      Implement methods for use by new configclients.jsp.
1307    * configclients.jsp: New. For both clients and webapps.
1308      Saves are not yet implemented.
1309
13102008-06-10 zzz
1311    * Floodfill: Add new FloodfillMonitorJob, which tracks active
1312      floodfills, and automatically enables/disables floodfill on
1313      Class O routers to maintain 5-7 total active floodfills
1314    * NetDb Stats:
1315      - Remove several more stats
1316      - Don't publish bw stats in first hour of uptime
1317      - Publish floodfill stats even if other stats are disabled
1318      - Changes not effective until 0.6.2.1 to provide cover.
1319    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
1320      startup, so peers don't list us as failing.
1321    * graphs.jsp: Fix a bug where it tries to display the combined
1322      bandwidth graph when it isn't available
1323
13242008-06-09 zzz
1325    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
1326
13272008-06-09 zzz
1328    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
1329    * News:
1330      - Add display of last updated and last checked time
1331        on index.jsp and configupdate.jsp
1332      - Add a function to get update version (unused for now)
1333    * config.jsp: Add another warning
1334
13352008-06-07 zzz
1336    * NetDb: Tweak some logging on lease problems
1337    * Shitlist:
1338      - Add shitlistForever() and isShitlistedForever(), unused for now
1339      - Sort the HTML output by router hash
1340    * netdb.jsp:
1341      - Sort the lease HTML output by dest hash, local first
1342      - Sort the router HTML output by router hash
1343
13442008-06-06 zzz
1345    * LeaseSet:
1346      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
1347        to make later LeaseSet comparisons reliable. This cleans up the code too.
1348      - Fix broken old vs. new LeaseSet comparison
1349        in ClientConnectionRunner.requestLeaseSet(),
1350        so that we only sign and publish a new LeaseSet when it's really new.
1351        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
1352        and floodfill router load, since locked_buildNewLeaseSet() generates
1353        the same LeaseSet as before quite frequently, often just seconds apart.
1354
13552008-06-05 zzz
1356    * LeaseSet - code cleanup:
1357      - Add exception to enforce max # of leases = 6, should be plenty
1358      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
1359        leases and then immediately remove them again, triggering
1360        the new leaseSet size exception
1361      - Remove the now unused LeaseSet.removeLease(lease) and
1362        LeaseSet.removeLease(index)
1363      - Store first and last expiration for efficiency
1364    * Peer Profiles - Preparation for using bonuses:
1365      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
1366      - Persist CapacityBonus rather than ReachabilityBonus
1367      - Include SpeedBonus in the Speed calculation
1368      - Prevent negative values in Speed and Capacity when using bonuses
1369      - Clean up SpeedCalculator.java
1370    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
1371    * Add some config files for a future small distribution
1372    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
1373
13742008-06-01 zzz
1375    * Client Apps: Add new parameter for clients.config,
1376        clientApp.x.startOnLoad=false, to disable loading
1377        (for SAM for example). Defaults to true of course.
1378    * Logging: Move common WARN output to DEBUG so we can ask users to
1379        set the default log level to WARN without massive spewage
1380    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
1381      not just the Fast tier, since we don't use them for tunnels anyway
1382    * SAM: Add some compiler flexibility to two obscure makefiles
1383    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
1384      (sponge's suggestion)
1385    * summary bar:
1386      - Hide ident, provide a tooltip and a link
1387      - Add a warning if you are firewalled and class O
1388
13892008-06-07 Complication
1390    * Fix version in news.xml so it could be published
1391
1392* 2008-06-07  0.6.2 released
1393
13942008-06-07 Complication
1395    * Write announcement and prepare for release
1396
13972008-05-29 zzz
1398    * Fix up initialNews.xml
1399
14002008-05-27 zzz
1401    * Transport:
1402      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
1403      - UDP: Don't bid when IP address missing, mark unreachable
1404
14052008-05-26 zzz
1406    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
1407    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
1408    * build.xml:
1409      - Add an updaterSmall target which includes only the essentials
1410      - Add an updaterRouter target which includes only i2p.jar and router.jar
1411      - Clean up the build file some
1412      - Remove empty eepsite/ and subdirs from i2pupdate.zip
1413    * configtunnels.jsp: Add warning
1414    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
1415    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
1416
14172008-05-22 welterde
1418    * Change jetty download location in build script
1419
14202008-05-20 zzz
1421    * Reachability:
1422      - Call the previously unused profile.tunnelTestFailed()
1423        (redefined to include a probability argument)
1424        and severely downgrade a peer's capacity upon failures,
1425        depending on tunnel length and direction.
1426        This will help push unreachable and malicious peers
1427        out of the High Capacity tier.
1428      - Put recent fail rate on profiles.jsp
1429    * ProfileOrganizer: Logging cleanup
1430    * eepsite_index.html: Update add-host and jump links
1431    * HTTP Proxy: Remove trevorreznik jump server from list
1432
14332008-05-20 welterde
1434    * implemented PrivateKeyFile
1435
14362008-05-18 zzz
1437    * Throttle: Reject tunnels for first 20m uptime (was 10m)
1438    * TunnelPeerSelectors:
1439       - Re-enable strict ordering of peers,
1440         based on XOR distance from a random hash
1441       - Restrict peers with uptime < 90m from tunnels (was 2h),
1442         which is really 60m due to rounding in netDb publishing.
1443    * i2psnark:
1444       - Limit max pipelined requests from a single peer to 128KB
1445         (was unlimited; i2p-bt default is 5 * 64KB)
1446       - Increase max uploaders per torrent to 6 (was 4)
1447       - Reduce max connections per torrent to 16 (was 24) to increase
1448         unchoke time and reduce memory consumption
1449       - Strictly enforce max connections per torrent
1450       - Choke more gradually when over BW limit
1451    * help.jsp: Add a link to the FAQ
1452    * peers.jsp: Fix UDP direction indicators
1453    * hosts.txt: Add update.postman.i2p
1454
14552008-05-12 zzz
1456    * Outbound message:
1457      - Tweak the cache key for efficiency
1458    * Stats:
1459      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
1460    * Summary bar:
1461      - Add messages when dropping tunnel requests due to load
1462    * Update Handler:
1463      - Add postman to the list
1464    * i2psnark:
1465      - Randomize the PeerCheckerTask start times to make global limiting
1466        work better
1467      - Calculate bw limits using 40s rather than 4m averages to make
1468        bw limiting work better
1469      - Change default bw limit from uplimit/3 to uplimit/2 due to
1470        overhead reduction from the leaseset bundling change
1471    * libjbigi:
1472      - Add documentation on dynamic build option
1473      - Add two speed tests to the build script
1474      - Clean up the build script, make it easier to build dynamic
1475
14762008-05-10 zzz
1477    * NetDb: Don't write the my.info file to disk, it isn't used for anything
1478    * Stats:
1479      - Simplify oldstats.jsp if no events in a stat
1480      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
1481        (caused by an SSU hack)
1482    * Update Handler:
1483      - Add option to download and verify only
1484      - Add distinct error message if version check fails
1485
14862008-05-09 welterde
1487    * Add an update URL to the list
1488
14892008-05-07 zzz
1490    * Reachability:
1491      - Restrict peers requiring introducers from inbound tunnels,
1492        since it's slow and unreliable... and many of them advertise
1493        NTCP, which seems unlikely to work
1494      - Provide warning on summary bar if firewalled with inbound NTCP enabled
1495    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
1496      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
1497      at startup (you didn't get any data unless you set the log level anyway)
1498    * oldstats.jsp: Don't put 2 decimal places on integer event counts
1499    * Remove the Internals link from the menu bar
1500    * i2psnark: Extend startup delay from 1 to 3 minutes
1501
15022008-05-06 welterde
1503    * HTTP Proxy: Add i2jump.i2p jump service
1504
15052008-05-05 zzz
1506    * NetDb Stats: Cleanup of commented out stats
1507    * Outbound message:
1508      - Fix a couple of tunnel cache cleaning bugs
1509      - Cache based on source+dest pairs rather than just dest
1510      - Send the reply leaseSet only when necessary,
1511        rather than all the time (big savings in overhead)
1512      - Enable persistent lease selection again
1513      - Logging tweaks
1514    * Reachability:
1515      - Restrict <= .32 SSU-only peers from inbound tunnels,
1516        since they don't know if they are unreachable
1517      - Have SSU bid aggressively when it has less than 3 peers, so
1518        we can determine our IP address and do peer testing.
1519        Otherwise a router may never determine its IP address or reachability status.
1520    * Summary bar:
1521      - Add reachability status
1522      - Add participating tunnel acceptance status
1523    * Throttle: Reject tunnels for first 10m uptime
1524    * I2PTunnel: Change default outproxy to false.i2p
1525    * profiles.jsp: Add router version
1526
1527* 2008-04-26  0.6.1.33 released
1528
15292008-04-20 zzz
1530    * Outbound message/Reachability:
1531      - Fix a bug from -19 causing the persistent lease selection
1532        removed in -17 to be back again
1533      - Use netDb-listed-unreachable instead of detected-unreachable
1534        for exclusion of unreachable peers from selected leases,
1535        as there are potential anonymity problems with using
1536        detected-unreachable
1537      - Tweak logging some more
1538    * NetDb stats: Remove a couple more including the inefficient stat_identities
1539
15402008-04-17 zzz
1541    * Reachability:
1542      - Track unreachable peers persistently
1543        (i.e. separately from shitlist, and not cleared when they contact us)
1544      - Exclude detected unreachable peers from inbound tunnels
1545      - Exclude detected unreachable peers from selected leases
1546      - Exclude detected unreachable floodfill peers from lookups
1547      - Show unreachable status on profiles.jsp
1548
15492008-04-16 zzz
1550    * SSU/Reachability:
1551      - Extend shitlist time from 4-8m to 40-60m
1552      - Add some shitlist logging
1553      - Don't shitlist twice when unreachable on all transports
1554      - Exclude netDb-listed unreachable peers from inbound tunnels;
1555        this won't help much since there are very few of these now
1556      - Remove 10s delay on inbound UDP connections used for the
1557        0.6.1.10 transition
1558      - Track and display UDP connection direction on peers.jsp
1559      - Show shitlist status in-line on profiles.jsp
1560
15612008-04-15 zzz
1562    * SSU Reachability/PeerTestManager:
1563      - Back out strict peer ordering until we fix SSU
1564      - Back out persistent lease selection until we fix SSU
1565      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
1566      - Increase known Charlie time to 10m; 3m wasn't enough
1567      - Don't continue retransmitting peer test if we know Charlie
1568      - Don't run multiple peer tests at once
1569      - Tighten test frequency range to 6.5-19.5m, was 0-26m
1570
15712008-04-12 zzz
1572    * Addressbook: Disallow '.-' and '-.' in host names
1573    * NTCP: Don't drop a connection unless both directions are idle;
1574            Fix idle time for outbound connections
1575    * Outbound message: Make sure cached lease is in current leaseSet
1576    * Stats: Put all NetworkDatabase stats in same group
1577    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
1578    * i2psnark: Add locking to prevent two I2CP connections
1579
15802008-04-07 zzz
1581    * i2psnark:
1582      - Implement upstream bandwidth limiting
1583      - Fix a rare NPE at startup/shutdown
1584      - Really increase retries for .torrent fetch
1585    * profiles.jsp: Minor cleanup
1586    * DataHelper: Only format < 5s as ms
1587    * Eepget: Fix percentage output on command line eepget retries
1588    * Lower partipating message priority from 400 to 200
1589    * NTCP: Add a debug message
1590    * Outbound message: Minor cleanup
1591
15922008-03-30 zzz
1593    * ExploratoryPeerSelector: Try NonFailing even more
1594    * HostsTxtNamingService: Add reverse lookup support
1595    * Outbound message: Minor cleanup
1596    * i2psnark TrackerClient: Minor cleanup
1597    * checklist.txt: Minor edit
1598    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
1599    * i2ptunnel.config: Change CVS client to mtn
1600    * netdb.jsp: Show leaseSet destinations using reverse lookup
1601    * profiles.jsp: First cut at showing floodfill data
1602
16032008-03-27 zzz
1604    * Send messages for the same destination to the same inbound
1605      lease to reduce out-of-order delivery.
1606    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
1607      for now, as it prevents speed rating of those peers
1608
16092008-03-26 zzz
1610    * ReseedHandler: Support multiple urls,
1611      add netdb.i2p2.de as a 2nd default
1612
16132008-03-25 zzz
1614    * i2psnark:
1615      - Add support for secondary open trackers
1616      - Refactor and simplify the TrackerClient code
1617      - Add welterde's tracker to the default list
1618      - Don't have eepget retry announces
1619      - Slow down tracker contacts if they've failed for a while
1620      - Add some debug support showing connections (?p=2)
1621    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
1622
16232008-03-22 zzz
1624    * NewsFetcher: Fix bug causing fetch every 10m
1625
16262008-03-22 zzz
1627    * Tunnel Testing:
1628      - Fix counting so it really takes 4 consecutive failures
1629        rather than 4 total to remove a tunnel
1630      - Credit or blame goes to the exploratory tunnel as well
1631        as the tunnel being tested
1632      - Adjust tunnel test timeout based on tunnel length
1633    * ExploratoryPeerSelector: Tweak logging
1634    * ProfileOrganizer: Adjust integration calculation again
1635    * build.xml: Add to help
1636    * checklist.txt: Tweak
1637    * readme.html: Fix forum links
1638    * netDb: Remove tunnel.testFailedTime
1639
16402008-03-19 zzz
1641    * ExploratoryPeerSelector:
1642      - Exclude floodfill peers
1643      - Tweak the HighCap vs. NonFailing decision; try NonFailing
1644        at least a minimum % of the time
1645    * i2psnark: Increase retries for .torrent fetch
1646    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
1647      containing an IP
1648    * readme.html: Reorder some items
1649    * Stats: Add some more required stats
1650    * Streaming lib: Fix slow start to be exponential growth,
1651      fix congestion avoidance to be linear growth.
1652      Should speed up local connections a lot, and remote
1653      connections a little.
1654
16552008-03-14 zzz
1656    * Floodfill Search:
1657       - Prefer heard-from, unfailing, unshitlisted floodfill peers
1658
16592008-03-14 zzz
1660    * ProfileOrganizer:
1661       - Use more recent stats to calculate integration
1662       - Show that fast peers are also high-capacity on profiles.jsp
1663    * readme.html: Update Syndie link
1664    * TunnelPool: Update comments
1665    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
1666      get rid of the 60s tunnel stats
1667      (effective as of .33 to provide cover)
1668
16692008-03-13 zzz
1670    * Floodfill Search:
1671       - Fix a bug that caused a single FloodfillOnlySearchJob
1672         instance to be run multiple times, with unpredictable
1673         results
1674       - Select ff peers randomly to improve reliability
1675       - Add some bulletproofing
1676
16772008-03-11 zzz
1678    * ProfileOrganizer:
1679       - Don't require a peer to be high-capacity to be
1680         well-integrated (not used for anything right now,
1681         but want to get it right for possible floodfill verification)
1682       - Don't fall back to median for high-capacity threshold
1683         if the mean is higher than the median, this prevents
1684         frequent large high-capacity counts
1685       - Fix high-capacity selector that picked one too many
1686    * Console: put well-integrated count back in the summary
1687
16882008-03-10 zzz
1689    * EepGet: Fix byte count for bytesTransferred status listeners
1690      (fixes command line status)
1691    * UpdateHandler:
1692       - Fix byte count display
1693       - Display final status on router console
1694       - Don't allow multiple update jobs to queue up
1695       - Increase max retries
1696       - Code cleanup
1697       - Don't show 'check for update' button when update in progress
1698       - Enhance error messages
1699    * NetDb: Comment out published netDb stats disabled for .32
1700
17012008-03-08 zzz
1702    * TunnelPeerSelectors: Implement strict ordering of peers,
1703      based on XOR distance from a random hash
1704      separately generated for each tunnel pool
1705
17062008-03-07 zzz
1707    * Naming: Optimize lookups for a destkey
1708    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
1709      - Prevent peers with matching IPs from joining same tunnel.
1710        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
1711        Default is 2 (disallow routers in same /16).
1712        Set with router.defaultPool.IPRestriction=x
1713      - Comment out unused RebuildPeriod pool setting
1714      - Add random key to pool in preparation for XOR peer ordering
1715    * SusiMail: Add 'Create Account' link
1716    * TunnelDispatcher: Change a common wtf error to a warn
1717
17182008-03-05 zzz
1719    * Naming: Make HostsTxt the sole default NamingService
1720      (was Meta = PetName + HostsTxt)
1721    * Naming: Add two new experimental NamingServices, EepGet and Exec,
1722      not enabled by default -
1723      see source comments in core/java/src/net/i2p/client/naming
1724      for configuration instructions
1725    * i2psnark: Don't do a naming lookup for Base64 destkeys
1726    * i2psnark: Add a StartAll button
1727    * Stats: Add code to disable most stats to save memory.
1728      Set on configstats.jsp or set stat.full=false to disable the stats.
1729      (true by default for now)
1730
17312008-03-09 Complication
1732    * Give the Jetty build file ability to ask permission
1733      before downloading the Jetty archive from the web,
1734      and to verify its SHA1 + MD5 hashes. Adjust the main build file
1735      in accordance with this change.
1736    * Improve the release checklist.
1737
1738* 2008-03-09  0.6.1.32 released
1739
17402008-03-07 zzz
1741    * Update news and version numbers
1742
17432008-03-01 zzz
1744    * Fix netdb.knownLeaseSets count reported by floodfill routers
1745      (was broken by -3)
1746
17472008-02-27 zzz
1748    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
1749    * i2psnark: Remove orion and gaytorrents from default tracker list
1750    * Remove orion from jump list and from eepsite_index.html
1751    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
1752    * Capitalize OutboundMessageDistributor job name
1753    * TunnelPool: Add a warning if all tunnels are backlogged
1754
17552008-02-26 zzz
1756    * Reintroduce NTCP backlog pushback, with switch back to
1757      previous tunnel when no longer backlogged
1758    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
1759    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
1760
17612008-02-21 zzz
1762    * Raise inbound default bandwidth to 32KBps
1763    * Fix config.jsp that showed 0KBps share bandwidth by default
1764
17652008-02-19 zzz
1766    * Addressbook: Disallow '--' in host names except in IDN,
1767      add some reserved host names
1768    * I2PTunnel: Clarify edit form
1769    * NetDb: Remove many stats from netDb, effective as of .32
1770    * profiles.jsp: Display capabilities
1771    * Tunnels: Enforce max tunnel length of 8, catch an index error
1772      http://forum.i2p/viewtopic.php?t=2561
1773
17742008-02-16 zzz
1775    * Fix race in TunnelDispatcher which caused
1776      participating tunnel count to seesaw -
1777      should increase network capacity
1778    * Leave participating tunnels in 10s batches for efficiency
1779    * Update participating tunnel ratestat when leaving a tunnel too,
1780      to generate a smoother graph
1781    * Fix tunnel.participatingMessageCount stat to include all
1782      participating tunnels, not just outbound endpoints
1783    * Simplify Expire Tunnel job name
1784
17852008-02-13 zzz
1786    * PersistentDataStore: Write out 300 records every 10 min
1787      rather than 1 every 10 sec;
1788      Don't store leasesets to disk or read them in
1789    * Combine rates for pools with the same length setting
1790      in the new tunnel build algorithm
1791    * Clarify a log message in the UpdateHandler
1792
17932008-02-13 zzz
1794    * Make graphs clickable to get larger graphs
1795    * Change SimpleTimer CRIT to a WARN, increase threshold
1796    * Checklist update
1797
17982008-02-11 welterde
1799    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
1800
18012008-02-10 zzz
1802    * Add new tunnel build algorithm (preliminary)
1803    * Change NTCP backlogged message from error to warning
1804    * Checklist updates
1805
1806* 2008-02-10  0.6.1.31 released
1807
18082008-02-10 Complication
1809    * Update news and version numbers
1810
18112008-02-06 zzz
1812    * build.xml: Add some apps to javadoc
1813    * checklist.txt: Add some things
1814    * news.xml: make links relative
1815    * runplain.sh: Add some comments
1816    * wrapper.config: Add some comments
1817
18182008-02-05 Complication
1819    * Change the dates too (sorry for such forgetfulness!)
1820
18212008-02-04 Complication
1822    * Also use the new key for checking, and add it into news.xml
1823
18242008-02-04 Complication
1825    * Added my release signing key into TrustedUpdate.java
1826
18272008-01-31 zzz
1828    * NewsFetcher: Change fetch failed from error to warning
1829    * installer: Fix URL and "email"
1830    * checklist.txt: New release checklist
1831
18322008-01-29 zzz
1833    * Addressbook: Change default subscription
1834    * ConfigUpdateHandler: Change default news URL
1835    * initialNews.xml: Update version to .31
1836    * news.xml: More updates
1837    * hosts.txt: Add i2p-projekt.i2p
1838    * readme.html: More URL updates
1839    * SusiDNS: Change references to default subscription
1840
18412008-01-28 zzz
1842    * news.xml: Updates, still preliminary
1843    * ReseedHandler: Change default URL
1844    * i2ptunnel.config: Change default outproxies
1845    * readme.html: Change *.i2p.net URLs
1846    * help.jsp: Change *.i2p.net URLs
1847    * eepsite_index.html: Change stats.i2p addressbook subscription URL
1848    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
1849
1850* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
1851
18522008-01-08 zzz
1853    * addressbook: Limit size of subscribed hosts.txt,
1854        don't save old etag or last-modified data
1855    * EepGet: Add some logging,
1856        enforce size limits even when size not in returned header,
1857        don't return old etag or last-modified data,
1858        don't call transferFailed listener more than once
1859    * Sign my update signing key
1860    * NewsFetcher: add last-modified support, reduce number of retries
1861    * Error pages: add icon and logo,
1862        clarify 'destination not found' and 'proxy not found' pages
1863
18642008-01-07 zzz
1865    * profiles.jsp formatting cleanup
1866    * NTCP: Reduce max idle time from 60m to 20m
1867    * NTCP: Fix idle time on connections with zero messages,
1868      correctly drop these connections
1869
18702008-01-03 zzz
1871    * addressbook: Do basic validation of hostnames and destkeys
1872    * susidns: Add support for the private addressbook,
1873      update the text and links somewhat
1874
18752008-01-02 zzz
1876    * Add stats.i2p to the jump list
1877    * Impose 20MB limit on POSTs and catch OOMs in POST
1878    * eepsite_index.html: add stats.i2p services
1879    * addressbook: log source of new keys; disallow dests > 516 bytes
1880    * addressbook: convert hostnames to lower case to prevent duplicates
1881    * susidns: generalize references to orion
1882
18832007-12-29 zzz
1884    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
1885    * Allow commas in router.trustedUpdateKeys and router.updateURL again
1886    * Change default news host from dev.i2p.net to dev.i2p
1887    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
1888
18892007-12-28 zzz
1890    * Add zzz's update signing key
1891
18922007-12-26 Complication
1893    * Improve reseed handler (less repetitive code,
1894      avoid reporting errors when less than 10% of fetches fail)
1895
18962007-12-26 Complication
1897    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
1898      and unescape them in DataHelper.loadProps() to support
1899      saving and loading config properties with line breaks
1900    * Change the update URLs textbox into a textarea like keys have,
1901      so different URLs go on different lines
1902    * Modify TrustedUpdate to provide a method which supplies a key list
1903      delimited with CR LF line breaks
1904    * Modify DEFAULT_UPDATE_URL to supply a default URL list
1905      delimited with CR LF line breaks
1906    * Modify selectUpdateURL() to handle URL lists
1907      delimited by any kind of line breaks
1908    * Start saving trusted update keys
1909    * Improve formatting on configupdate.jsp
1910
19112007-12-22 zzz
1912    * Add support for multiple update URLs
1913    * Change default for update to use i2p proxy,
1914      add several URLs as defaults
1915    * Enable trusted key form on configupdate.jsp
1916    * Clarify the 'destination not found' error page
1917
19182007-12-16 zzz
1919    * i2psnark: remove anonymitytracker from default list
1920
19212007-12-10 zzz
1922    * Fix NPE in CLI TrustedUpdate keygen
1923
19242007-12-02 Complication
1925    * Commit SAM v2 patch from mkvore (thank you!)
1926    * Minor reformatting to preserve consistent whitespace
1927      in old SAM classes (new classes unaltered)
1928
19292007-12-01 Complication
1930    * Separate the checks "does Jetty .zip file need downloading"
1931      and "does Jetty .zip file need extracting" in the Jetty buildfile.
1932      First download (unless already done), then extract (unless done).
1933
19342007-11-26 zzz
1935    * i2psnark: add timeout for receive inactivity
1936
19372007-11-24 zzz
1938    * i2psnark: increase streaming lib write timeout to 240 sec and change
1939      timeout action from "ping" to "disconect", as the fix in .30 to
1940      honor options on outbound connections led to hung outbound connections
1941      (bitfield never transmitted, connection never dropped)
1942
19432007-11-06 jrandom
1944    * add i2host.i2p to the jump list
1945
19462007-10-11 zzz
1947    * IRC Proxy: Fix several possible anonymity holes:
1948      - Block CTCP in NOTICE messages
1949      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
1950      - Check for lower case commands
1951    (Thanks sponge!)
1952
19532007-10-07  jrandom
1954    * back out the NTCP backlog pushback, as it could be used to mount an
1955      active anonymity attack.
1956
1957* 2007-10-07  0.6.1.30 released
1958
19592007-10-07  Complication
1960    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
1961      broke retrying.
1962
19632007-09-27  zzz
1964    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
1965    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
1966      fix some of the sorting
1967
19682007-09-22  zzz
1969    * Send messages for the same destination out the same outbound
1970      tunnel to reduce out-of-order delivery.
1971
19722007-09-19  zzz
1973    * i2psnark: Fix broken multifile torrent Delete;
1974        cleanup Storage resources in AddTorrent;
1975        don't autostart torrent after Create
1976
19772007-09-18  zzz
1978    * eepsite_index.html: Add links to trevorreznik address book
1979    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
1980    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
1981    * i2psnark: Don't make outbound connections to already-connected peers
1982    * i2psnark: Debug logging cleanup
1983
19842007-09-14  zzz
1985    * eepget: Increase header timeout to 45s
1986    * HTTP proxy: Return a better error message for localhost requests
1987    * tunnels: Fix PooledTunnelCreatorConfig memory leak
1988
19892007-09-09  zzz
1990    * eepget: Add support for Last-Modified and If-Modified-Since
1991    * addressbook: Finish incomplete support for Last-Modified
1992
19932007-09-08  zzz
1994    * eepget: Copy over SocketTimeout.java file from syndie
1995
19962007-09-07  jrandom
1997    * eepget: Merge timeout support from syndie
1998
1999* 2007-08-23  0.6.1.29 released
2000
20012007-08-12  zzz
2002    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
2003      tweak the eepsite and troubleshooting sections
2004
20052007-08-11  zzz
2006    * Add stats for individual tunnel rates (nice when graphed)
2007    * i2psnark: Fix outbound tunnel nickname
2008
20092007-08-05  Complication
2010    * Update the sharing calculator on config.jsp
2011      and explain the trade-off even more thoroughly.
2012
20132007-08-04  Complication
2014    * Lower the threshold between the K and L bandwidth class,
2015      so that K is now < 12 KB/s, instead of <= 16 KB/s.
2016      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
2017      participate in routing, if they keep the default share percentage.
2018
20192007-07-16  zzz
2020    * i2psnark: Add tooltip info for choked/uninterested
2021
20222007-07-16  zzz
2023    * Make selection of graphed data configurable via configstats.jsp,
2024      remove most of the default graphs to save some memory
2025
20262007-07-15  zzz
2027    * Add current values to graph legends
2028    * Fix up previous Rate fix to check for divide by zero
2029
20302007-07-14  Complication
2031    * Take the post-download routerInfo size check back out of ReseedHandler,
2032      since it wasn't helpful, and a lower limit caused false warnings.
2033    * Give EepGet ability to enforce a min/max HTTP response size.
2034    * Enforce a maximum response size of 8 MB when ReseedHandler
2035      downloads into a ByteArrayOutputStream.
2036    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
2037      change invocation from RouterConsoleRunner accordingly.
2038    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
2039      provide status reports to indicate the progress of reseeding.
2040    * Enable icon for default eepsite, and the index page
2041      of the router console (more later).
2042
20432007-07-14  zzz
2044    * Clean up graphs.jsp - set K=1024 where appropriate,
2045      output image sizes in html, catch ooms, other minor tweaks
2046    * Fix current event count truncation which fixes graphs with low
2047      60-sec event counts displaying high values
2048      (bw.* and router.* graphs for example were 1.5x too high)
2049      Affects all "events per period" (non-lifetime) counts.
2050
20512007-07-09  zzz
2052    * i2psnark: give a better error message for a non-i2p torrent
2053
20542007-07-07  zzz
2055    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
2056      SSU will notify/restart NTCP when the external address changes.
2057      Now you can enable inbound TCP without a static IP or dyndns service.
2058
20592007-07-04  zzz
2060    * Display calculated share bandwidth and remove load testing
2061      on config.jsp
2062
20632007-07-01  zzz
2064    * Replace broken option i2np.udp.alwaysPreferred with
2065      i2np.udp.preferred and adjust UDP bids; possible settings are
2066      "false" (default), "true", and "always".
2067      Default setting results in same behavior as before
2068      (NTCP is preferred unless it isn't established and UDP is established).
2069      Use to compare NTCP and UDP transports.
2070
20712007-06-27  jrandom
2072    * fix for a streaming lib bug that could leave a thread waiting
2073      indefinitely (thanks Complication!)
2074
20752007-06-16  Complication
2076    * First pass on EepGet and ReseedHandler improvements,
2077      please avoid use on routers which matter!
2078    * Give EepGet ability of downloading into an OutputStream,
2079      such as the ByteArrayOutputStream of ReseedHandler.
2080    * Detect failure to reseed better, report it persistently
2081      and more verbosely, provide a link to logs
2082      and suggest manual reseed.
2083
20842007-05-06  Complication
2085    * Fix the build.xml file, so the preppkg build target won't try copying files
2086      which became deprecated with the old Syndie (thanks for alerting, itsu!)
2087
20882007-03-31  zzz
2089    * Add trevorreznik jump server to the http proxy error page
2090    * Add anonymity to the trackers supporting details links in i2psnark
2091
20922007-03-24  zzz
2093    * Remove Syndie from build targets and navbar
2094
20952007-03-22  zzz
2096    * i2psnark tracker handling tweaks:
2097    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
2098    -   Add Base URL to tracker list configuration
2099    -   Web page links built from tracker list Base URLs
2100    -   Only build and sort tracker list once
2101    -   Add anonymityWeb tracker to default list
2102    -   Add tooltip info for TrackerErrs
2103    -   Stop torrent if not registered with tracker
2104    -   Mark temp files as delete on exit
2105
21062007-03-18  zzz
2107    * i2psnark: Cleanup some handling of saved partial pieces
2108    * i2psnark: Put bit counting in Bitfield.java for efficiency
2109    * i2psnark: Save torrent completion state in i2psnark.config
2110
2111* 2007-03-17  0.6.1.28 released
2112
21132007-03-13  zzz
2114    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
2115
21162007-03-12  jrandom
2117    * dodge a race on startup (thanks zzz!)
2118
21192007-03-10  zzz
2120    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
2121      (RFC 2988) to reduce early RTO values
2122
21232007-03-08  zzz
2124    * i2psnark changes to improve upload performance:
2125    *  Implement total uploader limit (10)
2126    *  Don't timeout non-piece messages out
2127    *  Change chunk size to 32K (was 64K)
2128    *  Change request limit to 64K (was 256K)
2129    * i2psnark: Disconnect from seeds when complete
2130
21312007-03-07  zzz
2132    * Remove dynamic router keys from config.jsp
2133
21342007-03-07  zzz
2135    * Streaming lib changes to improve upstream performance during congestion:
2136    *   Change min window size from 12 to 1
2137    *   Change max timeout from 10 to 45 sec
2138    *   Change initial timeout from 10 to 15 sec
2139    *   Change intial window size for i2psnark from 12 to 1
2140    *   Change slow start growth rate for i2psnark from 1/2 to 1
2141
21422007-03-04  zzz
2143    * Update eepsite_index.html
2144
21452007-03-03  zzz
2146    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
2147    * Add a updaterWithJetty build target
2148
21492007-03-03  zzz
2150    * Implement priority sending for NTCP
2151    * Disable trimForOverload() in tunnel BuildExecutor which
2152      was preventing tunnel builds when outbound traffic was high
2153      (i.e. most of the time when running i2psnark)
2154
21552007-02-28  zzz
2156    * i2psnark: File reopen cleanup
2157
21582007-02-28  zzz
2159    * i2psnark: Add peer details to web page
2160
2161* 2007-02-15  0.6.1.27 released
2162
21632007-02-15  jrandom
2164    * Limit the whispering floodfill sends to at most 3 randomly
2165      chosen from the known floodfill peers
2166
21672007-02-14  jrandom
2168    * Don't filter out KICK and H(ide oper status) IRC messages
2169      (thanks Takk and postman!)
2170
21712007-02-13  jrandom
2172    * Tell our peers about who we know in the floodfill netDb every
2173      6 hours or so, mitigating the situation where peers lose track
2174      of floodfill routers.
2175    * Disable the Syndie updater (people should use the new Syndie,
2176      not this one)
2177    * Disable the eepsite tunnel by default
2178
21792007-01-30  zzz
2180    * i2psnark: Don't hold _snarks lock while checking a snark,
2181      so web page is responsive at startup
2182
21832007-01-29  zzz
2184    * i2psnark: Add NickyB tracker
2185
21862007-01-28  zzz
2187    * i2psnark: Don't hold sendQueue lock while flushing output,
2188      to make everything run smoother
2189
21902007-01-27  zzz
2191    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
2192
21932007-01-20  Complication
2194    * Drop overlooked comment
2195
21962007-01-20  Complication
2197    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
2198      instead of System, so setting a reseed URL in advanced configuration has effect.
2199    * Clean out obsolete reseed code from ConfigNetHandler.
2200
22012007-01-20  zzz
2202    * i2psnark: More choking rotation tweaks
2203    * Improve performance by not reading in the whole
2204      piece from disk for each request. A huge memory savings
2205      on 1MB torrents with many peers.
2206
22072007-01-17  zzz
2208    * Add new HTTP Proxy error message for non-http protocols
2209
22102007-01-17  zzz
2211    * Add note on Syndie index.html steering people to new Syndie
2212
22132007-01-16  zzz
2214    * i2psnark: Fix crash when autostart off and
2215      tcrrent started manually
2216
22172007-01-16  zzz
2218    * i2psnark: Fix bug caused by last i2psnark checkin
2219      (ConnectionAcceptor not started)
2220    * Don't start PeerCoordinator, ConnectionAcceptor,
2221      and TrackerClient unless starting torrent
2222
22232007-01-15  jrandom
2224    * small guard against unnecessary streaming lib reset packets
2225      (thanks Complication!)
2226
22272007-01-15  zzz
2228    * i2psnark: Add 'Stop All' link on web page
2229    * Add some links to trackers and forum on web page
2230    * Don't start tunnel if 'Autostart' unchecked
2231    * Fix torrent restart bug by reopening file descriptors
2232
22332007-01-14  zzz
2234    * i2psnark: Improvements for torrents with > 4 leechers:
2235      choke based on upload rate when seeding, and
2236      be smarter and fairer about rotating choked peers.
2237    * Handle two common i2psnark OOM situations rather
2238      than shutting down the whole thing.
2239    * Fix reporting to tracker of remaining bytes for
2240      torrents > 4GB (but ByteMonsoon still has a bug)
2241
22422006-10-29  zzz
2243    * i2psnark: Fix and enable generation of multifile torrents,
2244      print error if no tracker selected at create-torrent,
2245      fix stopping a torrent that hasn't started successfully,
2246      add eBook and GayTorrents trackers to form,
2247      web page formatting tweaks
2248
2249* 2006-10-10  0.6.1.26 released
2250
22512006-10-29  Complication
2252    * Ensure we get NTP samples from more diverse sources
2253      (0.pool.ntp.org, 1.pool.ntp.org, etc)
2254    * Discard median-based peer skew calculator as framed average works,
2255      and adjusting its percentage can make it behave median-like
2256    * Require more data points (from at least 20 peers)
2257      before considering a peer skew measurement reliable
2258
22592006-10-10  jrandom
2260    * Removed the status display from the console, as its more confusing
2261      than informative (though the content is still displayed in the HTML)
2262
22632006-10-08  Complication
2264    * Add a framed average peer clock skew calculator
2265    * Add config property "router.clockOffsetSanityCheck" to determine
2266      if NTP-suggested clock offsets get sanity checked (default "true")
2267    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
2268      by more than 5 seconds, or make it more than 20 seconds total
2269    * Decrease log level in getMedianPeerClockSkew()
2270
22712006-09-29  zzz
2272    * i2psnark: Second try at synchronization fix - synch addRequest()
2273      completely rather than just portions of it and requestNextPiece()
2274
22752006-09-27  jrandom
2276    * added HMAC-SHA256
2277    * properly use CRLF with EepPost
2278    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
2279    * PBE session key generation (with 1000 rounds of SHA256)
2280    * misc SDK helper functions
2281
22822006-09-26  Complication
2283    * Take back another inadverent logging change in NTCPConnection
2284
22852006-09-26  Complication
2286    * Take back an accidental log level change
2287
22882006-09-26  Complication
2289    * Subclass from Clock a RouterClock which can access router transports,
2290      with the goal of developing it to second-guess NTP results
2291    * Make transports report clock skew in seconds
2292    * Adjust renderStatusHTML() methods accordingly
2293    * Show average for NTCP clock skews too
2294    * Give transports a getClockSkews() method to report clock skews
2295    * Give transport manager a getClockSkews() method to aggregate results
2296    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
2297      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
2298    * Extra explicitness in NTCP classes to denote unit of time.
2299    * Fix some places in NTCPConnection where milliseconds and seconds were confused
2300
23012006-09-25  zzz
2302    * i2psnark: Paranoid copy before writing pieces,
2303      recheck files on completion, redownload bad pieces
2304    * i2psnark: Don't contact tracker as often when seeding
2305
23062006-09-24  zzz
2307    * i2psnark: Add some synchronization to prevent rare problem
2308      after restoring orphan piece
2309
23102006-09-20  zzz
2311    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
2312      rapid choke/unchokes
2313    * i2psnark: Truncate long TrackerErr messages on web page
2314
23152006-09-16  zzz
2316    * i2psnark: Implement retransmission of requests. This
2317      eliminates one cause of complete stalls with a peer.
2318      This problem is common on torrents with a small number of
2319      active peers where there are no choke/unchokes to kickstart things.
2320
23212006-09-13  zzz
2322    * i2psnark: Fix restoral of partial pieces broken by last patch
2323
23242006-09-13  zzz
2325    * i2psnark: Mark a peer's requests as unrequested on disconnect,
2326      preventing premature end game
2327    * i2psnark: Randomize selection of next piece during end game
2328    * i2psnark: Don't restore a partial piece to a peer that is already working on it
2329    * i2psnark: strip ".torrent" on web page
2330    * i2psnark: Limit piece size in generated torrent to 1MB max
2331
23322006-09-09  zzz
2333    * i2psnark: Add "Stalled" indication and stat totals on web page
2334
23352006-09-09  zzz
2336    * i2psnark: Fix bug where new peers would always be sent an "interested"
2337      regardless of actual interest
2338    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
2339      memory and efficiency problems
2340
2341* 2006-09-09  0.6.1.25 released
2342
23432006-09-08  jrandom
2344    * Tweak the PRNG logging so it only displays error messages if there are
2345      problems
2346    * Disable dynamic router keys for the time being, as they don't offer
2347      meaningful security, may hurt the router, and makes it harder to
2348      determine the network health.  The code to restart on SSU IP change is
2349      still enabled however.
2350    * Disable tunnel load testing, leaning back on the tiered selection for
2351      the time being.
2352    * Spattering of bugfixes
2353
23542006-09-07  zzz
2355    * i2psnark: Increase output timeout from 2 min to 4 min
2356    * i2psnark: Orphan debug msg cleanup
2357    * i2psnark: More web rate report cleanup
2358
23592006-09-05  zzz
2360    * i2psnark: Implement basic partial-piece saves across connections
2361    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
2362      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
2363      code in i2psnark ineffective. Will have to research why there is transmit but
2364      not receive inactivity code. With the current connection limit of 24 peers
2365      we aren't in any danger of keeping out new peers by keeping inactive ones.
2366    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
2367    * i2psnark: Fix dropped chunk handling
2368    * i2psnark: Web rate report cleanup
2369
23702006-09-04  zzz
2371    * i2psnark: Report cleared trackerErr immediately
2372    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
2373    * i2psnark: Set up new connections more quickly
2374    * i2psnark: Don't delay tracker fetch when setting up lots of connections
2375    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
2376
23772006-09-04  zzz
2378    * Enable pipelining in i2psnark
2379    * Make i2psnark tunnel default be 1 + 0-1
2380
23812006-09-03  zzz
2382    * Add rate reporting to i2psnark
2383
23842006-09-03  Complication
2385    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
2386    * Print messages about addressbook size to give better overview
2387    * Enable delete function in published addressbook
2388
23892006-08-21  Complication
2390    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
2391
23922006-08-03  jrandom
2393    * Decrease the recently modified tunnel building timeout, though keep
2394      the scaling on their processing
2395
23962006-07-31  jrandom
2397    * Increase the tunnel building timeout
2398    * Avoid a rare race (thanks bar!)
2399    * Fix the bandwidth capacity publishing code to factor in share percentage
2400      and outbound throttling (oops)
2401
24022006-07-29  Complication
2403    * Treat NTP responses from unexpected stratums like failures
2404
2405* 2006-07-28  0.6.1.24 released
2406
24072006-07-28  jrandom
2408    * Don't try to reverify too many netDb entries at once (thanks
2409      cervantes and Complication!)
2410
24112006-07-28  jrandom
2412    * Actually fix the threading deadlock issue in the netDb (removing
2413      the synchronized access to individual kbuckets while validating
2414      individual entries) (thanks cervantes, postman, frosk, et al!)
2415
2416* 2006-07-27  0.6.1.23 released
2417
24182006-07-27  jrandom
2419    * Cut down NTCP connection establishments once we know the peer is skewed
2420      (rather than wait for full establishment before verifying)
2421    * Removed a lock on the stats framework when accessing rates, which
2422      shouldn't be a problem, assuming rates are created (pretty much) all at
2423      once and merely updated during the lifetime of the jvm.
2424
24252006-07-27  jrandom
2426    * Further NTCP write status cleanup
2427    * Handle more oddly-timed NTCP disconnections (thanks bar!)
2428
24292006-07-26  jrandom
2430    * When dropping a netDb router reference, only accept newer
2431      references as part of the update check
2432    * If we have been up for a while, don't accept really old
2433      router references (published 2 or more days ago)
2434    * Drop router references once they are no longer valid, even if
2435      they were allowed in due to the lax restrictions on startup
2436
24372006-07-26  jrandom
2438    * Every time we create a new router identity, add an entry to the
2439      new "identlog.txt" text file in the I2P install directory.  For
2440      debugging purposes, publish the count of how many identities the
2441      router has cycled through, though not the identities itself.
2442    * Cleaned up the way the multitransport shitlisting worked, and
2443      added per-transport shitlists
2444    * When dropping a router reference locally, first fire a netDb
2445      lookup for the entry
2446    * Take the peer selection filters into account when organizing the
2447      profiles (thanks Complication!)
2448    * Avoid some obvious configuration errors for the NTCP transport
2449      (invalid ports, "null" ip, etc)
2450    * Deal with some small NTCP bugs found in the wild (unresolveable
2451      hosts, strange network discons, etc)
2452    * Send our netDb info to peers we have direct NTCP connections to
2453      after each 6-12 hours of connection uptime
2454    * Clean up the NTCP reading and writing queue logic to avoid some
2455      potential delays
2456    * Allow people to specify the IP that the SSU transport binds on
2457      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
2458
2459* 2006-07-18  0.6.1.22 released
2460
24612006-07-18  jrandom
2462    * Add a failsafe to the NTCP transport to make sure we keep
2463      pumping writes when we should.
2464    * Properly reallow 16-32KBps routers in the default config
2465      (thanks Complication!)
2466
24672006-07-16  Complication
2468    * Collect tunnel build agree/reject/expire statistics
2469      for each bandwidth tier of peers (and peers of unknown tiers,
2470      even if those shouldn't exist)
2471
24722006-07-14  jrandom
2473    * Improve the multitransport shitlisting (thanks Complication!)
2474    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
2475      the default configuration (thanks for the stats Complication!)
2476    * Properly allow older router references to load on startup
2477      (thanks bar, Complication, et al!)
2478    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
2479      hopefully today's changes should make this unnecessary (thanks void!)
2480    * Improved NTCP buffering
2481    * Close NTCP connections if we are too backlogged when writing to them
2482
24832006-07-04  jrandom
2484    * New NIO-based tcp transport (NTCP), enabled by default for outbound
2485      connections only.  Those who configure their NAT/firewall to allow
2486      inbound connections and specify the external host and port
2487      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
2488      SSU is still enabled for use by default for all users as a fallback.
2489    * Substantial bugfix to the tunnel gateway processing to transfer
2490      messages sequentially instead of interleaved
2491    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
2492      GNU/Classpath based JVMs
2493    * Adjust the Fortuna PRNG's pooling system to reduce contention on
2494      refill with a background thread to refill the output buffer
2495    * Add per-transport support for the shitlist
2496    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
2497      contention
2498
24992006-07-01  Complication
2500    * Ensure that the I2PTunnel web interface won't update tunnel settings
2501      for shared clients when a non-shared client is modified
2502      (thanks for spotting, BarkerJr!)
2503
25042006-06-14  cervantes
2505    * Small tweak to I2PTunnel CSS, so it looks better with desktops
2506      that use Bitstream Vera fonts @ 96 dpi
2507
2508* 2006-06-14  0.6.1.21 released
2509
25102006-06-13  jrandom
2511    * Use a minimum uptime of 2 hours, not 4 (oops)
2512
25132006-06-13  jrandom
2514    * Cut down the proactive rejections due to queue size - if we are
2515      at the point of having decrypted the request off the queue, might
2516      as well let it through, rather than waste that decryption
2517
25182006-06-11  Kloug
2519    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
2520      outstanding pings/pongs
2521
25222006-06-10  jrandom
2523    * Further reduction in proactive rejections
2524
25252006-06-09  jrandom
2526    * Don't let the pending tunnel request queue grow beyond reason
2527      (letting things sit for up to 30s when they fail after 10s
2528      seems a bit... off)
2529
25302006-06-08  jrandom
2531    * Be more conservative in the proactive rejections
2532
25332006-06-04  Complication
2534    * Trim out sending a blank line before USER in susimail.
2535      Seemed to break in rare cases, thanks for reporting, Brachtus!
2536
2537* 2006-06-04  0.6.1.20 released
2538
25392006-06-04  jrandom
2540    * Reduce the SSU ack frequency
2541    * Tweaked the tunnel rejection settings to reject less aggressively
2542
25432006-05-31  jrandom
2544    * Only send netDb searches to the floodfill peers for the time being
2545    * Add some proof of concept filters for tunnel participation.  By default,
2546      it will skip peers with an advertised bandwith of less than 32KBps or
2547      an advertised uptime of less than 2 hours.  If this is sufficient, a
2548      safer implementation of these filters will be implemented.
2549
2550* 2006-05-18  0.6.1.19 released
2551
25522006-05-18  jrandom
2553    * Made the SSU ACKs less frequent when possible
2554
25552006-05-17  Complication
2556    * Fix some oversights in my previous changes:
2557      adjust some loglevels, make a few statements less wasteful,
2558      make one comparison less confusing and more likely to log unexpected values
2559
25602006-05-17  jrandom
2561    * Make the peer page sortable
2562    * SSU modifications to cut down on unnecessary connection failures
2563
25642006-05-16  jrandom
2565    * Further shitlist randomizations
2566    * Adjust the stats monitored for detecting cpu overload when dropping new
2567      tunnel requests
2568
25692006-05-15  jrandom
2570    * Add a load dependent throttle on the pending inbound tunnel request
2571      backlog
2572    * Increased the tunnel test failure slack before killing a tunnel
2573
25742006-05-13  Complication
2575    * Separate growth factors for tunnel count and tunnel test time
2576    * Reduce growth factors, so probabalistic throttle would activate
2577    * Square probAccept values to decelerate stronger when far from average
2578    * Create a bandwidth stat with approximately 15-second half life
2579    * Make allowTunnel() check the 1-second bandwidth for overload
2580      before doing allowance calculations using 15-second bandwidth
2581    * Tweak the overload detector in BuildExecutor to be more sensitive
2582      for rising edges, add ability to initiate tunnel drops
2583    * Add a function to seek and drop the highest-rate participating tunnel,
2584      keeping a fixed+random grace period between such drops.
2585      It doesn't seem very effective, so disabled by default
2586      ("router.dropTunnelsOnOverload=true" to enable)
2587
25882006-05-11  jrandom
2589    * PRNG bugfix (thanks cervantes and Complication!)
2590
2591* 2006-05-09  0.6.1.18 released
2592
25932006-05-09  jrandom
2594    * Further tunnel creation timeout revamp
2595
25962006-05-07  Complication
2597    * Fix problem whereby repeated calls to allowed() would make
2598      the 1-tunnel exception permit more than one concurrent build
2599
26002006-05-06  jrandom
2601    * Readjust the tunnel creation timeouts to reject less but fail earlier,
2602      while tracking the extended timeout events.
2603
26042006-05-04  jrandom
2605    * Short circuit a highly congested part of the stat logging unless its
2606      required (may or may not help with a synchronization issue reported by
2607      andreas)
2608
26092006-05-03  Complication
2610    * Allow a single build attempt to proceed despite 1-minute overload
2611      only if the 1-second rate shows enough spare bandwidth
2612      (e.g. overload has already eased)
2613
26142006-05-02  Complication
2615    * Correct a misnamed property in SummaryHelper.java
2616      to avoid confusion
2617    * Make the maximum allowance of our own concurrent
2618      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
2619      within the fixed range 2..10
2620    * While overloaded, try to avoid completely choking our own build attempts,
2621      instead prefer limiting them to 1
2622
26232006-05-01  jrandom
2624    * Adjust the tunnel build timeouts to cut down on expirations, and
2625      increased the SSU connection establishment retransmission rate to
2626      something less glacial.
2627    * For the first 5 minutes of uptime, be less aggressive with tunnel
2628      exploration, opting for more reliable peers to start with.
2629
26302006-05-01  jrandom
2631    * Fix for a netDb lookup race (thanks cervantes!)
2632
26332006-04-27  jrandom
2634    * Avoid a race in the message reply registry (thanks cervantes!)
2635
26362006-04-27  jrandom
2637    * Fixed the tunnel expiration desync code (thanks Complication!)
2638
2639* 2006-04-23  0.6.1.17 released
2640
26412006-04-19  jrandom
2642    * Adjust how we pick high capacity peers to allow the inclusion of fast
2643      peers (the previous filter assumed an old usage pattern)
2644    * New set of stats to help track per-packet-type bandwidth usage better
2645    * Cut out the proactive tail drop from the SSU transport, for now
2646    * Reduce the frequency of tunnel build attempts while we're saturated
2647    * Don't drop tunnel requests as easily - prefer to explicitly reject them
2648
2649* 2006-04-15  0.6.1.16 released
2650
26512006-04-15  jrandom
2652    * Adjust the proactive tunnel request dropping so we will reject what we
2653      can instead of dropping so much (but still dropping if we get too far
2654      overloaded)
2655
26562006-04-14  jrandom
2657    * 0 isn't very random
2658    * Adjust the tunnel drop to be more reasonable
2659
26602006-04-14  jrandom
2661    * -28.00230115311259 is not between 0 and 1 in any universe I know.
2662    * Made the bw-related tunnel join throttle much simpler
2663
26642006-04-14  jrandom
2665    * Make some more stats graphable, and allow some internal tweaking on the
2666      tunnel pairing for creation and testing.
2667
2668* 2006-04-13  0.6.1.15 released
2669
26702006-04-12  jrandom
2671    * Added a further failsafe against trying to queue up too many messages to
2672      a peer.
2673
26742006-04-12  jrandom
2675    * Watch out for failed syndie index fetches (thanks bar!)
2676
26772006-04-11  jrandom
2678    * Throttling improvements on SSU - throttle all transmissions to a peer
2679      when we are retransmitting, not just retransmissions.  Also, if
2680      we're already retransmitting to a peer, probabalistically tail drop new
2681      messages targetting that peer, based on the estimated wait time before
2682      transmission.
2683    * Fixed the rounding error in the inbound tunnel drop probability.
2684
26852006-04-10  jrandom
2686    * Include a combined send/receive graph (good idea cervantes!)
2687    * Proactively drop inbound tunnel requests probabalistically as the
2688      estimated queue time approaches our limit, rather than letting them all
2689      through up to that limit.
2690
26912006-04-08  jrandom
2692    * Stat summarization fix (removing the occational holes in the jrobin
2693      graphs)
2694
26952006-04-08  jrandom
2696    * Process inbound tunnel requests more efficiently
2697    * Proactively drop inbound tunnel requests if the queue before we'd
2698      process it in is too long (dynamically adjusted by cpu load)
2699    * Adjust the tunnel rejection throttle to reject requeusts when we have to
2700      proactively drop too many requests.
2701    * Display the number of pending inbound tunnel join requests on the router
2702      console (as the "handle backlog")
2703    * Include a few more stats in the default set of graphs
2704
27052006-04-06  jrandom
2706    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
2707
27082006-04-06  jrandom
2709    * Fixed a typo in the reply cleanup code
2710
2711* 2006-04-05  0.6.1.14 released
2712
27132006-04-05  jrandom
2714    * Cut down on the time that we allow a tunnel creation request to sit by
2715      without response, and reject tunnel creation requests that are lagged
2716      locally.  Also switch to a bounded FIFO instead of a LIFO
2717    * Threading tweaks for the message handling (thanks bar!)
2718    * Don't add addresses to syndie with blank names (thanks Complication!)
2719    * Further ban clearance
2720
27212006-04-05  jrandom
2722    * Fix during the ssu handshake to avoid an unnecessary failure on
2723      packet retransmission (thanks ripple!)
2724    * Fix during the SSU handshake to use the negotiated session key asap,
2725      rather than using the intro key for more than we should (thanks ripple!)
2726    * Fixes to the message reply registry (thanks Complication!)
2727    * More comprehensive syndie banning (for repeated pushes)
2728    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
2729      testing purposes
2730    * Put a floor back on the capacity threshold, so too many failing peers
2731      won't cause us to pick very bad peers (unless we have very few good
2732      ones)
2733    * Bugfix to cut down on peers using introducers unneessarily (thanks
2734      Complication!)
2735    * Reduced the default streaming lib message size to fit into a single
2736      tunnel message, rather than require 5 tunnel messages to be transferred
2737      without loss before recomposition.  This reduces throughput, but should
2738      increase reliability, at least for the time being.
2739    * Misc small bugfixes in the router (thanks all!)
2740    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
2741
27422006-04-01  jrandom
2743    * Take out the router watchdog's teeth (don't restart on leaseset failure)
2744    * Filter the IRC ping/pong messages, as some clients send unsafe
2745      information in them (thanks aardvax and dust!)
2746
27472006-03-30  jrandom
2748    * Substantially reduced the lock contention in the message registry (a
2749      major hotspot that can choke most threads).  Also reworked the locking
2750      so we don't need per-message timer events
2751    * No need to have additional per-peer message clearing, as they are
2752      either unregistered individually or expired.
2753    * Include some of the more transient tunnel throttling
2754
2755* 2006-03-26  0.6.1.13 released
2756
27572006-03-25  jrandom
2758    * Added a simple purge and ban of syndie authors, shown as the
2759      "Purge and ban" button on the addressbook for authors that are already
2760      on the ignore list.  All of their entries and metadata are deleted from
2761      the archive, and the are transparently filtered from any remote
2762      syndication (so no user on the syndie instance will pull any new posts
2763      from them)
2764    * More strict tunnel join throtting when congested
2765
27662006-03-24  jrandom
2767    * Try to desync tunnel building near startup (thanks Complication!)
2768    * If we are highly congested, fall back on only querying the floodfill
2769      netDb peers, and only storing to those peers too
2770    * Cleaned up the floodfill-only queries
2771
27722006-03-21  jrandom
2773    * Avoid a very strange (unconfirmed) bug that people using the systray's
2774      browser picker dialog could cause by disabling the GUI-based browser
2775      picker.
2776    * Cut down on subsequent streaming lib reset packets transmitted
2777    * Use a larger MTU more often
2778    * Allow netDb searches to query shitlisted peers, as the queries are
2779      indirect.
2780    * Add an option to disable non-floodfill netDb searches (non-floodfill
2781      searches are used by default, but can be disabled by adding
2782      netDb.floodfillOnly=true to the advanced config)
2783
27842006-03-20  jrandom
2785    * Fix to allow for some slack when coalescing stats
2786    * Workaround some oddball errors
2787
27882006-03-18  jrandom
2789    * Added a new graphs.jsp page to show all of the stats being harvested
2790
27912006-03-18  jrandom
2792    * Made the netDb search load limitations a little less stringent
2793    * Add support for specifying the number of periods to be plotted on the
2794      graphs - e.g. to plot only the last hour of a stat that is averaged at
2795      the 60 second period, add &periodCount=60
2796
27972006-03-17  jrandom
2798    * Add support for graphing the event count as well as the average stat
2799      value (done by adding &showEvents=true to the URL).  Also supports
2800      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
2801      the title (&hideTitle=true).
2802    * Removed an unnecessary arbitrary filter on the profile organizer so we
2803      can pick high capacity and fast peers more appropriately
2804
28052006-03-16  jrandom
2806    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
2807      console.  Selected stats can be harvested automatically and fed into
2808      in-memory RRD databases, and those databases can be served up either as
2809      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
2810      details).  A base set of stats are harvested by default, but an
2811      alternate list can be specified by setting the 'stat.summaries' list on
2812      the advanced config.  For instance:
2813      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
2814    * HTML tweaking for the general config page (thanks void!)
2815    * Odd NPE fix (thanks Complication!)
2816
28172006-03-15  Complication
2818    * Trim out an old, inactive IP second-guessing method
2819      (thanks for spotting, Anonymous!)
2820
28212006-03-15  jrandom
2822    * Further stat cleanup
2823    * Keep track of how many peers we are actively trying to communicate with,
2824      beyond those who are just trying to communicate with us.
2825    * Further router tunnel participation throttle revisions to avoid spurious
2826      rejections
2827    * Rate stat display cleanup (thanks ripple!)
2828    * Don't even try to send messages that have been queued too long
2829
28302006-03-05  zzz
2831    * Remove the +++--- from the logs on i2psnark startup
2832
28332006-03-05  jrandom
2834    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
2835    * Give netDb lookups to floodfill peers more time, as they are much more
2836      likely to succeed (thereby cutting down on the unnecessary netDb
2837      searches outside the floodfill set)
2838    * Fix to the SSU IP detection code so we won't use introducers when we
2839      don't need them (thanks Complication!)
2840    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
2841      peers given to it
2842    * Don't let netDb searches wander across too many peers
2843    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
2844      as its too volatile to have much meaning.
2845    * Don't bork if a Syndie post is missing an entry.sml
2846
28472006-03-05  Complication
2848    * Reduce exposed statistical information,
2849      to make build and uptime tracking more expensive
2850
28512006-03-04  Complication
2852    * Fix the announce URL of orion's tracker in Snark sources
2853
28542006-03-03  Complication
2855    * Explicit check for an index out of bounds exception while parsing
2856      an inbound IRC command (implicit check was there already)
2857
28582006-03-01  jrandom
2859    * More aggressive tunnel throttling as we approach our bandwidth limit,
2860      and throttle based off periods wider than 1 second.
2861    * Included Doubtful Salmon's syndie stylings (thanks!)
2862
28632006-02-27  zzz
2864    * Update error page templates to add \r, Connection: close, and
2865      Proxy-connection: close to headers.
2866
2867* 2006-02-27  0.6.1.12 released
2868
28692006-02-27  jrandom
2870    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
2871      machines, rather than the generic jbigi (until we have an athlon64
2872      optimized version)
2873
28742006-02-26  jrandom
2875    * Switch from the bouncycastle to the gnu-crypto implementation for
2876      SHA256, as benchmarks show a 10-30% speedup.
2877    * Removed some unnecessary object caches
2878    * Don't close i2psnark streams prematurely
2879
28802006-02-25  jrandom
2881    * Made the Syndie permalinks in the thread view point to the blog view
2882    * Disabled TCP again (since the live net seems to be doing well w/out it)
2883    * Fix the message time on inbound SSU establishment (thanks zzz!)
2884    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
2885      just starts up
2886
28872006-02-24  jrandom
2888    * Rounding calculation cleanup in the stats, and avoid an uncontested
2889      mutex (thanks ripple!)
2890    * SSU handshake cleanup to help force incompatible peers to stop nagging
2891      us by both not giving them an updated reference to us and by dropping
2892      future handshake packets from them.
2893
28942006-02-23  jrandom
2895    * Increase the SSU retransmit ceiling (for slow links)
2896    * Estimate the sender's SSU MTU (to help see if we agree)
2897
28982006-02-22  jrandom
2899    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
2900    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
2901      links
2902    * Further class validator refactorings
2903
29042006-02-22  jrandom
2905    * Handle a rare race under high bandwidth situations in the SSU transport
2906    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
2907
29082006-02-21  Complication
2909    * Reactivate TCP tranport by default, in addition to re-allowing
2910
2911* 2006-02-21  0.6.1.11 released
2912
29132006-02-21  jrandom
2914    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
2915      heap when backlogged (and so that the messages queued up on it don't sit
2916      there forever)
2917    * Further SSU memory cleanup
2918    * Clean up the address regeneration code so it knows when to rebuild the
2919      local info more precisely.
2920
29212006-02-20  jrandom
2922    * Properly enable TCP this time (oops)
2923    * Deal with multiple form handlers on the same page in the console without
2924      being too annoying (thanks blubb and bd_!)
2925
29262006-02-20  jrandom
2927    * Reenable the TCP transport as a fallback (we'll continue to muck with
2928      debugging SSU-only elsewhere)
2929
29302006-02-20  jrandom
2931    * Major SSU and router tuning to reduce contention, memory usage, and GC
2932      churn.  There are still issues to be worked out, but this should be a
2933      substantial improvement.
2934    * Modified the optional netDb harvester task to support choosing whether
2935      to use (non-anonymous) direct connections or (anonymous) exploratory
2936      tunnels to do the harvesting.  Harvesting itself is enabled via the
2937      advanced config "netDb.shouldHarvest=true" (default is false) and the
2938      connection type can be chosen via "netDb.harvestDirectly=false" (default
2939      is false).
2940
29412006-02-19  dust
2942    * Added pruning of suckers history (it used to grow indefinitely).
2943
29442006-02-19  jrandom
2945    * Moved the current net's reseed URL to a different location than where
2946      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
2947    * More aggressively expire inbound messages (on receive, not just on send)
2948    * Add in a hook for breaking backwards compatibility in the SSU wire
2949      protocol directly by including a version as part of the handshake.  The
2950      version is currently set to 0, however, so the wire protocol from this
2951      build is compatible with all earlier SSU implementations.
2952    * Increased the number of complete message readers, cutting down
2953      substantially on the delay processing inbound messages.
2954    * Delete the message history file on startup
2955    * Reworked the restart/shutdown display on the console (thanks bd_!)
2956
29572006-02-18  jrandom
2958    * Migrate the outbound packets from a central component to the individual
2959      per-peer components, substantially cutting down on lock contention when
2960      dealing with higher degrees.
2961    * Load balance the outbound SSU transfers evenly across peers, rather than
2962      across messages (so peers with few messages won't be starved by peers
2963      with many).
2964    * Reduce the frequency of router info rebuilds (thanks bar!)
2965
29662006-02-18  jrandom
2967    * Add a new AIMD throttle in SSU to control the number of concurrent
2968      messages being sent to a given peer, in addition to the throttle on the
2969      number of concurrent bytes to that peer.
2970    * Adjust the existing SSU outbound queue to throttle based on the queue's
2971      lag, not an arbitrary number of packets.
2972
29732006-02-17  jrandom
2974    * Properly fix the build request queue throttling, using queue age to
2975      detect congestion, rather than queue size.
2976
29772006-02-17  jrandom
2978    * Disable the message history log file by default (duh - feel free to
2979      delete messageHistory.txt after upgrading.  thanks deathfatty!)
2980    * Limit the size of the inbound tunnel build request queue so we don't
2981      get an insane backlog of requests that we're bound to reject, and adjust
2982      the queue processing so we keep on churning through them when we've got
2983      a backlog.
2984    * Small fixes for the multiuser syndie operation (thanks Complication!)
2985    * Renamed modified PRNG classes that were imported from gnu-crypto so we
2986      don't conflict with JVMs using that as a JCE provider (thanks blx!)
2987
2988* 2006-02-16  0.6.1.10 released
2989
29902006-02-16  jrandom
2991    * Add a new toggle to the web config to enable/disable the load testing
2992
29932006-02-16  jrandom
2994    * Dropped much of the abandonware from the apps/ directory
2995
29962006-02-16  jrandom
2997    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
2998    * Initial sucker refactoring to simplify reuse of the html parsing
2999    * Beginnings of hooks to push imported rss/atom out to remote syndie
3000      archives automatically (though not enabled currently)
3001    * Further SSU peer test cleanup
3002
30032006-02-15  jrandom
3004    * Add in per-blog RSS feeds to Syndie
3005    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
3006      with the posts, marking additional attachments as Media RSS enclosures
3007      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
3008      per item.
3009    * Don't allow the default syndie user to be set to something invalid if
3010      its in single user mode.
3011
30122006-02-15  jrandom
3013    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
3014      longer backwards compatible (and should not be used until 0.6.1.1 is
3015      out)
3016
30172006-02-14  jrandom
3018    * Syndie ui bugfixes (thanks all!)
3019
30202006-02-13  jrandom
3021    * Use the current directory for some temporary I2PSnark files, rather than
3022      the OS default temp dir (thanks anon!)
3023    * Increase the base streaming lib window size (still shrinks to 1 on
3024      retransmission though, of course)
3025    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
3026    * Implement fast retransmit in the streaming lib (fires at most once per
3027      packet), and increased the default ack delay to 2 seconds (from .5s)
3028    * Don't ask for garlic level message acks for end to end messages unless
3029      they're useful (e.g. to ack session tags)
3030
30312006-02-12  cervantes
3032    * Use a different santisation method for some SML attributes
3033    * Make router console update config save button actually save.
3034    * Fix console bandwidth limiter burst rate dropdowns, so the display
3035      relates to what is saved in the config.
3036   
30372006-02-12  cervantes
3038    * SML is now stricter in it's formatting (attributes should only use
3039      double quotes instead of being allowed to mix with singles).
3040    * Using apostrophes in SML attributes will no longer invalidate the tag.
3041    * Some instances of [blog] tag description were not being displayed
3042      correctly.
3043
30442006-02-12  jrandom
3045    * Further SSU peer test throttling
3046    * Put the most common router console features on the main index page too
3047
30482006-02-11  jrandom
3049    * Be more careful about SSU peer test floods
3050
30512006-02-09  jrandom
3052    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
3053
30542006-02-08  jrandom
3055    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
3056      bundled a precompiled libjbigi.so in the jbigi.jar
3057    * Cleaned up the synchronization for some SSU packet handling code
3058    * Allow explicit rejection of more lagged tunnel build requests, rather
3059      than dropping them outright
3060    * Use lighter load testing
3061
30622006-02-07  jrandom
3063    * Handle HTTP headers without any values (thanks Sugadude!)
3064    * Don't show the option to make Syndie multiuser, since very few people
3065      need it, and multiuser mode is a lot more complex to use.  Geeks can
3066      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
3067      (or in the router's advanced config, for the embedded Syndie)
3068    * When a peer rejects participation in a tunnel, they mean it (duh)
3069    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
3070    * Remove a throttle on the size of the SSU active outbound pool, since
3071      it was essentially arbitrary
3072    * Use a more appropriate SSU bloom filter size
3073    * Don't "proactively" drop SSU connections if we have partially received
3074      inbound messages (duh)
3075    * Migrate most of the message state across SSU connection reestablishment
3076
30772006-02-06  jrandom
3078    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
3079      piggybacked
3080
30812006-02-05  jrandom
3082    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
3083      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
3084      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
3085    * Enable the messageHistory.txt by default, for debugging
3086
30872006-02-05  jrandom
3088    * Substantial bugfix for the duplicate message detection in the transport
3089      layer
3090    * Handle tunnel build responses ASAP, rather than queueing them up to wait
3091      in line (processing them is really fast - just a few AES loops)
3092    * Don't bother handling build requests that we have queued up for a while
3093      locally, as the requestor will have timed it out anyway (perhaps we
3094      should reply regardless, but with a backoff instead?)
3095
30962006-02-04  jrandom
3097    * Further tunnel test cleanup and disabling of the old tunnel creation
3098      code
3099
31002006-02-04  jrandom
3101    * Clean up and reenable the tunnel testing for the new tunnel system.
3102
31032006-02-04  jrandom
3104    * Don't cache the archive.txt in syndie when fetching it through the web
3105      interface.
3106    * Logging updates
3107
31082006-02-03  jrandom
3109    * Added further replay prevention on the tunnel build requests
3110    * More aggressive streaming lib closing on reset
3111
31122006-02-03  jrandom
3113    * More aggressive refusal of peers from the wrong network (oops)
3114
31152006-02-01  jrandom
3116    * Instruct the router to reseed against a new URL, for migration purposes:
3117      http://dev.i2p.net/i2pdb2/
3118    * Aggressive error handling during UDP packet creation (thanks cervantes)
3119
31202006-02-01  jrandom
3121    * Fix the new tunnel creation crypto, including the addition of a 4 byte
3122      "next message ID" to the encrypted request structure in the spec.
3123    * Backwards incompatible change, using the new tunnel creation crypto, the
3124      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
3125      with the old incompatible network).
3126    * Reworked the leaseSet request process to handle a race condition
3127    * Disable the TCP transport
3128    * Run four separate threads on the job queue to cut down on job lag
3129
31302006-01-28  jrandom
3131    * Removed a race that could show up in leaseSet requesting with the new
3132      tunnel building process
3133
31342006-01-25  jrandom
3135    * Run the peer profile coalescing/reorganization outside the job queue
3136      (on one of the timers), to cut down on some job queue congestion.  Also,
3137      trim old profiles while running, not just when starting up.
3138    * Slightly more sane intra-floodfill-node netDb activity (only flood new
3139      entries)
3140    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
3141      source of the bug is not yet addressed)
3142    * Better I2PSnark reconnection handling
3143    * Further cleanup in the new tunnel build process
3144    * Make sure we expire old participants properly
3145    * Remove much of the transient overload throttling (it wasn't using a good
3146      metric)
3147
31482006-01-25  dust
3149    * Fix IRC client proxy to use ISO-8859-1.
3150
31512006-01-22  jrandom
3152    * New tunnel build process - does not use the new crypto or new peer
3153      selection strategies.  However, it does drop the fallback tunnel
3154      procedure, except for tunnels who are configured to allow them, or for
3155      the exploratory pool during bootstrapping or after a catastrophic
3156      failure.  This new process prefers to fail rather than use too-short
3157      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
3158      it may expose more tunnel failures to the user.
3159    * Always prefer normal tunnels to fallback tunnels.
3160    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
3161      bar!)
3162    * Do all of the netDb entry writing in a separate thread, avoiding
3163      duplicates and batching them up.
3164
31652006-01-19  Complication
3166    * Explain better where eepsite's destkey can be found
3167
31682006-01-18  cervantes
3169    * Add title attributes to all external links in Syndie, so we can rollover
3170      and quickly see if it's worth clicking on.
3171    * Fixed a minor compiler warning.
3172
31732006-01-17  jrandom
3174    * First pass of the new tunnel creation crypto, specified in the new
3175      router/doc/tunnel-alt-creation.html (referenced in the current
3176      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
3177      than in the test code, but the code verifies the technical viability, so
3178      further scrutiny would be warranted.
3179
31802006-01-16  cervantes
3181    * Dragged I2P kicking and screaming into 2006 (Oops)
3182
31832006-01-14  cervantes
3184    * Removed entirely misleading memory status from the console summary.
3185       
31862006-01-13  cervantes
3187    * Further Syndie layout hardening and typeface balancing.
3188
3189* 2006-01-12  0.6.1.9 released
3190
31912006-01-12  jrandom
3192    * Only create the loadtest.log if requested to do so (thanks zzz!)
3193    * Make sure we cleanly take into consideration the appropriate data
3194      points when filtering out duplicate messages in the message validator,
3195      and report the right bloom filter false positives rate (not used for
3196      anything except debugging)
3197
31982006-01-12  cervantes
3199    * Syndie CSS tweaks to removed some redundant declarations, improve font
3200      scaling and layout robustness. Improved cross browser compatibility
3201      (in other words "kicked IE"). Tightened the look of the blog template
3202      a little.
3203
32042006-01-11  Complication
3205    * CSS comment fixes
3206
32072006-01-11  jrandom
3208    * Include the attachments/blogs/etc for comments on the blog view
3209    * Syndie HTML fixes (thanks cervantes!)
3210    * Make sure we fully reset the objects going into our cache before we
3211      reuse them (thanks zzz!)
3212
32132006-01-10  jrandom
3214    * Added the per-post list of attachments/blogs/etc to the blog view in
3215      Syndie (though this does not yet include comments or some further
3216      refinements)
3217    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
3218      removing the dox box (though also removes the restart functionality...)
3219    * Give the i2p.exe the correct java.library.path to support the systray
3220      dll (thanks Bobcat, Sugadude, anon!)
3221
32222006-01-09  jrandom
3223    * Removed a longstanding bug that had caused unnecessary router identity
3224      churn due to clock skew
3225    * Temporarily sanity check within the streaming lib for long pending
3226      writes
3227    * Added support for a blog-wide logo to Syndie, and automated the pushing
3228      of updated extended blog info data along side the metadata.
3229
32302006-01-09  jrandom
3231    * Bugfix for a rare SSU error (thanks cervantes!)
3232    * More progress on the blog interface, allowing customizable blog-wide
3233      links.
3234
32352006-01-08  jrandom
3236    * First pass of the new blog interface, though without much of the useful
3237      customization features (coming soon)
3238
32392006-01-04  jrandom
3240    * Rather than profile individual tunnels for throughput over their
3241      lifetime, do so at 1 minute intervals (allowing less frequently active
3242      tunnels to be more fairly measured).
3243    * Run the live tunnel load test across two tunnels at a time, by default.
3244      The load test runs for a random period from 90s to the tunnel lifetime,
3245      self paced.  This should help gathering data for profiling peers that
3246      are in exploratory tunnels.
3247
32482006-01-03  jrandom
3249    * Calculate the overall peer throughput across the 3 fastest one minute
3250      tunnel throughput values, rather than the single fastest throughput.
3251    * Degrade the profiled throughput data over time (cutting the profiled
3252      peaks in half once a day, on average)
3253    * Enable yet another new speed calculation for profiling peers, using the
3254      peak throughput from individual tunnels that a peer is participating in,
3255      rather than across all tunnels they are participating in.  This helps
3256      gather a fairer peer throughput measurement, since it won't allow a slow
3257      high capacity peer seem to have a higher throughput (pushing a little
3258      data across many tunnels at once, as opposed to lots of data across a
3259      single tunnel).  This degrades over time like the other.
3260    * Add basic OS/2 support to the jbigi code (though we do not bundle a
3261      precompiled OS/2 library)
3262
32632006-01-01  jrandom
3264    * Disable multifile torrent creation in I2PSnark's web UI for the moment
3265      (though it can still seed and participate in multifile swarms)
3266    * Enable a new speed calculation for profiling peers, using their peak
3267      1 minute average tunnel throughput as their speed.
3268
32692005-12-31  jrandom
3270    * Include a simple torrent creator in the I2PSnark web UI
3271    * Further streaming lib closing improvements
3272    * Refactored the load test components to run off live tunnels (though,
3273      still not safe for normal/anonymous load testing)
3274
32752005-12-30  jrandom
3276    * Close streams more gracefully
3277
32782005-12-30  jrandom
3279    * Small streaming lib bugfixes for the modified timeouts
3280    * Minor Syndie/Sucker RSS html fix
3281    * Small synchronization fix in I2PSnark (thanks fsm!)
3282
32832005-12-30  jrandom
3284    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
3285      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
3286      some distros (e.g. mandriva)
3287
32882005-12-29  jrandom
3289    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
3290      actually correct
3291
32922005-12-27  jrandom
3293    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
3294      the clock is too skewed to do anything useful (check the year and month,
3295      not just the hour and minute).
3296    * Fixed the read/write timeouts in the streaming lib (so that it actually
3297      honors them now)
3298    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
3299      torrent closing)
3300    * Handle an oddball tunnel creation failure (thanks Xunk)
3301
33022005-12-26  Complication
3303    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
3304    * HTML readability cosmetics on "Peers" page
3305
3306* 2005-12-22  0.6.1.8 released
3307
33082005-12-22  jrandom
3309    * Bundle the standalone I2PSnark launcher in the installer and update
3310      process (launch as "java -jar launch-i2psnark.jar", viewing the
3311      interface on http://localhost:8002/)
3312    * Don't autostart swarming torrents by default so that you can run a
3313      standalone I2PSnark from the I2P install dir and not have the embedded
3314      I2PSnark autolaunch the torrents that the standalone instance is running
3315    * Fixed a rare streaming lib bug that could let a blocking call wait
3316      forever.
3317
33182005-12-22  jrandom
3319    * Cleaned up some buffer synchronization issues in I2PSnark that could
3320      cause blockage.
3321
33222005-12-21  jrandom
3323    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
3324      behavior)
3325    * Fixed the I2PSnark bug that would lose track of live peers
3326
33272005-12-20  jrandom
3328    * Enabled the control in I2PSnark to toggle whether torrents should be
3329      started automatically or not
3330    * Hopefully finished the last hook to close down torrents completely when
3331      they're stopped.
3332
33332005-12-19  jrandom
3334    * Fix for old Syndie blog bookmarks (thanks Complication!)
3335    * Fix for I2PSnark to accept incoming connections again (oops)
3336    * Randomize the order that peers from the tracker are contacted
3337
33382005-12-19  jrandom
3339    * I2PSnark logging, disconnect old inactive peers rather than new ones,
3340      memory usage reduction, better OOM handling, and a shared connection
3341      acceptor.
3342    * Cleaned up the Syndie blog page and the resulting filters (viewing a
3343      blog from the blog page shows threads started by the selected author,
3344      not those that they merely participate in)
3345
33462005-12-18  jrandom
3347    * Added a standalone runner for the I2PSnark web ui (build with the
3348      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
3349      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
3350    * Further I2PSnark error handling
3351
33522005-12-17  jrandom
3353    * Let multiuser accounts authorize themselves to access the remote
3354      functionality again (thanks Ch0Hag!)
3355    * Adjust the JVM heap size to 128MB for new installs (existing users can
3356      accomplish this by editing wrapper.config, adding the line
3357      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
3358      of the router).  This is relevent for heavy usage of I2PSnark in the
3359      router console.
3360
33612005-12-17  jrandom
3362    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
3363      'piece' sizes grow larger than before.
3364
33652005-12-16  jrandom
3366    * Added some I2PSnark sanity checks, an OOMListener when running
3367      standalone, and a guard against keeping memory tied up indefinitely.
3368    * Sanity check on the watchdog (thanks zzz!)
3369    * Handle invalid HTTP requests in I2PTunnel a little better
3370
33712005-12-16  jrandom
3372    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
3373      properly (thanks Complication!)
3374    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
3375      b0rking in the DirMonitor, etc)
3376
33772005-12-16  jrandom
3378    * Try to run a torrent in readonly mode if we can't write to the file, and
3379      handle failures a little more gracefully (thanks polecat!)
3380
33812005-12-16  jrandom
3382    * Refuse torrents with too many files (128), avoiding ulimit errors.
3383    * Remove an fd leak in I2PSnark
3384    * Further I2PSnark web UI cleanup
3385
33862005-12-15  jrandom
3387    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
3388
33892005-12-15  jrandom
3390    * Added multitorrent support to I2PSnark, accessible currently by running
3391      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
3392      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
3393      their data in that directory as well.  Removing the .torrent file stops
3394      participation, and it is currently set to seed indefinitely.  Completion
3395      is logged to the logger and standard output, with further UI interaction
3396      left to the (work in progress) web UI.
3397
33982005-12-14  jrandom
3399    * Fix to drop peer references when we shitlist people again (thanks zzz!)
3400    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
3401      (thanks Complication!)
3402
34032005-12-13  zzz
3404    * Don't test tunnels expiring within 90 seconds
3405    * Defer Test Tunnel jobs if job lag too large
3406    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
3407      job lag for tunnel build backoff, allowing for more agile handling
3408      (since the stat is only updated once a minute)
3409    * Use tunnel length override if all tunnels are expiring within one
3410      minute.
3411
34122005-12-13  jrandom
3413    * Fixed I2PSnark's handling of some torrent files to deal with those
3414      created by Azureus and I2PRufus (it didn't know how to deal with
3415      additional meta info, such as path.utf-8 or name.utf-8).
3416
34172005-12-09  zzz
3418    * Create different strategies for exploratory tunnels (which are difficult
3419      to create) and client tunnels (which are much easier)
3420    * Gradually increase number of parallel build attempts as tunnel expiry
3421      nears.
3422    * Temporarily shorten attempted build tunnel length if builds using
3423      configured tunnel length are unsuccessful
3424    * React more aggressively to tunnel failure than routine tunnel
3425      replacement
3426    * Make tunnel creation times randomized - there is existing code to
3427      randomize the tunnels but it isn't effective due to the tunnel creation
3428      strategy. Currently, most tunnels get built all at once, at about 2 1/2
3429      to 3 minutes before expiration. The patch fixes this by fixing the
3430      randomization, and by changing the overlap time (with old tunnels) to a
3431      range of 2 to 4 minutes.
3432    * Reduce number of excess tunnels. Lots of excess tunnels get created due
3433      to overlapping calls. Just about anything generated a call which could
3434      build many tunnels all at once, even if tunnel building was already in
3435      process.
3436    * Miscellaneous router console enhancements
3437
34382005-12-08  jrandom
3439    * Minor bugfix in SSU for dealing with corrupt packets
3440    * Added some hooks for load testing
3441
34422005-12-07  jrandom
3443    * Added a first pass at a blog view in Syndie
3444
34452005-12-07  jrandom
3446    * Expand the thread we're viewing to its leaf
3447    * Bugfix on intraday ordering (children are always newer than parents)
3448
34492005-12-05  jrandom
3450    * Added an RDF and XML thread export to Syndie, reachable at
3451      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
3452      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
3453      displays all threads.
3454
34552005-12-04  TLorD
3456    * Patch for the C SAM library to null terminate strings on copy (thanks!)
3457
34582005-12-04  jrandom
3459    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
3460    * Always include ourselves in the favorite authors (since we don't
3461      bookmark ourselves)
3462
34632005-12-03  jrandom
3464    * Use newgroup-like tags by default in Syndie's interface
3465
34662005-12-03  jrandom
3467    * Added support for a 'most recent posts' view that CofE requested, which
3468      includes the ability to filter by age (e.g. posts by your favorite
3469      authors in the last 5 days).
3470
34712005-12-03  jrandom
3472    * Adjusted Syndie to use the threaded view that cervantes suggested, which
3473      displays a a single thread path at a time - from root to leaf - rather
3474      than a depth first traversal.
3475
34762005-12-03  jrandom
3477    * Package up a standalone Syndie install into a "syndie-standalone.zip",
3478      buildable with "ant syndie".  It extracts into ./syndie/, launches with
3479      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
3480      running a single user Syndie instance (by default).  It also creates a
3481      default subscription to syndiemedia without any anonymity (using no
3482      proxy).  Upgrades can be done by just replacing the syndie.war with the
3483      one from I2P.
3484
3485* 2005-12-01  0.6.1.7 released
3486
34872005-12-01  jrandom
3488    * Add a new criteria to the tunnel join throttle, backing off people if we
3489      are failing to talk to our peers more than usual.
3490
34912005-11-30  jrandom
3492    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
3493      new commons-logging-api.jar to commons-logging.jar, which it replaces.
3494      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
3495      separate jdom or rome, as they're inside syndie.war.
3496
34972005-11-30  jrandom
3498    * Don't let the TCP transport alone shitlist a peer, since other
3499      transports may be working.  Also display whether TCP connections are
3500      inbound or outbound on the peers page.
3501    * Fixed some substantial bugs in the SSU introducers where we wouldn't
3502      talk to anyone who didn't expose an IP (even if they had introducers),
3503      among other goofy things.
3504    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
3505      rather than sending one a packet at 3s, then another a packet at 6s,
3506      and a third a packet at 9s.
3507    * Fixed Syndie attachments (oops)
3508
35092005-11-29  zzz
3510    * Added a link to orion's jump page on the 'key not found' error page.
3511
35122005-11-29  jrandom
3513    * Further Syndie UI cleanup
3514    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
3515      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
3516      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
3517      will be removed as soon as its integrated into Jetty.  This patch allows
3518      posting content in various character sets.
3519      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
3520    * Upgraded new installs to the latest stable jetty (5.1.6), though this
3521      isn't pushed as part of the update yet, as there aren't any critical
3522      bugs.
3523
35242005-11-29  jrandom
3525    * Added back in the OSX jbigi, which was accidentally removed a few revs
3526      back (thanks for the bug report stoerte!)  New installs will get the
3527      full jbigi, or you can pull the jbigi.jar from CVS by going to
3528      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
3529      and clicking on the first "download" link, saving that jbigi.jar to
3530      lib/jbigi.jar in your I2P installation directory.  After restarting your
3531      router, it should load up fine.
3532
35332005-11-27  jrandom
3534    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
3535      because firefox [and others?] delay rendering until they fetch the css).
3536    * Make sure we fire the shutdown tasks when regenerating a new identity
3537      (thanks picsou!)
3538    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
3539    * Don't drop SSU sessions if they're still transmitting data successfully,
3540      even if there are transmission failures
3541    * Adjusted the time summarization to display hours after 119m, not 90m
3542    * Further EepGet cleanup (grr)
3543
3544* 2005-11-26 0.6.1.6 released
3545
35462005-11-26  jrandom
3547    * Update the sorting in Syndie to consider children 'newer' than parents,
3548      even if they have the same message ID (duh)
3549    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
3550    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
3551    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
3552      better)
3553
35542005-11-26  jrandom
3555    * Be more explicit about what messages we will handle through a client
3556      tunnel, and how we will handle them.  This cuts off a set of attacks
3557      that an active adversary could mount, though they're probably nonobvious
3558      and would require at least some sophistication.
3559
35602005-11-26  Raccoon23
3561    * Added support for 'dynamic keys' mode, where the router creates a new
3562      router identity whenever it detects a substantial change in its public
3563      address (read: SSU IP or port).  This only offers minimal additional
3564      protection against trivial attackers, but should provide functional
3565      improvement for people who have periodic IP changes, since their new
3566      router address would not be shitlisted while their old one would be.
3567    * Added further infrastructure for restricted route operation, but its use
3568      is not recommended.
3569
35702005-11-25  jrandom
3571    * Further Syndie UI cleanups
3572    * Logging cleanup
3573    * Fixed link to fproxy.tino.i2p (thanks zzz!)
3574
35752005-11-25  jrandom
3576    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
3577    * Cleaned up the syndie threaded display to show the last updated date for
3578      a subthread, and to highlight threads updated in the last two days.
3579
35802005-11-24  jrandom
3581    * Fix to save syndication settings in Syndie (thanks spaetz!)
3582
35832005-11-23  jrandom
3584    * Removed spurious streaming lib RTO increase (it wasn't helpful)
3585    * Streamlined the tunnel batching to schedule batch transmissions more
3586      appropriately.
3587    * Default tunnel pool variance to 2 +0-1 hops
3588
35892005-11-21  jrandom
3590    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
3591      within I2PTunnel.
3592    * Increase the maximum SSU retransmission timeout to accomodate slower or
3593      more congested links (though SSU's RTO calculation will usually use a
3594      much lower timeout)
3595    * Moved the streaming lib timed events off the main timer queues and onto
3596      a streaming lib specific set of timer queues.  Streaming lib timed
3597      events are more likely to have lock contention on the I2CP socket while
3598      other timed events in the router are (largely) independent.
3599    * Fixed a case sensitive lookup bug (thanks tino!)
3600    * Syndie cleanup - new edit form on the preview page, and fixed some blog
3601      links (thanks tino!)
3602
36032005-11-19  jrandom
3604    * Implemented a trivial pure java PMTU backoff strategy, switching between
3605      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
3606    * Fixed new user registration in Syndie (thanks Complication!)
3607
36082005-11-17  jrandom
3609    * More cautious file handling in Syndie
3610
36112005-11-16  jrandom
3612    * More aggressive I2PTunnel content encoding munging to work around some
3613      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
3614      even when only identity is specified, etc).  I2PTunnelHTTPServer now
3615      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
3616      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
3617      or X-Accept-encoding headers.  Eepsite operators who do not know to
3618      check for X-Accept-encoding will simply use the identity encoding.
3619
3620* 2005-11-15  0.6.1.5 released
3621
36222005-11-14  jrandom
3623    * Migrate to the new Syndie interface
3624
36252005-11-11  jrandom
3626    * Add filtering threads by author to Syndie, populated with authors in the
3627      user's addressbook
3628    * When creating the default user, add
3629      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
3630      configured to automatically pull updates.  (what other archives should
3631      be included?)
3632    * Tiny servlet to help dole out the new routerconsole themes, and bundle
3633      the installer/resources/themes/** into ./docs/themes/** on both install
3634      and update.
3635
36362005-11-11  cervantes
3637    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
3638      being progressively rolled out to other sections at later dates.
3639      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
3640      layout and styling.
3641    * Implemented console themes. Users can create their own themes by
3642      creating css files in: {i2pdir}/docs/themes/console/{themename}/
3643      and activating it using the routerconsole.theme={themename} advanced
3644      config property. Look at the example incomplete "defCon1" theme.
3645      Note: This is very much a work in progress. Folks might want to hold-off
3646      creating their own skins until the markup has solidified.
3647    * Added "routerconsole.javascript.disabled=true" to disable console
3648      client-side scripting and "routerconsole.css.disabled=true" to remove
3649      css styling (only rolled out in the i2ptunnel interface currently)
3650    * Fixed long standing bug with i2ptunnel client and server edit screens
3651      where tunnel count and depth properties would fail to save. Added
3652      backup quantity and variance configuration options.
3653    * Added basic accessibility support (key shortcuts, linear markup, alt and
3654      title information and form labels).
3655    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
3656
36572005-11-11  jrandom
3658    * Default Syndie to single user mode, and automatically log into a default
3659      user account (additional accounts can be logged into with the 'switch'
3660      or login pages, and new accounts can be created with the register page).
3661    * Disable the 'automated' column on the Syndie addressbook unless the user
3662      is appropriately authorized (good idea Polecat!)
3663
36642005-11-10  jrandom
3665    * First pass to a new threaded Syndie interface, which isn't enabled by
3666      default, as its not done yet.
3667
36682005-11-06  jrandom
3669    * Include SSU establishment failure in the peer profile as a commError,
3670      as we do for TCP establishment failures.
3671    * Don't throttle the initial transmission of a message because of ongoing
3672      retransmissions to a peer, since the initial transmission of a message
3673      is more valuable than a retransmission (since it has less latency).
3674    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
3675
36762005-11-05  jrandom
3677    * Include the most recent ACKs with packets, rather than only sending an
3678      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
3679      increasing sequence numbers, while each message ID in SSU is random, so
3680      we don't get the benefit of later ACKs implicitly ACKing earlier
3681      messages.
3682    * Reduced the max retransmission timeout for SSU
3683    * Don't try to send messages queued up for a long time waiting for
3684      establishment.
3685
36862005-11-05  dust
3687    * Fix sucker to delete its temporary files.
3688    * Improve sucker's sml output some.
3689    * Fix Exception in SMLParser for weird sml.
3690
36912005-11-03  zzz
3692    * Added a new error page to the eepproxy to differentiate the full 60
3693      second timeout from the immediate "I don't know this base64" failure.
3694
36952005-11-01  jrandom
3696    * Added a few more css elements (thanks identiguy!)
3697
36982005-10-31  jrandom
3699    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
3700    * Removed a potentially infinitely recursive call (oops)
3701
37022005-10-30  dust
3703    * Merge sucker into syndie with a rssimport.jsp page.
3704    * Add getContentType() to EepGet.
3705    * Make chunked transfer work (better) with EepGet.
3706    * Do replaceAll("<","&lt;") for logs.
3707
3708* 2005-10-29  0.6.1.4 released
3709
37102005-10-29  jrandom
3711    * Improved the bandwidth throtting on tunnel participation, especially for
3712      low bandwidth peers.
3713    * Improved failure handling in SSU with proactive reestablishment of
3714      failing idle peers, and rather than shitlisting a peer who failed too
3715      much, drop the SSU session and allow a new attempt (which, if it fails,
3716      will cause a shitlisting)
3717    * Clarify the cause of the shitlist on the profiles page, and include
3718      bandwidth limiter info at the bottom of the peers page.
3719
37202005-10-26  jrandom
3721    * In Syndie, propogate the subject and tags in a reply, and show the parent
3722      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
3723    * Streamline some netDb query handling to run outside the jobqueue -
3724      which means they'll run on the particular SSU thread that handles the
3725      message.  This should help out heavily loaded netDb peers.
3726
37272005-10-25  jrandom
3728    * Defer netDb searches for newly referenced peers until we actually want
3729      them
3730    * Ignore netDb references to peers on our shitlist
3731    * Set the timeout for end to end client messages to the max delay after
3732      finding the leaseSet, so we don't have as many expired messages floating
3733      around.
3734    * Add a floor to the streaming lib window size
3735    * When we need to send a streaming lib ACK, try to retransmit one of the
3736      unacked packets instead (with updated ACK/NACK fields, of course).  The
3737      bandwidth cost of an unnecessary retransmission should be minor as
3738      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
3739      the probability of a necessary retransmission.
3740    * Adjust the streaming lib cwin algorithm to allow growth after a full
3741      cwin messages if the rtt is trending downwards.  If it is not, use the
3742      existing algorithm.
3743    * Increased the maximum rto size in the streaming lib.
3744    * Load balancing bugfix on end to end messages to distribute across
3745      tunnels more evenly.
3746
37472005-10-22  jrandom
3748    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
3749      ./prngseed.rnd (if they exist), and reseeding it with data out of
3750      various crypto operations (unused bits in a DH exchange, intermediary
3751      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
3752      The Fortuna implementation under gnu.crypto.prng has been modified to
3753      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
3754      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
3755      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
3756      wrapper around it is, of course, public domain.
3757
37582005-10-20  dust
3759    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
3760      always shared. (thx for info Ragnarok)
3761    * Fix crash in Sucker with some bad html.
3762
37632005-10-20  jrandom
3764    * Workaround a bug in GCJ's Calendar implementation
3765    * Propery throw an exception in the streaming lib if we try to write to a
3766      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
3767      GregorK!)
3768
37692005-10-19  jrandom
3770    * Ported the snark bittorrent client to I2P such that it is compatible
3771      with i2p-bt and azneti2p.  For usage information, grab an update and run
3772      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
3773      but adding in support would be fairly easy (see PeerAcceptor.java:49)
3774    * Don't allow leaseSets expiring too far in the future (thanks postman)
3775
37762005-10-19  jrandom
3777    * Bugfix for the auto-update code to handle different usage patterns
3778    * Decreased the addressbook recheck frequency to once every 12 hours
3779      instead of hourly.
3780    * Handle dynamically changing the HMAC size (again, unless your nym is
3781      toad or jrandom, ignore this ;)
3782    * Cleaned up some synchronization/locking code
3783
37842005-10-17  dust
3785    * Exchange the remaining URL with EepGet in Sucker.
3786    * Allow /TOPIC irc command.
3787
37882005-10-17  jrandom
3789    * Allow an env prop to configure whether we want to use the backwards
3790      compatible (but not standards compliant) HMAC-MD5, or whether we want
3791      to use the not-backwards compatible (but standards compliant) one.  No
3792      one should touch this setting, unless your name is toad or jrandom ;)
3793    * Added some new dummy facades
3794    * Be more aggressive on loading up the router.config before building the
3795      router context
3796    * Added new hooks for apps to deal with previously undefined I2NP message
3797      types without having to modify any code.
3798    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
3799
38002005-10-14  jrandom
3801    * More explicit filter for linux/PPC building (thanks anon!)
3802    * Fixed Syndie's Sucker to not explicitly reference something only found
3803      in sun's JVM (thanks cervantes!)
3804    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
3805
3806* 2005-10-14  0.6.1.3 released
3807
38082005-10-14  jrandom
3809    * Added a key explaining peers.jsp a bit (thanks tethra!)
3810
38112005-10-13  dust
3812    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
3813      then be injected into Syndie with the Syndie CLI.
3814    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
3815      RSS/Atom parsing.
3816
38172005-10-13  jrandom
3818    * SSU retransmission choke bugfix (== != !=)
3819    * Include initial transmissions in the retransmission choke, so that
3820      if we are already retransmitting a message, we won't send anything
3821      to that peer other than that message (or ACKs, if necessary)
3822
38232005-10-12  jrandom
3824    * Choke SSU retransmissions to a peer while there is already a
3825      retransmission in flight to them.  This currently lets other initial
3826      transmissions through, since packet loss is often sporadic, but maybe
3827      this should block initial transmissions as well?
3828    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
3829    * Filter QUIT messages in the I2PTunnelIRCClient proxy
3830
38312005-10-11  jrandom
3832    * Piggyback the SSU partial ACKs with data packets.  This is backwards
3833      compatible.
3834    * Syndie RSS renderer bugfix, plus now include the full entry instead of
3835      just the blurb before the cut.
3836
38372005-10-11  jrandom
3838    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
3839      yet piggybacked).  This is backwards compatible.
3840    * SML parser cleanup in Syndie
3841
38422005-10-10  dust
3843    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
3844      outbound IRC commands for anonymity and security purposes, removing all
3845      CTCP messages except ACTION, as well as stripping the hostname from the
3846      USER message (while leaving the nick and 'full name').  The IRC proxy
3847      doesn't use this by default, but you can enable it by creating a new
3848      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
3849      to "ircclient" in i2ptunnel.config.
3850
38512005-10-10  jrandom
3852    * I2PTunnel http client config cleanup and stats
3853    * Minor SSU congestion tweaks and stats
3854    * Reduced netDb exploration period
3855
38562005-10-09  jrandom
3857    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
3858      java -jar lib/syndie.jar
3859    * Beginnings of the Syndie logging cleanup
3860    * Delete corrupt Syndie posts
3861
38622005-10-09  jrandom
3863    * Now that the streaming lib works reasonably, set the default inactivity
3864      event to send a 0 byte keepalive payload, rather than disconnecting the
3865      stream.  This should cut the irc netsplits and help out with other long
3866      lived streams.  The default timeout is now less than the old timeout as
3867      well, so the keepalive will be sent before earlier builds fire their
3868      fatal timeouts.
3869
38702005-10-08  jrandom
3871    * Use the OS clock for stat timing, since it doesn't jump around (though
3872      still use the NTP'ed clock for display)
3873    * Added new DH stats
3874
3875* 2005-10-07  0.6.1.2 released
3876
38772005-10-07  jrandom
3878    * Include the 1 second bandwidth usage on the console rather than the
3879      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
3880      issues.
3881
38822005-10-07  jrandom
3883    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
3884      HTTP response quicker, and initialize the streaming lib's cwin more
3885      carefully.
3886    * Added a small web UI to the new Syndie scheduled updater.  If you log in
3887      as a user authorized to use the remote archive funtionality, you can
3888      request remote archives in your address book to be automatically pulled
3889      down by checking the "scheduled?" checkbox.
3890
38912005-10-05  jrandom
3892    * Allow the first few packets in the stream to fill in their IDs during
3893      handshake (thanks cervantes, Complication, et al!)  This should fix at
3894      least some of the intermittent HTTP POST issues.
3895
38962005-10-04  jrandom
3897    * Syndie patch for single user remote archives (thanks nickless_head!)
3898    * Handle an invalid netDb store (thanks Complication!)
3899
39002005-10-04  jrandom
3901    * Further reduction in unnecessary streaming packets.
3902
39032005-10-03  jrandom
3904    * Properly reject unroutable IP addresses *cough*
3905
39062005-10-03  rangarok
3907    * Changed default update delay to twelve hours, and enforced a minimum
3908      delay of one hour.
3909
39102005-10-03  ragnarok
3911    * Implemented a Syndie auto-updater.  It will automatically pull new posts
3912      from selected syndie archives.  To try it out, add
3913      syndie.updateArchives=<comma seperated list of syndie archives> to your
3914      syndie.config.  Archives must be specified as the full url to archive.txt
3915      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
3916      for new posts every hour.  This can be modified by setting
3917      syndie.updateDelay=<delay in hours> also in syndie.config.
3918
3919* 2005-10-01  0.6.1.1 released
3920
39212005-09-30  ragnarok
3922    * Implemented conditional get for syndie remote archive imports.
3923
39242005-09-30  jrandom
3925    * Killed three more streaming lib bugs, one of which caused excess packets
3926      to be transmitted (dupacking dupacks), one that was the root of many of
3927      the old hung streams (shrinking highest received), and another that was
3928      releasing data too soon.
3929
39302005-09-30  jrandom
3931    * Only allow autodetection of our IP address if we haven't received an
3932      inbound connection in the last two minutes.
3933    * Increase the default max streaming resends to 8 from 5 (and down from
3934      the earlier 10)
3935
39362005-09-29  ragnarok
3937    * Export petnames from syndie to the router's petname db instead of
3938      userhosts.txt.
3939
39402005-09-29  jrandom
3941    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
3942      reseeding - useful on OSes that make it hard to create dot files. 
3943      Thanks Complication (and anon)!
3944    * Fixed the installer version string (thanks Frontier!)
3945    * Added cleaner rejection of invalid IP addresses, shitlist those who send
3946      us invalid IP addresses, verify again that we are not sending invalid IP
3947      addresses, and log an error if it happens. (Thanks Complication, ptm,
3948      and adab!)
3949
3950* 2005-09-29  0.6.1 released
3951
39522005-09-29  jrandom
3953    * Let syndie users modify their metadata.
3954    * Reseed the router on startup if there aren't enough peer references
3955      known locally.  This can be disabled by creating the file .i2pnoreseed
3956      in your home directory, and the existing detection and reseed handling
3957      on the web interface is unchanged.
3958
39592005-09-28  jrandom
3960    * Fix for at least some (all?) of the wrong stream errors in the streaming
3961      lib
3962
39632005-09-27  jrandom
3964    * Properly suggest filenames for attachments in Syndie (thanks all!)
3965    * Fixed the Syndie authorization scheme for single user vs. multiuser
3966
39672005-09-27  jrandom
3968    * I2PTunnel bugfix (thanks Complication!)
3969    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
3970      instead of k/cwin)
3971    * Limit the number of inbound SSU sessions being built at once (using
3972      half of the i2np.udp.maxConcurrentEstablish config prop)
3973    * Don't shitlist on a message send failure alone (unless there aren't any
3974      common transports).
3975    * More careful bandwidth bursting
3976
39772005-09-26  jrandom
3978    * Reworded the SSU introductions config section (thanks duck!)
3979    * Force identity content encoding for I2PTunnel httpserver requests
3980      (thanks redzara!)
3981    * Further x-i2p-gzip bugfixes for the end of streams
3982    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
3983      I2P's performance at 3KBps is another issue)
3984    * Cleaned up some streaming lib structures
3985
39862005-09-25  jrandom
3987    * Allow reseeding on the console if the netDb knows less than 30 peers,
3988      rather than less than 10 (without internet connectivity, we keep the
3989      last 15 router references)
3990    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
3991      more aggressively.
3992    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
3993    * Reduced the default maximum number of streaming lib resends of a packet
3994      (10 retransmits is a bit much with a reasonable RTO)
3995
39962005-09-25  Complication
3997    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
3998      conflict resolution page if the i2paddresshelper parameter differs from
3999      an existing name to destination mapping.
4000
40012005-09-25  jrandom
4002    * Fix a long standing streaming lib bug (in the inactivity detection code)
4003    * Improved handling of initial streaming lib packet retransmissions to
4004      kill the "lost first packet" bug (where a page shows up with the first
4005      few KB missing)
4006    * Add support for initial window sizes greater than 1 - useful for
4007      eepsites to transmit e.g. 4 packets full of data along with the initial
4008      ACK, thereby cutting down on the rtt latency.  The congestion window
4009      size can and does still shrink down to 1 packet though.
4010    * Adjusted the streaming lib retransmission calculation algorithm to be
4011      more TCP-like.
4012
40132005-09-21  redzara
4014    * Use ISO-8859-1 for the susidns xml
4015
40162005-09-21  susi
4017    * Bugfix in susidns for deleting entries
4018
40192005-09-21  jrandom
4020    * Add support for HTTP POST to EepGet
4021    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
4022      put in that URL.
4023
40242005-09-18  jrandom
4025    * Added support for pure 64bit linux with jbigi and the java service
4026      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
4027      et al for help testing!
4028    * UI cleanup in Syndie (thanks gloin and bar!)
4029
40302005-09-18  Ragnarok
4031    * Made MetaNamingService the default naming service.
4032
40332005-09-17  Ragnarok
4034    * Implemented a naming service using Syndie's petname db.  It's not enabled
4035      by default, but you can try it out by setting
4036      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
4037      router.config.
4038    * Implemented a meta naming service that will first lookup names in the
4039      PetNameNamingService then fallback on the HostTxtNamingService.  Which
4040      naming services are checked and in which order is specified by
4041      i2p.nameservicelist.  This will probably become the default naming service
4042      so please help test it out by setting
4043      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
4044     
4045* 2005-09-17  0.6.0.6 released
4046
40472005-09-17  jrandom
4048    * Clean up syndie a bit more and bundle a default introductory post with
4049      both new installs and updates.
4050    * Typo fixes on the console (thanks bar!)
4051
40522005-09-17  jrandom
4053    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
4054      steady state rate, plus a new limit on how fast we transfer when
4055      bursting.  This is different from the old "burst as fast as possible
4056      until we're out of tokens" policy, and should help those with congested
4057      networks.  See /config.jsp to manage this rate.
4058    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
4059      old posts just didn't show up).
4060    * Log properly in EepPost
4061
40622005-09-17  jrandom
4063    * Added the natively compiled jbigi and patched java service wrapper for
4064      OS X.  Thanks Bill Dorsey for letting me use your machine!
4065    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
4066      don't bundle the binutils necessary (and there'd be a naming conflict
4067      if we did).
4068    * Added 'single user' functionality to syndie - if the single user
4069      checkbox on the admin page is checked, all users are allowed to control
4070      the instance and sync up with remote syndie nodes.
4071    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
4072      debugged.
4073
40742005-09-16  jrandom
4075    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
4076      you have i2np.udp.allowLocal=true defined - useful for private nets)
4077
40782005-09-16  jrandom
4079    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
4080      (just specify the spoofed host as an empty string), allowing them to
4081      honor x-i2p-gzip encoding.
4082    * Let windows users build the exes too (thanks bar and redzara!)
4083    * Allow I2PTunnel httpserver operators to disable gzip compression on
4084      individual tunnels with the i2ptunnel.gzip=false client option
4085      (good idea susi!)
4086
40872005-09-16  jrandom
4088    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
4089    * Added runplain.sh for *nix/osx users having problems using the java
4090      service wrapper (called from the install dir as: sh runplain.sh)
4091    * Bundle susidns and syndie, with links on the top nav
4092    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
4093      content-encoding (if offered), reducing the payload size before it
4094      reaches the streaming lib.  The existing compression is at the i2cp
4095      level, so we've been packetizing 4KB of uncompressed data and then
4096      compressing those messages, rather than compressing and then packetizing
4097      4KB of compressed data.  This should reduce the number of round trips
4098      to fetch web pages substantially.
4099    * Adjust the startup and timing of the addressbook so that susidns always
4100      has config to work off, and expose a method for susidns to tell it to
4101      reload its config and rerun.
4102
41032005-09-15  jrandom
4104    * Error handling for failed intro packets (thanks red.hand!)
4105    * More carefully verify intro addresses
4106
41072005-09-13  jrandom
4108    * More careful error handling with introductions (thanks dust!)
4109    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
4110    * Hide the shitlist on the summary so it doesn't confuse new users.
4111
41122005-09-12  comwiz
4113    * Migrated the router tests to junit
4114
41152005-09-12  jrandom
4116    * Removed guaranteed delivery mode entirely (so existing i2phex clients
4117      using it can get the benefits of mode=best_effort).  Guaranteed delivery
4118      is offered at the streaming lib level.
4119    * Improve the peer selection code for peer testing, as everyone now
4120      supports tests.
4121    * Give the watchdog its fangs - if it detects obscene job lag or if
4122      clients have been unable to get a leaseSet for more than 5 minutes,
4123      restart the router.  This was disabled a year ago due to spurious
4124      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
4125      cause of the spurious restarts should be gone.
4126
41272005-09-12  jrandom
4128    * Bugfix for skewed store which could kill a UDP thread (causing complete
4129      comm failure and eventual OOM)
4130
41312005-09-12  jrandom
4132    * More aggressively publish updated routerInfo.
4133    * Expose the flag to force SSU introductions on the router console
4134    * Don't give people the option to disable SNTP time sync, at least not
4135      through the router console, because there is no reason to disable it.
4136      No, not even if your OS is "ntp synced", because chances are, its not.
4137
41382005-09-10  jrandom
4139    * Test the router's reachability earlier and more aggressively
4140    * Use the low level bandwidth limiter's rates for the router console, and
4141      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
4142      the logger config, keep track of the 1 second transfer rates as the stat
4143      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
4144      behavior.
4145
41462005-09-09  jrandom
4147    * Added preliminary support for NAT hole punching through SSU introducers
4148    * Honor peer test results from peers that we have an SSU session with if
4149      those sessions are idle for 3 minutes or more.
4150
41512005-09-09  cervantes
4152    * New build due to change in build number :P (thanks ugha!)
4153
41542005-09-07  BarkerJr
4155    * HTML cleanup for the router console (thanks!)
4156
41572005-09-07  jrandom
4158    * Lay the foundation for 'client routers' - the ability for peers to opt
4159      out of participating in tunnels entirely due to firewall/NAT issues. 
4160      Individual routers have control over where those peers are used in
4161      tunnels - in outbound or inbound, exploratory or client tunnels, or
4162      none at all.  The defaults with this build are to simply act as before -
4163      placing everyone as potential participants in any tunnel.
4164    * Another part of the foundation includes the option for netDb
4165      participants to refuse to answer queries regarding peers who are marked
4166      as unreachable, though this too is disabled by default (meaning the
4167      routerInfo is retrievable from the netDb).
4168
41692005-09-05  jrandom
4170    * Expose the HTTP headers to EepGet status listeners
4171    * Handle DSA key failures properly (if the signature is not invertable, it
4172      is obviously invalid)
4173
41742005-09-04  jrandom
4175    * Don't persist peer profiles until we are shutting down, as the
4176      persistence process gobbles RAM and wall time.
4177    * Bugfix to allow you to check/uncheck the sharedClient setting on the
4178      I2PTunnel web interface (thanks BarkerJr!)
4179    * Be more careful when expiring a failed tunnel message fragment so we
4180      don't drop the data while attempting to read it.
4181
4182* 2005-09-02  0.6.0.5 released
4183
41842005-09-02  jrandom
4185    * Don't refuse to send a netDb store if the targetted peer has failed a
4186      bit (the value was an arbitrary amount).
4187    * Logging changes
4188
4189* 2005-09-01  0.6.0.4 released
4190
41912005-09-01  jrandom
4192    * Don't send out a netDb store of a router if it is more than a few hours
4193      old, even if someone asked us for it.
4194
41952005-08-31  jrandom
4196    * Don't publish leaseSets to the netDb if they will never be looked for -
4197      namely, if they are for destinations that only establish outbound
4198      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
4199      modified to tell the router that it doesn't need to publish their
4200      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
4201      to 'true').
4202    * Don't publish the top 10 peer rankings of each router in the netdb, as
4203      it isn't being watched right now.
4204
42052005-08-29  jrandom
4206    * Added the new test Floodfill netDb
4207
42082005-08-27  jrandom
4209    * Minor logging and optimization tweaks in the router and SDK
4210    * Use ISO-8859-1 in the XML files (thanks redzara!)
4211    * The consolePassword config property can now be used to bypass the router
4212      console's nonce checking, allowing CLI restarts
4213
42142005-08-24  jrandom
4215    * Catch errors with corrupt tunnel messages more gracefully (no need to
4216      kill the thread and cause an OOM...)
4217    * Don't skip shitlisted peers for netDb store messages, as they aren't
4218      necessarily shitlisted by other people (though they probably are).
4219    * Adjust the netDb store per-peer timeout based on each particular peer's
4220      profile (timeout = 4x their average netDb store response time)   
4221    * Don't republish leaseSets to *failed* peers - send them to peers who
4222      replied but just didn't know the value.
4223    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
4224      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
4225      sent entirely within the first streaming packet anyway, so this won't be
4226      a problem.
4227    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
4228      prevent any clients from accessing the server if the handlers get
4229      blocked by the streaming lib or other issues.
4230    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
4231      Unknown.
4232
42332005-08-23  jrandom
4234    * Removed the concept of "no bandwidth limit" - if none is specified, its
4235      16KBps in/out.
4236    * Include ack packets in the per-peer cwin throttle (they were part of the
4237      bandwidth limit though).
4238    * Tweak the SSU cwin operation to get more accurrate estimates under
4239      congestions.
4240    * SSU improvements to resend more efficiently.
4241    * Added a basic scheduler to eepget to fetch multiple files sequentially.
4242
4243* 2005-08-21  0.6.0.3 released
4244
42452005-08-21  jrandom
4246    * If we already have an established SSU session with the Charlie helping
4247      test us, cancel the test with the status of "unknown".
4248
42492005-08-17  jrandom
4250    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
4251      viability before agreeing to Alice's request.  This doesn't work with
4252      older SSU peer test builds, but is backwards compatible (older nodes
4253      won't ask newer nodes to participate in tests, and newer nodes won't
4254      ask older nodes to either).
4255
42562005-08-12  jrandom
4257    * Keep detailed stats on the peer testing, publishing the results in the
4258      netDb.
4259    * Don't overwrite the status with 'unknown' unless we haven't had a valid
4260      status in a while.
4261    * Make sure to avoid shitlisted peers for peer testing.
4262    * When we get an unknown result to a peer test, try again soon afterwards.
4263    * When a peer tells us that our address is different from what we expect,
4264      if we've done a recent peer test with a result of OK, fire off a peer
4265      test to make sure our IP/port is still valid.  If our test is old or the
4266      result was not OK, accept their suggestion, but queue up a peer test for
4267      later.
4268    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
4269      we monitor netDb store progress (to clear up the high netDb.storePeers
4270      stat)
4271
42722005-08-10  jrandom
4273    * Deployed the peer testing implementation to be run every few minutes on
4274      each router, as well as any time the user requests a test manually.  The
4275      tests do not reconfigure the ports at the moment, merely determine under
4276      what conditions the local router is reachable.  The status shown in the
4277      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
4278      differently for different peers, "ERR-Reject" if the router cannot
4279      receive unsolicited packets or the peer helping test could not find a 
4280      collaborator, "Unknown" if the test has not been run or the test
4281      participants were unreachable, or "OK" if the router can receive
4282      unsolicited connections and those connections use the same IP and port.
4283
4284* 2005-08-08  0.6.0.2 released
4285
42862005-08-08  jrandom
4287    * Add a configurable throttle to the number of concurrent outbound SSU
4288      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
4289      may help those with slow connections to get integrated at the start.
4290    * Further fixlets to the streaming lib
4291
42922005-08-07  Complication
4293    * Display the average clock skew for both SSU and TCP connections
4294
42952005-08-07  jrandom
4296    * Fixed the long standing streaming lib bug where we could lose the first
4297      packet on retransmission.
4298    * Avoid an NPE when a message expires on the SSU queue.
4299    * Adjust the streaming lib's window growth factor with an additional
4300      Vegas-esque congestion detection algorithm.
4301    * Removed an unnecessary SSU session drop
4302    * Reduced the MTU (until we get a working PMTU lib)
4303    * Deferr tunnel acceptance until we know how to reach the next hop,
4304      rejecting it if we can't find them in time.
4305    * If our netDb store of our leaseSet fails, give it a few seconds before
4306      republishing.
4307
4308* 2005-08-03  0.6.0.1 released
4309
43102005-08-03  jrandom
4311    * Backed out an inadvertant change to the netDb store redundancy factor.
4312    * Verify tunnel participant caching.
4313    * Logging cleanup
4314
43152005-08-01  duck
4316    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
4317
43182005-08-01  duck
4319    * Fix an addressbook NPE when a new hostname from the master addressbook
4320      didn't exist in the router addressbook.
4321    * Fix an addressbook bug which caused subscriptions not to be parsed at
4322      all. (Oops!)
4323
43242005-07-31  jrandom
4325    * Adjust the netDb search and store per peer timeouts to match the average
4326      measured per peer success times, rather than huge fixed values.
4327    * Optimized and reverified the netDb peer selection / retrieval process
4328      within the kbuckets.
4329    * Drop TCP connections that don't have any useful activity in 10 minutes.
4330    * If i2np.udp.fixedPort=true, never change the externally published port,
4331      even if we are autodetecting the IP address.
4332
4333* 2005-07-27  0.6 released
4334
43352005-07-27  jrandom
4336    * Enabled SSU as the default top priority transport, adjusting the
4337      config.jsp page accordingly.
4338    * Add verification fields to the SSU and TCP connection negotiation (not
4339      compatible with previous builds)
4340    * Enable the backwards incompatible tunnel crypto change as documented in
4341      tunnel-alt.html (have each hop encrypt the received IV before using it,
4342      then encrypt it again before sending it on)
4343    * Disable the I2CP encryption, leaving in place the end to end garlic
4344      encryption (another backwards incompatible change)
4345    * Adjust the protocol versions on the TCP and SSU transports so that they
4346      won't talk to older routers.
4347    * Fix up the config stats handling again
4348    * Fix a rare off-by-one in the SSU fragmentation
4349    * Reduce some unnecessary netDb resending by inluding the peers queried
4350      successfully in the store redundancy count.
4351
43522005-07-22  jrandom
4353    * Use the small thread pool for I2PTunnelHTTPServer (already used for
4354      I2PTunnelServer)
4355    * Minor memory churn reduction in I2CP
4356    * Small stats update
4357
43582005-07-21  jrandom
4359    * Fix in the SDK for a bug which would manifest itself as misrouted
4360      streaming packets when a destination has many concurrent streaming
4361      connections (thanks duck!)
4362    * No more "Graceful shutdown in -18140121441141s"
4363
43642005-07-20  jrandom
4365    * Allow the user to specify an external port # for SSU even if the external
4366      host isn't specified (thanks duck!)
4367
43682005-07-19  jrandom
4369    * Further preparation for removing I2CP crypto
4370    * Added some validation to the DH key agreement (thanks $anon)
4371    * Validate tunnel data message expirations (though not really a problem,
4372      since tunnels expire)
4373    * Minor PRNG threading cleanup
4374
43752005-07-15  cervantes
4376    * Added workaround for an odd win32 bug in the stats configuration console
4377      page which meant only the first checkbox selection was saved.
4378
43792005-07-15  Romster
4380    * Added per group selection toggles in the stats configuration console
4381      page.
4382
43832005-07-13  jrandom
4384    * Fixed a recently injected bug in the multitransport bidding which had
4385      allowed an essentially arbitrary choice of transports, rather than the
4386      properly ordered choice.
4387
43882005-07-13  jrandom
4389    * Fixed a long standing bug where we weren't properly comparing session
4390      tags but instead largely depending upon comparing their hashCode,
4391      causing intermittent decryption errors.
4392
43932005-07-12  jrandom
4394    * Add some data duplication to avoid a recently injected concurrency
4395      problem in the session tag manager (thanks redzara and romster).
4396
43972005-07-11  jrandom
4398    * Reduced the growth factor on the slow start and congestion avoidance for
4399      the streaming lib.
4400    * Adjusted some of the I2PTunnelServer threading to use a small pool of
4401      handlers, rather than launching off new threads which then immediately
4402      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
4403    * Don't persist session keys / session tags (not worth it, for now)
4404    * Added some detection and handling code for duplicate session tags being
4405      delivered (root cause still not addressed)
4406    * Make the PRNG's buffer size configurable (via the config property
4407      "i2p.prng.totalBufferSizeKB=4096")
4408    * Disable SSU flooding by default (duh)
4409    * Updates to the StreamSink apps for better throttling tests.
4410
44112005-07-05  jrandom
4412    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
4413      buffer, rather than the underlying PRNG's (likely small) one, which in
4414      turn reduces the frequency of recalcing.
4415    * More tuning to reduce temporary allocation churn
4416
44172005-07-04  jrandom
4418    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
4419      rather than the IV by itself, preventing an attack that would let
4420      colluding internal adversaries tag a message to determine that they are
4421      in the same tunnel.  Thanks dvorak for the catch!
4422    * Drop long inactive profiles on startup and shutdown
4423    * /configstats.jsp: web interface to pick what stats to log
4424    * Deliver more session tags to account for wider window sizes
4425    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
4426    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
4427    * UrlLauncher: adjust the browser selection order
4428    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
4429    * StreamSinkClient: add support for sending an unlimited amount of data
4430    * Migrate the tests out of the default build jars
4431
44322005-06-22  Comwiz
4433    * Migrate the core tests to junit
4434
44352005-05-25  duck
4436    * Fixed PRNG bug (bugzilla #107)
4437
44382005-05-01  jrandom
4439    * Added a substantial optimization to the AES engine by caching the
4440      prepared session keys (duh).
4441
44422005-05-01  jrandom
4443    * Cleaned up the peers page a bit more.
4444
44452005-04-30  jrandom
4446    * Added a small new page to the web console (/peers.jsp) which contains
4447      the peer connection information.  This will be cleaned up a lot more
4448      before 0.6 is out, but its a start.
4449
44502005-04-30  jrandom
4451    * Reduced some SimpleTimer churn
4452
44532005-04-29  jrandom
4454    * Reduce the peer profile stat coallesce overhead by inlining it with the
4455      reorganize.
4456    * Limit each transport to at most one address (any transport that requires
4457      multiple entry points can include those alternatives in the address).
4458
44592005-04-28  jrandom
4460    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
4461    * Add back the code to handle bids from multiple transports (though there
4462      is still only one transport enabled by default)
4463    * Adjust the router's queueing of outbound client messages when under
4464      heavy load by running the preparatory job in the client's I2CP handler
4465      thread, thereby blocking additional outbound messages when the router is
4466      hosed.
4467    * No need to validate or persist a netDb entry if we already have it
4468
44692005-04-25  smeghead
4470    * Added button to router console for manual update checks.
4471    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
4472      every time the form was submitted even if it hadn't changed.
4473
44742005-04-24  jrandom
4475    * Added a pool of PRNGs using a different synchronization technique,
4476      hopefully sufficient to work around IBM's PRNG bugs until we get our
4477      own Fortuna.
4478    * In the streaming lib, don't jack up the RTT on NACK, and have the window
4479      size bound the not-yet-ready messages to the peer, not the unacked
4480      message count (not sure yet whether this is worthwile).
4481    * Many additions to the messageHistory log.
4482    * Handle out of order tunnel fragment delivery (not an issue on the live
4483      net with TCP, but critical with UDP).
4484
4485* 2005-04-20  0.5.0.7 released
4486
44872005-04-20  jrandom
4488    * In the SDK, we don't actually need to block when we're sending a message
4489      as BestEffort (and these days, we're always sending BestEffort).
4490    * Pass out client messages in fewer (larger) steps.
4491    * Have the InNetMessagePool short circuit dispatch requests.
4492    * Have the message validator take into account expiration to cut down on
4493      false positives at high transfer rates.
4494    * Allow configuration of the probabalistic window size growth rate in the
4495      streaming lib's slow start and congestion avoidance phases, and default
4496      them to a more conservative value (2), rather than the previous value
4497      (1).
4498    * Reduce the ack delay in the streaming lib to 500ms
4499    * Honor choke requests in the streaming lib (only affects those getting
4500      insanely high transfer rates)
4501    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
4502      I2PTunnel client page (thanks maestro^!)
4503
45042005-04-17  sirup
4505    * Added the possibility for i2ptunnel client and httpclient instances to
4506      have their own i2p session (and hence, destination and tunnels).  By
4507      default, tunnels are shared, but that can be changed on the web
4508      interface or with the sharedClient config option in i2ptunnel.config.
4509
45102005-04-17  jrandom
4511    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
4512      this?  If not, I want to drop it (lots of tiny details with lots of
4513      duplicated semantics).
4514
45152005-04-17  zzz
4516    * Added new user-editable eepproxy error page templates.
4517
45182005-04-17  jrandom
4519    * Revamp the tunnel building throttles, fixing a situation where the
4520      rebuild may not recover, and defaulting it to unthrottled (users with
4521      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
4522      advanced router config)
4523
45242005-04-16  jrandom
4525    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
4526
45272005-04-12  jrandom
4528    * Make sure we don't get cached updates (thanks smeghead!)
4529    * Clear out the callback for the TestJob after it passes (only affects the
4530      job timing accounting)
4531
45322005-04-08  smeghead
4533    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
4534
45352005-04-08  smeghead
4536    * Security improvements to TrustedUpdate: signing and verification of the
4537      version string along with the data payload for signed update files
4538      (consequently the positions of the DSA signature and version string fields
4539      have been swapped in the spec for the update file's header); router will
4540      no longer perform a trusted update if the signed update's version is lower
4541      than or equal to the currently running router's version.
4542    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
4543    * Extended TrustedUpdate public API for use by third party applications.
4544
4545* 2005-04-06  0.5.0.6 released
4546
45472005-04-05  jrandom
4548    * Retry I2PTunnel startup if we are unable to build a socketManager for a
4549      client or httpclient tunnel.
4550    * Add some basic sanity checking on the I2CP settings (thanks duck!)
4551
45522005-04-05  jrandom
4553    * After a successfull netDb search for a leaseSet, republish it to all of
4554      the peers we have tried so far who did not give us the key (up to 10),
4555      rather than the old K closest (which may include peers who had given us
4556      the key)
4557    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
4558      republish it every 5 minutes, republish it every 3.  In addition, always
4559      republish as soon as the leaseSet changes (duh^2).
4560    * Minor fix for oddball startup race (thanks travis_bickle!)
4561    * Minor AES update to allow in-place decryption.
4562
45632005-04-03  jrandom
4564    * EepGet fix for open-ended HTTP fetches (such as the news.xml
4565      feeding the NewsFetcher)
4566
45672005-04-01  jrandom
4568    * Allow editing I2PTunnel server instances with five digit ports
4569      (thanks nickless_head!)
4570    * More NewsFetcher debugging for reported weirdness
4571
45722005-04-01  jrandom
4573    * Fix to check for missing news file (thanks smeghead!)
4574    * Added destination display CLI:
4575      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
4576    * Added destination display to the web interface (thanks pnspns)
4577    * Installed CIA backdoor
4578
4579* 2005-03-29  0.5.0.5 released
4580
45812005-03-29  jrandom
4582    * Decreased the initial RTT estimate to 10s to allow more retries.
4583    * Increased the default netDb store replication factor from 2 to 6 to take
4584      into consideration tunnel failures.
4585    * Address some statistical anonymity attacks against the netDb that could
4586      be mounted by an active internal adversary by only answering lookups for
4587      leaseSets we received through an unsolicited store.
4588    * Don't throttle lookup responses (we throttle enough elsewhere)
4589    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
4590      the file (thanks nickster!)
4591    * Updated the I2PTunnel HTML (thanks postman!)
4592    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
4593      which, if matched against the router.config "i2ptunnel.passphrase" value,
4594      skips the nonce check.  If the config prop doesn't exist or is blank, no
4595      passphrase is accepted.
4596    * Implemented HMAC-SHA256.
4597    * Enable the tunnel batching with a 500ms delay by default
4598    * Dropped compatability with 0.5.0.3 and earlier releases
4599
46002005-03-26  jrandom
4601    * Added some error handling and fairly safe to cache data to the streaming
4602      lib (good call Tom!)
4603
46042005-03-25  jrandom
4605    * Fixed up building dependencies for the routerconsole on some more
4606      aggressive compilers (thanks polecat!)
4607
4608* 2005-03-24  0.5.0.4 released
4609
46102005-03-23  jrandom
4611    * Added more intelligent version checking in news.xml, in case we have a
4612      version newer than the one specified.
4613
46142005-03-23  jrandom
4615    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
4616      cvsweb.cgi doesn't puke on us.
4617
46182005-03-23  Connelly
4619    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
4620      stream send data to not be sent if STREAM CLOSE is issued too fast.
4621
46222005-03-23  jrandom
4623    * Implemented the news fetch / update policy code, as configurated on
4624      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
4625      doesn't exist yet, on startup).  No action is taken however, though if
4626      the news.xml specifies that a new release is available, an option to
4627      update will be shown on the router console.
4628    * New initialNews.xml delivered with new installs, and moved news.xml out
4629      of the i2pwww module and into the i2p module so that we can bundle it
4630      within each update.
4631
46322005-03-23  jrandom
4633    * New /configupdate.jsp page for controlling the update / notification
4634      process, as well as various minor related updates.  Note that not all
4635      options are exposed yet, and the update detection code isn't in place
4636      in this commit - it currently says there is always an update available.
4637    * New EepGet component for reliable downloading, with a CLI exposed in
4638      java -cp lib/i2p.jar net.i2p.util.EepGet url
4639    * Added a default signing key to the TrustedUpdate component to be used
4640      for verifying updates.  This signing key can be authenticated via
4641      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
4642    * New public domain SHA1 implementation for the DSA code so that we can
4643      handle signing streams of arbitrary size without excess memory usage
4644      (thanks P.Verdy!)
4645    * Added some helpers to the TrustedUpdate to work off streams and to offer
4646      a minimal CLI:
4647          TrustedUpdate keygen pubKeyFile privKeyFile
4648          TrustedUpdate sign origFile signedFile privKeyFile
4649          TrustedUpdate verify signedFile
4650
46512005-03-22  smeghead
4652    * New TrustedUpdate component for signing/verifying files with a DSA
4653      signature.
4654
46552005-03-21  jrandom
4656    * Fixed the tunnel fragmentation handler to deal with multiple fragments
4657      in a single message properly (rather than release the buffer into the
4658      cache after processing the first one) (duh!)
4659    * Added the batching preprocessor which will bundle together multiple
4660      small messages inside a single tunnel message by delaying their delivery
4661      up to .5s, or whenever the pending data will fill a full message,
4662      whichever comes first.  This is disabled at the moment, since without the
4663      above bugfix widely deployed, lots and lots of messages would fail.
4664    * Within each tunnel pool, stick with a randomly selected peer for up to
4665      .5s before randomizing and selecting again, instead of randomizing the
4666      pool each time a tunnel is needed. 
4667
4668* 2005-03-18  0.5.0.3 released
4669
46702005-03-18  jrandom
4671    * Minor tweak to the timestamper to help reduce small skews
4672    * Adjust the stats published to include only the relevent ones
4673    * Only show the currently used speed calculation on the profile page
4674    * Allow the full max # resends to be sent, rather than piggybacking the
4675      RESET packet along side the final resend (duh)
4676    * Add irc.postman.i2p to the default list of IRC servers for new installs
4677    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
4678      backwards compatability for users running 0.5.0.2.
4679
46802005-03-18  jrandom
4681    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
4682    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
4683
46842005-03-17  jrandom
4685    * Update the old speed calculator and associated profile data points to
4686      use a non-tiered moving average of the tunnel test time, avoiding the
4687      freshness issues of the old tiered speed stats.
4688    * Explicitly synchronize all of the methods on the PRNG, rather than just
4689      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
4690      needs all of them synchronized).
4691    * Properly use the tunnel tests as part of the profile stats.
4692    * Don't flood the jobqueue with sequential persist profile tasks, but
4693      instead, inject a brief scheduling delay between them.
4694    * Reduce the TCP connection establishment timeout to 20s (which is still
4695      absurdly excessive)
4696    * Reduced the max resend delay to 30s so we can get some resends in when
4697      dealing with client apps that hang up early (e.g. wget)
4698    * Added more alternative socketManager factories (good call aum!)
4699
47002005-03-16  jrandom
4701    * Adjust the old speed calculator to include end to end RTT data in its
4702      estimates, and use that as the primary speed calculator again.
4703    * Use the mean of the high capacity speeds to determine the fast
4704      threshold, rather than the median.  Perhaps we should use the mean of
4705      all active non-failing peers?
4706    * Updated the profile page to sort by tier, then alphabetically.
4707    * Added some alternative socketManager factories (good call aum!)
4708
47092005-03-14  jrandom
4710    * New strict speed calculator that goes off the actual number of messages
4711      verifiably sent through the peer by way of tunnels.  Initially, this only
4712      contains the successful message count on inbound tunnels, but may be
4713      augmented later to include verified outbound messages, peers queried in
4714      the netDb, etc.  The speed calculation decays quickly, but should give
4715      a better differential than the previous stat (both values are shown on
4716      the /profiles.jsp page)
4717
47182005-03-11  jrandom
4719    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
4720      minimum (increased on resends as before, of course).
4721    * Always prod the clock update listeners, even if just to tell them that
4722      the time hasn't changed much.
4723    * Added support for explicit peer selection for individual tunnel pools,
4724      which will be useful in debugging but not recommended for use by normal
4725      end users.
4726    * More aggressively search for the next hop's routerInfo on tunnel join.
4727    * Give messages received via inbound tunnels that are bound to remote
4728      locations sufficient time (taking into account clock skew).
4729    * Give alternate direct send messages sufficient time (10s min, not 5s)
4730    * Always give the end to end data message the explicit timeout (though the
4731      old default was sufficient before)
4732    * No need to give end to end messages an insane expiration (+2m), as we
4733      are already handling skew on the receiving side.
4734    * Don't complain too loudly about expired TunnelCreateMessages (at least,
4735      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
4736    * Properly keep the sendBps stat
4737    * When running the router with router.keepHistory=true, log more data to
4738      messageHistory.txt
4739    * Logging updates
4740    * Minor formatting updates
4741
47422005-03-08  jrandom
4743    * More aggressively adjust the clock
4744
47452005-03-07  jrandom
4746    * Fix the HTTP response header filter to allow multiple headers with the
4747      same name (thanks duck and spotteri!)
4748
4749* 2005-03-06  0.5.0.2 released
4750
47512005-03-06  jrandom
4752    * Allow the I2PTunnel web interface to select streaming lib options for
4753      individual client tunnels, rather than sharing them across all of them,
4754      as we do with the session options.  This way people can (and should) set
4755      the irc proxy to interactive and the eepproxy to bulk.
4756    * Added a startRouter.sh script to new installs which simply calls
4757      "sh i2prouter start".  This should make it clear how people should start
4758      I2P.
4759    * Properly expand the HTTP response header buffer (thanks shendaras!)
4760
47612005-03-04  jrandom
4762    * Filter HTTP response headers in the eepproxy, forcing Connection: close
4763      so that broken (/malicious) webservers can't allow persistent
4764      connections.  All HTTP compliant browsers should now always close the
4765      socket.
4766    * Enabled the GZIPInputStream's cache (they weren't cached before)
4767    * Make sure our first send is always a SYN (duh)
4768    * Workaround for some buggy compilers
4769
47702005-03-03  jrandom
4771    * Loop while starting up the I2PTunnel instances, in case the I2CP
4772      listener isn't up yet (thanks detonate!)
4773    * Implement custom reusable GZIP streams to both reduce memory churn
4774      and prevent the exposure of data in the standard GZIP header (creation
4775      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
4776      though has only been tested within the confines of I2P's compression use
4777      (DataHelper.[de]compress).
4778    * Preemptively support the next protocol version, so that after the 0.5.0.2
4779      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
4780
47812005-03-02  jrandom
4782    * Fix one substantial OOM cause (session tag manager was only dropping
4783      tags once the critical limit was met, rather than honoring their
4784      expiration) (duh)
4785    * Lots of small memory fixes
4786    * Double the allowable concurrent outstanding tunnel build tasks (20)
4787
47882005-03-01  jrandom
4789    * Really disable the streaming lib packet caching
4790    * Synchronized a message handling point in the SDK (even though its use is
4791      already essentially single threaded, its better to play it safe)
4792    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
4793      existing one (duh)
4794    * Throttle the number of concurrent pending tunnel builds across all
4795      pools, in addition to simply throttling the number of new requests per
4796      minute for each pool individually.  This should avoid the cascading
4797      failure when tunnel builds take too long, as no new builds will be
4798      created until the previous ones are handled.
4799    * Factored out and extended the DataHelper's unit tests for dealing with
4800      long and date formatting.
4801    * Explicitly specify the HTTP auth realm as "i2prouter", though this
4802      alone doesn't address the bug where jetty asks for authentication too
4803      much.  (thanks orion!)
4804    * Updated the StreamSinkServer to ignore all read bytes, rather than write
4805      them to the filesystem.
4806
48072005-02-27  jrandom
4808    * Don't rerequest leaseSets if there are already pending requests
4809    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
4810      temporary disabled the streaming lib packet caching.
4811    * Reduced the resend RTT penalty to 10s
4812
48132005-02-26  jrandom
4814    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
4815
48162005-02-26  jrandom
4817    * Further streaming lib caching improvements
4818    * Reduce the minimum RTT (used to calculate retry timeouts), but also
4819      increase the RTT on resends.
4820    * Lower the default message size to 4KB from 16KB to further reduce the
4821      chance of failed fragmentation.
4822    * Extend tunnel rebuild throttling to include fallback rebuilds
4823    * If there are less than 20 routers known, don't drop the last 20 (to help
4824      avoid dropping all peers under catastrophic failures)
4825    * New stats for end to end messages - "client.leaseSetFoundLocally",
4826      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
4827
48282005-02-24  jrandom
4829    * Throttle the number of tunnel rebuilds per minute, preventing CPU
4830      overload under catastrophic failures (thanks Tracker and cervantes!)
4831    * Block the router startup process until we've initialized the clock
4832
48332005-02-24  jrandom
4834    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
4835      data in the streaming lib.
4836    * Fixed a streaming lib bug where the connection initiator would fail the
4837      stream if the ACK to their SYN was lost.
4838
48392005-02-23  jrandom
4840    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
4841      get stale tunnel pools, don't you think?
4842
4843* 2005-02-23  0.5.0.1 released
4844
48452005-02-22  jrandom
4846    * Reworked the tunnel (re)building process to remove the tokens and
4847      provide cleaner controls on the tunnels built.
4848    * Fixed situations where the timestamper wanted to test more servers than
4849      were provided (thanks Tracker!)
4850    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
4851      (thanks Tracker!)
4852
48532005-02-22  jrandom
4854    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
4855      try to automatically reconnect on accept()/connect(..)).
4856    * Loop check for expired lease republishing (just in case)
4857
48582005-02-22  jrandom
4859    * Adjusted (and fixed...) the timestamper change detection
4860    * Deal with a rare reordering bug at the beginning of a stream (so we
4861      don't drop it unnecessarily)
4862    * Cleaned up some dropped message handling in the router
4863    * Reduced job queue churn when dealing with a large number of tunnels by
4864      sharing an expiration job
4865    * Keep a separate list of the most recent CRIT messages (shown on the
4866      logs.jsp).  This way they don't get buried among any other messages.
4867    * For clarity, display the tunnel variance config as "Randomization" on
4868      the web console.
4869    * If lease republishing fails (boo! hiss!) try it again
4870    * Actually fix the negative jobLag in the right place (this time)
4871    * Allow reseeding when there are less than 10 known peer references
4872    * Lots of logging updates.
4873
48742005-02-20  jrandom
4875    * Allow the streaming lib resend frequency to drop down to 20s as the
4876      minimum, so that up to 2 retries can get sent on an http request.
4877    * Add further limits to failsafe tunnels.
4878    * Keep exploratory and client tunnel testing and building stats separate.
4879    * Only use the 60s period for throttling tunnel requests due to transient
4880      network overload.
4881    * Rebuild tunnels earlier (1-3m before expiration, by default)
4882    * Cache the next hop's routerInfo for participating tunnels so that the
4883      tunnel participation doesn't depend on the netDb.
4884    * Fixed a long standing bug in the streaming lib where we wouldn't always
4885      unchoke messages when the window size grows.
4886    * Make sure the window size never reaches 0 (duh)
4887
48882005-02-20  jrandom
4889    * Only build failsafe tunnels if we need them
4890    * Properly implement the selectNotFailingPeers so that we get a random
4891      selection of peers, rather than using the strictOrdering (thanks dm!)
4892    * Don't include too many "don't tell me about" peer references in the
4893      lookup message - only send the 10 peer references closest to the target.
4894
48952005-02-19  jrandom
4896    * Only build new extra tunnels on failure if we don't have enough
4897    * Fix a fencepost in the tunnel building so that e.g. a variance of
4898      2 means +/- 2, not +/- 1 (thanks dm!)
4899    * Avoid an NPE on client disconnect
4900    * Never select a shitlisted peer to participate in a tunnel
4901    * Have netDb store messages timeout after 10s, not the full 60s (duh)
4902    * Keep session tags around for a little longer, just in case (grr)
4903    * Cleaned up some closing event issues on the streaming lib
4904    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
4905      so that 0.4.* users will need to do a clean install, but we don't need
4906      to shove an additional 2MB in each update to those already on 0.5.
4907    * Imported the susimail css (oops, thanks susi!)
4908
4909* 2005-02-18  0.5 released
4910
49112005-02-17  jrandom
4912    * If the clock is adjusted during a job run, don't act as if the job took
4913      negative time.
4914
49152005-02-17  jrandom
4916    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
4917
49182005-02-17  jrandom
4919    * Fixed the braindead tunnel testing logic
4920    * If a large number of tunnels are failing (within the last 5-10 minutes)
4921      and the current tunnel pool's configuration allows it, randomly build a
4922      zero hop tunnel to replace failed tunnels.
4923    * Enable postman's POP3 and SMTP tunnels by default
4924
49252005-02-16  jrandom
4926    * Added some error handling when the number of session tags exceeds the
4927      realistic capacity, dropping a random chunk of received tag sets and
4928      conducting some minor analysis of the remaining ones.  This is a part
4929      of a pretty serious error condition, and logs as CRIT (if/when people
4930      see "TOO MANY SESSION TAGS!", please let me know the full log line it
4931      puts in the wrapper.log or /logs.jsp)
4932    * Update the addressbook to only write to the published hosts location
4933      if the addressbook's config contains "should_publish=true" (by default,
4934      it contains "should_publish=false")
4935
49362005-02-16  jrandom
4937    * (Merged the 0.5-pre branch back into CVS HEAD)
4938    * Replaced the old tunnel routing crypto with the one specified in
4939      router/doc/tunnel-alt.html, including updates to the web console to view
4940      and tweak it. 
4941    * Provide the means for routers to reject tunnel requests with a wider
4942      range of responses:
4943        probabalistic rejection, due to approaching overload
4944        transient rejection, due to temporary overload
4945        bandwidth rejection, due to persistent bandwidth overload
4946        critical rejection, due to general router fault (or imminent shutdown)
4947      The different responses are factored into the profiles accordingly.
4948    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
4949      with a series of new properties, relevent to the new tunnel routing code:
4950        inbound.nickname (used on the console)
4951        inbound.quantity (# of tunnels to use in any leaseSets)
4952        inbound.backupQuantity (# of tunnels to keep in the ready)
4953        inbound.length (# of remote peers in the tunnel)
4954        inbound.lengthVariance (if > 0, permute the length by adding a random #
4955                                up to the variance.  if < 0, permute the length
4956                                by adding or subtracting a random # up to the
4957                                variance)
4958        outbound.* (same as the inbound, except for the, uh, outbound tunnels
4959                    in that client's pool)
4960      There are other options, and more will be added later, but the above are
4961      the most relevent ones.
4962    * Replaced Jetty 4.2.21 with Jetty 5.1.2
4963    * Compress all profile data on disk.
4964    * Adjust the reseeding functionality to work even when the JVM's http proxy
4965      is set.
4966    * Enable a poor-man's interactive-flow in the streaming lib by choking the
4967      max window size.
4968    * Reduced the default streaming lib max message size to 16KB (though still
4969      configurable by the user), also doubling the default maximum window
4970      size.
4971    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
4972    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
4973      the first byte of the SHA256.
4974    * Added a new "netId" flag to let routers drop references to other routers
4975      who we won't be able to talk to.
4976    * Extended the timestamper to get a second (or third) opinion whenever it
4977      wants to actually adjust the clock offset.
4978    * Replaced that kludge of a timestamp I2NP message with a full blown
4979      DateMessage.
4980    * Substantial memory optimizations within the router and the SDK to reduce
4981      GC churn.  Client apps and the streaming libs have not been tuned,
4982      however.
4983    * More bugfixes than you can shake a stick at.
4984
49852005-02-13  jrandom
4986    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
4987      only contains 32bit versions, so build your own, placing libjbigi.so in
4988      your install dir if necessary.  (thanks mule!)
4989    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
4990      (thanks spaetz!)
4991
49922005-02-10  smeghead
4993    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
4994      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
4995      Pants are still non-functional at this time so don't mess with it yet
4996      unless you want to potentially mangle your working copy of CVS.
4997
49982005-02-09  duck
4999    * Allow an unneeded newline in the SAM client connection without
5000      disconnecting.
5001
50022005-02-07  jrandom
5003    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
5004
50052005-02-06  Sugadude
5006    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
5007
50082005-02-03  smeghead
5009    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
5010      library from GNU Crypto's CVS HEAD sources.
5011
50122005-01-26  smeghead
5013    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
5014      packages and installed to $i2pinstalldir/scripts.
5015    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
5016      using gij + libgcj, and --sourcedir to run them from the source tree
5017      instead of the installation directory.
5018    * Fixed unreachable for() statement clause in the KBucketImpl class that was
5019      causing gcj to toss a compilation warning (jrandom++).
5020
50212005-01-26  smeghead
5022    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
5023      tests and benchmarks.
5024    * Routerconsole now builds under gcj 3.4.3.
5025    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
5026
50272005-01-25  smeghead
5028    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
5029      supporting apps (except for the routerconsole which is still being
5030      investigated).
5031
50322005-01-24  smeghead
5033    * C#-ification of sam-sharp: interface greatly simplified using delegates
5034      and events; SamBaseEventHandler provides basic implementation and helper
5035      methods but is now optional.
5036    * NAnt buildfile and README added for sam-sharp.
5037
50382005-01-23  smeghead
5039    * Port the java SAM client library to mono/C# and released into the
5040      public domain.  The 0.1 version of this port is available in CVS as
5041      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
5042      library has been removed.
5043
50442005-01-21  Jhor
5045    * Updated jbigi build scripts for OSX.
5046
50472005-01-21  jrandom
5048    * Added support for OSX to the NativeBigInteger code so that it will look
5049      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
5050      is not bundled with the shipped jbigi.jar yet though.
5051
50522005-01-18  jrandom
5053    * Increased the max # session tags maintained and decreased slightly the
5054      period over which they are gathered.
5055
50562005-01-17  jrandom
5057    * Added meaningful support for adjusting the preferred message size in the
5058      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
5059      whatever).  The other side will mimic a reduction (but never an increase).
5060    * Always make sure to use distinct ConnectionOption objects for each
5061      connection (duh)
5062    * Reduced the default ACK delay to 500ms on in the streaming lib
5063    * Only shrink the streaming window once per window
5064    * Don't bundle a new jetty.xml with updates
5065    * Catch another local routerInfo corruption issue on startup.
5066
50672005-01-15  cervantes
5068    * Added support to the eepproxy for URLs such as
5069      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
5070      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
5071
50722005-01-15  jrandom
5073    * Caught a series of (previously unhandled) errors caused by requeueing
5074      messages that had timed out on the TCP transport (thanks mae^!)
5075    * Reduce the barrier to dropping session tags on streaming lib resends -
5076      every fourth send should drop the tags, forcing ElGamal encryption.  This
5077      will help speed up the recovery after a disconnect, rather than the drop
5078      every fifth send.
5079
5080* 2005-01-06  0.4.2.6 released
5081
50822005-01-06  jrandom
5083    * Added a startup message to the addressbook, printing its version number
5084      to stdout (which is sent to wrapper.config) when it loads.
5085    * Updated the addressbook to reread the config file periodically
5086    * Added orion.i2p to the list of eepsites on the default homepage
5087
50882005-01-05  jrandom
5089    * Handle unexpected network read errors more carefully (thanks parg!)
5090    * Added more methods to partially compare (DataHelper) and display
5091      arrays (Base64.encode).
5092    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
5093    * Be more generous on the throttle when just starting up the router
5094    * Fix a missing scheduled event in the streaming lib (caused after reset)
5095    * Add a new DisconnectListener on the I2PSocketManager to allow
5096      notification of session destruction.
5097    * Make sure our own router identity is valid, and if it isn't, build a new
5098      one and restart the router.  Alternately, you can run the Router with
5099      the single command line argument "rebuild" and it will do the same.
5100
51012004-12-31  ragnarok
5102    * Integrated latest addressbook changes (2.0.3) which include support for
5103      deploying as a .war file with no existing addressbook configuration.
5104    * Updated main build process to bundle the addressbook.war in the
5105      i2pinstall.jar and i2pupdate.zip.
5106
51072004-12-31  jrandom
5108    * Speling fxi (thanks digum!)
5109    * Bugfix for the I2PTunnel web interface so that it now properly launches
5110      newly added tunnels that are defined to be run on startup (thanks ugha!)
5111
51122004-12-30  jrandom
5113    * Revised the I2PTunnel client and httpclient connection establishment
5114      throttles.  There is now a pool of threads that build the I2PSocket
5115      connections with a default size of 5, configurable via the I2PTunnel
5116      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
5117      not throttle the number of concurrent builders, but will launch a thread
5118      per socket during establishment).  In addition, sockets accepted but
5119      not yet allocated to one of the connection builders will be destroyed
5120      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
5121      0, it will wait indefinitely).
5122
51232004-12-29  jrandom
5124    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
5125      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
5126    * Don't treat connection inactivity closure as a connection error.
5127
51282004-12-29  jrandom
5129    * Add in a new keepalive event on each TCP connection, proactively sending
5130      a (tiny) time message every minute or two, as well as killing the
5131      connection if no message has been fully sent within 5 minutes or so. 
5132      This should help deal with hung connections from IP address changes.
5133
51342004-12-28  jrandom
5135    * Cleaned up the resending and choking algorithm in the streaming lib.
5136    * Removed the read timeout override for I2PTunnel's httpclient, allowing
5137      it to use the default for the streaming lib.
5138    * Revised ack triggers in the streaming lib.
5139    * Logging.
5140
5141* 2004-12-21  0.4.2.5 released
5142
51432004-12-21  jrandom
5144    * Track a new stat for expired client leases (client.leaseSetExpired).
5145
51462004-12-21  jrandom
5147    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
5148      and added windows info to the headless docs. (thanks ardvark!)
5149    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
5150      a stream (thanks frosk!)
5151    * Add a pair of new stats for monitoring tunnel participation -
5152      tunnel.participatingBytesProcessed (total # bytes transferred) and
5153      tunnel.participatingBytesProcessedActive (total # bytes transferred for
5154      tunnels whose byte count exceed the 10m average).  This should help
5155      further monitor congestion issues.
5156    * Made the NamingService factory property public (thanks susi!)
5157
51582004-12-20  jrandom
5159    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
5160    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
5161      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
5162      reasoning is gone.
5163
51642004-12-19  jrandom
5165    * Fix for a race on startup wrt the new stats (thanks susi!)
5166
51672004-12-19  jrandom
5168    * Added three new stats - router.activePeers, router.fastPeers, and
5169      router.highCapacityPeers, updated every minute
5170
51712004-12-19  jrandom
5172    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
5173      hostname should be sent to the webserver.  By default, new installs will
5174      have an httpserver pointing at their jetty instance with the spoofed
5175      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
5176
51772004-12-19  scintilla
5178    * Convert native jcpuid code from C++ to C. This should alleviate build
5179      problems experienced by some users.
5180
5181* 2004-12-18  0.4.2.4 released
5182
51832004-12-16  jrandom
5184    * Catch another oddball case for a reset connection in the streaming lib.
5185    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
5186      dumps the current state of that peer's profile.  Instead of the full
5187      base64, you can pass in however many characters you have and it will
5188      return the first match found.
5189
51902004-12-16  jrandom
5191    * Remove the randomized factor in the tunnel rejection by bandwidth -
5192      we now accept the request if we've allocated less than our limit
5193      and reject it if we've allocated more.
5194    * Stick to the standard capacity scale on tunnel rejection, even for
5195      the 10m period.
5196    * Build the time message at the very last possible moment
5197
51982004-12-15  jrandom
5199    * Handle hard disconnects more gracefully within the streaming lib, and
5200      log unmonitored events more aggressively.
5201    * If we drop a peer after connection due to clock skew, log it to the
5202      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
5203      the stat 'tcp.disconnectAfterSkew'.
5204    * Fixed the formatting in the skew display
5205    * Added an ERROR message that is fired once after we run out of
5206      routerInfo files (thanks susi!)
5207    * Set the connect timeout equal to the streaming lib's disconnect timeout
5208      if not already specified (the I2PTunnel httpclient already enforces a
5209      60s connect timeout)
5210    * Fix for another connection startup problem in the streaming lib.
5211    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
5212    * Adjust the capacity calculations so that tunnel failures alone in the
5213      last 10m will not trigger a 0 capacity rank.
5214
52152004-12-14  jrandom
5216    * Periodically send a message along all I2NP connections with the router's
5217      current time, allowing the receiving peer to determine that the clock
5218      has skewed too much, and hence, disconnect.  For backwards compatability
5219      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
5220      next time we have a backwards compatability break, we can put in a proper
5221      message setup for it.
5222
52232004-12-14  jrandom
5224    * Reenable the probabalistic drop on the TCP queues to deal with good old
5225      fashioned bandwidth limiting.  However, by default the probability is
5226      rigged to reserve 0% of the queue free - meaning we just aggressively
5227      fail messages in the queue if we're transferring too slowly.  That
5228      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
5229      (or whatever) and the drop code can be disabled with the parameter
5230      'tcp.dropProbabalistically=false'.
5231    * Still penalize a peer on tunnel failure, but don't immediately drop
5232      their capacity to 0.
5233    * More aggressively ACK duplicates
5234    * Randomize the timestamper period
5235    * Display the clock skew on the connection logs when a peer sends it.
5236    * Allow the timestamper to fix skews of up to 10 minutes
5237    * Logging
5238
52392004-12-13  jrandom
5240    * Added some error checking on the new client send job (thanks duck!)
5241    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
5242      proportional to the bytes allocated in existing tunnels vs the bytes
5243      allowed through the bandwidth limiter).
5244    * Enable a new configuration parameter for triggering a tunnel rebuild
5245      (tunnel.maxTunnelFailures), where that is the max allowed test failures
5246      before killing the tunnel (default 0).
5247    * Gather more data that we rank capacity by (now we monitor and balance the
5248      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
5249    * Fix a truncation/type conversion problem on the long term capacity
5250      values (we were ignoring the daily stats outright)
5251
52522004-12-11  jrandom
5253    * Fix the missing HTTP timeout, which was caused by the deferred syn used
5254      by default.  This, in turn, meant the I2PSocket creation doesn't fail
5255      on .connect, but is unable to transfer any data in any direction.  We now
5256      detect that condition for the I2PTunnelHTTPClient and throw up the right
5257      error page.
5258    * Logging
5259
52602004-12-11  jrandom
5261    * Use a simpler and less memory intensive job for processing outbound
5262      client messages when the session is in mode=bestEffort.  We can
5263      immediately discard the data as soon as its sent the first time,
5264      rather than wait for an ack, since we will never internally resend.
5265    * Reduce some synchronization to avoid a rare deadlock
5266    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
5267      case it within the tunnel controller.
5268    * Script cleanup for building jbigi/jcpuid
5269    * Logging
5270
5271* 2004-12-08  0.4.2.3 released
5272
52732004-12-08  jrandom
5274    * Revised the buffering when reading from the SAM client and writing
5275      to the stream.  Also added a thread (sigh) so we don't block the
5276      SAM client from giving us more messages for abnormally long periods
5277      of time.
5278    * Display the router version in the logs on startup (oft requested)
5279    * Fix a race during the closing of a messageOutputStream
5280
52812004-12-06  jrandom
5282    * Don't do a 'passive flush' while there are already outbound messages
5283      unacked.
5284    * Show the reseed link if up to 10 peers profiles are active (thanks
5285      dburton!)
5286
52872004-12-06  jrandom
5288    * Don't propogate streaming connection failures out to the SAM bridge as
5289      fatal errors.
5290    * Dont barf on repeated I2CP closure.
5291
52922004-12-05  jrandom
5293    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
5294      getLocalhost call
5295
52962004-12-05  jrandom
5297    * Default the I2CP listener to localhost only, unless overridden by
5298      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
5299    * More SAM fixes for things recently broken (whee)
5300
53012004-12-05  jrandom
5302    * Fix the recently broken SAM bridge (duh)
5303    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
5304      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
5305      StreamSink and StreamSend apps for transferring files.
5306    * Make the passive flush timer fire more frequently.
5307
53082004-12-05  jrandom
5309    * Fixed some links in the console (thanks ugha!) and the javadoc
5310      (thanks dinoman!)
5311    * Fix the stream's passive flush timer (oh, its supposed to work?)
5312
53132004-12-03  jrandom
5314    * Toss in a small pool of threads (3) to execute the events queued up with
5315      the SimpleTimer, as we do currently see the occational event
5316      notification spiking up to a second or so.
5317    * Implement a SAM client API in java, useful for event based streaming (or
5318      for testing the SAM bridge)
5319    * Added support to shut down the SAM bridge on OOM (useful if the SAM
5320      bridge is being run outside of the router).
5321    * Include the SAM test code in the sam.jar
5322    * Remove an irrelevent warning message from SAM, which was caused by
5323      perfectly normal operation due to a session being closed.
5324    * Removed some unnecessary synchronization in the streaming lib's
5325      PacketQueue
5326    * More quickly clean up the memory used by the streaming lib by
5327      immediately killing each packet's resend job as soon as it is ACKed (or
5328      cancelled), so that there are no longer any valid pointers to the
5329      (potentially 32KB) packet.
5330    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
5331    * Drop packets that would expand our inbound window beyond our maximum
5332      buffer size (default 32 messages)
5333    * Always read the ACK/NACK data from the verified packets received, even
5334      if we are going to drop them
5335    * Always adjust the window when there are messages ACKed, though do not
5336      change its size except as before.
5337    * Streamlined some synchronization in the router's I2CP handling
5338    * Streamlined some memory allocation in the SAM bridge
5339    * Default the streaming lib to disconnect on inactivity, rather than send
5340      an empty message.
5341
53422004-12-01  jrandom
5343    * Fix for a race in the streaming lib as caused by some odd SAM activity
5344
5345* 2004-12-01  0.4.2.2 released
5346
53472004-12-01  jrandom
5348    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
5349      connections to work (thanks duck!)
5350    * Make sure we override the inactivity timeout too
5351
5352* 2004-12-01  0.4.2.1 released
5353
53542004-12-01  jrandom
5355    * Strip out any of the Accept-* HTTP header lines, and always make sure to
5356      include the forged User-agent header.
5357    * Adjust the default read timeout on the eepproxy to 60s, unless
5358      overridden.
5359    * Minor tweak on stream shutdown.
5360
53612004-11-30  jrandom
5362    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
5363    * Build in a simple timeout to flush data queued into the I2PSocket but
5364      not yet flushed.
5365    * Don't explicitly flush after each SAM stream write, but leave it up to
5366      the [nonblocking] passive flush.
5367    * Don't whine about 10-99 connection events occurring in a second
5368    * Don't wait for completion of packets that will not be ACKed (duh)
5369    * Adjust the congestion window, even if the packet was resent (duh)
5370    * Make sure to wake up any blocking read()'s when the MessageInputStream
5371      is close()ed (duh)
5372    * Never wait more than the disconnect timeout for a write to complete
5373
53742004-11-29  jrandom
5375    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
5376
53772004-11-29  jrandom
5378    * Reduced contention for local client delivery
5379    * Drop the new code that munges the wrapper.config.  Instead, updates that
5380      need to change it will include their own wrapper.config in the
5381      i2pupdate.zip, overwriting the existing file.  If the file
5382      "wrapper.config.updated" is included, it is deleted at first opportunity
5383      and the router shut down, displaying a notice that the router must be
5384      started again cleanly to allow the changes to the wrapper.config to take
5385      effect.
5386    * Properly stop accept()ing I2PSocket connections if we close down the
5387      session (duh).
5388    * Make sure we cancel any outstanding Packets in flight when a connection
5389      is terminated (thanks susi!)
5390    * Split up the I2PTunnel closing a little further.
5391
53922004-11-28  jrandom
5393    * Accept IP address detection changes with a 2-out-of-3 minimum.
5394    * As long as the router is up, keep retrying to bind the I2CP listener.
5395    * Decrease the java service wrapper ping frequency to once every 10
5396      minutes, rather than once every 5 seconds.
5397
53982004-11-27  jrandom
5399    * Some cleanup and bugfixes for the IP address detection code where we
5400      only consider connections that have actually sent and received messages
5401      recently as active, rather than the mere presence of a TCP socket as
5402      activity.
5403
54042004-11-27  jrandom
5405    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
5406      lib can do that (without an additional per-connection thread).
5407    * Close the I2PTunnel forwarder threads more aggressively
5408
54092004-11-27  jrandom
5410    * Fix for a fast loop caused by a race in the new streaming library (thanks
5411      DrWoo, frontier, pwk_, and thetower!)
5412    * Minor updates to the SimpleTimer and Connection to help track down a
5413      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
5414      many events/tasks fire in a second)
5415    * Minor fixes for races on client disconnects (causing NPEs)
5416
5417* 2004-11-26  0.4.2 released
5418
54192004-11-26  jrandom
5420    * Enable the new streaming lib as the default.  That means, for any
5421      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
5422
54232004-11-25  jrandom
5424    * Revised the installer to include start menu and desktop shortcuts for
5425      windows platforms, including pretty icons (thanks DrWoo!)
5426    * Allow clients specified in clients.config to have an explicit startup
5427      delay.
5428    * Update the default install to launch a browser pointing at the console
5429      whenever I2P starts up, rather than only the first time it starts up
5430      (configurable on /configservice.jsp, or in clients.config)
5431    * Bugfix to the clock skew checking code to monitor the delta between
5432      offsets, not the offset itself (duh)
5433    * Router console html update
5434    * New (and uuuuugly) code to verify that the wrapper.config contains
5435      the necessary classpath entries on update.  If it has to update the
5436      wrapper.config, it will stop the JVM and service completely, since the
5437      java service wrapper doesn't reread the wrapper.config on JVM restart -
5438      requiring the user to manually restart the service after an update.
5439    * Increase the TCP connection timeout to 30s (which is obscenely long)
5440
54412004-11-22  jrandom
5442    * Update to the SAM bridge to reduce some unnecessary memory allocation.
5443    * New stat to keep track of slow jobs (ones that take more than a second
5444      to excute).  This is published in the netDb as jobQueue.jobRunSlow
5445
54462004-11-21  jrandom
5447    * Update the I2PTunnel web interface to include an option for the new
5448      streaming lib (which is ignored until the 0.4.2 release).
5449    * Revised the I2PTunnel web interface to keep the I2CP options of client
5450      and httpclient tunnels in sync, as they all share the same I2CP session.
5451
54522004-11-21  jrandom
5453    * Only allow small clock skews after the first 10 minutes of operation
5454      (to prevent later network lag bouncing us way off course - yes, we
5455      really need an NTP impl to balance out the network burps...)
5456    * Revamp the I2PTunnel web interface startup process so that everything
5457      is shown immediately, so that different pieces hanging don't hang
5458      the rest, and other minor bugfixes.
5459    * Take note of SAM startup error (in case you're already running a SAM
5460      bridge...)
5461    * Increase the bandwidth limiter burst values available to 10-60s (or
5462      whatever is placed in /configadvanced.jsp, of course)
5463
54642004-11-21  jrandom
5465    * Allow end of line comments in the hosts.txt and other config files,
5466      using '#' to begin the comments (thanks susi!)
5467    * Add support to I2PTunnel's 'client' feature for picking between multiple
5468      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
5469    * Add a quick link on the left hand nav to reseed if there aren't enough
5470      known peers, as well as link to the config page if there are no active
5471      peers.  Revised config page accordingly.
5472
54732004-11-21  jrandom
5474    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
5475      rather that every 15 minutes, and increase the warning period in which
5476      we refresh tags from 30s to 2 minutes.
5477    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
5478      to close the I2PSocket (leaving it to timeout).
5479
54802004-11-19  jrandom
5481    * Off-by-one fix to the tunnel pool management code, along side some
5482      explicit initialization.  This can affect clients whose lengths are
5483      shorter than the router's default (thanks duck!)
5484
54852004-11-17  jrandom
5486    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
5487      Ragnarok!)
5488
54892004-11-17  jrandom
5490    * Minor logging update.
5491
54922004-11-16  jrandom
5493    * Clean up the propogation of i2psocket options so that various streaming
5494      libs can honor them more precisely
5495
54962004-11-16  jrandom
5497    * Minor logging update
5498
54992004-11-14  jrandom
5500    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
5501    * Fix a leak injected into the SimpleTimer
5502    * Fix a race condition in the tunnel message handling
5503
55042004-11-13  jrandom
5505    * Added throttles on how many I2PTunnel client connections we open at once
5506    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
5507      the streaming library used should take care of any buffering.
5508    * Added a cache for some objects used in I2PTunnel, especially useful when
5509      there are many short lived connections.
5510    * Trimmed the SimpleTimer's processing a bit
5511
55122004-11-10  jrandom
5513    * Allow loading the (mini)streaming connection options from the
5514      environment.
5515    * More defensive programming in the DSA implementation.
5516
55172004-11-08  jrandom
5518    * Remove spurious flush calls from I2PTunnel, and work with the
5519      I2PSocket's output stream directly (as the various implementations
5520      do their own buffering).
5521    * Another pass at a long standing JobQueue bug - dramatically simplify
5522      the job management synchronization since we dont need to deal with
5523      high contention (unlike last year when we had dozens of queue runners
5524      going at once).
5525    * Logging
5526
55272004-11-08  jrandom
5528    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
5529
5530* 2004-11-06  0.4.1.4 released
5531
55322004-11-06  jrandom
5533    * Expose a drop down on the /configclients.jsp to enter the outbound
5534      tunnel depth.
5535    * Improved *hosts.txt loading
5536    * Explicitly override the JVM's timezone settings to use GMT so that
5537      any client applications which use timezones won't leak sensitive
5538      data (thanks gott!)
5539    * Bundle sam.jar in the update (thanks duck!)
5540
55412004-11-06  jrandom
5542    * Fix for a long standing synchronization bug in the SDK that in rare
5543      instances can add a few seconds of lag.
5544
55452004-11-05  jrandom
5546    * Bugfixes and unit tests for the SAM bridge to handle quoted message
5547      parameters, verify proper operation after multiple session lifetimes,
5548      as well as some synchronization problems.
5549    * New properties method on the DataHelper class.
5550    * Address a race on fast disconnecting clients
5551
55522004-11-02  jrandom
5553    * Fix for a long standing synchronization bug in the JobQueue (and added
5554      some kooky flags to make sure it stays dead)
5555    * Update the ministreaming lib to force mode=guaranteed if the default
5556      lib is used, and mode=best_effort for all other libs.
5557
55582004-11-02  jrandom
5559    * Fixed up the configuration overrides for the streaming socket lib
5560      integration so that it properly honors env settings.
5561    * More memory usage streamlining (last major revamp for now, i promise)
5562
55632004-11-01  jrandom
5564    * Increase the tunnel test timeout rapidly if our tunnels are failing.
5565    * Honor message expirations for some tunnel jobs that were prematurely
5566      expired.
5567    * Streamline memory usage with temporary object caches and more efficient
5568      serialization for SHA256 calculation, logging, and both I2CP and I2NP
5569      message handling.
5570    * Fix some situations where we forward messages too eagerly.  For a
5571      request at the tunnel endpoint, if the tunnel is inbound and the target
5572      is remote, honor the message by tunnel routing the data rather than
5573      sending it directly to the requested location.
5574
55752004-10-30  jrandom
5576    * Cache the temporary objects used in the AES encryption/decryption
5577      process so that AES doesn't require any memory allocation to process
5578      data.
5579    * Dramatically reduce memory usage within various crypto implementations
5580      by avoiding unnecessary (though simplifying) buffers.
5581    * If we specify some tags to be sent in an I2CP message explicitly, use
5582      only those, not those plus a new set (otherwise we aren't sure on ACK
5583      which set was delivered)
5584    * Allow configuration for the partial send timeout (how long before
5585      resending a message down a different tunnel in a lease).  This can be
5586      updated with the "router.clientPartialSendTimeout" router config prop.
5587    * Logging
5588
55892004-10-29  jrandom
5590    * Strip the Referer, Via, and From headers completely, rather than
5591      inserting a bogus value ("i2p").  This should help with the use of
5592      SnipSnap and Geeklog (thanks nickster and DrWoo!)
5593
55942004-10-27  jrandom
5595    * Fix a strange race condition on i2cp client disconnect.
5596    * win98 startup fixes (thanks tester-1 and ardvark!)
5597    * include build scripts for the new streaming lib (which is NOT ready
5598      for use yet, but you can hack around with it)
5599
56002004-10-24  jrandom
5601    * Allow explicit inclusion of session tags in the SDK, enabling the
5602      resending of tags bundled with messages that would not otherwise
5603      be ACKed.
5604    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
5605      no DeliveryStatusMessage will be bundled (and as such, client apps using
5606      it will need to do their own session tag ack/nack).
5607    * Handle client errors when notifying them of message availability.
5608    * New StreamSinkSend which sends a file to a destination and disconnects.
5609    * Update the I2PSocketManagerFactory to build the specific
5610      I2PSocketManager instance based on the "i2p.streaming.manager" property,
5611      containing the class name of the I2PSocketManager to instantiate.
5612
56132004-10-23  jrandom
5614    * Minor ministreaming lib refactoring to simplify integration of the full
5615      streaming lib.
5616    * Minor bugfixes to data structure serialization.
5617
5618* 2004-10-18  0.4.1.3 released
5619
56202004-10-18  jrandom
5621    * Allow sending messages with a section of a byte array.
5622    * Reduced stats published.
5623
56242004-10-17  jrandom
5625    * Don't b0rk on whitespace in the router address.
5626
56272004-10-16  jrandom
5628    * More aggressively reduce the capacity of peers if their tunnels are
5629      failing so that we move off them quicker.
5630    * Simplify some data structure serialization for reuse in the streaming
5631      lib, as well as add support for signing and verifying partial byte
5632      arrays.
5633    * Logging updates
5634
56352004-10-16  jrandom
5636    * Increased the default minimum tunnel test time to 5 seconds, since we
5637      still see the occational message processing time spike to 2 seconds.
5638    * Update the SimpleTimer to allow rescheduling a task thats already
5639      queued (useful for the new streaming lib).
5640
56412004-10-15  jrandom
5642    * Replaced old minimum tunnel test timeout of 1s with a configurable
5643      value (router.config property "router.tunnelTestMinimum", with the
5644      default of 2s).
5645
56462004-10-14  jrandom
5647    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
5648      peer, so don't use it as a key point of the IsFailing calculator.
5649      We still use it as a key point of the Capacity calculator, however.
5650
56512004-10-14  jrandom
5652    * Allow for a configurable tunnel "growth factor", rather than trying
5653      to achieve a steady state.  This will let us grow gradually when
5654      the router is needed more, rather than blindly accepting the request
5655      or arbitrarily choking it at an averaged value.  Configure this with
5656      "router.tunnelGrowthFactor" in the router.config (default "1.5").
5657    * Adjust the tunnel test timeouts dynamically - rather than the old
5658      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
5659      test time (the deviation factor can be adjusted by setting
5660      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
5661      find the 'good' tunnels.
5662    * Added some crazy debugging to try and track down an intermittent hang.
5663
56642004-10-13  jrandom
5665    * Fix the probabalistic tunnel reject (we always accepted everything,
5666      since the docs on java.util.Random.nextDouble() are wrong..)
5667    * Fixed a race on startup (thanks Quadn!)
5668
56692004-10-12  jrandom
5670    * Disable the probabalistic drop by default (enable via the router config
5671      property "tcp.dropProbabalistically=true")
5672    * Disable the actual watchdog shutdown by default, but keep track of more
5673      variables and log a lot more when it occurs (enable via the router
5674      config property "watchdog.haltOnHang=true")
5675    * Implement some tunnel participation smoothing by refusing requests
5676      probabalistically as our participating tunnel count exceeds the previous
5677      hour's, or when the 10 minute average tunnel test time exceeds the 60
5678      minute average tunnel test time.  The probabilities in both cases are
5679      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
5680      and you had previously only participated in 50, you'll have a 25% chance
5681      of accepting a subsequent request.
5682
5683* 2004-10-10  0.4.1.2 released
5684
56852004-10-10  cervantes
5686    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
5687      the request.
5688
56892004-10-09  jrandom
5690    * Added a watchdog timer to do some baseline liveliness checking to help
5691      debug some odd errors.
5692    * Added a pair of summary stats for bandwidth usage, allowing easy export
5693      with the other stats ("bw.sendBps" and "bw.receiveBps")
5694    * Trimmed another memory allocation on message reception.
5695
56962004-10-08  jrandom
5697    * Revamp the AESInputStream so it doesn't allocate any temporary objects
5698      during its operation.
5699
57002004-10-08  jrandom
5701    * Don't kill the establisher threads during a soft restart.
5702    * Attempt to validate the peer's routerInfo earlier during handshaking.
5703    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
5704      during its operation.
5705
57062004-10-07  jrandom
5707    * Reimplement the I2NP reading with less temporary memory allocation.
5708      There is still significant GC churn, especially under load, but this
5709      should help.
5710    * Catch some oddball errors in the transport (message timeout while
5711      establishing).
5712
57132004-10-07  jrandom
5714    * Expire queued messages even when the writer is blocked.
5715    * Reimplement most of the I2NP writing with less temporary memory
5716      allocations (I2NP reading still gobbles memory).
5717
57182004-10-06  jrandom
5719    * Implement an active queue management scheme on the TCP transports,
5720      dropping messages probabalistically as the queue fills up.  The
5721      estimated queue capacity is determined by the rate at which messages
5722      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
5723      we exceed 1/2 of the estimated capacity, we drop messages throughout
5724      the queue probabalistically with regards to their size.  This is based
5725      on RFC 2309's RED, with the minimum threshold set to 1/2 the
5726      estimated connection capacity.  We may want to consider using a send
5727      rate and queue size measured across all connections, to deal with our
5728      own local bandwidth saturation, but we'll try the per-con metrics first.
5729
57302004-10-06  jrandom
5731    * Enable explicit disabling of the systray entirely for windows machines
5732      with strange configurations: add -Dsystray.disable=true to the java
5733      command line.  (thanks mihi!)
5734
57352004-10-05  jrandom
5736    * Allow peers on the same LAN to communicate with each other safely even
5737      when they cannot talk to each other through the external address.
5738
57392004-10-05  jrandom
5740    * Display how much time is left before the graceful shutdown is complete.
5741    * Debug some improperly failed messages on timeout or disconnection.
5742
57432004-10-05  jrandom
5744    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
5745      (thanks mule!)
5746    * Handle some more error conditions regarding abruptly closing sockets
5747      (thanks Jonva!)
5748
57492004-10-04  jrandom
5750    * Update the shitlist to reject a peer for an exponentially increasing
5751      period of time (with an upper bounds of an hour). 
5752    * Various minor stat and debugging fixes
5753
57542004-10-03  jrandom
5755    * Add a new stat logging component to optionally dump the raw stats to
5756      disk as they are generated, rather than rely upon the summarized data.
5757      By default, this is off, but the router property "stat.logFilters" can
5758      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
5759      which will be written to the file "stats.log" (or whatever the property
5760      "stat.logFile" is set to).  This can also log profile related stats,
5761      such as "dbResponseTime" or "tunnelTestResponseTime".
5762
57632004-10-02  jrandom
5764    * Assure that we quickly fail messages bound for shitlisted peers.
5765    * Address a race on startup where the first peer contacted could hang the
5766      router (thanks Romster!)
5767    * Only whine about an intermittent inability to query the time server once
5768
57692004-10-02  jrandom
5770    * Command line utility to verify a peer's reachability - simply run
5771      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
5772      will print out whether that peer is reachable or not (using a simple
5773      verification handshake).
5774
5775* 2004-10-01  0.4.1.1 released
5776
57772004-10-01  jrandom
5778    * Handle partial reseeds, caused by seeds going away before the download
5779      completes (thanks Sugadude!)
5780
57812004-10-01  jrandom
5782    * Explicitly refuse IPv6 addresses, since only some peers support
5783      them and we want fully reachable peers.
5784
57852004-10-01  jrandom
5786    * Additional error handling for a variety of transport layer errors.
5787
5788* 2004-09-30  0.4.1 released (not backwards compatible)
5789
57902004-09-30  jrandom
5791    * Bundle the configuration necessary to run an eepsite out of the box
5792      with Jetty - simply edit ./eepsite/docroot/index.html and give people
5793      the key listed on the I2PTunnel configuration page, and its up.
5794    * Router console cleanup, and some (off by default) tunnels -
5795      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
5796      irc.baffled.i2p (port 7661)
5797
57982004-09-29  jrandom
5799    * Always wipe the Jetty work directory on startup, so that web updates
5800      are reflected immediately (Jetty does not honor the cache across
5801      multiple executions)
5802
58032004-09-27  jrandom
5804    * Limit the number of connection tags saved to 10,000.  This is a huge
5805      limit, but consumes no more than 1MB of RAM.  For now, we drop them
5806      randomly after reaching that size, forcing those dropped peers to use
5807      a full DH negotiation.
5808    * HTML cleanup in the console.
5809
58102004-09-26  jrandom
5811    * Complete rewrite of the TCP transport with IP autodetection and
5812      low CPU overhead reconnections.  More concise connectivity errors
5813      are listed on the /oldconsole.jsp as well.  The IP autodetection works
5814      by listening to the first person who tells you what your IP address is
5815      when you have not defined one yourself and you have no other TCP
5816      connections.
5817    * Update to the I2NP message format to add transparent verification at
5818      the I2NP level (beyond standard TCP verification).
5819    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
5820      implementation (rather than verifying with E(H(key)), we now verify with
5821      E(H(iv))).
5822    * The above changes are NOT BACKWARDS COMPATIBLE.
5823    * Removed all of the old unused PHTTP code.
5824    * Refactor various methods and clean up some javadoc.
5825
58262004-09-21  jrandom
5827    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
5828      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
5829      but values stored in the later take precedence.  Both are queried on
5830      lookup.
5831
58322004-09-16  jrandom
5833    * Refactor the TCP transport to deal with changing identities gracefully,
5834      and to prevent some wasted effort by keeping track of what host+port
5835      combinations we are connected to (rather than just the identities).  Also
5836      catch a few configuration errors earlier.
5837    * Removed no longer relevent methods from the Transport API that were
5838      exposing ideas that probably shouldn't be exposed.
5839    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
5840      updates)
5841
58422004-09-13  jrandom
5843    * Update for the SDK reconnection to deal with overflow.
5844    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
5845      rounding on lifetime bandwidth used [thanks gott!]).
5846
5847* 2004-09-08  0.4.0.1 released
5848
58492004-09-08  jrandom
5850    * Updated the "Active:" peer count to display the # of connections as well
5851      as the number of recently active router identities.
5852    * Implement some basic updating code - on startup, if there is a file named
5853      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
5854      then restart.
5855    * Added an ugly little script to allow launching the router on win9x
5856      machines without a dos box (using javaw to run a .bat file).
5857    * Logging updates.
5858    * Updated VERSION constants to 0.4.0.1
5859
58602004-09-08  hypercubus
5861    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
5862      hopefully any other affected *nix systems) now properly discards non-
5863      essential directories after installation.
5864    * Support for Win9x in the installer and postinstall.bat.
5865    * Changed the name of the default installation directory on all platforms
5866      from "I2P" to "i2p" in the installer.
5867    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
5868      other configuration files.
5869
58702004-09-07  cervantes:
5871    * Proxy recursion disabled by default (strict)
5872    * Password Authentication for session commands
5873    * Support for http://path?i2paddresshelper=BASE64
5874    * Support for http://i2p/BASE64/path syntax
5875
58762004-09-07  jrandom
5877    * Make sure that peers placed in the 'fast' group are ones we both know
5878      how to reach and have been able to reach recently.  These peers may
5879      still be placed in the 'high capacity' group however (though that group
5880      is only queried if the 'fast' group is too small)
5881    * Include some updates to the ProgileOrganizer's CLI.
5882
58832004-09-07  jrandom
5884    * Disable the timestamper by default for all applications except the router
5885      (enable via -Dtime.disabled=false)
5886    * Simplify the retrieval of the full destination with text based browsers.
5887    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
5888
58892004-09-07  jrandom
5890    * Write the native libraries to the current directory when they are loaded
5891      from a resource, and load them from that file on subsequent runs (in
5892      turn, we no longer *cough* delete the running libraries...)
5893    * Added support for a graceful restart.
5894    * Added new pseudo-shutdown hook specific to the router, allowing
5895      applications to request tasks to be run when the router shuts down.  We
5896      use this for integration with the service manager, since otherwise a
5897      graceful shutdown would cause a timeout, followed by a forced hard
5898      shutdown.
5899    * Made the capacity calculator a bit more dynamic by not outright ignoring
5900      the otherwise valid capacity data for a period with a single rejected
5901      tunnel (except for the 10 minute period).  In addition, peers with an
5902      equal capacity are ordered by speed rather than by their hashes.
5903    * Cleaned up the SimpleTimer, addressing some threading and synchronization
5904      issues.
5905    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
5906      associated session (unless there are other clients using it), and deal
5907      with a closed session when starting a new I2PTunnel instance.
5908    * Refactoring and logging.
5909
59102004-09-06  jrandom
5911    * Address a race condition in the key management code that would manifest
5912      itself as a corrupt router identity.
5913    * Properly clear old transport addresses from being displayed on the old
5914      console after soft restarts.
5915    * Properly refuse to load the client applications more than once in the
5916      same JVM.
5917    * Added support for a graceful restart (a graceful shutdown followed by a
5918      full JVM restart - useful for restarting client apps).
5919    * More defensive programming, HTML cleanup, logging
5920    * wrapper.config cleanup of duplicate lines
5921
59222004-09-04  jrandom
5923    * Added some basic guards to prevent multiple instances from running.
5924      Specifically, a file "router.ping" in the install directory which is
5925      written to once a minute - if that file exists and has been modified
5926      within the last minute, refuse to start up.  In turn, adjust the
5927      service wrapper to wait a minute before restarting a crashed JVM.
5928    * Create a "work" directory in the I2P install dir which Jetty will
5929      use for all of its temporary files.
5930    * Tell the browser not to cache most of the router console's pages.
5931
59322004-09-04  jrandom
5933    * Update the SDK to automatically reconnect indefinitely with an
5934      exponential delay on retries (capped at 5 minutes).
5935
5936* 2004-09-03  0.4 released
5937
59382004-09-03  jrandom
5939    * Updated default wrapper.config to deal with the hard restart option
5940    * Include the history.txt in the /help.jsp page
5941    * HTML updates (wrapper.log, and no more unix scripts)
5942    * Updated VERSION constants to 0.4
5943
59442004-09-03  hypercubus
5945    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
5946    * Temporarily removed install_i2p_service_unix and
5947      uninstall_i2p_service_unix from distribution packages.
5948    * postinstall.bat/postinstall.sh cleans installation directory of all files
5949      not applicable to the host OS.
5950
59512004-09-03  oOo
5952    * Added some filters to the HTTP request, replacing the User-Agent,
5953      Referrer, Via, and From headers, which helps until we have a more
5954      comprehensive filtering system.
5955
59562004-09-03  jrandom
5957    * Disabled the old listener on port 7655.
5958
59592004-09-02  jrandom
5960    * Cleaned up the base build.xml, adding a new target ("updater") which
5961      builds the file i2pupdate.tar.bz2 which can be safely extracted over
5962      existing installs.
5963
59642004-xx-xx  jrandom
5965    * Implemented the new web architecture and router console
5966    * Implemented I2PTunnel web interface, and revamped startup process.
5967    * Revamped peer selection code to address skew.
5968    * Removed all temporary threads from the router and the SDK.
5969    * Bugfix dealing with timeouts and resends.
5970    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
5971
59722004-xx-xx  hypercubus
5973    * Implemented the new installation process.
5974    * Integrated systray
5975    * Integrated service manager
5976
59772004-xx-xx  oOo
5978    * Implemented ?i2paddresshelper= hook
5979    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
5980
59812004-xx-xx  Nightblade
5982    * libSAM updates.
5983
59842004-xx-xx  cervantes
5985    * Imported i2pProxy.pac proxy script in with the build.
5986
5987* 2004-08-20  0.3.4.3 released
5988* 2004-08-12  0.3.4.2 released
5989* 2004-08-08  0.3.4.1 released
5990* 2004-07-29  0.3.4 released
5991* 2004-07-23  0.3.3 released
5992* 2004-07-16  0.3.2.3 released
5993* 2004-07-14  0.3.2.2 released
5994* 2004-07-11  0.3.2.1 released
5995* 2004-07-07  0.3.2 released
5996* 2004-06-25  0.3.1.5 released
5997* 2004-05-23  0.3.1.4 released
5998* 2004-05-20  0.3.1.3 released
5999* 2004-05-13  0.3.1.2 released
6000* 2004-05-07  0.3.1.1 released
6001* 2004-04-30  0.3.1 released
6002* 2004-04-20  0.3.0.4 released
6003* 2004-04-04  0.3.0.3 released
6004* 2004-03-30  0.3.0.2 released
6005* 2004-03-25  0.3.0.1 released
6006* 2004-03-21  0.3.0 released
6007* 2004-03-10  0.2.5.4 released
6008* 2004-03-04  0.2.5.3 released
6009* 2004-02-28  0.2.5.2 released
6010* 2004-02-27  0.2.5.1 released
6011* 2004-02-25  0.2.5 released
6012* 2004-02-19  0.2.4.2 released
6013* 2004-02-15  0.2.4.1 released
6014* 2004-02-14  0.2.4 released
6015* 2004-01-27  0.2.3.6 released
6016* 2004-01-21  0.2.3.5 released
6017* 2004-01-14  0.2.3.4 released
6018* 2003-12-29  0.2.3.3 released
6019* 2003-12-27  0.2.3.2 released
6020* 2003-12-25  0.2.3.1 released
6021* 2003-12-13  0.2.3 released
6022* 2003-12-01  0.2.2 released
6023* 2003-11-18  0.2.1.1 released
6024* 2003-11-12  0.2.1 released
6025* 2003-11-09  0.2.0.3 released
6026* 2003-11-08  0.2.0.2 released
6027* 2003-11-03  0.2.0.1 released
6028* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.