source: history.txt @ 7725b9e

Last change on this file since 7725b9e was 7725b9e, checked in by zzz <zzz@…>, 11 years ago

-10

  • Property mode set to 100644
File size: 254.7 KB
Line 
12009-05-30 zzz
2    * Console:
3      - config.jsp now cause graceful restart
4      - More peers.jsp and profiles.jsp cleanup
5      - tunnels.jsp improvements
6      - Use CSS for form messages
7      - Goodbye nonce spoof messages (sorry jr)
8      - config.jsp: Comment out unused burst config code
9      - Don't forget Serbia!
10      - configadvanced.jsp cleanup
11    * LoadTestManager: Delete, unused
12    * Peer Selector: Make strict order opaque to hash value
13    * SendGarlicMessageJob: Delete, unused
14    * Session Keys:
15      - Don't instantiate unused SessionKeyPersistenceHelper
16      - Use TransientSessionKeyManager instead of PersistentSessionKeyManager
17      - Add generics to TransientSessionKeyManager to help understand it
18      - Change initial session map size to 64 (was 1024)
19      - Prepare for per-destination SessionKeyManagers in ElGamalAESEngine
20      - More stubs for per-destination managers in the client manager
21    * Transports:
22      - Adjust bids when near conn capacity
23    * UDP:
24      - Remove unused stats and test code
25      - Only save IP when it changes
26    * UPnP:
27      - Prevent NPE after ParserException
28      - Tweak to help startup problems?
29      - Retry port forward if it fails
30      - Make peers.jsp display faster
31      - Lengthen POST timeout
32      - More comments
33
342009-05-29 sponge
35    * added big fat start/stop lock into BOB
36    * added zap command to shut down BOB... now we need a way to start it
37      after it stops. :-)
38
392009-05-27 Mathiasdm
40    * Increase sendProcessingTime some more, add a property to configure.
41      Configure with 'router.defaultProcessingTimeThrottle'.
42
432009-05-27 Mathiasdm
44    * Increased sendProcessingTime limits and added testSuccessTime
45      to avoid unwanted throttling
46
472009-05-26 Mathiasdm
48    * Throttling extension by looking at sendProcessingTime
49
502009-05-26 zzz
51    * Console:
52      - configlogging.jsp cleanup
53      - Flags tweak
54    * NetDb:
55      - Don't send our own hash in the don't-include list when exploring
56      - Remove any pending write when removing a RouterInfo
57      - Cleanup to use routerHash()
58    * Streaming: Hopefuly fix infinite loop in the SYN queue handler
59
602009-05-25 zzz
61    * GeoIP:
62      - Save our own location in the config
63      - Check whole netDb at startup (last try didn't work)
64    * NTCP:
65      - Increase routerinfo send frequency to every 90m (was 9h)
66      - Don't send 3 floodfill infos at startup or with routerinfo
67    * Profile Organizer: Increase min fast peers based on
68      number of local destinations
69    * Timestamper:
70      - Use GeoIP to query a closer ntp source if available
71      - Lengthen query time if well-synced
72      - Cleanup
73
742009-05-24 mkvore
75    * SAM: logging some exceptions at INFO level instead of ERROR
76
772009-05-24 zzz
78    * Connection limits / throttle:
79      - Better limits when no inbound TCP
80        (limit inbound and outbound separately)
81      - Don't offer to SSU introduce when near connection limit
82    * Console:
83      - Move flags from icons/ to docs/icons
84      - peers.jsp cleanup
85      - Add readme_zh.html
86    * GeoIP:
87      - Check netDb SSU IP too
88      - Check whole netDb at startup
89    * NTCP: Log who is sending us big messages
90    * UPnP: Move logging from wrapper log to router log
91
922009-05-23 Mathiasdm
93    * Router netDB:
94      - Added flags to the netDB page
95
962009-05-22 Mathiasdm
97    * desktopgui:
98      - Updating works in general config
99      - Switched to Swingworker threads for improved responsiveness
100
1012009-05-21 zzz
102    * Router Watchdog:
103      - Log memory stats
104      - Dump threads on linux
105      - Restart after 20 minutes (give the dog his teeth back)
106
1072009-05-21 zzz
108    * DataStore:
109      - Adjust interface to have persistent and non-persistent methods,
110        to prepare for partial storage in RAM
111    * ExpireRoutersJob:
112      - Rewrite, not enabled yet
113    * I2Punnel:
114      - Increase eepsite default to 3+0 for new installs
115    * PersistentDataStore:
116      - Cleanup, simplify, and concurrentify
117      - Tweak stats
118      - Remove write limit
119      - Flush to disk on shutdown
120      - Don't write out what we just read in
121    * Router and console:
122      - Bundle geoIP files and flags in new installs,
123        spiff up tunnels.jsp and profiles.jsp.
124        Existing installs can get files with 'ant updaterWIthGeoIP'
125        or in the console docs bundle 'ant consoleDocs'
126      - Use flags for shitlist and peers.jsp too
127      - Tweak tunnels.jsp to show class letters
128      - Hide in-progress details on tunnels.jsp
129      - Add a little color to confignav
130      - Remove 'no skew' message
131      - More message tweaks if no wrapper
132    * TunnelManager:
133      - Remove now-unused isInUse()
134    * UPnP:
135      - Fix up port binding, add some logging on bind fails
136      - Force IPv4 only for binds
137
1382009-05-20 Mathiasdm
139    * General configuration enabled by default
140    * General configuration speed tab works completely
141
1422009-05-17 zzz
143    * Merge i2p.i2p.zzz.upnp branch
144     * Major changes:
145      - Detect IP with UPnP
146      - Open firewall ports with UPnP
147      - Detect IP by checking local interface addresses
148      - Enable TCP auto-IP and auto-port by default, if UDP status is "OK"
149      - Network configuration page rework
150     * Other stuff:
151      - Remove unused verifyupdate.jsp
152     * Details of the UPnP and related Transport changes:
153      - Add UDP Port configuration to config.jsp
154      - Don't restart router when configs change on config.jsp;
155        simply rebuild router info.
156      - Clean up some port config code in UDP
157      - Implement UPnP enable/disable
158      - Start to rework inbound configuration
159      - Tweak UPnP warning messages
160      - Start of callbacks from UPnP to transports
161      - Tell UDP local addresses at startup
162      - NTCP Port must now be either auto or configured;
163        now defaults to auto; and configured now trumps auto.
164        Port configuration now does not affect whether inbound
165        NTCP is enabled - the host configuration alone can do that.
166      - i2np.ntcp.autoip=true redefined to enable inbound only if
167        SSU reachability is OK. i2np.ntcp.autoip=always for the old behavior.
168        autoip default is now "true".
169        i2np.ntcp.hostname=xxx now trumps i2np.tcp.autoip.
170      - SSU always tells NTCP when status changes.
171      - Implement config save of new IP address options
172      - Implement local address and UPnP configuration of UDP address
173      - Limit received port to 1024 minimum
174      - Simplify bw form
175      - Add config link to UPnP status
176      - Make short timeouts for UPnP HTTP POST so we don't hang when
177        the UPnP device goes away
178      - Fix a bug in UPnP HTTP Server timeout
179      - Make short timeouts for the XML parser so we don't hang when
180        the UPnP device goes away - same as for HTTP POST
181      - Stuff the port mapping requester into a thread so it doesn't
182        delay everything for several seconds
183      - Handle UPnP devices that return IP = 0.0.0.0
184      - Better HTML output when no IP found
185      - Tweak logging
186      - Set Disposer thread name
187      - Keep the control point running after we find an IGD,
188        so that we get notifications of it leaving or
189        coming back or replaced.
190      - Detect UPnP start failure
191      - Sort local addresses
192      - Store last IP for future laptop mode
193      - Subscribe to service, doesn't seem to do anything though,
194        need to test it more
195      - Change UPnP listener port defaults, allow configuration option
196      - Don't notify for non-changed options on config.jsp
197      - Simplify config.jsp some more
198      - No longer use i2np.udp.forceIntroducers
199      - Tweak UDP port qualification
200      - Fix allowing low ports again
201      - Add option to completely disable NTCP, for those behind nasty firewalls
202      - Use SSU reachability rather than global reachability for determining NTCP reachability,
203        since we are now reporting NTCP reachability too
204      - Tweak the config sub-navbar
205      - Don't start UPnP if we have a public interface address
206      - Fix setting IP to a local interface address
207      - Work on the configuration help some more
208      - Rework UDP peers.jsp table a little
209      - Don't let UDP bid on messages that are too long
210      - Clean up the max fragments code in UDP
211
2122009-05-17 zzz
213    * Build files:
214      - Remove unneeded ant.jar from package (900KB)
215      - Fail on Jsp compile errors
216    * FloodfillVerifyJob: Don't consider an older search result as verified
217    * logs.jsp: Add link to config
218    * NetDb: Lower the routerinfo expiration again
219    * SusiDNS:
220      - Reduce displayed entries from 300 to 100
221      - Add ability to go forward or back
222      - Make textareas bigger
223      - Clean up file names
224      - Clarify messages about filter and search
225
226* 2009-05-16  0.7.3 released
227
2282009-05-16 Complication
229    * Update versions, package release
230
2312009-05-12 sponge
232    * BOB clean up, change println's to _log.warn, bump BOB version
233    * I2PSessionMuxedImpl.java changes as per zzz, and they test OK for me.
234
2352009-05-12 mkvore
236    * SAM: fix: warnings when generating javadoc
237
2382009-05-11 zzz
239    * Connect client: Fix NPE when used with advanced i2ptunnel features
240    * Context: Don't instantiate unused AdminManager
241    * logs.jsp: Put critical log at the top
242    * NetDb: Don't accept stores of our own LeaseSets or RouterInfo
243
2442009-05-11 mkvore
245    * SAM: fix: removed ERROR level logging when a client disconnects
246
2472009-05-09 sponge
248    * merge
249
2502009-05-09 sponge
251    * fixed OOM on lock (woops! my bad!)
252
2532009-05-08 Mathiasdm
254    * desktopgui: moved files to stop polluting the namespace
255          (everything now in net.i2p.desktopgui)
256    * desktopgui: some variable renaming in general configuration
257
2582009-05-07 mkvore
259    * SAM: version 3 added
260    * SAM: blocking case corrected on simultaneous client connection (v.1-3)
261
2622009-05-07 zzz
263    * Add nibble.i2p to proxy list and hosts.txt
264
2652009-05-07 zzz
266    * Addressbook: Name the thread
267    * Console:
268      - More IE button fixes, try harder to not refresh the iframe after shutdown
269      - Disable idle options for streamr client, it will never be
270        idle because it pings the server
271    * Floodfill Monitor: Slow down the volunteers
272    * Throttle: Throttle at 90% so we throttle before we WRED
273
2742009-05-06 Mathiasdm
275    * Improvements to popup menu rightclick action
276    * Added general configuration options (still not available by default)
277    * General fixes
278    * Added ant build options (irc says eche|on would like that ;))
279
2802009-05-06 sponge
281    * Hopefully the last fixes for BOB.
282    * Fixes to prevent race in client-side I2CP and Notifier.
283
2842009-05-03 sponge
285    * More hopeful fixes for BOB.
286    * Added new Robert ID to snark
287
2882009-05-01 zzz
289    * Build files:
290      - Fix up susidns build file so it will work with gcj
291      - Add consoleDocs target
292    * Client: Fix race NPE (thanks sponge)
293    * Console: fix ERR-UDP Disabled and Inbound TCP host/port not set
294    * I2CP: Fix race NPE
295    * I2PTunnel:
296      - Try to fix locking to prevent duplicate destinations when using
297        the new option new-dest-on-resume. Still not right for shared clients
298        but should be better for non-shared.
299    * Router console:
300      - Add jbigi and cpu info to logs.jsp
301    * Session key manager:
302      - Log before a hang maybe
303    * URL Launcher:
304      - Launcher on linux was stopping after trying opera, whether it succeeded or failed.
305        Now it keeps going to try firefox, etc. as designed.
306      - Extend default delay from 5s to 15s so it will reliably start
307
3082009-04-27 sponge
309    * more BOB fixes, complete with warnings when things go wrong, and
310      success messages when things turn around and go right. Terminates
311      early so that applications wait no more than 10 seconds or so.
312    * Reversed a few earlier patches that caused some odd behavior.
313    * Changed some core println()'s to debugging messages.
314
3152009-04-27 zzz
316    * Build files:
317      - New updaterWithJettyFixes target, build it for pkg
318      - Pass compiler args down from top build.xml
319    * GarlicMessageBuilder: Reduce bundled tags to 40 (was 100)
320    * i2psnark: Add Postman2 tracker
321    * I2PTunnel: Allow spaces in dest and proxy lists
322    * NetDb:
323      - Adjust RouterInfo expiration down to control memory usage
324      - Display LeaseSets and RouterInfos on separate console pages
325    * NTCP:
326      - Correct the meanings of the i2np.ntcp.autoip and i2np.ntcp.autoport
327        advanced config. If you have one of these set but not the other, you
328        will have to adjust your configuration on config.jsp.
329    * RouterConsole: iframe tweaks
330    * StatisticsManager: Cleanup
331    * Streaming: Don't let jrandom yell so loud
332    * Tunnel Pool: Don't self-destruct if more than 6 IB tunnels configured
333
3342009-04-25 sponge
335    * I2PSessionMuxedImpl atomic fixes
336    * BOB fixes. This should be the final bug wack. Good Luck to everybody!
337
3382009-04-23 zzz
339    * Blocklist: cleanup
340    * eepget: handle -h, --help, bad options, etc.
341      (http://forum.i2p/viewtopic.php?p=16261#16261)
342    * Fragmenter: don't re-throw the corrupt fragment IllegalStateException,
343      to limit the damage - root cause still not found
344    * i2psnark: (http://forum.i2p/viewtopic.php?t=3317)
345      - Change file limit to 512 (was 256)
346      - Change size limit to 10GB (was 5GB)
347      - Change request size to 16KB (was 32KB)
348      - Change pipeline to 5 (was 3)
349    * logs.jsp: Move version info to the top
350    * Jetty: Fix temp dir name handling on windows, which was
351      causing susidns not to start
352      (http://forum.i2p/viewtopic.php?t=3364)
353    * NTCP: Prevent IllegalStateException
354    * PeerProfile:
355      - Replace a hot lock with concurrent RW lock
356      - Rewrite ugly IP Restriction code
357      - Also use transport IP in restriction code
358    * RouterConsole: Make summary bar a refreshing iframe
359    * Transport: Start the previously unused CleanupUnreachable
360
3612009-04-21 sponge
362    * Code janitor work, basic corrections involving @Override, and
363      appling final where it is important. Also fixed some equals methods
364      and commented places that need fixing.
365
3662009-04-18 Complication
367    * Fix typo in "news.xml", no build number increase.
368
369* 2009-04-18  0.7.2 released
370
3712009-04-18 Complication
372    * Update versions, package release
373
3742009-04-17 sponge
375    * fixed setIP, just be sure to distclean before building :-)
376    * more lint taken care of as well.
377
3782009-04-17 sponge
379    * setIP wants to be a static method in the class, but it produces
380      warnings about it being static from other code.
381
3822009-04-17 sponge
383    * Catch NPE in NTCP.
384      This possibly augments fix 2009-04-11 welterde below.
385    * Various LINT on NTCP sources, and removal of space-wasting
386      spaces at end of lines in sources touched.
387
3882009-04-13 Mathiasdm
389    * Bugfix on tray icon updating
390    * Some more work on the general configuration menu
391      (currently not added to the tray icon menu yet, needs more work)
392    * Tweaked the desktopgui logo
393
3942009-04-13 Mathiasdm
395    * Added I2P version and GUI version to desktopgui
396    * Tweaks to the tray icon menu
397    * Some starting work on a GUI general configuration menu
398    * Bugfix allowing spaces in directory structure
399
4002009-04-13 welterde
401    * small fix in the eepproxy
402
4032009-04-11 welterde
404    * fixed NPE in NTCP transport
405
4062009-04-11 sponge
407    * i2ptunnel janitorial work and fixes on most locks.
408      Some locks still need work, and are marked with LINT in the comment.
409      Just grep for "LINT" to see where the remaining places are.
410
4112009-04-10 sponge
412    * More BOB threadgroup fixes, plus debug dump when things go wrong.
413    * Fixes to streaminglib, I2CP, which are related to the TG problem.
414    * JavaDocs fixups.
415
4162009-04-08 sponge
417    * More hopeful fixups to the infamous orpahned tunnel problem. *Sigh*
418
4192009-04-08 zzz
420    * IPV6/localhost:
421      - Enable IPv6 stack in the JVM, hopefully won't break anything
422      - Patch Jetty to support binding to IPv6 addresses
423      - Allow multiple bind addresses for the router console
424        in the clients.config file; for new installs the
425        default is now "127.0.0.1,::1"
426      - Change most instances of "localhost" to "127.0.0.1"
427        throughout the code
428    * Router:
429      - Move some classes to private static inner
430
4312009-04-07 sponge
432    * BOB prevent jvac from optimizing out thread-group code from -10
433
4342009-04-07 zzz
435    * NTCP: Prevent occasional NPE introduced in -4
436    * streamr: Synchronize DatagramMaker
437
4382009-04-07 sponge
439    * SimpleTimer2, SimpleScheduler fixed so that the threads all run from
440      The main threadgroup, not in the current possible child threadgroup.
441      So long as any SimpleTimer2/SimpleScheduler is started *BEFORE* any
442      child threadgroups, the constructors are threadgroup safe. What would
443      be super cool is if they were to be all jailed within thier very own
444      threadgroup too, but, I2P isn't up to the task of this yet.
445    * Fixes to BOB to ensure the above is true.
446
4472009-04-06 sponge
448    * Debugging to make SimpleTimer2 and SimpleScheduler easier to debug.
449    * Fix for the config files in the GUI from mathiasdm
450
4512009-04-04 sponge
452    * Hopeful fixups to the infamous orpahned tunnel problem.
453    * BOB now 0.0.5
454
4552009-04-04 zzz
456    * NTCP: Don't bid on messages too big to handle
457
4582009-04-03 zzz
459    * Console:
460      - Fix bug with IE buttons not working,
461        because it sends the label instead of the value
462      - Display version of downloaded update
463    * Update:
464      - Change default to "Download and verify"
465      - Change news fetch default to 24h (was 12h)
466
4672009-04-03 sponge
468    * Fix broken dependencies for BOB.jar
469    * Router build version incremented to 5.
470
4712009-04-02 zzz
472    * Profiles:
473      - Remove unused calculators and RateStats:
474        CapacityCalculator, StrictSpeedCalculator, IsFailingCalculator;
475        sendFailureSize, processSuccessRate, processfailureRate, commErrorRate,
476        tunnelTestResponseTimeSlow
477      - Reduced number of Rates in these RateStats:
478        sendSuccessSize, receiveSize, rejectRate, failRate
479      - ~5KB/profile savings total
480      - Deflate speed calculation once an hour instead of once a day,
481        to improve fast tier selection
482      - Remove dup comment in persisted files
483    * StatisticsManager - effective in 0.7.2:
484      - Spoof uptime to 90m for all
485      - Change tunnel stats from 10m to 60m
486    * Transport:
487      - Maintain a router hash -> IP map in transport,
488        to support additional IP checks (unused for now)
489      - Catch error on pre-2.6 kernels
490      - Some concurrent conversion
491      - Fix an HTML error on peers.jsp
492
4932009-04-01 zzz
494    * I2PTunnel: Fix tunnel close
495      http://forum.i2p/viewtopic.php?t=3231
496
4972009-03-30 zzz
498    * I2CP:
499      - Implement BandwidthLimitsMessage
500      - Have i2psnark use new message, remove
501        build dependency on router
502    * Peer Selection:
503      - Limit peers to a max % of all tunnels with
504        router.maxTunnelPercentage=nn, default 33
505      - Add chart to tunnels.jsp to see results
506
507* 2009-03-29  0.7.1 released
508
5092009-03-29 Complication
510    * Update versions, package release
511
5122009-03-27 zzz
513    * Add readme_fr.html
514    * License splash update
515    * Catch rare TunnelGatewayMessage AIOOB, root cause unknown
516
5172009-03-24 zzz
518    * I2PTunnel:
519      - Add some warnings about new features
520      - Fix encrypted leasesets broken in about -4
521      - Suppress log error on manual stop
522      - Fix NPE on close of a tunnel not open yet
523    * Transport:
524      - Increase default bw to 64/32, burst 80/40
525    * Tunnels: Change some fragmentation errors to warns
526
5272009-03-16 zzz
528    * help.jsp: Add some
529    * I2PTunnel: Cleanup
530    * I2PTunnelHTTPClient: Fix NPE on delayed open
531    * I2PTunnelHTTPServer: Maybe catch an NPE
532    * SOCKS: Allow .onion addresses for onioncat testing
533    * Tunnel: Catch a rare AIOOB
534
5352009-03-09 zzz
536    * Client:
537      - Clean up retry code
538      - Bring I2CP listen error to the summary bar
539        http://forum.i2p/viewtopic.php?t=3133
540    * I2PSnark: Remove the http from the add torrent box
541    * I2PTunnel:
542      - Add persistent key option for standard and IRC clients
543      - Add delay-open option for clients
544      - Get regenerate-dest-on-reconnect working
545      - Add default key file name
546      - Add link to addressbook
547      - I2PSink: Send protocol byte
548    * OCMOSJ:
549      - Change from 5% reply requests to at least
550        once per minute, in hopes of reducing IRC drops
551      - More clean up of the cache cleaning
552    * Routerconsole: Don't OOM configpeer.jsp on huge blocklists
553
5542009-02-26 zzz
555    * I2CP Client: Add support for muxing
556    * I2PTunnel:
557      - Add new IRCServer tunnel type
558      - Add SOCKS 4/4a support
559      - Catch OOMs in HTTPServer
560      - Name the IRCClient filter threads
561      - Port Streamr to I2PTunnel
562      - The beginnings of SOCKS UDP support
563    * Naming: Add reverse lookup by hash
564    * OCMOSJ: Clean up the cache cleaning
565    * Router: Move addShutdownTask from Router to I2PAppContext
566      so that apps can register more easily
567    * Routerconsole:
568      - Thread hard shutdown and restart requests from the routerconsole,
569        and add a delay even if no tunnels, to allow time for a UI response
570      - Sort the summary bar destinations
571      - Move dest-to-hash converter to new helper class so we can
572        use it in i2ptunnel
573
5742009-02-22 sponge
575    * BOB: Orphan tunnel issue fix, bump BOB version
576    * bump to Build 6
577
5782009-02-16 zzz
579    * Streaming lib: Plug timer leak, don't send keepalives
580      after close, don't disconnect hard after close
581
5822009-02-15 zzz
583    * Add licenses to all packages
584    * I2PSession: Concurrent _messagesReceived
585    * i2psnark: tmp file removal try #3
586    * I2PTunnel:
587      - Don't buffer POST data in HTTPClient
588      - Display destination even when stopped
589      - Enable key generation, dest modification, and
590        hashcash estimation in the GUI
591      - Add new CONNECT client
592    * NetDb: Enforce 60s minimum leaseset publish interval
593    * Streaming lib:
594      - Plug connection leak
595      - Move ConEvent from SimpleTimer to SimpleScheduler
596      - Move RetransmissionTimer (ResendPacketEvent)
597        from SimpleTimer to new SimpleTimer2
598      - Move ActivityTimer and Flusher from SimpleTimer to RetransmissionTimer
599      - SimpleTimer2 allows specifying "fuzz" to reduce
600        timer queue churn further
601    * Susidns: Fix save of new dest broken in 0.7
602    * TunnelPool:
603      - Allow leasesets with reduced leases for robustness and startup speed
604      - Plug in-progress build leak
605
6062009-02-07 zzz
607    * ClientConnectionRunner, Shitlist, TunnelDispatcher:
608      Update using concurrent
609    * Streaming ConnectionHandler: Bound SYN queue and
610      use concurrent to prevent blowup
611    * HTTP Proxy: Fix error msg for b32 addresses
612    * I2CP: Implement optional reduce tunnels on idle - not hooked
613      in to i2ptunnel GUI yet - still needs tweaks
614    * I2CP MessageReader: Prevent rare NPE
615    * I2CP Writer: Rewrite using concurrent
616    * i2psnark: Add torrent and connection count
617    * I2PTunnel & I2CP:
618      - Fix tunnel reduction/restore, hook in the GUI
619      - Hook leaseset encryption into the GUI
620      - Implement saves for all the new stuff
621      - Add cancel button
622      - Add b32 display for non-http servers
623      - Prep for CONNECT
624      - Fix error msg when connection goes away
625    * NetDb: Remove all DataPublisher stuff
626    * Wrapper: Remove dup timeout
627
6282009-02-02 sponge
629    * Final? cleanups to Slackbuilds.
630    * ant target for Slackbuilds.
631
6322009-02-01 sponge
633    * Slackbuild files... if we can have them for Debian, why not :-)
634
6352009-02-01 zzz
636    * Convert some inner classes to static (findbugs)
637    * DataHelper.readLong(): Was returning -1 on EOF instead
638      of throwing exception
639    * i2psnark: Increase tunnels and pipeline to 3
640    * NTCP: Use a java.util.concurrent execution queue instead of
641      SimpleTimer for afterSend() to reduce lock contention
642    * Remove source from susimail.war, susidns.war, i2ptunnel.war (85KB)
643    * Routerconsole:
644      - Move common methods to new HelperBase class
645      - Make reseed link a button
646    * SimpleScheduler: New replacement for SimpleTimer when events
647      will not be rescheduled or cancelled, to reduce SimpleTimer
648      lock contention
649    * Tunnel Pool:
650      - Remove tunnel from participating if can't contact next hop
651      - Fail outbound build faster if can't contact first hop
652    * Wrapper: Remove dup timeout
653
6542009-01-31 dream
655    * Debian files
656
6572009-01-31 sponge
658    * One line BOB discarded interger fix
659      (not that it mattered at this point)
660
6612009-01-25 zzz
662    * Build files:
663      - Don't bundle unneeded XML parser xercesImpl.jar (1MB)
664      - Don't include unneeded stuff in Copy, Delete, Exec.jar (300KB)
665    * I2CP:
666      Implement new I2CP message ReconfigureSessionMessage.
667      Will be used for tunnel reduction.
668    * I2PTunnel Edit Pages:
669      - Change default length to 2+0
670      - Cleanup helper code
671      - Prevent null spoofhost
672      - Stub out the following new options (C=client, S=server):
673        + Access list (S)
674        + Certificate type (S)
675        + Encrypted LeaseSet (S)
676        + New dest on idle restart (C)
677        + Tunnel closure on idle (C)
678        + Tunnel reduction on idle (C,S)
679    * I2PTunnel Socks:
680      - Add support for SOCKS to GUI
681      - Don't NPE on SOCKS 4, just close
682      - Don't have SOCKS build a new dest for every request
683      - Beginnings of SOCKS configuration by port
684      - HTML error msg for attempted HTTP access
685    * LeaseSet: Add encrypt/decrypt methods
686    * netdb.jsp: Don't show stats by default
687    * OCMOSJ: Bundle a reply when we switch tunnel or lease,
688      to detect failure sooner
689    * PublishLocalRouterInfoJob:
690      - Delay for 5m at startup
691      - Run every 20m (was 7.5m)
692    * RebuildRouterInfoJob: Don't run it
693    * Router: Add a keyring for decrypting leases
694    * Routerconsole: Add configkeyring.jsp
695    * SummaryHelper.getTransferred() move to DataHelper,
696      rename to formatSize(), use on tunnels.jsp
697    * Streaming, I2CP, Client Message sending:
698      Pass message timeout through new I2CP message
699      SendMessageExpiresMessage, so that the router
700      uses the same expiration as the streaming lib.
701      Should help reliability.
702    * Streaming: TCB control block sharing
703
704* 2009-01-24  0.7 released
705
7062009-01-24 Complication
707    * Update versions, package release
708
7092009-01-17 zzz
710    * NTCP: Prevent two NTCP Pumpers
711
7122009-01-14 zzz
713    * config.jsp: Fix burst seconds display
714    * HTTPClient: Fix per-tunnel settings for i2cp.gzip and
715      i2ptunnel.httpclient.send* (thx tino)
716    * i2psnark:
717      - Fix double completion message
718      - Add crstrack
719    * initialNews.xml: Add .de (thx echelon)
720    * Message: Always distribute an inbound msg back out
721      a tunnel to foil a possible latency-measuring attack
722      (welterde)
723    * Naming:
724      - Change base32 names to *.b32.i2p
725      - Add i2p.naming.hostsTxt.useB32 config
726    * profiles.jsp: Remove 1m column
727    * SAM: Don't build tests by default
728    * Streaming:
729      - Prevent a rare NPE
730      - Reduce initial RTT to 8s (was 10s)
731    * tunnels.jsp: Add netdb links
732
7332009-01-08 zzz
734    * addressbook: Prevent Base32 hostnames
735    * build.xml: Remove readme_xx.html from updater
736    * configtunnels.jsp: Fix display of outbound backup count
737    * configupdate.jsp: Fix corruption of update URLs
738    * i2psnark: Recognize Robert 0.3 and 4
739    * ExploreJob/SearchJob - fix brokenness:
740      - Give each search a minimum of time even at the end
741      - Fix ExploreJob exclude peer list
742      - Always add floodfills to exclude peer list
743      - Don't queue keys for exploration or run ExploreJob
744        if floodfill
745      - Allow floodfills to return non-floodfills in
746        a DSRM msg so exploration works
747    * ExploreJob/SearchJob - more fixes:
748      - Disable ExploreKeySelectorJob completely, just have
749        StartExplorersJob select a random key if queue is empty
750      - Add netDb.alwaysQuery=[B64Hash] for debugging
751      - Queue results of exploration for more exploration
752      - Floodfills periodically shuffle their KBuckets, and
753        FloodfillPeerSelector sorts more keys, so that
754        exploration works well
755    * Shitlist: Reduce max time to 30m (was 60m)
756    * Streaming:
757      - Reduce default initial window size from 12 to 6,
758         to account for the MTU increase in the last release
759         and try to limit initial packet loss
760      - Reduce fast retransmit threshold from 3 to 2
761    * Transport: Don't shitlist a peer if we are at our
762      connection limit
763
7642009-01-03 zzz
765    * config.jsp: Move the buttons up
766    * configservice.jsp: Clean up and fix the broken (?)
767      browser launch configuration
768    * i2psnark:
769      - Try again to remove the i2psnarkurl files on shutdown
770      - Sort torrents with a locale-based sort
771    * NetDb:
772      - Expire routers with introducers after 90m.
773        This should improve reachability to firewalled routers
774        by keeping introducer info current.
775      - Expire routers with no addresses after 90m.
776      - Convert to java concurrent
777    * Stats: Add router.memoryUsed, graph by default
778    * Summary bar: Remove spurious UDP warning on startup
779    * UpdateHandler: Make extensible for upcoming
780      torrent updater
781
7822008-12-15 zzz
783    * Remove apps/ bogobot jdom pants q rome stasher syndie
784
7852008-12-14 zzz
786    * Contexts: Add int getProperty(String prop, int default)
787    * I2PAppThread: Constructor fix
788    * More split classes into their own files for mkvore
789    * Streaming: Don't build test cases by default
790    * Summary bar: Replace links with buttons
791    * Transport:
792      - Cleanup max connections code
793      - Add i2np.udp.maxConnections
794      - Set max connections based on share bandwidth
795      - Add haveCapacity() that can be used for connection
796        throttling in the router
797      - Reject IBGW/OBEP requests when near connection limit
798      - Reduce idle timeout when near connection limit
799    * Tunnel request handler:
800      - Require tunnel.dropLoad* stats
801      - Speed up request loop
802    * I2CP, HostsTxtNamingService, I2PTunnel:
803      Implement Base32 Hash hostnames, via the naming service.
804      Names are of the form [52-characters].i2p, where
805      the 52 characters are the Base32 representation of our
806      256-byte hash. The client requests a lookup of the hash
807      via a brief I2CP session using new I2CP request/reply
808      messages. The router looks up the leaseset for the hash
809      to convert the hash to a dest. Convert the I2PTunnel
810      'preview' links to use Base32 hostnames as a
811      demonstration.
812
8132008-12-08 zzz
814    * ATalk: Move from core to apps
815    * Blocklists: enable by default, include blocklist file
816      in new installs
817    * Build: Add findbugs target
818    * Cleanup of removed netdb stats
819    * Console:
820      - Don't display restart button if no wrapper
821      - Remove PRNG stats
822    * Eepsite: Disable jetty webapps by default for new installs
823    * i2psnark:
824      - Add default i2psnark.config for new installs
825      - Remove wishlist link
826      - Recognize robert and i2psnarkxl clients
827      - Increase max files to 256
828    * Increase standalone heap size to 128MB
829    * NetDb: Split classes into their own files for mkvore
830    * PeerManager: Fix NPE on early shutdown
831    * SusiDNS: Add textareas
832    * Transport:
833      - Fixes, avoid NPEs, and cleanups when NTCP and/or UDP transports disabled
834      - More TCP removal cleanup
835      - Clean up bandwidth limiting, centralize defaults
836      - Force burst to be >= limit
837      - Increase default bw to 48/24, burst 64/32
838    * Tunnels: Avoid two NPEs on corrupt fragments
839
8402008-12-01 zzz
841    * i2psnark:
842      - Refactor to allow running a single Snark without a SnarkManager again,
843        by moving some things from SnarkManager to I2PSnarkUtil,
844        having Snark call completeListener callbacks,
845        and having Storage call storageListener callbacks.
846        This is in preparation for using Snark for router updates.
847        Step 2 is to allow multiple I2PSnarkUtil instances.
848      - Big rewrite of Storage to open file descriptors on demand, and
849        close them when unused, so we can support large numbers of torrents.
850
851    * i2psnark:
852      - Remove static instances of I2PSnarkUtil, ConnectionAcceptor,
853        and PeerCoordinatorSet
854      - Convert static classes in Snark to listeners
855      - Fix Snark to work in single torrent mode again
856      - Should now work with multiple single Snarks
857
858    * i2psnark:
859      - Use new I2PAppThread that does not call global listeners on OOM,
860        so that OOMing apps will not shutdown the whole router.
861
862    * i2psnark:
863      - Don't create SnarkManager instance until first call,
864        so it doesn't create the i2psnark dir, read the config,
865        etc., for single Snark instances.
866      - Don't read i2psnark.config twice; fix setting
867        i2psnark.dir
868      - More Snark constructor changes for calling from router
869      - Make max connections per torrent configurable
870
871    * SAM:
872      - Use new I2PAppThread that does not call global listeners on OOM,
873        so that OOMing SAM will not shutdown the whole router.
874
875* 2008-12-01  0.6.5 released
876
8772008-12-01 Complication
878    * Update versions, package release, fix typo in comment
879
8802008-11-26 zzz
881    * Fix Windows UrlLauncher
882
8832008-11-21 zzz
884    * Cache DNS and negative DNS for 5m (was 1m and forever)
885    * Delay shitlist cleaner at startup
886    * Strip wrapper properties from client config
887    * Define multiple cert type
888    * Prohibit negative maxSends in streaming
889    * HTML fixup on configtunnels.jsp
890    * Increase wrapper exit timeout from default 15s to 30s
891
8922008-11-20 zzz
893    * I2PTunnel: Handle missing fields in edit pages better
894    * Move DummyNetworkDatabaseFacade to his own file
895      to help the build dependencies
896    * Drop old tcp transport and old tunnel build sources
897    * EepGet:
898      - Better handling of 504 gateway timeout
899        (keep going up to limit of retry count rather
900         than just one more partial fetch)
901      - Add -t cmd line option for timeout
902      - Better handling of 403, 409, 503 errors
903      - Don't keep going after unknown return code
904      - Don't delay before exiting after a failure
905
9062008-11-15 zzz
907    * Build files:
908      - Don't die if depend not available
909      - Only verify Jetty hash once
910      - Add streaming lib tests to depend task
911    * I2CP Compression:
912      - Add i2cp.gzip option (default true)
913      - Add compression stats
914      - Don't bother compressing if really small
915
9162008-11-13 zzz
917    * Streaming:
918      - Add more info to Connection.toString() for debugging
919      - Fix lifetimeMessages{Sent,Received} stats
920      - Reduce RTT damping to 0.875 (was 0.9)
921      - Add a stream.con.initialRTT.{in,out} stats
922    * Build files:
923      - Use the depend task with caching for more accurate dependencies
924      - Make sure the routerconsole gets the latest router version
925      - Fix addressbook repeated builds
926    * HTTPClient: Add config options to pass Via, Referer,
927      and User-Agent through
928    * Blocklists: Fix lists with hashes only
929
9302008-11-11 zzz
931    * Streaming - Fix several bugs and improve performance
932      when the initial data is larger than one MTU,
933      e.g. HTTP GETs with large URLs, CGI params or cookies,
934      or large HTTP POSTS:
935      - Don't reject additional packets received without a
936        send stream ID (i.e. sent before the SYN ACK was received)
937      - Put unknown non-SYN packets on the SYN queue also
938        so they won't be rejected
939      - Reduce flusher delay to 250ms (was 500)
940      - Flush unless window is full (was window is non-empty)
941    * Streaming: Enforce a minimum MTU of 512
942    * I2PTunnel: Change "interactive" max window size to 16 (was 1)
943    * NetDb: Fix a deadlock caused by last checkin
944
9452008-11-09 zzz
946    * build.xml: Build speedups:
947      - Don't distclean in the updaterRouter target
948      - Don't make prepUpdate and prepupdateSmall depend
949        on distclean
950      - Don't make susimail build always clean
951      - Make pkg depend on distclean to be sure
952      - Clean out more routerconsole and susidns files in 'ant clean'
953      - i2ptunnel, routerconsole, susidns:
954        Only build WEB-INF when necessary
955      - systray: Only build jar when necessary
956      - Don't build i2psnark standalone for the updater target
957    * configclients.jsp: Provide a link when starting a webapp
958    * configtunnels.jsp:
959      - Code cleanup
960      - Add 4-hop option
961      - Remove +/- 0-2 option
962    * javadoc: Add some more package.html files
963    * I2PTunnelHTTPServer: Put the requestor's dest hash
964      in the request headers
965    * Jetty: Add a I2PRequestLog class to log request dest hash
966    * NetDb: Don't drop routerInfos if we have connectivity
967      issues or other problems
968    * NTCP: Lower idle timeout to 10m (was 15m)
969    * Routerconsole: Replace wtf msg w/ something nicer
970    * Tunnel BuildHandler: add config router.participantOnly,
971      set to true to refuse OBEP and IBGW roles, should
972      reduce connections significantly if set.
973
9742008-11-02 zzz
975    * Certificates:
976      - Add a signed Certificate type
977      - Add a main() to PrivateKeyFile to generate
978        Destinations with various Certificate types
979      - Add a VerifiedDestination class to check Certificates
980        of various types
981      - Add a HashCash library from http://www.nettgryppa.com/code/
982        (no distribution restrictions)
983      - Allow non-null Certificates in addressbook
984    * I2PTunnel: Move some wayward stats to the I2PTunnel group
985    * NamingServices: Implement caching in the abstract class
986    * NewsFetcher: Fix last updated time
987    * Streaming: Increase MTU to 1730 (was 960);
988      see ConnectionOptions.java for analysis
989    * Throttle: Reduce default max tunnels to 2000 (was 2500)
990    * clients.config: Disable SAM and BOB by default for new installs
991
9922008-10-26 zzz
993    * config.jsp: Add more help
994    * peers.jsp: Clean up 'Listening on' formatting
995    * profiles.jsp: Don't override locale number format
996    * netdb.jsp: Indicate if hidden
997    * summary.jsp: Indicate if hidden
998    * i2ptunnel/edit.jsp: Disable word wrap in textarea
999    * Blocklist: Change logging from ERROR to WARN
1000    * FloodfillMonitor:
1001       - Fix ff count (we forgot ourselves)
1002       - Don't become ff if hidden
1003    * HandleFloodfillDatabaseLookupMessageJob:
1004      Send back your routerinfo with the DSRM if not ff to
1005      spread the word that you aren't ff anymore
1006    * I2Ping:
1007       - Add -n count option
1008       - Add rtt output
1009       - Enhance help
1010       - Fix option handling
1011    * More findbugs cleanups
1012    * NetDb:
1013       - Fix behavior when router.isHidden=true
1014       - Delay StartExplorersJob for 10m at startup
1015       - Update dbLookup profile stats in FloodOnlySearchJob
1016         and FloodfillVerifyStoreJob
1017       - Fix response time store in profile in SearchJob
1018    * Stats:
1019       - Remove unused tunnel.buildSuccess and tunnel.buildFailure
1020       - Remove tunnel.buildRequestTime and 5m rate stats from
1021         netDb, effective in next release
1022    * UDP:
1023       - Don't do peer tests when hidden
1024       - Don't offer to introduce when hidden
1025       - Don't continually rebuild routerInfo when hidden
1026       - Don't continually rebuild routerInfo when
1027         i2np.udp.internalPort is set but i2np.udp.port is not
1028       - Remove some unused functions
1029
10302008-10-20 zzz
1031    * configclients.jsp: Handle clients with no args
1032    * index.jsp: Add readme_nl.html (thanks mathiasdm!),
1033      readme_sv.html (thanks hottuna!)
1034    * Big findbugs cleanup
1035    * Client: Prevent a race causing session reconnect
1036    * FloodfillMonitor:
1037       - Don't become ff if clock skew is high
1038       - Rebuild routerinfo immediately when ff status changes
1039    * FloodOnlySearchJob: Recover better if the floodfills
1040      you know are no longer floodfill or are gone
1041    * Installer: Bump min JRE to 1.5
1042    * ShellCommand: Fix main()
1043
10442008-10-14 zzz
1045    * index.jsp: Add multilanguage support for readme.html;
1046      add readme_de.html (thanks devzero!)
1047    * configupdate.jsp, configadvanced.jsp:
1048      Disable word wrap in textareas
1049    * install*.txt: Update for 1.5
1050    * summary.jsp: Remove failing peer count
1051
10522008-10-10 zzz
1053    * Profiles: Reduce reject penalty in
1054      capacity calculation to avoid a congestion collapse
1055    * Throttle: Change reject to BANDWIDTH from CRIT on shutdown
1056      for improved anonymity
1057    * Tunnels: Implement random discard to enforce share limit
1058    * Tunnel Tests: Add time for outbound delay, to avoid
1059      congestion collapse
1060    * UDPPacketReader: Adjust logging
1061    * build files: Change to source=1.5, target=1.5
1062    * configpeer.jsp: Table cleanup
1063    * i2psnark: Change default tunnel length from 1+1 to 2+0
1064    * peers.jsp: Change <,> to in,out for UDP
1065
10662008-10-09 sponge
1067    * Update version to -3
1068    * BOB database threadlocking fixes
1069
10702008-10-08 sponge
1071    * Update version to -2
1072    * Bugfixes and additions to BOB
1073
10742008-10-07 sponge
1075    * Bugfixes and additions to streaming.
1076    * Added SimpleStore class in utils.
1077    * Fixed SimpleTimer class to allow exit.
1078    * BOB (Basic Open Bridge) added.
1079
1080* 2008-10-05  0.6.4 released
1081
10822008-10-05 Complication
1083    * Update versions, package release
1084
10852008-09-29 zzz
1086    * i2psnark: Add codevoid link, remove mastertracker
1087
10882008-09-23 zzz
1089    * config.jsp: Add some reachability help
1090    * configpeer.jsp: Add blocklist info
1091    * help.jsp: Add link to German FAQ
1092    * tunnels.jsp: Fix inactive participating count
1093    * SearchReplyJob: Don't look up references to shitlisted peers
1094    * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
1095
10962008-09-20 zzz
1097    * NetDb: Fix the totally broken "check new routers against blocklist"
1098      code from 3 checkins ago
1099    * tunnels.jsp: Sort participating tunnels by usage, display rate
1100
11012008-09-19 zzz
1102    * Tunnels:
1103      - Add missing message accounting for inbound gateways,
1104        we were underestimating participating traffic because of it,
1105        and the tunnels were classified "inactive"
1106      - Add participating tunnel role on tunnels.jsp
1107
11082008-09-18 zzz
1109    * Throttle:
1110      - Correctly check inbound and outbound total bw limits separately
1111      - Fix up and actually use the tunnel.participatingMessageCount stat,
1112        favor it if lower than the total bw stat, so that
1113        client traffic isn't included for throttle decisions
1114      - Reduce min message count from 60 to 40
1115    * Tunnel Dispatcher:
1116      - Add tunnel.participatingBandwidth stat
1117      - Remove all 3h and 24h stats
1118
11192008-09-15 zzz
1120    * FloodOnlySearchJob:
1121      - Ask non-floodfill peers if we don't know any floodfills
1122      - Lookup hashes in the DatabaseSearchReplyMessage if we
1123        don't know enough floodfills
1124    * NetDb: Check new routers against blocklist
1125    * Router: Shutdown clients first
1126    * Throttle:
1127      - Use 60s rather than 10m tunnel.participatingMessageCount stat
1128      - Fix a summary bar message
1129    * Tunnel Dispatcher: Update tunnel.participatingMessageCount
1130      every 20s, rather than at tunnel expiration, to maintain
1131      a more current stat
1132    * Tunnel Pool:
1133      - Prevent excess zero-hop tunnels
1134      - Always wait before looping in BuildExecutor
1135    * configlogging.jsp: Increase box width
1136    * logs.jsp: Remove unused connection log, cut wrapper log output in half
1137
11382008-09-12 zzz
1139    * Blocklist: Fix a log message format
1140    * HarvesterJob: Don't instantiate if disabled
1141    * i2psnark:
1142      - Add config i2psnark.linkPrefix to enable access to completed
1143        torrents from a different machine - examples:
1144           i2psnark.linkPrefix=file://///localserver/path/to/files/
1145           i2psnark.linkPrefix=http://localwebserver/path/
1146        (Stop i2psnark, add to i2psnark.config, restart)
1147      - Remove Galen and NickyB trackers
1148    * NetDb: Add netDb.exploreKeySet stat
1149    * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
1150      and ?r=. to view our own; change links on other pages too
1151    * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
1152
11532008-09-06 zzz
1154    * EepGet command line: Fix byte counts after a failed resume
1155    * NTCP: Mark unreachable on outbound connection timeout
1156    * Shitlist: Fix partial shitlisting (still unused though)
1157    * Summary Bar: Warn if firewalled and floodfill
1158    * Throttle: Combine current and last bw measurement,
1159      reduce default max tunnels to 2500 (was 3000)
1160    * Tunnel BuildHandler: Logging cleanup
1161    * UpdateHandler: Cleanup, clarify failure message
1162    * DataHelper: Prepare for 999 day uptime :)
1163
11642008-08-29 zzz
1165    * Tunnel BuildExecutor: Debug cleanup
1166    * Profiles: Penalize capacity when tunnel build request times out
1167    * Shutdown: Call the shutdown hooks before the router shutdown
1168      rather than after
1169    * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
1170
11712008-08-27 zzz
1172    * Floodfill Peer Selector: Prefer already-connected floodfill
1173      peer for direct RouterInfo stores, to mimimize floodfill
1174      connections
1175    * Peer Profiles: Classify connected peers as "active",
1176      which will help improve the fast pool
1177    * Transport Manager: Add isEstablished(Hash)
1178    * NTCP: Reduce max idle time from 20m to 15m
1179    * NetDb stats: Post-0.6.3 clean up
1180
1181* 2008-08-24  0.6.3 released
1182
11832008-08-24 Complication
1184    * Update versions, package release
1185
11862008-08-20 zzz
1187    * Blocklists: Handle blank lines and \r\n in blocklist.txt
1188    * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
1189      default is 500 (very high for now)
1190    * Persistent data store: Increase write limit from 300 to 600
1191      so floodfill routers don't get backed up
1192
11932008-08-13 zzz
1194    * i2psnark: Fix OOM vulnerability by checking incoming message length
1195      (thanks devzero!)
1196
11972008-08-04 zzz
1198    * Floodfill Peer Selector:
1199      - Avoid peers whose netdb is old, or have a recent failed store,
1200        or are forever-shitlisted
1201
12022008-07-30 zzz
1203    * Blocklists:
1204      - New, disabled by default, except for blocking of
1205        forever-shitlisted peers. See source for instructions
1206        and file format.
1207    * Transport - Reject peers from inbound connections:
1208      - Check IP against blocklist
1209      - Check router hash against forever-shitlist, then block IP
1210
12112008-07-16 zzz
1212    * configpeer.jsp: New
1213    * i2psnark: Open completed files read-only the first time
1214    * profiles.jsp: Show bonuses, link to configpeer.jsp
1215    * PRNG: Move logging from wrapper to router log
1216    * SSU:
1217        Don't proactively reconnect until 30m idle, so
1218        we don't lose introducer tags prematurely
1219
12202008-07-16 Oldaris
1221    * Imports cleanup
1222
12232008-07-07 zzz
1224    * i2psnark:
1225      - Repair corrupted files with wrong length rather than die
1226      - Register shutdown hook to properly shutdown torrents when
1227        the router shuts down, hopefully will reduce corruption
1228      - Add Galen tracker
1229      - Add a note about how to change directory
1230    * HTTP Proxy: Don't show jump links for unknown jump hosts
1231    * KeyManager:
1232      - Don't write router key backup when leaseSet keys are updated
1233      - Synchronize to prevent concurrent writes (thanks Galen!)
1234      - Backup keys every 7 days instead of every 5 minutes
1235    * LoadTestManager: Don't instantiate, it's disabled
1236    * Router console: Flag placeholder pages as noncacheable
1237    * Streaming lib:
1238      - Change some logging from WARN to INFO
1239      - Clean up toString()
1240    * SSU:
1241      - Try to pick better introducers by checking shitlist,
1242        wasUnreachable list, failing list, and idle times
1243      - To keep introducer connections up and valid,
1244        periodically send a "ping" (a data packet with no data and no acks)
1245        to everybody that has been an introducer in the last two hours
1246      - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
1247      - Remove some 60s and 5m stats, leave only the 10m ones
1248      - Narrow the range for the retransmit time after an allocation fail
1249      - Adjust some logging
1250
12512008-06-30 zzz
1252    * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
1253    * i2psnark:
1254      - Fix NPE caused by race (thanks echelon!)
1255      - Add mastertracker, remove de-ebook
1256    * NTCP:
1257      - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
1258      - Fix failsafe stats
1259    * PersistentDataStore: More leaseSet code cleanup
1260    * SimpleTimer: Change congestion message from error to warn
1261
12622008-06-24 zzz
1263    * FloodfillMonitorJob: Change range from 5-7 to 4-6
1264    * NTCP: Remove getIsInbound(), duplicate of isInbound()
1265    * PersistentDataStore: Don't try to remove nonexistent leaseSet files
1266    * Router console: add placeholder pages for i2psnark, i2ptunnel,
1267      susidns, and susimail for use when the .wars are not running
1268    * Streaming lib: Increase max window size to 128
1269
12702008-06-22 welterde
1271    * Optimize I2PDatagramDissector
1272
12732008-06-20 zzz
1274    * configclients.jsp: Add start button for clients and webapps.
1275    * PRNG: Add two stats
1276    * Summary bar:
1277      - Display Warning for TCP private IP address
1278      - Display PRNG stats
1279    * OutNetMessage: Change cache logging from WARN to INFO
1280
12812008-06-17 zzz
1282    * Comm System: Add new STATUS_HOSED for use when UDP bind fails
1283    * Summary bar: Display helpful errror message when UDP bind fails
1284    * UDP: Don't bid when UDP bind fails
1285    * configclients.jsp: Implement saves for clients and webapps.
1286
12872008-06-16 zzz
1288    * UDP: Prevent 100% CPU when UDP bind fails;
1289      change bind fail message from ERROR to CRIT
1290    * Refactor LoadClientAppsJob.java, move some functions to new
1291      ClientAppConfig.java, to make them easily available to
1292      new configclients.jsp
1293    * RouterConsoleRunner: Use a new config file, webapps.config,
1294      to control which .wars in webapps/ get run. Apps are enabled
1295      by default; disable by (e.g.) webapps.syndie.startOnLoad=false
1296      Config file is written if it does not exist.
1297      Implement methods for use by new configclients.jsp.
1298    * configclients.jsp: New. For both clients and webapps.
1299      Saves are not yet implemented.
1300
13012008-06-10 zzz
1302    * Floodfill: Add new FloodfillMonitorJob, which tracks active
1303      floodfills, and automatically enables/disables floodfill on
1304      Class O routers to maintain 5-7 total active floodfills
1305    * NetDb Stats:
1306      - Remove several more stats
1307      - Don't publish bw stats in first hour of uptime
1308      - Publish floodfill stats even if other stats are disabled
1309      - Changes not effective until 0.6.2.1 to provide cover.
1310    * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
1311      startup, so peers don't list us as failing.
1312    * graphs.jsp: Fix a bug where it tries to display the combined
1313      bandwidth graph when it isn't available
1314
13152008-06-09 zzz
1316    * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
1317
13182008-06-09 zzz
1319    * Reachability: Restrict peers with no SSU address at all from inbound tunnels
1320    * News:
1321      - Add display of last updated and last checked time
1322        on index.jsp and configupdate.jsp
1323      - Add a function to get update version (unused for now)
1324    * config.jsp: Add another warning
1325
13262008-06-07 zzz
1327    * NetDb: Tweak some logging on lease problems
1328    * Shitlist:
1329      - Add shitlistForever() and isShitlistedForever(), unused for now
1330      - Sort the HTML output by router hash
1331    * netdb.jsp:
1332      - Sort the lease HTML output by dest hash, local first
1333      - Sort the router HTML output by router hash
1334
13352008-06-06 zzz
1336    * LeaseSet:
1337      - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
1338        to make later LeaseSet comparisons reliable. This cleans up the code too.
1339      - Fix broken old vs. new LeaseSet comparison
1340        in ClientConnectionRunner.requestLeaseSet(),
1341        so that we only sign and publish a new LeaseSet when it's really new.
1342        Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
1343        and floodfill router load, since locked_buildNewLeaseSet() generates
1344        the same LeaseSet as before quite frequently, often just seconds apart.
1345
13462008-06-05 zzz
1347    * LeaseSet - code cleanup:
1348      - Add exception to enforce max # of leases = 6, should be plenty
1349      - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
1350        leases and then immediately remove them again, triggering
1351        the new leaseSet size exception
1352      - Remove the now unused LeaseSet.removeLease(lease) and
1353        LeaseSet.removeLease(index)
1354      - Store first and last expiration for efficiency
1355    * Peer Profiles - Preparation for using bonuses:
1356      - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
1357      - Persist CapacityBonus rather than ReachabilityBonus
1358      - Include SpeedBonus in the Speed calculation
1359      - Prevent negative values in Speed and Capacity when using bonuses
1360      - Clean up SpeedCalculator.java
1361    * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
1362    * Add some config files for a future small distribution
1363    * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
1364
13652008-06-01 zzz
1366    * Client Apps: Add new parameter for clients.config,
1367        clientApp.x.startOnLoad=false, to disable loading
1368        (for SAM for example). Defaults to true of course.
1369    * Logging: Move common WARN output to DEBUG so we can ask users to
1370        set the default log level to WARN without massive spewage
1371    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
1372      not just the Fast tier, since we don't use them for tunnels anyway
1373    * SAM: Add some compiler flexibility to two obscure makefiles
1374    * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
1375      (sponge's suggestion)
1376    * summary bar:
1377      - Hide ident, provide a tooltip and a link
1378      - Add a warning if you are firewalled and class O
1379
13802008-06-07 Complication
1381    * Fix version in news.xml so it could be published
1382
1383* 2008-06-07  0.6.2 released
1384
13852008-06-07 Complication
1386    * Write announcement and prepare for release
1387
13882008-05-29 zzz
1389    * Fix up initialNews.xml
1390
13912008-05-27 zzz
1392    * Transport:
1393      - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
1394      - UDP: Don't bid when IP address missing, mark unreachable
1395
13962008-05-26 zzz
1397    * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
1398    * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
1399    * build.xml:
1400      - Add an updaterSmall target which includes only the essentials
1401      - Add an updaterRouter target which includes only i2p.jar and router.jar
1402      - Clean up the build file some
1403      - Remove empty eepsite/ and subdirs from i2pupdate.zip
1404    * configtunnels.jsp: Add warning
1405    * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
1406    * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
1407
14082008-05-22 welterde
1409    * Change jetty download location in build script
1410
14112008-05-20 zzz
1412    * Reachability:
1413      - Call the previously unused profile.tunnelTestFailed()
1414        (redefined to include a probability argument)
1415        and severely downgrade a peer's capacity upon failures,
1416        depending on tunnel length and direction.
1417        This will help push unreachable and malicious peers
1418        out of the High Capacity tier.
1419      - Put recent fail rate on profiles.jsp
1420    * ProfileOrganizer: Logging cleanup
1421    * eepsite_index.html: Update add-host and jump links
1422    * HTTP Proxy: Remove trevorreznik jump server from list
1423
14242008-05-20 welterde
1425    * implemented PrivateKeyFile
1426
14272008-05-18 zzz
1428    * Throttle: Reject tunnels for first 20m uptime (was 10m)
1429    * TunnelPeerSelectors:
1430       - Re-enable strict ordering of peers,
1431         based on XOR distance from a random hash
1432       - Restrict peers with uptime < 90m from tunnels (was 2h),
1433         which is really 60m due to rounding in netDb publishing.
1434    * i2psnark:
1435       - Limit max pipelined requests from a single peer to 128KB
1436         (was unlimited; i2p-bt default is 5 * 64KB)
1437       - Increase max uploaders per torrent to 6 (was 4)
1438       - Reduce max connections per torrent to 16 (was 24) to increase
1439         unchoke time and reduce memory consumption
1440       - Strictly enforce max connections per torrent
1441       - Choke more gradually when over BW limit
1442    * help.jsp: Add a link to the FAQ
1443    * peers.jsp: Fix UDP direction indicators
1444    * hosts.txt: Add update.postman.i2p
1445
14462008-05-12 zzz
1447    * Outbound message:
1448      - Tweak the cache key for efficiency
1449    * Stats:
1450      - Require two udp stats when stats.full=false, caused NPE on peers.jsp
1451    * Summary bar:
1452      - Add messages when dropping tunnel requests due to load
1453    * Update Handler:
1454      - Add postman to the list
1455    * i2psnark:
1456      - Randomize the PeerCheckerTask start times to make global limiting
1457        work better
1458      - Calculate bw limits using 40s rather than 4m averages to make
1459        bw limiting work better
1460      - Change default bw limit from uplimit/3 to uplimit/2 due to
1461        overhead reduction from the leaseset bundling change
1462    * libjbigi:
1463      - Add documentation on dynamic build option
1464      - Add two speed tests to the build script
1465      - Clean up the build script, make it easier to build dynamic
1466
14672008-05-10 zzz
1468    * NetDb: Don't write the my.info file to disk, it isn't used for anything
1469    * Stats:
1470      - Simplify oldstats.jsp if no events in a stat
1471      - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
1472        (caused by an SSU hack)
1473    * Update Handler:
1474      - Add option to download and verify only
1475      - Add distinct error message if version check fails
1476
14772008-05-09 welterde
1478    * Add an update URL to the list
1479
14802008-05-07 zzz
1481    * Reachability:
1482      - Restrict peers requiring introducers from inbound tunnels,
1483        since it's slow and unreliable... and many of them advertise
1484        NTCP, which seems unlikely to work
1485      - Provide warning on summary bar if firewalled with inbound NTCP enabled
1486    * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
1487      log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
1488      at startup (you didn't get any data unless you set the log level anyway)
1489    * oldstats.jsp: Don't put 2 decimal places on integer event counts
1490    * Remove the Internals link from the menu bar
1491    * i2psnark: Extend startup delay from 1 to 3 minutes
1492
14932008-05-06 welterde
1494    * HTTP Proxy: Add i2jump.i2p jump service
1495
14962008-05-05 zzz
1497    * NetDb Stats: Cleanup of commented out stats
1498    * Outbound message:
1499      - Fix a couple of tunnel cache cleaning bugs
1500      - Cache based on source+dest pairs rather than just dest
1501      - Send the reply leaseSet only when necessary,
1502        rather than all the time (big savings in overhead)
1503      - Enable persistent lease selection again
1504      - Logging tweaks
1505    * Reachability:
1506      - Restrict <= .32 SSU-only peers from inbound tunnels,
1507        since they don't know if they are unreachable
1508      - Have SSU bid aggressively when it has less than 3 peers, so
1509        we can determine our IP address and do peer testing.
1510        Otherwise a router may never determine its IP address or reachability status.
1511    * Summary bar:
1512      - Add reachability status
1513      - Add participating tunnel acceptance status
1514    * Throttle: Reject tunnels for first 10m uptime
1515    * I2PTunnel: Change default outproxy to false.i2p
1516    * profiles.jsp: Add router version
1517
1518* 2008-04-26  0.6.1.33 released
1519
15202008-04-20 zzz
1521    * Outbound message/Reachability:
1522      - Fix a bug from -19 causing the persistent lease selection
1523        removed in -17 to be back again
1524      - Use netDb-listed-unreachable instead of detected-unreachable
1525        for exclusion of unreachable peers from selected leases,
1526        as there are potential anonymity problems with using
1527        detected-unreachable
1528      - Tweak logging some more
1529    * NetDb stats: Remove a couple more including the inefficient stat_identities
1530
15312008-04-17 zzz
1532    * Reachability:
1533      - Track unreachable peers persistently
1534        (i.e. separately from shitlist, and not cleared when they contact us)
1535      - Exclude detected unreachable peers from inbound tunnels
1536      - Exclude detected unreachable peers from selected leases
1537      - Exclude detected unreachable floodfill peers from lookups
1538      - Show unreachable status on profiles.jsp
1539
15402008-04-16 zzz
1541    * SSU/Reachability:
1542      - Extend shitlist time from 4-8m to 40-60m
1543      - Add some shitlist logging
1544      - Don't shitlist twice when unreachable on all transports
1545      - Exclude netDb-listed unreachable peers from inbound tunnels;
1546        this won't help much since there are very few of these now
1547      - Remove 10s delay on inbound UDP connections used for the
1548        0.6.1.10 transition
1549      - Track and display UDP connection direction on peers.jsp
1550      - Show shitlist status in-line on profiles.jsp
1551
15522008-04-15 zzz
1553    * SSU Reachability/PeerTestManager:
1554      - Back out strict peer ordering until we fix SSU
1555      - Back out persistent lease selection until we fix SSU
1556      - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
1557      - Increase known Charlie time to 10m; 3m wasn't enough
1558      - Don't continue retransmitting peer test if we know Charlie
1559      - Don't run multiple peer tests at once
1560      - Tighten test frequency range to 6.5-19.5m, was 0-26m
1561
15622008-04-12 zzz
1563    * Addressbook: Disallow '.-' and '-.' in host names
1564    * NTCP: Don't drop a connection unless both directions are idle;
1565            Fix idle time for outbound connections
1566    * Outbound message: Make sure cached lease is in current leaseSet
1567    * Stats: Put all NetworkDatabase stats in same group
1568    * TunnelPool: Stop building tunnels and leaseSets after client shutdown
1569    * i2psnark: Add locking to prevent two I2CP connections
1570
15712008-04-07 zzz
1572    * i2psnark:
1573      - Implement upstream bandwidth limiting
1574      - Fix a rare NPE at startup/shutdown
1575      - Really increase retries for .torrent fetch
1576    * profiles.jsp: Minor cleanup
1577    * DataHelper: Only format < 5s as ms
1578    * Eepget: Fix percentage output on command line eepget retries
1579    * Lower partipating message priority from 400 to 200
1580    * NTCP: Add a debug message
1581    * Outbound message: Minor cleanup
1582
15832008-03-30 zzz
1584    * ExploratoryPeerSelector: Try NonFailing even more
1585    * HostsTxtNamingService: Add reverse lookup support
1586    * Outbound message: Minor cleanup
1587    * i2psnark TrackerClient: Minor cleanup
1588    * checklist.txt: Minor edit
1589    * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
1590    * i2ptunnel.config: Change CVS client to mtn
1591    * netdb.jsp: Show leaseSet destinations using reverse lookup
1592    * profiles.jsp: First cut at showing floodfill data
1593
15942008-03-27 zzz
1595    * Send messages for the same destination to the same inbound
1596      lease to reduce out-of-order delivery.
1597    * ExploratoryPeerSelector: Back out the floodfill peer exclusion
1598      for now, as it prevents speed rating of those peers
1599
16002008-03-26 zzz
1601    * ReseedHandler: Support multiple urls,
1602      add netdb.i2p2.de as a 2nd default
1603
16042008-03-25 zzz
1605    * i2psnark:
1606      - Add support for secondary open trackers
1607      - Refactor and simplify the TrackerClient code
1608      - Add welterde's tracker to the default list
1609      - Don't have eepget retry announces
1610      - Slow down tracker contacts if they've failed for a while
1611      - Add some debug support showing connections (?p=2)
1612    * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
1613
16142008-03-22 zzz
1615    * NewsFetcher: Fix bug causing fetch every 10m
1616
16172008-03-22 zzz
1618    * Tunnel Testing:
1619      - Fix counting so it really takes 4 consecutive failures
1620        rather than 4 total to remove a tunnel
1621      - Credit or blame goes to the exploratory tunnel as well
1622        as the tunnel being tested
1623      - Adjust tunnel test timeout based on tunnel length
1624    * ExploratoryPeerSelector: Tweak logging
1625    * ProfileOrganizer: Adjust integration calculation again
1626    * build.xml: Add to help
1627    * checklist.txt: Tweak
1628    * readme.html: Fix forum links
1629    * netDb: Remove tunnel.testFailedTime
1630
16312008-03-19 zzz
1632    * ExploratoryPeerSelector:
1633      - Exclude floodfill peers
1634      - Tweak the HighCap vs. NonFailing decision; try NonFailing
1635        at least a minimum % of the time
1636    * i2psnark: Increase retries for .torrent fetch
1637    * IRC Proxy: Prevent mIRC from sending an alternate DCC request
1638      containing an IP
1639    * readme.html: Reorder some items
1640    * Stats: Add some more required stats
1641    * Streaming lib: Fix slow start to be exponential growth,
1642      fix congestion avoidance to be linear growth.
1643      Should speed up local connections a lot, and remote
1644      connections a little.
1645
16462008-03-14 zzz
1647    * Floodfill Search:
1648       - Prefer heard-from, unfailing, unshitlisted floodfill peers
1649
16502008-03-14 zzz
1651    * ProfileOrganizer:
1652       - Use more recent stats to calculate integration
1653       - Show that fast peers are also high-capacity on profiles.jsp
1654    * readme.html: Update Syndie link
1655    * TunnelPool: Update comments
1656    * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
1657      get rid of the 60s tunnel stats
1658      (effective as of .33 to provide cover)
1659
16602008-03-13 zzz
1661    * Floodfill Search:
1662       - Fix a bug that caused a single FloodfillOnlySearchJob
1663         instance to be run multiple times, with unpredictable
1664         results
1665       - Select ff peers randomly to improve reliability
1666       - Add some bulletproofing
1667
16682008-03-11 zzz
1669    * ProfileOrganizer:
1670       - Don't require a peer to be high-capacity to be
1671         well-integrated (not used for anything right now,
1672         but want to get it right for possible floodfill verification)
1673       - Don't fall back to median for high-capacity threshold
1674         if the mean is higher than the median, this prevents
1675         frequent large high-capacity counts
1676       - Fix high-capacity selector that picked one too many
1677    * Console: put well-integrated count back in the summary
1678
16792008-03-10 zzz
1680    * EepGet: Fix byte count for bytesTransferred status listeners
1681      (fixes command line status)
1682    * UpdateHandler:
1683       - Fix byte count display
1684       - Display final status on router console
1685       - Don't allow multiple update jobs to queue up
1686       - Increase max retries
1687       - Code cleanup
1688       - Don't show 'check for update' button when update in progress
1689       - Enhance error messages
1690    * NetDb: Comment out published netDb stats disabled for .32
1691
16922008-03-08 zzz
1693    * TunnelPeerSelectors: Implement strict ordering of peers,
1694      based on XOR distance from a random hash
1695      separately generated for each tunnel pool
1696
16972008-03-07 zzz
1698    * Naming: Optimize lookups for a destkey
1699    * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
1700      - Prevent peers with matching IPs from joining same tunnel.
1701        Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
1702        Default is 2 (disallow routers in same /16).
1703        Set with router.defaultPool.IPRestriction=x
1704      - Comment out unused RebuildPeriod pool setting
1705      - Add random key to pool in preparation for XOR peer ordering
1706    * SusiMail: Add 'Create Account' link
1707    * TunnelDispatcher: Change a common wtf error to a warn
1708
17092008-03-05 zzz
1710    * Naming: Make HostsTxt the sole default NamingService
1711      (was Meta = PetName + HostsTxt)
1712    * Naming: Add two new experimental NamingServices, EepGet and Exec,
1713      not enabled by default -
1714      see source comments in core/java/src/net/i2p/client/naming
1715      for configuration instructions
1716    * i2psnark: Don't do a naming lookup for Base64 destkeys
1717    * i2psnark: Add a StartAll button
1718    * Stats: Add code to disable most stats to save memory.
1719      Set on configstats.jsp or set stat.full=false to disable the stats.
1720      (true by default for now)
1721
17222008-03-09 Complication
1723    * Give the Jetty build file ability to ask permission
1724      before downloading the Jetty archive from the web,
1725      and to verify its SHA1 + MD5 hashes. Adjust the main build file
1726      in accordance with this change.
1727    * Improve the release checklist.
1728
1729* 2008-03-09  0.6.1.32 released
1730
17312008-03-07 zzz
1732    * Update news and version numbers
1733
17342008-03-01 zzz
1735    * Fix netdb.knownLeaseSets count reported by floodfill routers
1736      (was broken by -3)
1737
17382008-02-27 zzz
1739    * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
1740    * i2psnark: Remove orion and gaytorrents from default tracker list
1741    * Remove orion from jump list and from eepsite_index.html
1742    * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
1743    * Capitalize OutboundMessageDistributor job name
1744    * TunnelPool: Add a warning if all tunnels are backlogged
1745
17462008-02-26 zzz
1747    * Reintroduce NTCP backlog pushback, with switch back to
1748      previous tunnel when no longer backlogged
1749    * Catch an nio exception in an NTCP logging statement if loglevel is WARN
1750    * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
1751
17522008-02-21 zzz
1753    * Raise inbound default bandwidth to 32KBps
1754    * Fix config.jsp that showed 0KBps share bandwidth by default
1755
17562008-02-19 zzz
1757    * Addressbook: Disallow '--' in host names except in IDN,
1758      add some reserved host names
1759    * I2PTunnel: Clarify edit form
1760    * NetDb: Remove many stats from netDb, effective as of .32
1761    * profiles.jsp: Display capabilities
1762    * Tunnels: Enforce max tunnel length of 8, catch an index error
1763      http://forum.i2p/viewtopic.php?t=2561
1764
17652008-02-16 zzz
1766    * Fix race in TunnelDispatcher which caused
1767      participating tunnel count to seesaw -
1768      should increase network capacity
1769    * Leave participating tunnels in 10s batches for efficiency
1770    * Update participating tunnel ratestat when leaving a tunnel too,
1771      to generate a smoother graph
1772    * Fix tunnel.participatingMessageCount stat to include all
1773      participating tunnels, not just outbound endpoints
1774    * Simplify Expire Tunnel job name
1775
17762008-02-13 zzz
1777    * PersistentDataStore: Write out 300 records every 10 min
1778      rather than 1 every 10 sec;
1779      Don't store leasesets to disk or read them in
1780    * Combine rates for pools with the same length setting
1781      in the new tunnel build algorithm
1782    * Clarify a log message in the UpdateHandler
1783
17842008-02-13 zzz
1785    * Make graphs clickable to get larger graphs
1786    * Change SimpleTimer CRIT to a WARN, increase threshold
1787    * Checklist update
1788
17892008-02-11 welterde
1790    * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
1791
17922008-02-10 zzz
1793    * Add new tunnel build algorithm (preliminary)
1794    * Change NTCP backlogged message from error to warning
1795    * Checklist updates
1796
1797* 2008-02-10  0.6.1.31 released
1798
17992008-02-10 Complication
1800    * Update news and version numbers
1801
18022008-02-06 zzz
1803    * build.xml: Add some apps to javadoc
1804    * checklist.txt: Add some things
1805    * news.xml: make links relative
1806    * runplain.sh: Add some comments
1807    * wrapper.config: Add some comments
1808
18092008-02-05 Complication
1810    * Change the dates too (sorry for such forgetfulness!)
1811
18122008-02-04 Complication
1813    * Also use the new key for checking, and add it into news.xml
1814
18152008-02-04 Complication
1816    * Added my release signing key into TrustedUpdate.java
1817
18182008-01-31 zzz
1819    * NewsFetcher: Change fetch failed from error to warning
1820    * installer: Fix URL and "email"
1821    * checklist.txt: New release checklist
1822
18232008-01-29 zzz
1824    * Addressbook: Change default subscription
1825    * ConfigUpdateHandler: Change default news URL
1826    * initialNews.xml: Update version to .31
1827    * news.xml: More updates
1828    * hosts.txt: Add i2p-projekt.i2p
1829    * readme.html: More URL updates
1830    * SusiDNS: Change references to default subscription
1831
18322008-01-28 zzz
1833    * news.xml: Updates, still preliminary
1834    * ReseedHandler: Change default URL
1835    * i2ptunnel.config: Change default outproxies
1836    * readme.html: Change *.i2p.net URLs
1837    * help.jsp: Change *.i2p.net URLs
1838    * eepsite_index.html: Change stats.i2p addressbook subscription URL
1839    * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
1840
1841* 2008-01-28  0.6.1.30-20 converted from CVS to MTN
1842
18432008-01-08 zzz
1844    * addressbook: Limit size of subscribed hosts.txt,
1845        don't save old etag or last-modified data
1846    * EepGet: Add some logging,
1847        enforce size limits even when size not in returned header,
1848        don't return old etag or last-modified data,
1849        don't call transferFailed listener more than once
1850    * Sign my update signing key
1851    * NewsFetcher: add last-modified support, reduce number of retries
1852    * Error pages: add icon and logo,
1853        clarify 'destination not found' and 'proxy not found' pages
1854
18552008-01-07 zzz
1856    * profiles.jsp formatting cleanup
1857    * NTCP: Reduce max idle time from 60m to 20m
1858    * NTCP: Fix idle time on connections with zero messages,
1859      correctly drop these connections
1860
18612008-01-03 zzz
1862    * addressbook: Do basic validation of hostnames and destkeys
1863    * susidns: Add support for the private addressbook,
1864      update the text and links somewhat
1865
18662008-01-02 zzz
1867    * Add stats.i2p to the jump list
1868    * Impose 20MB limit on POSTs and catch OOMs in POST
1869    * eepsite_index.html: add stats.i2p services
1870    * addressbook: log source of new keys; disallow dests > 516 bytes
1871    * addressbook: convert hostnames to lower case to prevent duplicates
1872    * susidns: generalize references to orion
1873
18742007-12-29 zzz
1875    * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
1876    * Allow commas in router.trustedUpdateKeys and router.updateURL again
1877    * Change default news host from dev.i2p.net to dev.i2p
1878    * Change jetty timeout from 30 to 60 sec (thanks sponge!)
1879
18802007-12-28 zzz
1881    * Add zzz's update signing key
1882
18832007-12-26 Complication
1884    * Improve reseed handler (less repetitive code,
1885      avoid reporting errors when less than 10% of fetches fail)
1886
18872007-12-26 Complication
1888    * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
1889      and unescape them in DataHelper.loadProps() to support
1890      saving and loading config properties with line breaks
1891    * Change the update URLs textbox into a textarea like keys have,
1892      so different URLs go on different lines
1893    * Modify TrustedUpdate to provide a method which supplies a key list
1894      delimited with CR LF line breaks
1895    * Modify DEFAULT_UPDATE_URL to supply a default URL list
1896      delimited with CR LF line breaks
1897    * Modify selectUpdateURL() to handle URL lists
1898      delimited by any kind of line breaks
1899    * Start saving trusted update keys
1900    * Improve formatting on configupdate.jsp
1901
19022007-12-22 zzz
1903    * Add support for multiple update URLs
1904    * Change default for update to use i2p proxy,
1905      add several URLs as defaults
1906    * Enable trusted key form on configupdate.jsp
1907    * Clarify the 'destination not found' error page
1908
19092007-12-16 zzz
1910    * i2psnark: remove anonymitytracker from default list
1911
19122007-12-10 zzz
1913    * Fix NPE in CLI TrustedUpdate keygen
1914
19152007-12-02 Complication
1916    * Commit SAM v2 patch from mkvore (thank you!)
1917    * Minor reformatting to preserve consistent whitespace
1918      in old SAM classes (new classes unaltered)
1919
19202007-12-01 Complication
1921    * Separate the checks "does Jetty .zip file need downloading"
1922      and "does Jetty .zip file need extracting" in the Jetty buildfile.
1923      First download (unless already done), then extract (unless done).
1924
19252007-11-26 zzz
1926    * i2psnark: add timeout for receive inactivity
1927
19282007-11-24 zzz
1929    * i2psnark: increase streaming lib write timeout to 240 sec and change
1930      timeout action from "ping" to "disconect", as the fix in .30 to
1931      honor options on outbound connections led to hung outbound connections
1932      (bitfield never transmitted, connection never dropped)
1933
19342007-11-06 jrandom
1935    * add i2host.i2p to the jump list
1936
19372007-10-11 zzz
1938    * IRC Proxy: Fix several possible anonymity holes:
1939      - Block CTCP in NOTICE messages
1940      - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
1941      - Check for lower case commands
1942    (Thanks sponge!)
1943
19442007-10-07  jrandom
1945    * back out the NTCP backlog pushback, as it could be used to mount an
1946      active anonymity attack.
1947
1948* 2007-10-07  0.6.1.30 released
1949
19502007-10-07  Complication
1951    * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
1952      broke retrying.
1953
19542007-09-27  zzz
1955    * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
1956    * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
1957      fix some of the sorting
1958
19592007-09-22  zzz
1960    * Send messages for the same destination out the same outbound
1961      tunnel to reduce out-of-order delivery.
1962
19632007-09-19  zzz
1964    * i2psnark: Fix broken multifile torrent Delete;
1965        cleanup Storage resources in AddTorrent;
1966        don't autostart torrent after Create
1967
19682007-09-18  zzz
1969    * eepsite_index.html: Add links to trevorreznik address book
1970    * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
1971    * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
1972    * i2psnark: Don't make outbound connections to already-connected peers
1973    * i2psnark: Debug logging cleanup
1974
19752007-09-14  zzz
1976    * eepget: Increase header timeout to 45s
1977    * HTTP proxy: Return a better error message for localhost requests
1978    * tunnels: Fix PooledTunnelCreatorConfig memory leak
1979
19802007-09-09  zzz
1981    * eepget: Add support for Last-Modified and If-Modified-Since
1982    * addressbook: Finish incomplete support for Last-Modified
1983
19842007-09-08  zzz
1985    * eepget: Copy over SocketTimeout.java file from syndie
1986
19872007-09-07  jrandom
1988    * eepget: Merge timeout support from syndie
1989
1990* 2007-08-23  0.6.1.29 released
1991
19922007-08-12  zzz
1993    * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
1994      tweak the eepsite and troubleshooting sections
1995
19962007-08-11  zzz
1997    * Add stats for individual tunnel rates (nice when graphed)
1998    * i2psnark: Fix outbound tunnel nickname
1999
20002007-08-05  Complication
2001    * Update the sharing calculator on config.jsp
2002      and explain the trade-off even more thoroughly.
2003
20042007-08-04  Complication
2005    * Lower the threshold between the K and L bandwidth class,
2006      so that K is now < 12 KB/s, instead of <= 16 KB/s.
2007      Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
2008      participate in routing, if they keep the default share percentage.
2009
20102007-07-16  zzz
2011    * i2psnark: Add tooltip info for choked/uninterested
2012
20132007-07-16  zzz
2014    * Make selection of graphed data configurable via configstats.jsp,
2015      remove most of the default graphs to save some memory
2016
20172007-07-15  zzz
2018    * Add current values to graph legends
2019    * Fix up previous Rate fix to check for divide by zero
2020
20212007-07-14  Complication
2022    * Take the post-download routerInfo size check back out of ReseedHandler,
2023      since it wasn't helpful, and a lower limit caused false warnings.
2024    * Give EepGet ability to enforce a min/max HTTP response size.
2025    * Enforce a maximum response size of 8 MB when ReseedHandler
2026      downloads into a ByteArrayOutputStream.
2027    * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
2028      change invocation from RouterConsoleRunner accordingly.
2029    * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
2030      provide status reports to indicate the progress of reseeding.
2031    * Enable icon for default eepsite, and the index page
2032      of the router console (more later).
2033
20342007-07-14  zzz
2035    * Clean up graphs.jsp - set K=1024 where appropriate,
2036      output image sizes in html, catch ooms, other minor tweaks
2037    * Fix current event count truncation which fixes graphs with low
2038      60-sec event counts displaying high values
2039      (bw.* and router.* graphs for example were 1.5x too high)
2040      Affects all "events per period" (non-lifetime) counts.
2041
20422007-07-09  zzz
2043    * i2psnark: give a better error message for a non-i2p torrent
2044
20452007-07-07  zzz
2046    * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
2047      SSU will notify/restart NTCP when the external address changes.
2048      Now you can enable inbound TCP without a static IP or dyndns service.
2049
20502007-07-04  zzz
2051    * Display calculated share bandwidth and remove load testing
2052      on config.jsp
2053
20542007-07-01  zzz
2055    * Replace broken option i2np.udp.alwaysPreferred with
2056      i2np.udp.preferred and adjust UDP bids; possible settings are
2057      "false" (default), "true", and "always".
2058      Default setting results in same behavior as before
2059      (NTCP is preferred unless it isn't established and UDP is established).
2060      Use to compare NTCP and UDP transports.
2061
20622007-06-27  jrandom
2063    * fix for a streaming lib bug that could leave a thread waiting
2064      indefinitely (thanks Complication!)
2065
20662007-06-16  Complication
2067    * First pass on EepGet and ReseedHandler improvements,
2068      please avoid use on routers which matter!
2069    * Give EepGet ability of downloading into an OutputStream,
2070      such as the ByteArrayOutputStream of ReseedHandler.
2071    * Detect failure to reseed better, report it persistently
2072      and more verbosely, provide a link to logs
2073      and suggest manual reseed.
2074
20752007-05-06  Complication
2076    * Fix the build.xml file, so the preppkg build target won't try copying files
2077      which became deprecated with the old Syndie (thanks for alerting, itsu!)
2078
20792007-03-31  zzz
2080    * Add trevorreznik jump server to the http proxy error page
2081    * Add anonymity to the trackers supporting details links in i2psnark
2082
20832007-03-24  zzz
2084    * Remove Syndie from build targets and navbar
2085
20862007-03-22  zzz
2087    * i2psnark tracker handling tweaks:
2088    -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
2089    -   Add Base URL to tracker list configuration
2090    -   Web page links built from tracker list Base URLs
2091    -   Only build and sort tracker list once
2092    -   Add anonymityWeb tracker to default list
2093    -   Add tooltip info for TrackerErrs
2094    -   Stop torrent if not registered with tracker
2095    -   Mark temp files as delete on exit
2096
20972007-03-18  zzz
2098    * i2psnark: Cleanup some handling of saved partial pieces
2099    * i2psnark: Put bit counting in Bitfield.java for efficiency
2100    * i2psnark: Save torrent completion state in i2psnark.config
2101
2102* 2007-03-17  0.6.1.28 released
2103
21042007-03-13  zzz
2105    * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
2106
21072007-03-12  jrandom
2108    * dodge a race on startup (thanks zzz!)
2109
21102007-03-10  zzz
2111    * Streaming lib: Change initial RTT deviation from RTT to RTT/2
2112      (RFC 2988) to reduce early RTO values
2113
21142007-03-08  zzz
2115    * i2psnark changes to improve upload performance:
2116    *  Implement total uploader limit (10)
2117    *  Don't timeout non-piece messages out
2118    *  Change chunk size to 32K (was 64K)
2119    *  Change request limit to 64K (was 256K)
2120    * i2psnark: Disconnect from seeds when complete
2121
21222007-03-07  zzz
2123    * Remove dynamic router keys from config.jsp
2124
21252007-03-07  zzz
2126    * Streaming lib changes to improve upstream performance during congestion:
2127    *   Change min window size from 12 to 1
2128    *   Change max timeout from 10 to 45 sec
2129    *   Change initial timeout from 10 to 15 sec
2130    *   Change intial window size for i2psnark from 12 to 1
2131    *   Change slow start growth rate for i2psnark from 1/2 to 1
2132
21332007-03-04  zzz
2134    * Update eepsite_index.html
2135
21362007-03-03  zzz
2137    * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
2138    * Add a updaterWithJetty build target
2139
21402007-03-03  zzz
2141    * Implement priority sending for NTCP
2142    * Disable trimForOverload() in tunnel BuildExecutor which
2143      was preventing tunnel builds when outbound traffic was high
2144      (i.e. most of the time when running i2psnark)
2145
21462007-02-28  zzz
2147    * i2psnark: File reopen cleanup
2148
21492007-02-28  zzz
2150    * i2psnark: Add peer details to web page
2151
2152* 2007-02-15  0.6.1.27 released
2153
21542007-02-15  jrandom
2155    * Limit the whispering floodfill sends to at most 3 randomly
2156      chosen from the known floodfill peers
2157
21582007-02-14  jrandom
2159    * Don't filter out KICK and H(ide oper status) IRC messages
2160      (thanks Takk and postman!)
2161
21622007-02-13  jrandom
2163    * Tell our peers about who we know in the floodfill netDb every
2164      6 hours or so, mitigating the situation where peers lose track
2165      of floodfill routers.
2166    * Disable the Syndie updater (people should use the new Syndie,
2167      not this one)
2168    * Disable the eepsite tunnel by default
2169
21702007-01-30  zzz
2171    * i2psnark: Don't hold _snarks lock while checking a snark,
2172      so web page is responsive at startup
2173
21742007-01-29  zzz
2175    * i2psnark: Add NickyB tracker
2176
21772007-01-28  zzz
2178    * i2psnark: Don't hold sendQueue lock while flushing output,
2179      to make everything run smoother
2180
21812007-01-27  zzz
2182    * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
2183
21842007-01-20  Complication
2185    * Drop overlooked comment
2186
21872007-01-20  Complication
2188    * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
2189      instead of System, so setting a reseed URL in advanced configuration has effect.
2190    * Clean out obsolete reseed code from ConfigNetHandler.
2191
21922007-01-20  zzz
2193    * i2psnark: More choking rotation tweaks
2194    * Improve performance by not reading in the whole
2195      piece from disk for each request. A huge memory savings
2196      on 1MB torrents with many peers.
2197
21982007-01-17  zzz
2199    * Add new HTTP Proxy error message for non-http protocols
2200
22012007-01-17  zzz
2202    * Add note on Syndie index.html steering people to new Syndie
2203
22042007-01-16  zzz
2205    * i2psnark: Fix crash when autostart off and
2206      tcrrent started manually
2207
22082007-01-16  zzz
2209    * i2psnark: Fix bug caused by last i2psnark checkin
2210      (ConnectionAcceptor not started)
2211    * Don't start PeerCoordinator, ConnectionAcceptor,
2212      and TrackerClient unless starting torrent
2213
22142007-01-15  jrandom
2215    * small guard against unnecessary streaming lib reset packets
2216      (thanks Complication!)
2217
22182007-01-15  zzz
2219    * i2psnark: Add 'Stop All' link on web page
2220    * Add some links to trackers and forum on web page
2221    * Don't start tunnel if 'Autostart' unchecked
2222    * Fix torrent restart bug by reopening file descriptors
2223
22242007-01-14  zzz
2225    * i2psnark: Improvements for torrents with > 4 leechers:
2226      choke based on upload rate when seeding, and
2227      be smarter and fairer about rotating choked peers.
2228    * Handle two common i2psnark OOM situations rather
2229      than shutting down the whole thing.
2230    * Fix reporting to tracker of remaining bytes for
2231      torrents > 4GB (but ByteMonsoon still has a bug)
2232
22332006-10-29  zzz
2234    * i2psnark: Fix and enable generation of multifile torrents,
2235      print error if no tracker selected at create-torrent,
2236      fix stopping a torrent that hasn't started successfully,
2237      add eBook and GayTorrents trackers to form,
2238      web page formatting tweaks
2239
2240* 2006-10-10  0.6.1.26 released
2241
22422006-10-29  Complication
2243    * Ensure we get NTP samples from more diverse sources
2244      (0.pool.ntp.org, 1.pool.ntp.org, etc)
2245    * Discard median-based peer skew calculator as framed average works,
2246      and adjusting its percentage can make it behave median-like
2247    * Require more data points (from at least 20 peers)
2248      before considering a peer skew measurement reliable
2249
22502006-10-10  jrandom
2251    * Removed the status display from the console, as its more confusing
2252      than informative (though the content is still displayed in the HTML)
2253
22542006-10-08  Complication
2255    * Add a framed average peer clock skew calculator
2256    * Add config property "router.clockOffsetSanityCheck" to determine
2257      if NTP-suggested clock offsets get sanity checked (default "true")
2258    * Reject NTP-suggested clock offsets if they'd increase peer clock skew
2259      by more than 5 seconds, or make it more than 20 seconds total
2260    * Decrease log level in getMedianPeerClockSkew()
2261
22622006-09-29  zzz
2263    * i2psnark: Second try at synchronization fix - synch addRequest()
2264      completely rather than just portions of it and requestNextPiece()
2265
22662006-09-27  jrandom
2267    * added HMAC-SHA256
2268    * properly use CRLF with EepPost
2269    * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
2270    * PBE session key generation (with 1000 rounds of SHA256)
2271    * misc SDK helper functions
2272
22732006-09-26  Complication
2274    * Take back another inadverent logging change in NTCPConnection
2275
22762006-09-26  Complication
2277    * Take back an accidental log level change
2278
22792006-09-26  Complication
2280    * Subclass from Clock a RouterClock which can access router transports,
2281      with the goal of developing it to second-guess NTP results
2282    * Make transports report clock skew in seconds
2283    * Adjust renderStatusHTML() methods accordingly
2284    * Show average for NTCP clock skews too
2285    * Give transports a getClockSkews() method to report clock skews
2286    * Give transport manager a getClockSkews() method to aggregate results
2287    * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
2288      (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
2289    * Extra explicitness in NTCP classes to denote unit of time.
2290    * Fix some places in NTCPConnection where milliseconds and seconds were confused
2291
22922006-09-25  zzz
2293    * i2psnark: Paranoid copy before writing pieces,
2294      recheck files on completion, redownload bad pieces
2295    * i2psnark: Don't contact tracker as often when seeding
2296
22972006-09-24  zzz
2298    * i2psnark: Add some synchronization to prevent rare problem
2299      after restoring orphan piece
2300
23012006-09-20  zzz
2302    * i2psnark: Eliminate duplicate requests caused by i2p-bt's
2303      rapid choke/unchokes
2304    * i2psnark: Truncate long TrackerErr messages on web page
2305
23062006-09-16  zzz
2307    * i2psnark: Implement retransmission of requests. This
2308      eliminates one cause of complete stalls with a peer.
2309      This problem is common on torrents with a small number of
2310      active peers where there are no choke/unchokes to kickstart things.
2311
23122006-09-13  zzz
2313    * i2psnark: Fix restoral of partial pieces broken by last patch
2314
23152006-09-13  zzz
2316    * i2psnark: Mark a peer's requests as unrequested on disconnect,
2317      preventing premature end game
2318    * i2psnark: Randomize selection of next piece during end game
2319    * i2psnark: Don't restore a partial piece to a peer that is already working on it
2320    * i2psnark: strip ".torrent" on web page
2321    * i2psnark: Limit piece size in generated torrent to 1MB max
2322
23232006-09-09  zzz
2324    * i2psnark: Add "Stalled" indication and stat totals on web page
2325
23262006-09-09  zzz
2327    * i2psnark: Fix bug where new peers would always be sent an "interested"
2328      regardless of actual interest
2329    * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
2330      memory and efficiency problems
2331
2332* 2006-09-09  0.6.1.25 released
2333
23342006-09-08  jrandom
2335    * Tweak the PRNG logging so it only displays error messages if there are
2336      problems
2337    * Disable dynamic router keys for the time being, as they don't offer
2338      meaningful security, may hurt the router, and makes it harder to
2339      determine the network health.  The code to restart on SSU IP change is
2340      still enabled however.
2341    * Disable tunnel load testing, leaning back on the tiered selection for
2342      the time being.
2343    * Spattering of bugfixes
2344
23452006-09-07  zzz
2346    * i2psnark: Increase output timeout from 2 min to 4 min
2347    * i2psnark: Orphan debug msg cleanup
2348    * i2psnark: More web rate report cleanup
2349
23502006-09-05  zzz
2351    * i2psnark: Implement basic partial-piece saves across connections
2352    * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
2353      from dropping us for inactivity but also renders the 2-minute transmit-inactivity
2354      code in i2psnark ineffective. Will have to research why there is transmit but
2355      not receive inactivity code. With the current connection limit of 24 peers
2356      we aren't in any danger of keeping out new peers by keeping inactive ones.
2357    * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
2358    * i2psnark: Fix dropped chunk handling
2359    * i2psnark: Web rate report cleanup
2360
23612006-09-04  zzz
2362    * i2psnark: Report cleared trackerErr immediately
2363    * i2psnark: Add trackerErr reporting after previous success; retry more quickly
2364    * i2psnark: Set up new connections more quickly
2365    * i2psnark: Don't delay tracker fetch when setting up lots of connections
2366    * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
2367
23682006-09-04  zzz
2369    * Enable pipelining in i2psnark
2370    * Make i2psnark tunnel default be 1 + 0-1
2371
23722006-09-03  zzz
2373    * Add rate reporting to i2psnark
2374
23752006-09-03  Complication
2376    * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
2377    * Print messages about addressbook size to give better overview
2378    * Enable delete function in published addressbook
2379
23802006-08-21  Complication
2381    * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
2382
23832006-08-03  jrandom
2384    * Decrease the recently modified tunnel building timeout, though keep
2385      the scaling on their processing
2386
23872006-07-31  jrandom
2388    * Increase the tunnel building timeout
2389    * Avoid a rare race (thanks bar!)
2390    * Fix the bandwidth capacity publishing code to factor in share percentage
2391      and outbound throttling (oops)
2392
23932006-07-29  Complication
2394    * Treat NTP responses from unexpected stratums like failures
2395
2396* 2006-07-28  0.6.1.24 released
2397
23982006-07-28  jrandom
2399    * Don't try to reverify too many netDb entries at once (thanks
2400      cervantes and Complication!)
2401
24022006-07-28  jrandom
2403    * Actually fix the threading deadlock issue in the netDb (removing
2404      the synchronized access to individual kbuckets while validating
2405      individual entries) (thanks cervantes, postman, frosk, et al!)
2406
2407* 2006-07-27  0.6.1.23 released
2408
24092006-07-27  jrandom
2410    * Cut down NTCP connection establishments once we know the peer is skewed
2411      (rather than wait for full establishment before verifying)
2412    * Removed a lock on the stats framework when accessing rates, which
2413      shouldn't be a problem, assuming rates are created (pretty much) all at
2414      once and merely updated during the lifetime of the jvm.
2415
24162006-07-27  jrandom
2417    * Further NTCP write status cleanup
2418    * Handle more oddly-timed NTCP disconnections (thanks bar!)
2419
24202006-07-26  jrandom
2421    * When dropping a netDb router reference, only accept newer
2422      references as part of the update check
2423    * If we have been up for a while, don't accept really old
2424      router references (published 2 or more days ago)
2425    * Drop router references once they are no longer valid, even if
2426      they were allowed in due to the lax restrictions on startup
2427
24282006-07-26  jrandom
2429    * Every time we create a new router identity, add an entry to the
2430      new "identlog.txt" text file in the I2P install directory.  For
2431      debugging purposes, publish the count of how many identities the
2432      router has cycled through, though not the identities itself.
2433    * Cleaned up the way the multitransport shitlisting worked, and
2434      added per-transport shitlists
2435    * When dropping a router reference locally, first fire a netDb
2436      lookup for the entry
2437    * Take the peer selection filters into account when organizing the
2438      profiles (thanks Complication!)
2439    * Avoid some obvious configuration errors for the NTCP transport
2440      (invalid ports, "null" ip, etc)
2441    * Deal with some small NTCP bugs found in the wild (unresolveable
2442      hosts, strange network discons, etc)
2443    * Send our netDb info to peers we have direct NTCP connections to
2444      after each 6-12 hours of connection uptime
2445    * Clean up the NTCP reading and writing queue logic to avoid some
2446      potential delays
2447    * Allow people to specify the IP that the SSU transport binds on
2448      locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
2449
2450* 2006-07-18  0.6.1.22 released
2451
24522006-07-18  jrandom
2453    * Add a failsafe to the NTCP transport to make sure we keep
2454      pumping writes when we should.
2455    * Properly reallow 16-32KBps routers in the default config
2456      (thanks Complication!)
2457
24582006-07-16  Complication
2459    * Collect tunnel build agree/reject/expire statistics
2460      for each bandwidth tier of peers (and peers of unknown tiers,
2461      even if those shouldn't exist)
2462
24632006-07-14  jrandom
2464    * Improve the multitransport shitlisting (thanks Complication!)
2465    * Allow routers with a capacity of 16-32KBps to be used in tunnels under
2466      the default configuration (thanks for the stats Complication!)
2467    * Properly allow older router references to load on startup
2468      (thanks bar, Complication, et al!)
2469    * Add a new "i2p.alwaysAllowReseed" advanced config property, though
2470      hopefully today's changes should make this unnecessary (thanks void!)
2471    * Improved NTCP buffering
2472    * Close NTCP connections if we are too backlogged when writing to them
2473
24742006-07-04  jrandom
2475    * New NIO-based tcp transport (NTCP), enabled by default for outbound
2476      connections only.  Those who configure their NAT/firewall to allow
2477      inbound connections and specify the external host and port
2478      (dyndns/etc is ok) on /config.jsp can receive inbound connections.
2479      SSU is still enabled for use by default for all users as a fallback.
2480    * Substantial bugfix to the tunnel gateway processing to transfer
2481      messages sequentially instead of interleaved
2482    * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
2483      GNU/Classpath based JVMs
2484    * Adjust the Fortuna PRNG's pooling system to reduce contention on
2485      refill with a background thread to refill the output buffer
2486    * Add per-transport support for the shitlist
2487    * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
2488      contention
2489
24902006-07-01  Complication
2491    * Ensure that the I2PTunnel web interface won't update tunnel settings
2492      for shared clients when a non-shared client is modified
2493      (thanks for spotting, BarkerJr!)
2494
24952006-06-14  cervantes
2496    * Small tweak to I2PTunnel CSS, so it looks better with desktops
2497      that use Bitstream Vera fonts @ 96 dpi
2498
2499* 2006-06-14  0.6.1.21 released
2500
25012006-06-13  jrandom
2502    * Use a minimum uptime of 2 hours, not 4 (oops)
2503
25042006-06-13  jrandom
2505    * Cut down the proactive rejections due to queue size - if we are
2506      at the point of having decrypted the request off the queue, might
2507      as well let it through, rather than waste that decryption
2508
25092006-06-11  Kloug
2510    * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
2511      outstanding pings/pongs
2512
25132006-06-10  jrandom
2514    * Further reduction in proactive rejections
2515
25162006-06-09  jrandom
2517    * Don't let the pending tunnel request queue grow beyond reason
2518      (letting things sit for up to 30s when they fail after 10s
2519      seems a bit... off)
2520
25212006-06-08  jrandom
2522    * Be more conservative in the proactive rejections
2523
25242006-06-04  Complication
2525    * Trim out sending a blank line before USER in susimail.
2526      Seemed to break in rare cases, thanks for reporting, Brachtus!
2527
2528* 2006-06-04  0.6.1.20 released
2529
25302006-06-04  jrandom
2531    * Reduce the SSU ack frequency
2532    * Tweaked the tunnel rejection settings to reject less aggressively
2533
25342006-05-31  jrandom
2535    * Only send netDb searches to the floodfill peers for the time being
2536    * Add some proof of concept filters for tunnel participation.  By default,
2537      it will skip peers with an advertised bandwith of less than 32KBps or
2538      an advertised uptime of less than 2 hours.  If this is sufficient, a
2539      safer implementation of these filters will be implemented.
2540
2541* 2006-05-18  0.6.1.19 released
2542
25432006-05-18  jrandom
2544    * Made the SSU ACKs less frequent when possible
2545
25462006-05-17  Complication
2547    * Fix some oversights in my previous changes:
2548      adjust some loglevels, make a few statements less wasteful,
2549      make one comparison less confusing and more likely to log unexpected values
2550
25512006-05-17  jrandom
2552    * Make the peer page sortable
2553    * SSU modifications to cut down on unnecessary connection failures
2554
25552006-05-16  jrandom
2556    * Further shitlist randomizations
2557    * Adjust the stats monitored for detecting cpu overload when dropping new
2558      tunnel requests
2559
25602006-05-15  jrandom
2561    * Add a load dependent throttle on the pending inbound tunnel request
2562      backlog
2563    * Increased the tunnel test failure slack before killing a tunnel
2564
25652006-05-13  Complication
2566    * Separate growth factors for tunnel count and tunnel test time
2567    * Reduce growth factors, so probabalistic throttle would activate
2568    * Square probAccept values to decelerate stronger when far from average
2569    * Create a bandwidth stat with approximately 15-second half life
2570    * Make allowTunnel() check the 1-second bandwidth for overload
2571      before doing allowance calculations using 15-second bandwidth
2572    * Tweak the overload detector in BuildExecutor to be more sensitive
2573      for rising edges, add ability to initiate tunnel drops
2574    * Add a function to seek and drop the highest-rate participating tunnel,
2575      keeping a fixed+random grace period between such drops.
2576      It doesn't seem very effective, so disabled by default
2577      ("router.dropTunnelsOnOverload=true" to enable)
2578
25792006-05-11  jrandom
2580    * PRNG bugfix (thanks cervantes and Complication!)
2581
2582* 2006-05-09  0.6.1.18 released
2583
25842006-05-09  jrandom
2585    * Further tunnel creation timeout revamp
2586
25872006-05-07  Complication
2588    * Fix problem whereby repeated calls to allowed() would make
2589      the 1-tunnel exception permit more than one concurrent build
2590
25912006-05-06  jrandom
2592    * Readjust the tunnel creation timeouts to reject less but fail earlier,
2593      while tracking the extended timeout events.
2594
25952006-05-04  jrandom
2596    * Short circuit a highly congested part of the stat logging unless its
2597      required (may or may not help with a synchronization issue reported by
2598      andreas)
2599
26002006-05-03  Complication
2601    * Allow a single build attempt to proceed despite 1-minute overload
2602      only if the 1-second rate shows enough spare bandwidth
2603      (e.g. overload has already eased)
2604
26052006-05-02  Complication
2606    * Correct a misnamed property in SummaryHelper.java
2607      to avoid confusion
2608    * Make the maximum allowance of our own concurrent
2609      tunnel builds slightly adaptive: one concurrent build per 6 KB/s
2610      within the fixed range 2..10
2611    * While overloaded, try to avoid completely choking our own build attempts,
2612      instead prefer limiting them to 1
2613
26142006-05-01  jrandom
2615    * Adjust the tunnel build timeouts to cut down on expirations, and
2616      increased the SSU connection establishment retransmission rate to
2617      something less glacial.
2618    * For the first 5 minutes of uptime, be less aggressive with tunnel
2619      exploration, opting for more reliable peers to start with.
2620
26212006-05-01  jrandom
2622    * Fix for a netDb lookup race (thanks cervantes!)
2623
26242006-04-27  jrandom
2625    * Avoid a race in the message reply registry (thanks cervantes!)
2626
26272006-04-27  jrandom
2628    * Fixed the tunnel expiration desync code (thanks Complication!)
2629
2630* 2006-04-23  0.6.1.17 released
2631
26322006-04-19  jrandom
2633    * Adjust how we pick high capacity peers to allow the inclusion of fast
2634      peers (the previous filter assumed an old usage pattern)
2635    * New set of stats to help track per-packet-type bandwidth usage better
2636    * Cut out the proactive tail drop from the SSU transport, for now
2637    * Reduce the frequency of tunnel build attempts while we're saturated
2638    * Don't drop tunnel requests as easily - prefer to explicitly reject them
2639
2640* 2006-04-15  0.6.1.16 released
2641
26422006-04-15  jrandom
2643    * Adjust the proactive tunnel request dropping so we will reject what we
2644      can instead of dropping so much (but still dropping if we get too far
2645      overloaded)
2646
26472006-04-14  jrandom
2648    * 0 isn't very random
2649    * Adjust the tunnel drop to be more reasonable
2650
26512006-04-14  jrandom
2652    * -28.00230115311259 is not between 0 and 1 in any universe I know.
2653    * Made the bw-related tunnel join throttle much simpler
2654
26552006-04-14  jrandom
2656    * Make some more stats graphable, and allow some internal tweaking on the
2657      tunnel pairing for creation and testing.
2658
2659* 2006-04-13  0.6.1.15 released
2660
26612006-04-12  jrandom
2662    * Added a further failsafe against trying to queue up too many messages to
2663      a peer.
2664
26652006-04-12  jrandom
2666    * Watch out for failed syndie index fetches (thanks bar!)
2667
26682006-04-11  jrandom
2669    * Throttling improvements on SSU - throttle all transmissions to a peer
2670      when we are retransmitting, not just retransmissions.  Also, if
2671      we're already retransmitting to a peer, probabalistically tail drop new
2672      messages targetting that peer, based on the estimated wait time before
2673      transmission.
2674    * Fixed the rounding error in the inbound tunnel drop probability.
2675
26762006-04-10  jrandom
2677    * Include a combined send/receive graph (good idea cervantes!)
2678    * Proactively drop inbound tunnel requests probabalistically as the
2679      estimated queue time approaches our limit, rather than letting them all
2680      through up to that limit.
2681
26822006-04-08  jrandom
2683    * Stat summarization fix (removing the occational holes in the jrobin
2684      graphs)
2685
26862006-04-08  jrandom
2687    * Process inbound tunnel requests more efficiently
2688    * Proactively drop inbound tunnel requests if the queue before we'd
2689      process it in is too long (dynamically adjusted by cpu load)
2690    * Adjust the tunnel rejection throttle to reject requeusts when we have to
2691      proactively drop too many requests.
2692    * Display the number of pending inbound tunnel join requests on the router
2693      console (as the "handle backlog")
2694    * Include a few more stats in the default set of graphs
2695
26962006-04-06  jrandom
2697    * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
2698
26992006-04-06  jrandom
2700    * Fixed a typo in the reply cleanup code
2701
2702* 2006-04-05  0.6.1.14 released
2703
27042006-04-05  jrandom
2705    * Cut down on the time that we allow a tunnel creation request to sit by
2706      without response, and reject tunnel creation requests that are lagged
2707      locally.  Also switch to a bounded FIFO instead of a LIFO
2708    * Threading tweaks for the message handling (thanks bar!)
2709    * Don't add addresses to syndie with blank names (thanks Complication!)
2710    * Further ban clearance
2711
27122006-04-05  jrandom
2713    * Fix during the ssu handshake to avoid an unnecessary failure on
2714      packet retransmission (thanks ripple!)
2715    * Fix during the SSU handshake to use the negotiated session key asap,
2716      rather than using the intro key for more than we should (thanks ripple!)
2717    * Fixes to the message reply registry (thanks Complication!)
2718    * More comprehensive syndie banning (for repeated pushes)
2719    * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
2720      testing purposes
2721    * Put a floor back on the capacity threshold, so too many failing peers
2722      won't cause us to pick very bad peers (unless we have very few good
2723      ones)
2724    * Bugfix to cut down on peers using introducers unneessarily (thanks
2725      Complication!)
2726    * Reduced the default streaming lib message size to fit into a single
2727      tunnel message, rather than require 5 tunnel messages to be transferred
2728      without loss before recomposition.  This reduces throughput, but should
2729      increase reliability, at least for the time being.
2730    * Misc small bugfixes in the router (thanks all!)
2731    * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
2732
27332006-04-01  jrandom
2734    * Take out the router watchdog's teeth (don't restart on leaseset failure)
2735    * Filter the IRC ping/pong messages, as some clients send unsafe
2736      information in them (thanks aardvax and dust!)
2737
27382006-03-30  jrandom
2739    * Substantially reduced the lock contention in the message registry (a
2740      major hotspot that can choke most threads).  Also reworked the locking
2741      so we don't need per-message timer events
2742    * No need to have additional per-peer message clearing, as they are
2743      either unregistered individually or expired.
2744    * Include some of the more transient tunnel throttling
2745
2746* 2006-03-26  0.6.1.13 released
2747
27482006-03-25  jrandom
2749    * Added a simple purge and ban of syndie authors, shown as the
2750      "Purge and ban" button on the addressbook for authors that are already
2751      on the ignore list.  All of their entries and metadata are deleted from
2752      the archive, and the are transparently filtered from any remote
2753      syndication (so no user on the syndie instance will pull any new posts
2754      from them)
2755    * More strict tunnel join throtting when congested
2756
27572006-03-24  jrandom
2758    * Try to desync tunnel building near startup (thanks Complication!)
2759    * If we are highly congested, fall back on only querying the floodfill
2760      netDb peers, and only storing to those peers too
2761    * Cleaned up the floodfill-only queries
2762
27632006-03-21  jrandom
2764    * Avoid a very strange (unconfirmed) bug that people using the systray's
2765      browser picker dialog could cause by disabling the GUI-based browser
2766      picker.
2767    * Cut down on subsequent streaming lib reset packets transmitted
2768    * Use a larger MTU more often
2769    * Allow netDb searches to query shitlisted peers, as the queries are
2770      indirect.
2771    * Add an option to disable non-floodfill netDb searches (non-floodfill
2772      searches are used by default, but can be disabled by adding
2773      netDb.floodfillOnly=true to the advanced config)
2774
27752006-03-20  jrandom
2776    * Fix to allow for some slack when coalescing stats
2777    * Workaround some oddball errors
2778
27792006-03-18  jrandom
2780    * Added a new graphs.jsp page to show all of the stats being harvested
2781
27822006-03-18  jrandom
2783    * Made the netDb search load limitations a little less stringent
2784    * Add support for specifying the number of periods to be plotted on the
2785      graphs - e.g. to plot only the last hour of a stat that is averaged at
2786      the 60 second period, add &periodCount=60
2787
27882006-03-17  jrandom
2789    * Add support for graphing the event count as well as the average stat
2790      value (done by adding &showEvents=true to the URL).  Also supports
2791      hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
2792      the title (&hideTitle=true).
2793    * Removed an unnecessary arbitrary filter on the profile organizer so we
2794      can pick high capacity and fast peers more appropriately
2795
27962006-03-16  jrandom
2797    * Integrate basic hooks for jrobin (http://jrobin.org) into the router
2798      console.  Selected stats can be harvested automatically and fed into
2799      in-memory RRD databases, and those databases can be served up either as
2800      PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
2801      details).  A base set of stats are harvested by default, but an
2802      alternate list can be specified by setting the 'stat.summaries' list on
2803      the advanced config.  For instance:
2804      stat.summaries=bw.recvRate.60000,bw.sendRate.60000
2805    * HTML tweaking for the general config page (thanks void!)
2806    * Odd NPE fix (thanks Complication!)
2807
28082006-03-15  Complication
2809    * Trim out an old, inactive IP second-guessing method
2810      (thanks for spotting, Anonymous!)
2811
28122006-03-15  jrandom
2813    * Further stat cleanup
2814    * Keep track of how many peers we are actively trying to communicate with,
2815      beyond those who are just trying to communicate with us.
2816    * Further router tunnel participation throttle revisions to avoid spurious
2817      rejections
2818    * Rate stat display cleanup (thanks ripple!)
2819    * Don't even try to send messages that have been queued too long
2820
28212006-03-05  zzz
2822    * Remove the +++--- from the logs on i2psnark startup
2823
28242006-03-05  jrandom
2825    * HTML fixes in Syndie to work better with opera (thanks shaklen!)
2826    * Give netDb lookups to floodfill peers more time, as they are much more
2827      likely to succeed (thereby cutting down on the unnecessary netDb
2828      searches outside the floodfill set)
2829    * Fix to the SSU IP detection code so we won't use introducers when we
2830      don't need them (thanks Complication!)
2831    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
2832      peers given to it
2833    * Don't let netDb searches wander across too many peers
2834    * Don't use the 1s bandwidth usage in the tunnel participation throttle,
2835      as its too volatile to have much meaning.
2836    * Don't bork if a Syndie post is missing an entry.sml
2837
28382006-03-05  Complication
2839    * Reduce exposed statistical information,
2840      to make build and uptime tracking more expensive
2841
28422006-03-04  Complication
2843    * Fix the announce URL of orion's tracker in Snark sources
2844
28452006-03-03  Complication
2846    * Explicit check for an index out of bounds exception while parsing
2847      an inbound IRC command (implicit check was there already)
2848
28492006-03-01  jrandom
2850    * More aggressive tunnel throttling as we approach our bandwidth limit,
2851      and throttle based off periods wider than 1 second.
2852    * Included Doubtful Salmon's syndie stylings (thanks!)
2853
28542006-02-27  zzz
2855    * Update error page templates to add \r, Connection: close, and
2856      Proxy-connection: close to headers.
2857
2858* 2006-02-27  0.6.1.12 released
2859
28602006-02-27  jrandom
2861    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
2862      machines, rather than the generic jbigi (until we have an athlon64
2863      optimized version)
2864
28652006-02-26  jrandom
2866    * Switch from the bouncycastle to the gnu-crypto implementation for
2867      SHA256, as benchmarks show a 10-30% speedup.
2868    * Removed some unnecessary object caches
2869    * Don't close i2psnark streams prematurely
2870
28712006-02-25  jrandom
2872    * Made the Syndie permalinks in the thread view point to the blog view
2873    * Disabled TCP again (since the live net seems to be doing well w/out it)
2874    * Fix the message time on inbound SSU establishment (thanks zzz!)
2875    * Don't be so aggressive with parallel tunnel creation when a tunnel pool
2876      just starts up
2877
28782006-02-24  jrandom
2879    * Rounding calculation cleanup in the stats, and avoid an uncontested
2880      mutex (thanks ripple!)
2881    * SSU handshake cleanup to help force incompatible peers to stop nagging
2882      us by both not giving them an updated reference to us and by dropping
2883      future handshake packets from them.
2884
28852006-02-23  jrandom
2886    * Increase the SSU retransmit ceiling (for slow links)
2887    * Estimate the sender's SSU MTU (to help see if we agree)
2888
28892006-02-22  jrandom
2890    * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
2891    * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
2892      links
2893    * Further class validator refactorings
2894
28952006-02-22  jrandom
2896    * Handle a rare race under high bandwidth situations in the SSU transport
2897    * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
2898
28992006-02-21  Complication
2900    * Reactivate TCP tranport by default, in addition to re-allowing
2901
2902* 2006-02-21  0.6.1.11 released
2903
29042006-02-21  jrandom
2905    * Throttle the outbound SSU establishment queue, so it doesn't fill up the
2906      heap when backlogged (and so that the messages queued up on it don't sit
2907      there forever)
2908    * Further SSU memory cleanup
2909    * Clean up the address regeneration code so it knows when to rebuild the
2910      local info more precisely.
2911
29122006-02-20  jrandom
2913    * Properly enable TCP this time (oops)
2914    * Deal with multiple form handlers on the same page in the console without
2915      being too annoying (thanks blubb and bd_!)
2916
29172006-02-20  jrandom
2918    * Reenable the TCP transport as a fallback (we'll continue to muck with
2919      debugging SSU-only elsewhere)
2920
29212006-02-20  jrandom
2922    * Major SSU and router tuning to reduce contention, memory usage, and GC
2923      churn.  There are still issues to be worked out, but this should be a
2924      substantial improvement.
2925    * Modified the optional netDb harvester task to support choosing whether
2926      to use (non-anonymous) direct connections or (anonymous) exploratory
2927      tunnels to do the harvesting.  Harvesting itself is enabled via the
2928      advanced config "netDb.shouldHarvest=true" (default is false) and the
2929      connection type can be chosen via "netDb.harvestDirectly=false" (default
2930      is false).
2931
29322006-02-19  dust
2933    * Added pruning of suckers history (it used to grow indefinitely).
2934
29352006-02-19  jrandom
2936    * Moved the current net's reseed URL to a different location than where
2937      the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
2938    * More aggressively expire inbound messages (on receive, not just on send)
2939    * Add in a hook for breaking backwards compatibility in the SSU wire
2940      protocol directly by including a version as part of the handshake.  The
2941      version is currently set to 0, however, so the wire protocol from this
2942      build is compatible with all earlier SSU implementations.
2943    * Increased the number of complete message readers, cutting down
2944      substantially on the delay processing inbound messages.
2945    * Delete the message history file on startup
2946    * Reworked the restart/shutdown display on the console (thanks bd_!)
2947
29482006-02-18  jrandom
2949    * Migrate the outbound packets from a central component to the individual
2950      per-peer components, substantially cutting down on lock contention when
2951      dealing with higher degrees.
2952    * Load balance the outbound SSU transfers evenly across peers, rather than
2953      across messages (so peers with few messages won't be starved by peers
2954      with many).
2955    * Reduce the frequency of router info rebuilds (thanks bar!)
2956
29572006-02-18  jrandom
2958    * Add a new AIMD throttle in SSU to control the number of concurrent
2959      messages being sent to a given peer, in addition to the throttle on the
2960      number of concurrent bytes to that peer.
2961    * Adjust the existing SSU outbound queue to throttle based on the queue's
2962      lag, not an arbitrary number of packets.
2963
29642006-02-17  jrandom
2965    * Properly fix the build request queue throttling, using queue age to
2966      detect congestion, rather than queue size.
2967
29682006-02-17  jrandom
2969    * Disable the message history log file by default (duh - feel free to
2970      delete messageHistory.txt after upgrading.  thanks deathfatty!)
2971    * Limit the size of the inbound tunnel build request queue so we don't
2972      get an insane backlog of requests that we're bound to reject, and adjust
2973      the queue processing so we keep on churning through them when we've got
2974      a backlog.
2975    * Small fixes for the multiuser syndie operation (thanks Complication!)
2976    * Renamed modified PRNG classes that were imported from gnu-crypto so we
2977      don't conflict with JVMs using that as a JCE provider (thanks blx!)
2978
2979* 2006-02-16  0.6.1.10 released
2980
29812006-02-16  jrandom
2982    * Add a new toggle to the web config to enable/disable the load testing
2983
29842006-02-16  jrandom
2985    * Dropped much of the abandonware from the apps/ directory
2986
29872006-02-16  jrandom
2988    * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
2989    * Initial sucker refactoring to simplify reuse of the html parsing
2990    * Beginnings of hooks to push imported rss/atom out to remote syndie
2991      archives automatically (though not enabled currently)
2992    * Further SSU peer test cleanup
2993
29942006-02-15  jrandom
2995    * Add in per-blog RSS feeds to Syndie
2996    * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
2997      with the posts, marking additional attachments as Media RSS enclosures
2998      (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
2999      per item.
3000    * Don't allow the default syndie user to be set to something invalid if
3001      its in single user mode.
3002
30032006-02-15  jrandom
3004    * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
3005      longer backwards compatible (and should not be used until 0.6.1.1 is
3006      out)
3007
30082006-02-14  jrandom
3009    * Syndie ui bugfixes (thanks all!)
3010
30112006-02-13  jrandom
3012    * Use the current directory for some temporary I2PSnark files, rather than
3013      the OS default temp dir (thanks anon!)
3014    * Increase the base streaming lib window size (still shrinks to 1 on
3015      retransmission though, of course)
3016    * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
3017    * Implement fast retransmit in the streaming lib (fires at most once per
3018      packet), and increased the default ack delay to 2 seconds (from .5s)
3019    * Don't ask for garlic level message acks for end to end messages unless
3020      they're useful (e.g. to ack session tags)
3021
30222006-02-12  cervantes
3023    * Use a different santisation method for some SML attributes
3024    * Make router console update config save button actually save.
3025    * Fix console bandwidth limiter burst rate dropdowns, so the display
3026      relates to what is saved in the config.
3027   
30282006-02-12  cervantes
3029    * SML is now stricter in it's formatting (attributes should only use
3030      double quotes instead of being allowed to mix with singles).
3031    * Using apostrophes in SML attributes will no longer invalidate the tag.
3032    * Some instances of [blog] tag description were not being displayed
3033      correctly.
3034
30352006-02-12  jrandom
3036    * Further SSU peer test throttling
3037    * Put the most common router console features on the main index page too
3038
30392006-02-11  jrandom
3040    * Be more careful about SSU peer test floods
3041
30422006-02-09  jrandom
3043    * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
3044
30452006-02-08  jrandom
3046    * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
3047      bundled a precompiled libjbigi.so in the jbigi.jar
3048    * Cleaned up the synchronization for some SSU packet handling code
3049    * Allow explicit rejection of more lagged tunnel build requests, rather
3050      than dropping them outright
3051    * Use lighter load testing
3052
30532006-02-07  jrandom
3054    * Handle HTTP headers without any values (thanks Sugadude!)
3055    * Don't show the option to make Syndie multiuser, since very few people
3056      need it, and multiuser mode is a lot more complex to use.  Geeks can
3057      enable it by adding "syndie.singleUser=false" to syndie/syndie.config
3058      (or in the router's advanced config, for the embedded Syndie)
3059    * When a peer rejects participation in a tunnel, they mean it (duh)
3060    * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
3061    * Remove a throttle on the size of the SSU active outbound pool, since
3062      it was essentially arbitrary
3063    * Use a more appropriate SSU bloom filter size
3064    * Don't "proactively" drop SSU connections if we have partially received
3065      inbound messages (duh)
3066    * Migrate most of the message state across SSU connection reestablishment
3067
30682006-02-06  jrandom
3069    * Reduce the SSU retransmit timeout range, and increase the number of ACKs
3070      piggybacked
3071
30722006-02-05  jrandom
3073    * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
3074      of a 2048bit x, as reports suggest that size is sufficient for 2048bit
3075      DH/ElGamal when using safe primes (see KeyGenerator.java for references)
3076    * Enable the messageHistory.txt by default, for debugging
3077
30782006-02-05  jrandom
3079    * Substantial bugfix for the duplicate message detection in the transport
3080      layer
3081    * Handle tunnel build responses ASAP, rather than queueing them up to wait
3082      in line (processing them is really fast - just a few AES loops)
3083    * Don't bother handling build requests that we have queued up for a while
3084      locally, as the requestor will have timed it out anyway (perhaps we
3085      should reply regardless, but with a backoff instead?)
3086
30872006-02-04  jrandom
3088    * Further tunnel test cleanup and disabling of the old tunnel creation
3089      code
3090
30912006-02-04  jrandom
3092    * Clean up and reenable the tunnel testing for the new tunnel system.
3093
30942006-02-04  jrandom
3095    * Don't cache the archive.txt in syndie when fetching it through the web
3096      interface.
3097    * Logging updates
3098
30992006-02-03  jrandom
3100    * Added further replay prevention on the tunnel build requests
3101    * More aggressive streaming lib closing on reset
3102
31032006-02-03  jrandom
3104    * More aggressive refusal of peers from the wrong network (oops)
3105
31062006-02-01  jrandom
3107    * Instruct the router to reseed against a new URL, for migration purposes:
3108      http://dev.i2p.net/i2pdb2/
3109    * Aggressive error handling during UDP packet creation (thanks cervantes)
3110
31112006-02-01  jrandom
3112    * Fix the new tunnel creation crypto, including the addition of a 4 byte
3113      "next message ID" to the encrypted request structure in the spec.
3114    * Backwards incompatible change, using the new tunnel creation crypto, the
3115      fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
3116      with the old incompatible network).
3117    * Reworked the leaseSet request process to handle a race condition
3118    * Disable the TCP transport
3119    * Run four separate threads on the job queue to cut down on job lag
3120
31212006-01-28  jrandom
3122    * Removed a race that could show up in leaseSet requesting with the new
3123      tunnel building process
3124
31252006-01-25  jrandom
3126    * Run the peer profile coalescing/reorganization outside the job queue
3127      (on one of the timers), to cut down on some job queue congestion.  Also,
3128      trim old profiles while running, not just when starting up.
3129    * Slightly more sane intra-floodfill-node netDb activity (only flood new
3130      entries)
3131    * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
3132      source of the bug is not yet addressed)
3133    * Better I2PSnark reconnection handling
3134    * Further cleanup in the new tunnel build process
3135    * Make sure we expire old participants properly
3136    * Remove much of the transient overload throttling (it wasn't using a good
3137      metric)
3138
31392006-01-25  dust
3140    * Fix IRC client proxy to use ISO-8859-1.
3141
31422006-01-22  jrandom
3143    * New tunnel build process - does not use the new crypto or new peer
3144      selection strategies.  However, it does drop the fallback tunnel
3145      procedure, except for tunnels who are configured to allow them, or for
3146      the exploratory pool during bootstrapping or after a catastrophic
3147      failure.  This new process prefers to fail rather than use too-short
3148      tunnels, so while it can do some pretty aggressive tunnel rebuilding,
3149      it may expose more tunnel failures to the user.
3150    * Always prefer normal tunnels to fallback tunnels.
3151    * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
3152      bar!)
3153    * Do all of the netDb entry writing in a separate thread, avoiding
3154      duplicates and batching them up.
3155
31562006-01-19  Complication
3157    * Explain better where eepsite's destkey can be found
3158
31592006-01-18  cervantes
3160    * Add title attributes to all external links in Syndie, so we can rollover
3161      and quickly see if it's worth clicking on.
3162    * Fixed a minor compiler warning.
3163
31642006-01-17  jrandom
3165    * First pass of the new tunnel creation crypto, specified in the new
3166      router/doc/tunnel-alt-creation.html (referenced in the current
3167      router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
3168      than in the test code, but the code verifies the technical viability, so
3169      further scrutiny would be warranted.
3170
31712006-01-16  cervantes
3172    * Dragged I2P kicking and screaming into 2006 (Oops)
3173
31742006-01-14  cervantes
3175    * Removed entirely misleading memory status from the console summary.
3176       
31772006-01-13  cervantes
3178    * Further Syndie layout hardening and typeface balancing.
3179
3180* 2006-01-12  0.6.1.9 released
3181
31822006-01-12  jrandom
3183    * Only create the loadtest.log if requested to do so (thanks zzz!)
3184    * Make sure we cleanly take into consideration the appropriate data
3185      points when filtering out duplicate messages in the message validator,
3186      and report the right bloom filter false positives rate (not used for
3187      anything except debugging)
3188
31892006-01-12  cervantes
3190    * Syndie CSS tweaks to removed some redundant declarations, improve font
3191      scaling and layout robustness. Improved cross browser compatibility
3192      (in other words "kicked IE"). Tightened the look of the blog template
3193      a little.
3194
31952006-01-11  Complication
3196    * CSS comment fixes
3197
31982006-01-11  jrandom
3199    * Include the attachments/blogs/etc for comments on the blog view
3200    * Syndie HTML fixes (thanks cervantes!)
3201    * Make sure we fully reset the objects going into our cache before we
3202      reuse them (thanks zzz!)
3203
32042006-01-10  jrandom
3205    * Added the per-post list of attachments/blogs/etc to the blog view in
3206      Syndie (though this does not yet include comments or some further
3207      refinements)
3208    * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
3209      removing the dox box (though also removes the restart functionality...)
3210    * Give the i2p.exe the correct java.library.path to support the systray
3211      dll (thanks Bobcat, Sugadude, anon!)
3212
32132006-01-09  jrandom
3214    * Removed a longstanding bug that had caused unnecessary router identity
3215      churn due to clock skew
3216    * Temporarily sanity check within the streaming lib for long pending
3217      writes
3218    * Added support for a blog-wide logo to Syndie, and automated the pushing
3219      of updated extended blog info data along side the metadata.
3220
32212006-01-09  jrandom
3222    * Bugfix for a rare SSU error (thanks cervantes!)
3223    * More progress on the blog interface, allowing customizable blog-wide
3224      links.
3225
32262006-01-08  jrandom
3227    * First pass of the new blog interface, though without much of the useful
3228      customization features (coming soon)
3229
32302006-01-04  jrandom
3231    * Rather than profile individual tunnels for throughput over their
3232      lifetime, do so at 1 minute intervals (allowing less frequently active
3233      tunnels to be more fairly measured).
3234    * Run the live tunnel load test across two tunnels at a time, by default.
3235      The load test runs for a random period from 90s to the tunnel lifetime,
3236      self paced.  This should help gathering data for profiling peers that
3237      are in exploratory tunnels.
3238
32392006-01-03  jrandom
3240    * Calculate the overall peer throughput across the 3 fastest one minute
3241      tunnel throughput values, rather than the single fastest throughput.
3242    * Degrade the profiled throughput data over time (cutting the profiled
3243      peaks in half once a day, on average)
3244    * Enable yet another new speed calculation for profiling peers, using the
3245      peak throughput from individual tunnels that a peer is participating in,
3246      rather than across all tunnels they are participating in.  This helps
3247      gather a fairer peer throughput measurement, since it won't allow a slow
3248      high capacity peer seem to have a higher throughput (pushing a little
3249      data across many tunnels at once, as opposed to lots of data across a
3250      single tunnel).  This degrades over time like the other.
3251    * Add basic OS/2 support to the jbigi code (though we do not bundle a
3252      precompiled OS/2 library)
3253
32542006-01-01  jrandom
3255    * Disable multifile torrent creation in I2PSnark's web UI for the moment
3256      (though it can still seed and participate in multifile swarms)
3257    * Enable a new speed calculation for profiling peers, using their peak
3258      1 minute average tunnel throughput as their speed.
3259
32602005-12-31  jrandom
3261    * Include a simple torrent creator in the I2PSnark web UI
3262    * Further streaming lib closing improvements
3263    * Refactored the load test components to run off live tunnels (though,
3264      still not safe for normal/anonymous load testing)
3265
32662005-12-30  jrandom
3267    * Close streams more gracefully
3268
32692005-12-30  jrandom
3270    * Small streaming lib bugfixes for the modified timeouts
3271    * Minor Syndie/Sucker RSS html fix
3272    * Small synchronization fix in I2PSnark (thanks fsm!)
3273
32742005-12-30  jrandom
3275    * Replaced the bundled linux jcpuid (written in C++) with scintilla's
3276      jcpuid (written in C), removing the libg++.so.5 dependency that has bit
3277      some distros (e.g. mandriva)
3278
32792005-12-29  jrandom
3280    * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
3281      actually correct
3282
32832005-12-27  jrandom
3284    * Add a new Status: line on the router console - "ERR-ClockSkew", in case
3285      the clock is too skewed to do anything useful (check the year and month,
3286      not just the hour and minute).
3287    * Fixed the read/write timeouts in the streaming lib (so that it actually
3288      honors them now)
3289    * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
3290      torrent closing)
3291    * Handle an oddball tunnel creation failure (thanks Xunk)
3292
32932005-12-26  Complication
3294    * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
3295    * HTML readability cosmetics on "Peers" page
3296
3297* 2005-12-22  0.6.1.8 released
3298
32992005-12-22  jrandom
3300    * Bundle the standalone I2PSnark launcher in the installer and update
3301      process (launch as "java -jar launch-i2psnark.jar", viewing the
3302      interface on http://localhost:8002/)
3303    * Don't autostart swarming torrents by default so that you can run a
3304      standalone I2PSnark from the I2P install dir and not have the embedded
3305      I2PSnark autolaunch the torrents that the standalone instance is running
3306    * Fixed a rare streaming lib bug that could let a blocking call wait
3307      forever.
3308
33092005-12-22  jrandom
3310    * Cleaned up some buffer synchronization issues in I2PSnark that could
3311      cause blockage.
3312
33132005-12-21  jrandom
3314    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
3315      behavior)
3316    * Fixed the I2PSnark bug that would lose track of live peers
3317
33182005-12-20  jrandom
3319    * Enabled the control in I2PSnark to toggle whether torrents should be
3320      started automatically or not
3321    * Hopefully finished the last hook to close down torrents completely when
3322      they're stopped.
3323
33242005-12-19  jrandom
3325    * Fix for old Syndie blog bookmarks (thanks Complication!)
3326    * Fix for I2PSnark to accept incoming connections again (oops)
3327    * Randomize the order that peers from the tracker are contacted
3328
33292005-12-19  jrandom
3330    * I2PSnark logging, disconnect old inactive peers rather than new ones,
3331      memory usage reduction, better OOM handling, and a shared connection
3332      acceptor.
3333    * Cleaned up the Syndie blog page and the resulting filters (viewing a
3334      blog from the blog page shows threads started by the selected author,
3335      not those that they merely participate in)
3336
33372005-12-18  jrandom
3338    * Added a standalone runner for the I2PSnark web ui (build with the
3339      command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
3340      with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
3341    * Further I2PSnark error handling
3342
33432005-12-17  jrandom
3344    * Let multiuser accounts authorize themselves to access the remote
3345      functionality again (thanks Ch0Hag!)
3346    * Adjust the JVM heap size to 128MB for new installs (existing users can
3347      accomplish this by editing wrapper.config, adding the line
3348      "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
3349      of the router).  This is relevent for heavy usage of I2PSnark in the
3350      router console.
3351
33522005-12-17  jrandom
3353    * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
3354      'piece' sizes grow larger than before.
3355
33562005-12-16  jrandom
3357    * Added some I2PSnark sanity checks, an OOMListener when running
3358      standalone, and a guard against keeping memory tied up indefinitely.
3359    * Sanity check on the watchdog (thanks zzz!)
3360    * Handle invalid HTTP requests in I2PTunnel a little better
3361
33622005-12-16  jrandom
3363    * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
3364      properly (thanks Complication!)
3365    * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
3366      b0rking in the DirMonitor, etc)
3367
33682005-12-16  jrandom
3369    * Try to run a torrent in readonly mode if we can't write to the file, and
3370      handle failures a little more gracefully (thanks polecat!)
3371
33722005-12-16  jrandom
3373    * Refuse torrents with too many files (128), avoiding ulimit errors.
3374    * Remove an fd leak in I2PSnark
3375    * Further I2PSnark web UI cleanup
3376
33772005-12-15  jrandom
3378    * Added a first pass to the I2PSnark web UI (see /i2psnark/)
3379
33802005-12-15  jrandom
3381    * Added multitorrent support to I2PSnark, accessible currently by running
3382      "i2psnark.jar --config i2psnark.config" (which may or may not exist).
3383      It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
3384      their data in that directory as well.  Removing the .torrent file stops
3385      participation, and it is currently set to seed indefinitely.  Completion
3386      is logged to the logger and standard output, with further UI interaction
3387      left to the (work in progress) web UI.
3388
33892005-12-14  jrandom
3390    * Fix to drop peer references when we shitlist people again (thanks zzz!)
3391    * Further I2PSnark fixes to deal with arbitrary torrent info attributes
3392      (thanks Complication!)
3393
33942005-12-13  zzz
3395    * Don't test tunnels expiring within 90 seconds
3396    * Defer Test Tunnel jobs if job lag too large
3397    * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
3398      job lag for tunnel build backoff, allowing for more agile handling
3399      (since the stat is only updated once a minute)
3400    * Use tunnel length override if all tunnels are expiring within one
3401      minute.
3402
34032005-12-13  jrandom
3404    * Fixed I2PSnark's handling of some torrent files to deal with those
3405      created by Azureus and I2PRufus (it didn't know how to deal with
3406      additional meta info, such as path.utf-8 or name.utf-8).
3407
34082005-12-09  zzz
3409    * Create different strategies for exploratory tunnels (which are difficult
3410      to create) and client tunnels (which are much easier)
3411    * Gradually increase number of parallel build attempts as tunnel expiry
3412      nears.
3413    * Temporarily shorten attempted build tunnel length if builds using
3414      configured tunnel length are unsuccessful
3415    * React more aggressively to tunnel failure than routine tunnel
3416      replacement
3417    * Make tunnel creation times randomized - there is existing code to
3418      randomize the tunnels but it isn't effective due to the tunnel creation
3419      strategy. Currently, most tunnels get built all at once, at about 2 1/2
3420      to 3 minutes before expiration. The patch fixes this by fixing the
3421      randomization, and by changing the overlap time (with old tunnels) to a
3422      range of 2 to 4 minutes.
3423    * Reduce number of excess tunnels. Lots of excess tunnels get created due
3424      to overlapping calls. Just about anything generated a call which could
3425      build many tunnels all at once, even if tunnel building was already in
3426      process.
3427    * Miscellaneous router console enhancements
3428
34292005-12-08  jrandom
3430    * Minor bugfix in SSU for dealing with corrupt packets
3431    * Added some hooks for load testing
3432
34332005-12-07  jrandom
3434    * Added a first pass at a blog view in Syndie
3435
34362005-12-07  jrandom
3437    * Expand the thread we're viewing to its leaf
3438    * Bugfix on intraday ordering (children are always newer than parents)
3439
34402005-12-05  jrandom
3441    * Added an RDF and XML thread export to Syndie, reachable at
3442      .../threadnav/rdf or .../threadnav/xml, accepting the parameters
3443      count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
3444      displays all threads.
3445
34462005-12-04  TLorD
3447    * Patch for the C SAM library to null terminate strings on copy (thanks!)
3448
34492005-12-04  jrandom
3450    * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
3451    * Always include ourselves in the favorite authors (since we don't
3452      bookmark ourselves)
3453
34542005-12-03  jrandom
3455    * Use newgroup-like tags by default in Syndie's interface
3456
34572005-12-03  jrandom
3458    * Added support for a 'most recent posts' view that CofE requested, which
3459      includes the ability to filter by age (e.g. posts by your favorite
3460      authors in the last 5 days).
3461
34622005-12-03  jrandom
3463    * Adjusted Syndie to use the threaded view that cervantes suggested, which
3464      displays a a single thread path at a time - from root to leaf - rather
3465      than a depth first traversal.
3466
34672005-12-03  jrandom
3468    * Package up a standalone Syndie install into a "syndie-standalone.zip",
3469      buildable with "ant syndie".  It extracts into ./syndie/, launches with
3470      "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
3471      running a single user Syndie instance (by default).  It also creates a
3472      default subscription to syndiemedia without any anonymity (using no
3473      proxy).  Upgrades can be done by just replacing the syndie.war with the
3474      one from I2P.
3475
3476* 2005-12-01  0.6.1.7 released
3477
34782005-12-01  jrandom
3479    * Add a new criteria to the tunnel join throttle, backing off people if we
3480      are failing to talk to our peers more than usual.
3481
34822005-11-30  jrandom
3483    * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
3484      new commons-logging-api.jar to commons-logging.jar, which it replaces.
3485      Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
3486      separate jdom or rome, as they're inside syndie.war.
3487
34882005-11-30  jrandom
3489    * Don't let the TCP transport alone shitlist a peer, since other
3490      transports may be working.  Also display whether TCP connections are
3491      inbound or outbound on the peers page.
3492    * Fixed some substantial bugs in the SSU introducers where we wouldn't
3493      talk to anyone who didn't expose an IP (even if they had introducers),
3494      among other goofy things.
3495    * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
3496      rather than sending one a packet at 3s, then another a packet at 6s,
3497      and a third a packet at 9s.
3498    * Fixed Syndie attachments (oops)
3499
35002005-11-29  zzz
3501    * Added a link to orion's jump page on the 'key not found' error page.
3502
35032005-11-29  jrandom
3504    * Further Syndie UI cleanup
3505    * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
3506      since it hasn't been applied to the jetty CVS yet [1].  Its packaged
3507      into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
3508      will be removed as soon as its integrated into Jetty.  This patch allows
3509      posting content in various character sets.
3510      [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
3511    * Upgraded new installs to the latest stable jetty (5.1.6), though this
3512      isn't pushed as part of the update yet, as there aren't any critical
3513      bugs.
3514
35152005-11-29  jrandom
3516    * Added back in the OSX jbigi, which was accidentally removed a few revs
3517      back (thanks for the bug report stoerte!)  New installs will get the
3518      full jbigi, or you can pull the jbigi.jar from CVS by going to
3519      http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
3520      and clicking on the first "download" link, saving that jbigi.jar to
3521      lib/jbigi.jar in your I2P installation directory.  After restarting your
3522      router, it should load up fine.
3523
35242005-11-27  jrandom
3525    * Inlined the Syndie CSS to reduce the number of HTTP requests (and
3526      because firefox [and others?] delay rendering until they fetch the css).
3527    * Make sure we fire the shutdown tasks when regenerating a new identity
3528      (thanks picsou!)
3529    * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
3530    * Don't drop SSU sessions if they're still transmitting data successfully,
3531      even if there are transmission failures
3532    * Adjusted the time summarization to display hours after 119m, not 90m
3533    * Further EepGet cleanup (grr)
3534
3535* 2005-11-26 0.6.1.6 released
3536
35372005-11-26  jrandom
3538    * Update the sorting in Syndie to consider children 'newer' than parents,
3539      even if they have the same message ID (duh)
3540    * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
3541    * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
3542    * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
3543      better)
3544
35452005-11-26  jrandom
3546    * Be more explicit about what messages we will handle through a client
3547      tunnel, and how we will handle them.  This cuts off a set of attacks
3548      that an active adversary could mount, though they're probably nonobvious
3549      and would require at least some sophistication.
3550
35512005-11-26  Raccoon23
3552    * Added support for 'dynamic keys' mode, where the router creates a new
3553      router identity whenever it detects a substantial change in its public
3554      address (read: SSU IP or port).  This only offers minimal additional
3555      protection against trivial attackers, but should provide functional
3556      improvement for people who have periodic IP changes, since their new
3557      router address would not be shitlisted while their old one would be.
3558    * Added further infrastructure for restricted route operation, but its use
3559      is not recommended.
3560
35612005-11-25  jrandom
3562    * Further Syndie UI cleanups
3563    * Logging cleanup
3564    * Fixed link to fproxy.tino.i2p (thanks zzz!)
3565
35662005-11-25  jrandom
3567    * Don't publish stats for periods we haven't reached yet (thanks zzz!)
3568    * Cleaned up the syndie threaded display to show the last updated date for
3569      a subthread, and to highlight threads updated in the last two days.
3570
35712005-11-24  jrandom
3572    * Fix to save syndication settings in Syndie (thanks spaetz!)
3573
35742005-11-23  jrandom
3575    * Removed spurious streaming lib RTO increase (it wasn't helpful)
3576    * Streamlined the tunnel batching to schedule batch transmissions more
3577      appropriately.
3578    * Default tunnel pool variance to 2 +0-1 hops
3579
35802005-11-21  jrandom
3581    * IE doesn't strip SPAN from <button> form fields, so add in a workaround
3582      within I2PTunnel.
3583    * Increase the maximum SSU retransmission timeout to accomodate slower or
3584      more congested links (though SSU's RTO calculation will usually use a
3585      much lower timeout)
3586    * Moved the streaming lib timed events off the main timer queues and onto
3587      a streaming lib specific set of timer queues.  Streaming lib timed
3588      events are more likely to have lock contention on the I2CP socket while
3589      other timed events in the router are (largely) independent.
3590    * Fixed a case sensitive lookup bug (thanks tino!)
3591    * Syndie cleanup - new edit form on the preview page, and fixed some blog
3592      links (thanks tino!)
3593
35942005-11-19  jrandom
3595    * Implemented a trivial pure java PMTU backoff strategy, switching between
3596      a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
3597    * Fixed new user registration in Syndie (thanks Complication!)
3598
35992005-11-17  jrandom
3600    * More cautious file handling in Syndie
3601
36022005-11-16  jrandom
3603    * More aggressive I2PTunnel content encoding munging to work around some
3604      rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
3605      even when only identity is specified, etc).  I2PTunnelHTTPServer now
3606      sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
3607      and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
3608      or X-Accept-encoding headers.  Eepsite operators who do not know to
3609      check for X-Accept-encoding will simply use the identity encoding.
3610
3611* 2005-11-15  0.6.1.5 released
3612
36132005-11-14  jrandom
3614    * Migrate to the new Syndie interface
3615
36162005-11-11  jrandom
3617    * Add filtering threads by author to Syndie, populated with authors in the
3618      user's addressbook
3619    * When creating the default user, add
3620      "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
3621      configured to automatically pull updates.  (what other archives should
3622      be included?)
3623    * Tiny servlet to help dole out the new routerconsole themes, and bundle
3624      the installer/resources/themes/** into ./docs/themes/** on both install
3625      and update.
3626
36272005-11-11  cervantes
3628    * Initial pass of the routerconsole revamp, starting with I2PTunnel and
3629      being progressively rolled out to other sections at later dates.
3630      Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
3631      layout and styling.
3632    * Implemented console themes. Users can create their own themes by
3633      creating css files in: {i2pdir}/docs/themes/console/{themename}/
3634      and activating it using the routerconsole.theme={themename} advanced
3635      config property. Look at the example incomplete "defCon1" theme.
3636      Note: This is very much a work in progress. Folks might want to hold-off
3637      creating their own skins until the markup has solidified.
3638    * Added "routerconsole.javascript.disabled=true" to disable console
3639      client-side scripting and "routerconsole.css.disabled=true" to remove
3640      css styling (only rolled out in the i2ptunnel interface currently)
3641    * Fixed long standing bug with i2ptunnel client and server edit screens
3642      where tunnel count and depth properties would fail to save. Added
3643      backup quantity and variance configuration options.
3644    * Added basic accessibility support (key shortcuts, linear markup, alt and
3645      title information and form labels).
3646    * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
3647
36482005-11-11  jrandom
3649    * Default Syndie to single user mode, and automatically log into a default
3650      user account (additional accounts can be logged into with the 'switch'
3651      or login pages, and new accounts can be created with the register page).
3652    * Disable the 'automated' column on the Syndie addressbook unless the user
3653      is appropriately authorized (good idea Polecat!)
3654
36552005-11-10  jrandom
3656    * First pass to a new threaded Syndie interface, which isn't enabled by
3657      default, as its not done yet.
3658
36592005-11-06  jrandom
3660    * Include SSU establishment failure in the peer profile as a commError,
3661      as we do for TCP establishment failures.
3662    * Don't throttle the initial transmission of a message because of ongoing
3663      retransmissions to a peer, since the initial transmission of a message
3664      is more valuable than a retransmission (since it has less latency).
3665    * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
3666
36672005-11-05  jrandom
3668    * Include the most recent ACKs with packets, rather than only sending an
3669      ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
3670      increasing sequence numbers, while each message ID in SSU is random, so
3671      we don't get the benefit of later ACKs implicitly ACKing earlier
3672      messages.
3673    * Reduced the max retransmission timeout for SSU
3674    * Don't try to send messages queued up for a long time waiting for
3675      establishment.
3676
36772005-11-05  dust
3678    * Fix sucker to delete its temporary files.
3679    * Improve sucker's sml output some.
3680    * Fix Exception in SMLParser for weird sml.
3681
36822005-11-03  zzz
3683    * Added a new error page to the eepproxy to differentiate the full 60
3684      second timeout from the immediate "I don't know this base64" failure.
3685
36862005-11-01  jrandom
3687    * Added a few more css elements (thanks identiguy!)
3688
36892005-10-31  jrandom
3690    * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
3691    * Removed a potentially infinitely recursive call (oops)
3692
36932005-10-30  dust
3694    * Merge sucker into syndie with a rssimport.jsp page.
3695    * Add getContentType() to EepGet.
3696    * Make chunked transfer work (better) with EepGet.
3697    * Do replaceAll("<","&lt;") for logs.
3698
3699* 2005-10-29  0.6.1.4 released
3700
37012005-10-29  jrandom
3702    * Improved the bandwidth throtting on tunnel participation, especially for
3703      low bandwidth peers.
3704    * Improved failure handling in SSU with proactive reestablishment of
3705      failing idle peers, and rather than shitlisting a peer who failed too
3706      much, drop the SSU session and allow a new attempt (which, if it fails,
3707      will cause a shitlisting)
3708    * Clarify the cause of the shitlist on the profiles page, and include
3709      bandwidth limiter info at the bottom of the peers page.
3710
37112005-10-26  jrandom
3712    * In Syndie, propogate the subject and tags in a reply, and show the parent
3713      post on the edit page for easy quoting.  (thanks identiguy and CofE!)
3714    * Streamline some netDb query handling to run outside the jobqueue -
3715      which means they'll run on the particular SSU thread that handles the
3716      message.  This should help out heavily loaded netDb peers.
3717
37182005-10-25  jrandom
3719    * Defer netDb searches for newly referenced peers until we actually want
3720      them
3721    * Ignore netDb references to peers on our shitlist
3722    * Set the timeout for end to end client messages to the max delay after
3723      finding the leaseSet, so we don't have as many expired messages floating
3724      around.
3725    * Add a floor to the streaming lib window size
3726    * When we need to send a streaming lib ACK, try to retransmit one of the
3727      unacked packets instead (with updated ACK/NACK fields, of course).  The
3728      bandwidth cost of an unnecessary retransmission should be minor as
3729      compared to both an ACK packet (rounded up to 1KB in the tunnels) and
3730      the probability of a necessary retransmission.
3731    * Adjust the streaming lib cwin algorithm to allow growth after a full
3732      cwin messages if the rtt is trending downwards.  If it is not, use the
3733      existing algorithm.
3734    * Increased the maximum rto size in the streaming lib.
3735    * Load balancing bugfix on end to end messages to distribute across
3736      tunnels more evenly.
3737
37382005-10-22  jrandom
3739    * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
3740      ./prngseed.rnd (if they exist), and reseeding it with data out of
3741      various crypto operations (unused bits in a DH exchange, intermediary
3742      bits in a DSA signature generation, extra bits in an ElGamal decrypt).
3743      The Fortuna implementation under gnu.crypto.prng has been modified to
3744      use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
3745      I2P uses), and the resulting gnu.crypto.prng.* are therefor available
3746      under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
3747      wrapper around it is, of course, public domain.
3748
37492005-10-20  dust
3750    * Fix bug in ircclient that prevented it to use its own dest (i.e. was
3751      always shared. (thx for info Ragnarok)
3752    * Fix crash in Sucker with some bad html.
3753
37542005-10-20  jrandom
3755    * Workaround a bug in GCJ's Calendar implementation
3756    * Propery throw an exception in the streaming lib if we try to write to a
3757      closed stream.  This will hopefully help clear some I2Phex bugs (thanks
3758      GregorK!)
3759
37602005-10-19  jrandom
3761    * Ported the snark bittorrent client to I2P such that it is compatible
3762      with i2p-bt and azneti2p.  For usage information, grab an update and run
3763      "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
3764      but adding in support would be fairly easy (see PeerAcceptor.java:49)
3765    * Don't allow leaseSets expiring too far in the future (thanks postman)
3766
37672005-10-19  jrandom
3768    * Bugfix for the auto-update code to handle different usage patterns
3769    * Decreased the addressbook recheck frequency to once every 12 hours
3770      instead of hourly.
3771    * Handle dynamically changing the HMAC size (again, unless your nym is
3772      toad or jrandom, ignore this ;)
3773    * Cleaned up some synchronization/locking code
3774
37752005-10-17  dust
3776    * Exchange the remaining URL with EepGet in Sucker.
3777    * Allow /TOPIC irc command.
3778
37792005-10-17  jrandom
3780    * Allow an env prop to configure whether we want to use the backwards
3781      compatible (but not standards compliant) HMAC-MD5, or whether we want
3782      to use the not-backwards compatible (but standards compliant) one.  No
3783      one should touch this setting, unless your name is toad or jrandom ;)
3784    * Added some new dummy facades
3785    * Be more aggressive on loading up the router.config before building the
3786      router context
3787    * Added new hooks for apps to deal with previously undefined I2NP message
3788      types without having to modify any code.
3789    * Demo code for using a castrated router for SSU comm (SSUDemo.java)
3790
37912005-10-14  jrandom
3792    * More explicit filter for linux/PPC building (thanks anon!)
3793    * Fixed Syndie's Sucker to not explicitly reference something only found
3794      in sun's JVM (thanks cervantes!)
3795    * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
3796
3797* 2005-10-14  0.6.1.3 released
3798
37992005-10-14  jrandom
3800    * Added a key explaining peers.jsp a bit (thanks tethra!)
3801
38022005-10-13  dust
3803    * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
3804      then be injected into Syndie with the Syndie CLI.
3805    * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
3806      RSS/Atom parsing.
3807
38082005-10-13  jrandom
3809    * SSU retransmission choke bugfix (== != !=)
3810    * Include initial transmissions in the retransmission choke, so that
3811      if we are already retransmitting a message, we won't send anything
3812      to that peer other than that message (or ACKs, if necessary)
3813
38142005-10-12  jrandom
3815    * Choke SSU retransmissions to a peer while there is already a
3816      retransmission in flight to them.  This currently lets other initial
3817      transmissions through, since packet loss is often sporadic, but maybe
3818      this should block initial transmissions as well?
3819    * Display the retransmission bytes stat on peers.jsp (thanks bar!)
3820    * Filter QUIT messages in the I2PTunnelIRCClient proxy
3821
38222005-10-11  jrandom
3823    * Piggyback the SSU partial ACKs with data packets.  This is backwards
3824      compatible.
3825    * Syndie RSS renderer bugfix, plus now include the full entry instead of
3826      just the blurb before the cut.
3827
38282005-10-11  jrandom
3829    * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
3830      yet piggybacked).  This is backwards compatible.
3831    * SML parser cleanup in Syndie
3832
38332005-10-10  dust
3834    * Implemented a new I2PTunnelIRCClient which locally filters inbound and
3835      outbound IRC commands for anonymity and security purposes, removing all
3836      CTCP messages except ACTION, as well as stripping the hostname from the
3837      USER message (while leaving the nick and 'full name').  The IRC proxy
3838      doesn't use this by default, but you can enable it by creating a new
3839      "IRC proxy" tunnel on the web interface, or by changing the tunnel type
3840      to "ircclient" in i2ptunnel.config.
3841
38422005-10-10  jrandom
3843    * I2PTunnel http client config cleanup and stats
3844    * Minor SSU congestion tweaks and stats
3845    * Reduced netDb exploration period
3846
38472005-10-09  jrandom
3848    * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
3849      java -jar lib/syndie.jar
3850    * Beginnings of the Syndie logging cleanup
3851    * Delete corrupt Syndie posts
3852
38532005-10-09  jrandom
3854    * Now that the streaming lib works reasonably, set the default inactivity
3855      event to send a 0 byte keepalive payload, rather than disconnecting the
3856      stream.  This should cut the irc netsplits and help out with other long
3857      lived streams.  The default timeout is now less than the old timeout as
3858      well, so the keepalive will be sent before earlier builds fire their
3859      fatal timeouts.
3860
38612005-10-08  jrandom
3862    * Use the OS clock for stat timing, since it doesn't jump around (though
3863      still use the NTP'ed clock for display)
3864    * Added new DH stats
3865
3866* 2005-10-07  0.6.1.2 released
3867
38682005-10-07  jrandom
3869    * Include the 1 second bandwidth usage on the console rather than the
3870      1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
3871      issues.
3872
38732005-10-07  jrandom
3874    * Allow the I2PTunnelHTTPServer to send back the first few packets of an
3875      HTTP response quicker, and initialize the streaming lib's cwin more
3876      carefully.
3877    * Added a small web UI to the new Syndie scheduled updater.  If you log in
3878      as a user authorized to use the remote archive funtionality, you can
3879      request remote archives in your address book to be automatically pulled
3880      down by checking the "scheduled?" checkbox.
3881
38822005-10-05  jrandom
3883    * Allow the first few packets in the stream to fill in their IDs during
3884      handshake (thanks cervantes, Complication, et al!)  This should fix at
3885      least some of the intermittent HTTP POST issues.
3886
38872005-10-04  jrandom
3888    * Syndie patch for single user remote archives (thanks nickless_head!)
3889    * Handle an invalid netDb store (thanks Complication!)
3890
38912005-10-04  jrandom
3892    * Further reduction in unnecessary streaming packets.
3893
38942005-10-03  jrandom
3895    * Properly reject unroutable IP addresses *cough*
3896
38972005-10-03  rangarok
3898    * Changed default update delay to twelve hours, and enforced a minimum
3899      delay of one hour.
3900
39012005-10-03  ragnarok
3902    * Implemented a Syndie auto-updater.  It will automatically pull new posts
3903      from selected syndie archives.  To try it out, add
3904      syndie.updateArchives=<comma seperated list of syndie archives> to your
3905      syndie.config.  Archives must be specified as the full url to archive.txt
3906      (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
3907      for new posts every hour.  This can be modified by setting
3908      syndie.updateDelay=<delay in hours> also in syndie.config.
3909
3910* 2005-10-01  0.6.1.1 released
3911
39122005-09-30  ragnarok
3913    * Implemented conditional get for syndie remote archive imports.
3914
39152005-09-30  jrandom
3916    * Killed three more streaming lib bugs, one of which caused excess packets
3917      to be transmitted (dupacking dupacks), one that was the root of many of
3918      the old hung streams (shrinking highest received), and another that was
3919      releasing data too soon.
3920
39212005-09-30  jrandom
3922    * Only allow autodetection of our IP address if we haven't received an
3923      inbound connection in the last two minutes.
3924    * Increase the default max streaming resends to 8 from 5 (and down from
3925      the earlier 10)
3926
39272005-09-29  ragnarok
3928    * Export petnames from syndie to the router's petname db instead of
3929      userhosts.txt.
3930
39312005-09-29  jrandom
3932    * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
3933      reseeding - useful on OSes that make it hard to create dot files. 
3934      Thanks Complication (and anon)!
3935    * Fixed the installer version string (thanks Frontier!)
3936    * Added cleaner rejection of invalid IP addresses, shitlist those who send
3937      us invalid IP addresses, verify again that we are not sending invalid IP
3938      addresses, and log an error if it happens. (Thanks Complication, ptm,
3939      and adab!)
3940
3941* 2005-09-29  0.6.1 released
3942
39432005-09-29  jrandom
3944    * Let syndie users modify their metadata.
3945    * Reseed the router on startup if there aren't enough peer references
3946      known locally.  This can be disabled by creating the file .i2pnoreseed
3947      in your home directory, and the existing detection and reseed handling
3948      on the web interface is unchanged.
3949
39502005-09-28  jrandom
3951    * Fix for at least some (all?) of the wrong stream errors in the streaming
3952      lib
3953
39542005-09-27  jrandom
3955    * Properly suggest filenames for attachments in Syndie (thanks all!)
3956    * Fixed the Syndie authorization scheme for single user vs. multiuser
3957
39582005-09-27  jrandom
3959    * I2PTunnel bugfix (thanks Complication!)
3960    * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
3961      instead of k/cwin)
3962    * Limit the number of inbound SSU sessions being built at once (using
3963      half of the i2np.udp.maxConcurrentEstablish config prop)
3964    * Don't shitlist on a message send failure alone (unless there aren't any
3965      common transports).
3966    * More careful bandwidth bursting
3967
39682005-09-26  jrandom
3969    * Reworded the SSU introductions config section (thanks duck!)
3970    * Force identity content encoding for I2PTunnel httpserver requests
3971      (thanks redzara!)
3972    * Further x-i2p-gzip bugfixes for the end of streams
3973    * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
3974      I2P's performance at 3KBps is another issue)
3975    * Cleaned up some streaming lib structures
3976
39772005-09-25  jrandom
3978    * Allow reseeding on the console if the netDb knows less than 30 peers,
3979      rather than less than 10 (without internet connectivity, we keep the
3980      last 15 router references)
3981    * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
3982      more aggressively.
3983    * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
3984    * Reduced the default maximum number of streaming lib resends of a packet
3985      (10 retransmits is a bit much with a reasonable RTO)
3986
39872005-09-25  Complication
3988    * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
3989      conflict resolution page if the i2paddresshelper parameter differs from
3990      an existing name to destination mapping.
3991
39922005-09-25  jrandom
3993    * Fix a long standing streaming lib bug (in the inactivity detection code)
3994    * Improved handling of initial streaming lib packet retransmissions to
3995      kill the "lost first packet" bug (where a page shows up with the first
3996      few KB missing)
3997    * Add support for initial window sizes greater than 1 - useful for
3998      eepsites to transmit e.g. 4 packets full of data along with the initial
3999      ACK, thereby cutting down on the rtt latency.  The congestion window
4000      size can and does still shrink down to 1 packet though.
4001    * Adjusted the streaming lib retransmission calculation algorithm to be
4002      more TCP-like.
4003
40042005-09-21  redzara
4005    * Use ISO-8859-1 for the susidns xml
4006
40072005-09-21  susi
4008    * Bugfix in susidns for deleting entries
4009
40102005-09-21  jrandom
4011    * Add support for HTTP POST to EepGet
4012    * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
4013      put in that URL.
4014
40152005-09-18  jrandom
4016    * Added support for pure 64bit linux with jbigi and the java service
4017      wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
4018      et al for help testing!
4019    * UI cleanup in Syndie (thanks gloin and bar!)
4020
40212005-09-18  Ragnarok
4022    * Made MetaNamingService the default naming service.
4023
40242005-09-17  Ragnarok
4025    * Implemented a naming service using Syndie's petname db.  It's not enabled
4026      by default, but you can try it out by setting
4027      i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
4028      router.config.
4029    * Implemented a meta naming service that will first lookup names in the
4030      PetNameNamingService then fallback on the HostTxtNamingService.  Which
4031      naming services are checked and in which order is specified by
4032      i2p.nameservicelist.  This will probably become the default naming service
4033      so please help test it out by setting
4034      i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
4035     
4036* 2005-09-17  0.6.0.6 released
4037
40382005-09-17  jrandom
4039    * Clean up syndie a bit more and bundle a default introductory post with
4040      both new installs and updates.
4041    * Typo fixes on the console (thanks bar!)
4042
40432005-09-17  jrandom
4044    * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
4045      steady state rate, plus a new limit on how fast we transfer when
4046      bursting.  This is different from the old "burst as fast as possible
4047      until we're out of tokens" policy, and should help those with congested
4048      networks.  See /config.jsp to manage this rate.
4049    * Bugfixes in Syndie to handle missing cache files (no data was lost, the
4050      old posts just didn't show up).
4051    * Log properly in EepPost
4052
40532005-09-17  jrandom
4054    * Added the natively compiled jbigi and patched java service wrapper for
4055      OS X.  Thanks Bill Dorsey for letting me use your machine!
4056    * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
4057      don't bundle the binutils necessary (and there'd be a naming conflict
4058      if we did).
4059    * Added 'single user' functionality to syndie - if the single user
4060      checkbox on the admin page is checked, all users are allowed to control
4061      the instance and sync up with remote syndie nodes.
4062    * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
4063      debugged.
4064
40652005-09-16  jrandom
4066    * Reject unroutable IPs in SSU like we do for the TCP transport (unless
4067      you have i2np.udp.allowLocal=true defined - useful for private nets)
4068
40692005-09-16  jrandom
4070    * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
4071      (just specify the spoofed host as an empty string), allowing them to
4072      honor x-i2p-gzip encoding.
4073    * Let windows users build the exes too (thanks bar and redzara!)
4074    * Allow I2PTunnel httpserver operators to disable gzip compression on
4075      individual tunnels with the i2ptunnel.gzip=false client option
4076      (good idea susi!)
4077
40782005-09-16  jrandom
4079    * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
4080    * Added runplain.sh for *nix/osx users having problems using the java
4081      service wrapper (called from the install dir as: sh runplain.sh)
4082    * Bundle susidns and syndie, with links on the top nav
4083    * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
4084      content-encoding (if offered), reducing the payload size before it
4085      reaches the streaming lib.  The existing compression is at the i2cp
4086      level, so we've been packetizing 4KB of uncompressed data and then
4087      compressing those messages, rather than compressing and then packetizing
4088      4KB of compressed data.  This should reduce the number of round trips
4089      to fetch web pages substantially.
4090    * Adjust the startup and timing of the addressbook so that susidns always
4091      has config to work off, and expose a method for susidns to tell it to
4092      reload its config and rerun.
4093
40942005-09-15  jrandom
4095    * Error handling for failed intro packets (thanks red.hand!)
4096    * More carefully verify intro addresses
4097
40982005-09-13  jrandom
4099    * More careful error handling with introductions (thanks dust!)
4100    * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
4101    * Hide the shitlist on the summary so it doesn't confuse new users.
4102
41032005-09-12  comwiz
4104    * Migrated the router tests to junit
4105
41062005-09-12  jrandom
4107    * Removed guaranteed delivery mode entirely (so existing i2phex clients
4108      using it can get the benefits of mode=best_effort).  Guaranteed delivery
4109      is offered at the streaming lib level.
4110    * Improve the peer selection code for peer testing, as everyone now
4111      supports tests.
4112    * Give the watchdog its fangs - if it detects obscene job lag or if
4113      clients have been unable to get a leaseSet for more than 5 minutes,
4114      restart the router.  This was disabled a year ago due to spurious
4115      restarts, and can be disabled by "watchdog.haltOnHang=false", but the
4116      cause of the spurious restarts should be gone.
4117
41182005-09-12  jrandom
4119    * Bugfix for skewed store which could kill a UDP thread (causing complete
4120      comm failure and eventual OOM)
4121
41222005-09-12  jrandom
4123    * More aggressively publish updated routerInfo.
4124    * Expose the flag to force SSU introductions on the router console
4125    * Don't give people the option to disable SNTP time sync, at least not
4126      through the router console, because there is no reason to disable it.
4127      No, not even if your OS is "ntp synced", because chances are, its not.
4128
41292005-09-10  jrandom
4130    * Test the router's reachability earlier and more aggressively
4131    * Use the low level bandwidth limiter's rates for the router console, and
4132      if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
4133      the logger config, keep track of the 1 second transfer rates as the stat
4134      'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
4135      behavior.
4136
41372005-09-09  jrandom
4138    * Added preliminary support for NAT hole punching through SSU introducers
4139    * Honor peer test results from peers that we have an SSU session with if
4140      those sessions are idle for 3 minutes or more.
4141
41422005-09-09  cervantes
4143    * New build due to change in build number :P (thanks ugha!)
4144
41452005-09-07  BarkerJr
4146    * HTML cleanup for the router console (thanks!)
4147
41482005-09-07  jrandom
4149    * Lay the foundation for 'client routers' - the ability for peers to opt
4150      out of participating in tunnels entirely due to firewall/NAT issues. 
4151      Individual routers have control over where those peers are used in
4152      tunnels - in outbound or inbound, exploratory or client tunnels, or
4153      none at all.  The defaults with this build are to simply act as before -
4154      placing everyone as potential participants in any tunnel.
4155    * Another part of the foundation includes the option for netDb
4156      participants to refuse to answer queries regarding peers who are marked
4157      as unreachable, though this too is disabled by default (meaning the
4158      routerInfo is retrievable from the netDb).
4159
41602005-09-05  jrandom
4161    * Expose the HTTP headers to EepGet status listeners
4162    * Handle DSA key failures properly (if the signature is not invertable, it
4163      is obviously invalid)
4164
41652005-09-04  jrandom
4166    * Don't persist peer profiles until we are shutting down, as the
4167      persistence process gobbles RAM and wall time.
4168    * Bugfix to allow you to check/uncheck the sharedClient setting on the
4169      I2PTunnel web interface (thanks BarkerJr!)
4170    * Be more careful when expiring a failed tunnel message fragment so we
4171      don't drop the data while attempting to read it.
4172
4173* 2005-09-02  0.6.0.5 released
4174
41752005-09-02  jrandom
4176    * Don't refuse to send a netDb store if the targetted peer has failed a
4177      bit (the value was an arbitrary amount).
4178    * Logging changes
4179
4180* 2005-09-01  0.6.0.4 released
4181
41822005-09-01  jrandom
4183    * Don't send out a netDb store of a router if it is more than a few hours
4184      old, even if someone asked us for it.
4185
41862005-08-31  jrandom
4187    * Don't publish leaseSets to the netDb if they will never be looked for -
4188      namely, if they are for destinations that only establish outbound
4189      streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
4190      modified to tell the router that it doesn't need to publish their
4191      leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
4192      to 'true').
4193    * Don't publish the top 10 peer rankings of each router in the netdb, as
4194      it isn't being watched right now.
4195
41962005-08-29  jrandom
4197    * Added the new test Floodfill netDb
4198
41992005-08-27  jrandom
4200    * Minor logging and optimization tweaks in the router and SDK
4201    * Use ISO-8859-1 in the XML files (thanks redzara!)
4202    * The consolePassword config property can now be used to bypass the router
4203      console's nonce checking, allowing CLI restarts
4204
42052005-08-24  jrandom
4206    * Catch errors with corrupt tunnel messages more gracefully (no need to
4207      kill the thread and cause an OOM...)
4208    * Don't skip shitlisted peers for netDb store messages, as they aren't
4209      necessarily shitlisted by other people (though they probably are).
4210    * Adjust the netDb store per-peer timeout based on each particular peer's
4211      profile (timeout = 4x their average netDb store response time)   
4212    * Don't republish leaseSets to *failed* peers - send them to peers who
4213      replied but just didn't know the value.
4214    * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
4215      HTTP headers, rather than blocking indefinitely.  HTTP headers should be
4216      sent entirely within the first streaming packet anyway, so this won't be
4217      a problem.
4218    * Don't use the I2PTunnel*Server handler thread pool by default, as it may
4219      prevent any clients from accessing the server if the handlers get
4220      blocked by the streaming lib or other issues.
4221    * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
4222      Unknown.
4223
42242005-08-23  jrandom
4225    * Removed the concept of "no bandwidth limit" - if none is specified, its
4226      16KBps in/out.
4227    * Include ack packets in the per-peer cwin throttle (they were part of the
4228      bandwidth limit though).
4229    * Tweak the SSU cwin operation to get more accurrate estimates under
4230      congestions.
4231    * SSU improvements to resend more efficiently.
4232    * Added a basic scheduler to eepget to fetch multiple files sequentially.
4233
4234* 2005-08-21  0.6.0.3 released
4235
42362005-08-21  jrandom
4237    * If we already have an established SSU session with the Charlie helping
4238      test us, cancel the test with the status of "unknown".
4239
42402005-08-17  jrandom
4241    * Revise the SSU peer testing protocol so that Bob verifies Charlie's
4242      viability before agreeing to Alice's request.  This doesn't work with
4243      older SSU peer test builds, but is backwards compatible (older nodes
4244      won't ask newer nodes to participate in tests, and newer nodes won't
4245      ask older nodes to either).
4246
42472005-08-12  jrandom
4248    * Keep detailed stats on the peer testing, publishing the results in the
4249      netDb.
4250    * Don't overwrite the status with 'unknown' unless we haven't had a valid
4251      status in a while.
4252    * Make sure to avoid shitlisted peers for peer testing.
4253    * When we get an unknown result to a peer test, try again soon afterwards.
4254    * When a peer tells us that our address is different from what we expect,
4255      if we've done a recent peer test with a result of OK, fire off a peer
4256      test to make sure our IP/port is still valid.  If our test is old or the
4257      result was not OK, accept their suggestion, but queue up a peer test for
4258      later.
4259    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
4260      we monitor netDb store progress (to clear up the high netDb.storePeers
4261      stat)
4262
42632005-08-10  jrandom
4264    * Deployed the peer testing implementation to be run every few minutes on
4265      each router, as well as any time the user requests a test manually.  The
4266      tests do not reconfigure the ports at the moment, merely determine under
4267      what conditions the local router is reachable.  The status shown in the
4268      top left will be "ERR-SymmetricNAT" if the user's IP and port show up
4269      differently for different peers, "ERR-Reject" if the router cannot
4270      receive unsolicited packets or the peer helping test could not find a 
4271      collaborator, "Unknown" if the test has not been run or the test
4272      participants were unreachable, or "OK" if the router can receive
4273      unsolicited connections and those connections use the same IP and port.
4274
4275* 2005-08-08  0.6.0.2 released
4276
42772005-08-08  jrandom
4278    * Add a configurable throttle to the number of concurrent outbound SSU
4279      connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
4280      may help those with slow connections to get integrated at the start.
4281    * Further fixlets to the streaming lib
4282
42832005-08-07  Complication
4284    * Display the average clock skew for both SSU and TCP connections
4285
42862005-08-07  jrandom
4287    * Fixed the long standing streaming lib bug where we could lose the first
4288      packet on retransmission.
4289    * Avoid an NPE when a message expires on the SSU queue.
4290    * Adjust the streaming lib's window growth factor with an additional
4291      Vegas-esque congestion detection algorithm.
4292    * Removed an unnecessary SSU session drop
4293    * Reduced the MTU (until we get a working PMTU lib)
4294    * Deferr tunnel acceptance until we know how to reach the next hop,
4295      rejecting it if we can't find them in time.
4296    * If our netDb store of our leaseSet fails, give it a few seconds before
4297      republishing.
4298
4299* 2005-08-03  0.6.0.1 released
4300
43012005-08-03  jrandom
4302    * Backed out an inadvertant change to the netDb store redundancy factor.
4303    * Verify tunnel participant caching.
4304    * Logging cleanup
4305
43062005-08-01  duck
4307    * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
4308
43092005-08-01  duck
4310    * Fix an addressbook NPE when a new hostname from the master addressbook
4311      didn't exist in the router addressbook.
4312    * Fix an addressbook bug which caused subscriptions not to be parsed at
4313      all. (Oops!)
4314
43152005-07-31  jrandom
4316    * Adjust the netDb search and store per peer timeouts to match the average
4317      measured per peer success times, rather than huge fixed values.
4318    * Optimized and reverified the netDb peer selection / retrieval process
4319      within the kbuckets.
4320    * Drop TCP connections that don't have any useful activity in 10 minutes.
4321    * If i2np.udp.fixedPort=true, never change the externally published port,
4322      even if we are autodetecting the IP address.
4323
4324* 2005-07-27  0.6 released
4325
43262005-07-27  jrandom
4327    * Enabled SSU as the default top priority transport, adjusting the
4328      config.jsp page accordingly.
4329    * Add verification fields to the SSU and TCP connection negotiation (not
4330      compatible with previous builds)
4331    * Enable the backwards incompatible tunnel crypto change as documented in
4332      tunnel-alt.html (have each hop encrypt the received IV before using it,
4333      then encrypt it again before sending it on)
4334    * Disable the I2CP encryption, leaving in place the end to end garlic
4335      encryption (another backwards incompatible change)
4336    * Adjust the protocol versions on the TCP and SSU transports so that they
4337      won't talk to older routers.
4338    * Fix up the config stats handling again
4339    * Fix a rare off-by-one in the SSU fragmentation
4340    * Reduce some unnecessary netDb resending by inluding the peers queried
4341      successfully in the store redundancy count.
4342
43432005-07-22  jrandom
4344    * Use the small thread pool for I2PTunnelHTTPServer (already used for
4345      I2PTunnelServer)
4346    * Minor memory churn reduction in I2CP
4347    * Small stats update
4348
43492005-07-21  jrandom
4350    * Fix in the SDK for a bug which would manifest itself as misrouted
4351      streaming packets when a destination has many concurrent streaming
4352      connections (thanks duck!)
4353    * No more "Graceful shutdown in -18140121441141s"
4354
43552005-07-20  jrandom
4356    * Allow the user to specify an external port # for SSU even if the external
4357      host isn't specified (thanks duck!)
4358
43592005-07-19  jrandom
4360    * Further preparation for removing I2CP crypto
4361    * Added some validation to the DH key agreement (thanks $anon)
4362    * Validate tunnel data message expirations (though not really a problem,
4363      since tunnels expire)
4364    * Minor PRNG threading cleanup
4365
43662005-07-15  cervantes
4367    * Added workaround for an odd win32 bug in the stats configuration console
4368      page which meant only the first checkbox selection was saved.
4369
43702005-07-15  Romster
4371    * Added per group selection toggles in the stats configuration console
4372      page.
4373
43742005-07-13  jrandom
4375    * Fixed a recently injected bug in the multitransport bidding which had
4376      allowed an essentially arbitrary choice of transports, rather than the
4377      properly ordered choice.
4378
43792005-07-13  jrandom
4380    * Fixed a long standing bug where we weren't properly comparing session
4381      tags but instead largely depending upon comparing their hashCode,
4382      causing intermittent decryption errors.
4383
43842005-07-12  jrandom
4385    * Add some data duplication to avoid a recently injected concurrency
4386      problem in the session tag manager (thanks redzara and romster).
4387
43882005-07-11  jrandom
4389    * Reduced the growth factor on the slow start and congestion avoidance for
4390      the streaming lib.
4391    * Adjusted some of the I2PTunnelServer threading to use a small pool of
4392      handlers, rather than launching off new threads which then immediately
4393      launch off an I2PTunnelRunner instance (which launches 3 more threads..)
4394    * Don't persist session keys / session tags (not worth it, for now)
4395    * Added some detection and handling code for duplicate session tags being
4396      delivered (root cause still not addressed)
4397    * Make the PRNG's buffer size configurable (via the config property
4398      "i2p.prng.totalBufferSizeKB=4096")
4399    * Disable SSU flooding by default (duh)
4400    * Updates to the StreamSink apps for better throttling tests.
4401
44022005-07-05  jrandom
4403    * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
4404      buffer, rather than the underlying PRNG's (likely small) one, which in
4405      turn reduces the frequency of recalcing.
4406    * More tuning to reduce temporary allocation churn
4407
44082005-07-04  jrandom
4409    * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
4410      rather than the IV by itself, preventing an attack that would let
4411      colluding internal adversaries tag a message to determine that they are
4412      in the same tunnel.  Thanks dvorak for the catch!
4413    * Drop long inactive profiles on startup and shutdown
4414    * /configstats.jsp: web interface to pick what stats to log
4415    * Deliver more session tags to account for wider window sizes
4416    * Cache some intermediate values in our HMACSHA256 and BC's HMAC
4417    * Track the client send rate (stream.sendBps and client.sendBpsRaw)
4418    * UrlLauncher: adjust the browser selection order
4419    * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
4420    * StreamSinkClient: add support for sending an unlimited amount of data
4421    * Migrate the tests out of the default build jars
4422
44232005-06-22  Comwiz
4424    * Migrate the core tests to junit
4425
44262005-05-25  duck
4427    * Fixed PRNG bug (bugzilla #107)
4428
44292005-05-01  jrandom
4430    * Added a substantial optimization to the AES engine by caching the
4431      prepared session keys (duh).
4432
44332005-05-01  jrandom
4434    * Cleaned up the peers page a bit more.
4435
44362005-04-30  jrandom
4437    * Added a small new page to the web console (/peers.jsp) which contains
4438      the peer connection information.  This will be cleaned up a lot more
4439      before 0.6 is out, but its a start.
4440
44412005-04-30  jrandom
4442    * Reduced some SimpleTimer churn
4443
44442005-04-29  jrandom
4445    * Reduce the peer profile stat coallesce overhead by inlining it with the
4446      reorganize.
4447    * Limit each transport to at most one address (any transport that requires
4448      multiple entry points can include those alternatives in the address).
4449
44502005-04-28  jrandom
4451    * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
4452    * Add back the code to handle bids from multiple transports (though there
4453      is still only one transport enabled by default)
4454    * Adjust the router's queueing of outbound client messages when under
4455      heavy load by running the preparatory job in the client's I2CP handler
4456      thread, thereby blocking additional outbound messages when the router is
4457      hosed.
4458    * No need to validate or persist a netDb entry if we already have it
4459
44602005-04-25  smeghead
4461    * Added button to router console for manual update checks.
4462    * Fixed bug in configupdate.jsp that caused the proxy port to be updated
4463      every time the form was submitted even if it hadn't changed.
4464
44652005-04-24  jrandom
4466    * Added a pool of PRNGs using a different synchronization technique,
4467      hopefully sufficient to work around IBM's PRNG bugs until we get our
4468      own Fortuna.
4469    * In the streaming lib, don't jack up the RTT on NACK, and have the window
4470      size bound the not-yet-ready messages to the peer, not the unacked
4471      message count (not sure yet whether this is worthwile).
4472    * Many additions to the messageHistory log.
4473    * Handle out of order tunnel fragment delivery (not an issue on the live
4474      net with TCP, but critical with UDP).
4475
4476* 2005-04-20  0.5.0.7 released
4477
44782005-04-20  jrandom
4479    * In the SDK, we don't actually need to block when we're sending a message
4480      as BestEffort (and these days, we're always sending BestEffort).
4481    * Pass out client messages in fewer (larger) steps.
4482    * Have the InNetMessagePool short circuit dispatch requests.
4483    * Have the message validator take into account expiration to cut down on
4484      false positives at high transfer rates.
4485    * Allow configuration of the probabalistic window size growth rate in the
4486      streaming lib's slow start and congestion avoidance phases, and default
4487      them to a more conservative value (2), rather than the previous value
4488      (1).
4489    * Reduce the ack delay in the streaming lib to 500ms
4490    * Honor choke requests in the streaming lib (only affects those getting
4491      insanely high transfer rates)
4492    * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
4493      I2PTunnel client page (thanks maestro^!)
4494
44952005-04-17  sirup
4496    * Added the possibility for i2ptunnel client and httpclient instances to
4497      have their own i2p session (and hence, destination and tunnels).  By
4498      default, tunnels are shared, but that can be changed on the web
4499      interface or with the sharedClient config option in i2ptunnel.config.
4500
45012005-04-17  jrandom
4502    * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
4503      this?  If not, I want to drop it (lots of tiny details with lots of
4504      duplicated semantics).
4505
45062005-04-17  zzz
4507    * Added new user-editable eepproxy error page templates.
4508
45092005-04-17  jrandom
4510    * Revamp the tunnel building throttles, fixing a situation where the
4511      rebuild may not recover, and defaulting it to unthrottled (users with
4512      slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
4513      advanced router config)
4514
45152005-04-16  jrandom
4516    * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
4517
45182005-04-12  jrandom
4519    * Make sure we don't get cached updates (thanks smeghead!)
4520    * Clear out the callback for the TestJob after it passes (only affects the
4521      job timing accounting)
4522
45232005-04-08  smeghead
4524    * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
4525
45262005-04-08  smeghead
4527    * Security improvements to TrustedUpdate: signing and verification of the
4528      version string along with the data payload for signed update files
4529      (consequently the positions of the DSA signature and version string fields
4530      have been swapped in the spec for the update file's header); router will
4531      no longer perform a trusted update if the signed update's version is lower
4532      than or equal to the currently running router's version.
4533    * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
4534    * Extended TrustedUpdate public API for use by third party applications.
4535
4536* 2005-04-06  0.5.0.6 released
4537
45382005-04-05  jrandom
4539    * Retry I2PTunnel startup if we are unable to build a socketManager for a
4540      client or httpclient tunnel.
4541    * Add some basic sanity checking on the I2CP settings (thanks duck!)
4542
45432005-04-05  jrandom
4544    * After a successfull netDb search for a leaseSet, republish it to all of
4545      the peers we have tried so far who did not give us the key (up to 10),
4546      rather than the old K closest (which may include peers who had given us
4547      the key)
4548    * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
4549      republish it every 5 minutes, republish it every 3.  In addition, always
4550      republish as soon as the leaseSet changes (duh^2).
4551    * Minor fix for oddball startup race (thanks travis_bickle!)
4552    * Minor AES update to allow in-place decryption.
4553
45542005-04-03  jrandom
4555    * EepGet fix for open-ended HTTP fetches (such as the news.xml
4556      feeding the NewsFetcher)
4557
45582005-04-01  jrandom
4559    * Allow editing I2PTunnel server instances with five digit ports
4560      (thanks nickless_head!)
4561    * More NewsFetcher debugging for reported weirdness
4562
45632005-04-01  jrandom
4564    * Fix to check for missing news file (thanks smeghead!)
4565    * Added destination display CLI:
4566      java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
4567    * Added destination display to the web interface (thanks pnspns)
4568    * Installed CIA backdoor
4569
4570* 2005-03-29  0.5.0.5 released
4571
45722005-03-29  jrandom
4573    * Decreased the initial RTT estimate to 10s to allow more retries.
4574    * Increased the default netDb store replication factor from 2 to 6 to take
4575      into consideration tunnel failures.
4576    * Address some statistical anonymity attacks against the netDb that could
4577      be mounted by an active internal adversary by only answering lookups for
4578      leaseSets we received through an unsolicited store.
4579    * Don't throttle lookup responses (we throttle enough elsewhere)
4580    * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
4581      the file (thanks nickster!)
4582    * Updated the I2PTunnel HTML (thanks postman!)
4583    * Added support to the I2PTunnel pages for the URL parameter "passphrase",
4584      which, if matched against the router.config "i2ptunnel.passphrase" value,
4585      skips the nonce check.  If the config prop doesn't exist or is blank, no
4586      passphrase is accepted.
4587    * Implemented HMAC-SHA256.
4588    * Enable the tunnel batching with a 500ms delay by default
4589    * Dropped compatability with 0.5.0.3 and earlier releases
4590
45912005-03-26  jrandom
4592    * Added some error handling and fairly safe to cache data to the streaming
4593      lib (good call Tom!)
4594
45952005-03-25  jrandom
4596    * Fixed up building dependencies for the routerconsole on some more
4597      aggressive compilers (thanks polecat!)
4598
4599* 2005-03-24  0.5.0.4 released
4600
46012005-03-23  jrandom
4602    * Added more intelligent version checking in news.xml, in case we have a
4603      version newer than the one specified.
4604
46052005-03-23  jrandom
4606    * Added support for Transfer-Encoding: chunked to the EepGet, so that the
4607      cvsweb.cgi doesn't puke on us.
4608
46092005-03-23  Connelly
4610    * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
4611      stream send data to not be sent if STREAM CLOSE is issued too fast.
4612
46132005-03-23  jrandom
4614    * Implemented the news fetch / update policy code, as configurated on
4615      /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
4616      doesn't exist yet, on startup).  No action is taken however, though if
4617      the news.xml specifies that a new release is available, an option to
4618      update will be shown on the router console.
4619    * New initialNews.xml delivered with new installs, and moved news.xml out
4620      of the i2pwww module and into the i2p module so that we can bundle it
4621      within each update.
4622
46232005-03-23  jrandom
4624    * New /configupdate.jsp page for controlling the update / notification
4625      process, as well as various minor related updates.  Note that not all
4626      options are exposed yet, and the update detection code isn't in place
4627      in this commit - it currently says there is always an update available.
4628    * New EepGet component for reliable downloading, with a CLI exposed in
4629      java -cp lib/i2p.jar net.i2p.util.EepGet url
4630    * Added a default signing key to the TrustedUpdate component to be used
4631      for verifying updates.  This signing key can be authenticated via
4632      gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
4633    * New public domain SHA1 implementation for the DSA code so that we can
4634      handle signing streams of arbitrary size without excess memory usage
4635      (thanks P.Verdy!)
4636    * Added some helpers to the TrustedUpdate to work off streams and to offer
4637      a minimal CLI:
4638          TrustedUpdate keygen pubKeyFile privKeyFile
4639          TrustedUpdate sign origFile signedFile privKeyFile
4640          TrustedUpdate verify signedFile
4641
46422005-03-22  smeghead
4643    * New TrustedUpdate component for signing/verifying files with a DSA
4644      signature.
4645
46462005-03-21  jrandom
4647    * Fixed the tunnel fragmentation handler to deal with multiple fragments
4648      in a single message properly (rather than release the buffer into the
4649      cache after processing the first one) (duh!)
4650    * Added the batching preprocessor which will bundle together multiple
4651      small messages inside a single tunnel message by delaying their delivery
4652      up to .5s, or whenever the pending data will fill a full message,
4653      whichever comes first.  This is disabled at the moment, since without the
4654      above bugfix widely deployed, lots and lots of messages would fail.
4655    * Within each tunnel pool, stick with a randomly selected peer for up to
4656      .5s before randomizing and selecting again, instead of randomizing the
4657      pool each time a tunnel is needed. 
4658
4659* 2005-03-18  0.5.0.3 released
4660
46612005-03-18  jrandom
4662    * Minor tweak to the timestamper to help reduce small skews
4663    * Adjust the stats published to include only the relevent ones
4664    * Only show the currently used speed calculation on the profile page
4665    * Allow the full max # resends to be sent, rather than piggybacking the
4666      RESET packet along side the final resend (duh)
4667    * Add irc.postman.i2p to the default list of IRC servers for new installs
4668    * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
4669      backwards compatability for users running 0.5.0.2.
4670
46712005-03-18  jrandom
4672    * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
4673    * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
4674
46752005-03-17  jrandom
4676    * Update the old speed calculator and associated profile data points to
4677      use a non-tiered moving average of the tunnel test time, avoiding the
4678      freshness issues of the old tiered speed stats.
4679    * Explicitly synchronize all of the methods on the PRNG, rather than just
4680      the feeder methods (sun and kaffe only need the feeder, but it seems ibm
4681      needs all of them synchronized).
4682    * Properly use the tunnel tests as part of the profile stats.
4683    * Don't flood the jobqueue with sequential persist profile tasks, but
4684      instead, inject a brief scheduling delay between them.
4685    * Reduce the TCP connection establishment timeout to 20s (which is still
4686      absurdly excessive)
4687    * Reduced the max resend delay to 30s so we can get some resends in when
4688      dealing with client apps that hang up early (e.g. wget)
4689    * Added more alternative socketManager factories (good call aum!)
4690
46912005-03-16  jrandom
4692    * Adjust the old speed calculator to include end to end RTT data in its
4693      estimates, and use that as the primary speed calculator again.
4694    * Use the mean of the high capacity speeds to determine the fast
4695      threshold, rather than the median.  Perhaps we should use the mean of
4696      all active non-failing peers?
4697    * Updated the profile page to sort by tier, then alphabetically.
4698    * Added some alternative socketManager factories (good call aum!)
4699
47002005-03-14  jrandom
4701    * New strict speed calculator that goes off the actual number of messages
4702      verifiably sent through the peer by way of tunnels.  Initially, this only
4703      contains the successful message count on inbound tunnels, but may be
4704      augmented later to include verified outbound messages, peers queried in
4705      the netDb, etc.  The speed calculation decays quickly, but should give
4706      a better differential than the previous stat (both values are shown on
4707      the /profiles.jsp page)
4708
47092005-03-11  jrandom
4710    * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
4711      minimum (increased on resends as before, of course).
4712    * Always prod the clock update listeners, even if just to tell them that
4713      the time hasn't changed much.
4714    * Added support for explicit peer selection for individual tunnel pools,
4715      which will be useful in debugging but not recommended for use by normal
4716      end users.
4717    * More aggressively search for the next hop's routerInfo on tunnel join.
4718    * Give messages received via inbound tunnels that are bound to remote
4719      locations sufficient time (taking into account clock skew).
4720    * Give alternate direct send messages sufficient time (10s min, not 5s)
4721    * Always give the end to end data message the explicit timeout (though the
4722      old default was sufficient before)
4723    * No need to give end to end messages an insane expiration (+2m), as we
4724      are already handling skew on the receiving side.
4725    * Don't complain too loudly about expired TunnelCreateMessages (at least,
4726      not until after all those 0.5 and 0.5.0.1 users upgrade ;)
4727    * Properly keep the sendBps stat
4728    * When running the router with router.keepHistory=true, log more data to
4729      messageHistory.txt
4730    * Logging updates
4731    * Minor formatting updates
4732
47332005-03-08  jrandom
4734    * More aggressively adjust the clock
4735
47362005-03-07  jrandom
4737    * Fix the HTTP response header filter to allow multiple headers with the
4738      same name (thanks duck and spotteri!)
4739
4740* 2005-03-06  0.5.0.2 released
4741
47422005-03-06  jrandom
4743    * Allow the I2PTunnel web interface to select streaming lib options for
4744      individual client tunnels, rather than sharing them across all of them,
4745      as we do with the session options.  This way people can (and should) set
4746      the irc proxy to interactive and the eepproxy to bulk.
4747    * Added a startRouter.sh script to new installs which simply calls
4748      "sh i2prouter start".  This should make it clear how people should start
4749      I2P.
4750    * Properly expand the HTTP response header buffer (thanks shendaras!)
4751
47522005-03-04  jrandom
4753    * Filter HTTP response headers in the eepproxy, forcing Connection: close
4754      so that broken (/malicious) webservers can't allow persistent
4755      connections.  All HTTP compliant browsers should now always close the
4756      socket.
4757    * Enabled the GZIPInputStream's cache (they weren't cached before)
4758    * Make sure our first send is always a SYN (duh)
4759    * Workaround for some buggy compilers
4760
47612005-03-03  jrandom
4762    * Loop while starting up the I2PTunnel instances, in case the I2CP
4763      listener isn't up yet (thanks detonate!)
4764    * Implement custom reusable GZIP streams to both reduce memory churn
4765      and prevent the exposure of data in the standard GZIP header (creation
4766      time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
4767      though has only been tested within the confines of I2P's compression use
4768      (DataHelper.[de]compress).
4769    * Preemptively support the next protocol version, so that after the 0.5.0.2
4770      release, we'll be able to drop protocol=2 to get rid of 0.5 users.
4771
47722005-03-02  jrandom
4773    * Fix one substantial OOM cause (session tag manager was only dropping
4774      tags once the critical limit was met, rather than honoring their
4775      expiration) (duh)
4776    * Lots of small memory fixes
4777    * Double the allowable concurrent outstanding tunnel build tasks (20)
4778
47792005-03-01  jrandom
4780    * Really disable the streaming lib packet caching
4781    * Synchronized a message handling point in the SDK (even though its use is
4782      already essentially single threaded, its better to play it safe)
4783    * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
4784      existing one (duh)
4785    * Throttle the number of concurrent pending tunnel builds across all
4786      pools, in addition to simply throttling the number of new requests per
4787      minute for each pool individually.  This should avoid the cascading
4788      failure when tunnel builds take too long, as no new builds will be
4789      created until the previous ones are handled.
4790    * Factored out and extended the DataHelper's unit tests for dealing with
4791      long and date formatting.
4792    * Explicitly specify the HTTP auth realm as "i2prouter", though this
4793      alone doesn't address the bug where jetty asks for authentication too
4794      much.  (thanks orion!)
4795    * Updated the StreamSinkServer to ignore all read bytes, rather than write
4796      them to the filesystem.
4797
47982005-02-27  jrandom
4799    * Don't rerequest leaseSets if there are already pending requests
4800    * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
4801      temporary disabled the streaming lib packet caching.
4802    * Reduced the resend RTT penalty to 10s
4803
48042005-02-26  jrandom
4805    * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
4806
48072005-02-26  jrandom
4808    * Further streaming lib caching improvements
4809    * Reduce the minimum RTT (used to calculate retry timeouts), but also
4810      increase the RTT on resends.
4811    * Lower the default message size to 4KB from 16KB to further reduce the
4812      chance of failed fragmentation.
4813    * Extend tunnel rebuild throttling to include fallback rebuilds
4814    * If there are less than 20 routers known, don't drop the last 20 (to help
4815      avoid dropping all peers under catastrophic failures)
4816    * New stats for end to end messages - "client.leaseSetFoundLocally",
4817      "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
4818
48192005-02-24  jrandom
4820    * Throttle the number of tunnel rebuilds per minute, preventing CPU
4821      overload under catastrophic failures (thanks Tracker and cervantes!)
4822    * Block the router startup process until we've initialized the clock
4823
48242005-02-24  jrandom
4825    * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
4826      data in the streaming lib.
4827    * Fixed a streaming lib bug where the connection initiator would fail the
4828      stream if the ACK to their SYN was lost.
4829
48302005-02-23  jrandom
4831    * Now that we don't get stale SAM sessions, it'd be nice if we didn't
4832      get stale tunnel pools, don't you think?
4833
4834* 2005-02-23  0.5.0.1 released
4835
48362005-02-22  jrandom
4837    * Reworked the tunnel (re)building process to remove the tokens and
4838      provide cleaner controls on the tunnels built.
4839    * Fixed situations where the timestamper wanted to test more servers than
4840      were provided (thanks Tracker!)
4841    * Get rid of the dead SAM sessions by using the streaming lib's callbacks
4842      (thanks Tracker!)
4843
48442005-02-22  jrandom
4845    * Temporary workaround for the I2CP disconnect bug (have the streaminglib
4846      try to automatically reconnect on accept()/connect(..)).
4847    * Loop check for expired lease republishing (just in case)
4848
48492005-02-22  jrandom
4850    * Adjusted (and fixed...) the timestamper change detection
4851    * Deal with a rare reordering bug at the beginning of a stream (so we
4852      don't drop it unnecessarily)
4853    * Cleaned up some dropped message handling in the router
4854    * Reduced job queue churn when dealing with a large number of tunnels by
4855      sharing an expiration job
4856    * Keep a separate list of the most recent CRIT messages (shown on the
4857      logs.jsp).  This way they don't get buried among any other messages.
4858    * For clarity, display the tunnel variance config as "Randomization" on
4859      the web console.
4860    * If lease republishing fails (boo! hiss!) try it again
4861    * Actually fix the negative jobLag in the right place (this time)
4862    * Allow reseeding when there are less than 10 known peer references
4863    * Lots of logging updates.
4864
48652005-02-20  jrandom
4866    * Allow the streaming lib resend frequency to drop down to 20s as the
4867      minimum, so that up to 2 retries can get sent on an http request.
4868    * Add further limits to failsafe tunnels.
4869    * Keep exploratory and client tunnel testing and building stats separate.
4870    * Only use the 60s period for throttling tunnel requests due to transient
4871      network overload.
4872    * Rebuild tunnels earlier (1-3m before expiration, by default)
4873    * Cache the next hop's routerInfo for participating tunnels so that the
4874      tunnel participation doesn't depend on the netDb.
4875    * Fixed a long standing bug in the streaming lib where we wouldn't always
4876      unchoke messages when the window size grows.
4877    * Make sure the window size never reaches 0 (duh)
4878
48792005-02-20  jrandom
4880    * Only build failsafe tunnels if we need them
4881    * Properly implement the selectNotFailingPeers so that we get a random
4882      selection of peers, rather than using the strictOrdering (thanks dm!)
4883    * Don't include too many "don't tell me about" peer references in the
4884      lookup message - only send the 10 peer references closest to the target.
4885
48862005-02-19  jrandom
4887    * Only build new extra tunnels on failure if we don't have enough
4888    * Fix a fencepost in the tunnel building so that e.g. a variance of
4889      2 means +/- 2, not +/- 1 (thanks dm!)
4890    * Avoid an NPE on client disconnect
4891    * Never select a shitlisted peer to participate in a tunnel
4892    * Have netDb store messages timeout after 10s, not the full 60s (duh)
4893    * Keep session tags around for a little longer, just in case (grr)
4894    * Cleaned up some closing event issues on the streaming lib
4895    * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
4896      so that 0.4.* users will need to do a clean install, but we don't need
4897      to shove an additional 2MB in each update to those already on 0.5.
4898    * Imported the susimail css (oops, thanks susi!)
4899
4900* 2005-02-18  0.5 released
4901
49022005-02-17  jrandom
4903    * If the clock is adjusted during a job run, don't act as if the job took
4904      negative time.
4905
49062005-02-17  jrandom
4907    * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
4908
49092005-02-17  jrandom
4910    * Fixed the braindead tunnel testing logic
4911    * If a large number of tunnels are failing (within the last 5-10 minutes)
4912      and the current tunnel pool's configuration allows it, randomly build a
4913      zero hop tunnel to replace failed tunnels.
4914    * Enable postman's POP3 and SMTP tunnels by default
4915
49162005-02-16  jrandom
4917    * Added some error handling when the number of session tags exceeds the
4918      realistic capacity, dropping a random chunk of received tag sets and
4919      conducting some minor analysis of the remaining ones.  This is a part
4920      of a pretty serious error condition, and logs as CRIT (if/when people
4921      see "TOO MANY SESSION TAGS!", please let me know the full log line it
4922      puts in the wrapper.log or /logs.jsp)
4923    * Update the addressbook to only write to the published hosts location
4924      if the addressbook's config contains "should_publish=true" (by default,
4925      it contains "should_publish=false")
4926
49272005-02-16  jrandom
4928    * (Merged the 0.5-pre branch back into CVS HEAD)
4929    * Replaced the old tunnel routing crypto with the one specified in
4930      router/doc/tunnel-alt.html, including updates to the web console to view
4931      and tweak it. 
4932    * Provide the means for routers to reject tunnel requests with a wider
4933      range of responses:
4934        probabalistic rejection, due to approaching overload
4935        transient rejection, due to temporary overload
4936        bandwidth rejection, due to persistent bandwidth overload
4937        critical rejection, due to general router fault (or imminent shutdown)
4938      The different responses are factored into the profiles accordingly.
4939    * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
4940      with a series of new properties, relevent to the new tunnel routing code:
4941        inbound.nickname (used on the console)
4942        inbound.quantity (# of tunnels to use in any leaseSets)
4943        inbound.backupQuantity (# of tunnels to keep in the ready)
4944        inbound.length (# of remote peers in the tunnel)
4945        inbound.lengthVariance (if > 0, permute the length by adding a random #
4946                                up to the variance.  if < 0, permute the length
4947                                by adding or subtracting a random # up to the
4948                                variance)
4949        outbound.* (same as the inbound, except for the, uh, outbound tunnels
4950                    in that client's pool)
4951      There are other options, and more will be added later, but the above are
4952      the most relevent ones.
4953    * Replaced Jetty 4.2.21 with Jetty 5.1.2
4954    * Compress all profile data on disk.
4955    * Adjust the reseeding functionality to work even when the JVM's http proxy
4956      is set.
4957    * Enable a poor-man's interactive-flow in the streaming lib by choking the
4958      max window size.
4959    * Reduced the default streaming lib max message size to 16KB (though still
4960      configurable by the user), also doubling the default maximum window
4961      size.
4962    * Replaced the RouterIdentity in a Lease with its SHA256 hash.
4963    * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
4964      the first byte of the SHA256.
4965    * Added a new "netId" flag to let routers drop references to other routers
4966      who we won't be able to talk to.
4967    * Extended the timestamper to get a second (or third) opinion whenever it
4968      wants to actually adjust the clock offset.
4969    * Replaced that kludge of a timestamp I2NP message with a full blown
4970      DateMessage.
4971    * Substantial memory optimizations within the router and the SDK to reduce
4972      GC churn.  Client apps and the streaming libs have not been tuned,
4973      however.
4974    * More bugfixes than you can shake a stick at.
4975
49762005-02-13  jrandom
4977    * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
4978      only contains 32bit versions, so build your own, placing libjbigi.so in
4979      your install dir if necessary.  (thanks mule!)
4980    * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
4981      (thanks spaetz!)
4982
49832005-02-10  smeghead
4984    * Initial check-in of Pants, a new utility to help us manage our 3rd-party
4985      dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
4986      Pants are still non-functional at this time so don't mess with it yet
4987      unless you want to potentially mangle your working copy of CVS.
4988
49892005-02-09  duck
4990    * Allow an unneeded newline in the SAM client connection without
4991      disconnecting.
4992
49932005-02-07  jrandom
4994    * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
4995
49962005-02-06  Sugadude
4997    * Added a filter to the addressbook to remove entries that dont end in ".i2p"
4998
49992005-02-03  smeghead
5000    * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
5001      library from GNU Crypto's CVS HEAD sources.
5002
50032005-01-26  smeghead
5004    * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
5005      packages and installed to $i2pinstalldir/scripts.
5006    * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
5007      using gij + libgcj, and --sourcedir to run them from the source tree
5008      instead of the installation directory.
5009    * Fixed unreachable for() statement clause in the KBucketImpl class that was
5010      causing gcj to toss a compilation warning (jrandom++).
5011
50122005-01-26  smeghead
5013    * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
5014      tests and benchmarks.
5015    * Routerconsole now builds under gcj 3.4.3.
5016    * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
5017
50182005-01-25  smeghead
5019    * Tweaked some classes to enable gcj 3.4.3 to compile the router and
5020      supporting apps (except for the routerconsole which is still being
5021      investigated).
5022
50232005-01-24  smeghead
5024    * C#-ification of sam-sharp: interface greatly simplified using delegates
5025      and events; SamBaseEventHandler provides basic implementation and helper
5026      methods but is now optional.
5027    * NAnt buildfile and README added for sam-sharp.
5028
50292005-01-23  smeghead
5030    * Port the java SAM client library to mono/C# and released into the
5031      public domain.  The 0.1 version of this port is available in CVS as
5032      i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
5033      library has been removed.
5034
50352005-01-21  Jhor
5036    * Updated jbigi build scripts for OSX.
5037
50382005-01-21  jrandom
5039    * Added support for OSX to the NativeBigInteger code so that it will look
5040      in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
5041      is not bundled with the shipped jbigi.jar yet though.
5042
50432005-01-18  jrandom
5044    * Increased the max # session tags maintained and decreased slightly the
5045      period over which they are gathered.
5046
50472005-01-17  jrandom
5048    * Added meaningful support for adjusting the preferred message size in the
5049      streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
5050      whatever).  The other side will mimic a reduction (but never an increase).
5051    * Always make sure to use distinct ConnectionOption objects for each
5052      connection (duh)
5053    * Reduced the default ACK delay to 500ms on in the streaming lib
5054    * Only shrink the streaming window once per window
5055    * Don't bundle a new jetty.xml with updates
5056    * Catch another local routerInfo corruption issue on startup.
5057
50582005-01-15  cervantes
5059    * Added support to the eepproxy for URLs such as
5060      http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
5061      http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
5062
50632005-01-15  jrandom
5064    * Caught a series of (previously unhandled) errors caused by requeueing
5065      messages that had timed out on the TCP transport (thanks mae^!)
5066    * Reduce the barrier to dropping session tags on streaming lib resends -
5067      every fourth send should drop the tags, forcing ElGamal encryption.  This
5068      will help speed up the recovery after a disconnect, rather than the drop
5069      every fifth send.
5070
5071* 2005-01-06  0.4.2.6 released
5072
50732005-01-06  jrandom
5074    * Added a startup message to the addressbook, printing its version number
5075      to stdout (which is sent to wrapper.config) when it loads.
5076    * Updated the addressbook to reread the config file periodically
5077    * Added orion.i2p to the list of eepsites on the default homepage
5078
50792005-01-05  jrandom
5080    * Handle unexpected network read errors more carefully (thanks parg!)
5081    * Added more methods to partially compare (DataHelper) and display
5082      arrays (Base64.encode).
5083    * Exposed the AES encryptBlock/decryptBlock on the context.aes()
5084    * Be more generous on the throttle when just starting up the router
5085    * Fix a missing scheduled event in the streaming lib (caused after reset)
5086    * Add a new DisconnectListener on the I2PSocketManager to allow
5087      notification of session destruction.
5088    * Make sure our own router identity is valid, and if it isn't, build a new
5089      one and restart the router.  Alternately, you can run the Router with
5090      the single command line argument "rebuild" and it will do the same.
5091
50922004-12-31  ragnarok
5093    * Integrated latest addressbook changes (2.0.3) which include support for
5094      deploying as a .war file with no existing addressbook configuration.
5095    * Updated main build process to bundle the addressbook.war in the
5096      i2pinstall.jar and i2pupdate.zip.
5097
50982004-12-31  jrandom
5099    * Speling fxi (thanks digum!)
5100    * Bugfix for the I2PTunnel web interface so that it now properly launches
5101      newly added tunnels that are defined to be run on startup (thanks ugha!)
5102
51032004-12-30  jrandom
5104    * Revised the I2PTunnel client and httpclient connection establishment
5105      throttles.  There is now a pool of threads that build the I2PSocket
5106      connections with a default size of 5, configurable via the I2PTunnel
5107      client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
5108      not throttle the number of concurrent builders, but will launch a thread
5109      per socket during establishment).  In addition, sockets accepted but
5110      not yet allocated to one of the connection builders will be destroyed
5111      after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
5112      0, it will wait indefinitely).
5113
51142004-12-29  jrandom
5115    * Imported Ragnarok's addressbook source (2.0.2) which is built but not
5116      deployed in the i2pinstall.jar/i2pupdate.zip (yet).
5117    * Don't treat connection inactivity closure as a connection error.
5118
51192004-12-29  jrandom
5120    * Add in a new keepalive event on each TCP connection, proactively sending
5121      a (tiny) time message every minute or two, as well as killing the
5122      connection if no message has been fully sent within 5 minutes or so. 
5123      This should help deal with hung connections from IP address changes.
5124
51252004-12-28  jrandom
5126    * Cleaned up the resending and choking algorithm in the streaming lib.
5127    * Removed the read timeout override for I2PTunnel's httpclient, allowing
5128      it to use the default for the streaming lib.
5129    * Revised ack triggers in the streaming lib.
5130    * Logging.
5131
5132* 2004-12-21  0.4.2.5 released
5133
51342004-12-21  jrandom
5135    * Track a new stat for expired client leases (client.leaseSetExpired).
5136
51372004-12-21  jrandom
5138    * Cleaned up the postinstall/startup scripts a bit more to handle winME,
5139      and added windows info to the headless docs. (thanks ardvark!)
5140    * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
5141      a stream (thanks frosk!)
5142    * Add a pair of new stats for monitoring tunnel participation -
5143      tunnel.participatingBytesProcessed (total # bytes transferred) and
5144      tunnel.participatingBytesProcessedActive (total # bytes transferred for
5145      tunnels whose byte count exceed the 10m average).  This should help
5146      further monitor congestion issues.
5147    * Made the NamingService factory property public (thanks susi!)
5148
51492004-12-20  jrandom
5150    * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
5151    * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
5152      dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
5153      reasoning is gone.
5154
51552004-12-19  jrandom
5156    * Fix for a race on startup wrt the new stats (thanks susi!)
5157
51582004-12-19  jrandom
5159    * Added three new stats - router.activePeers, router.fastPeers, and
5160      router.highCapacityPeers, updated every minute
5161
51622004-12-19  jrandom
5163    * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
5164      hostname should be sent to the webserver.  By default, new installs will
5165      have an httpserver pointing at their jetty instance with the spoofed
5166      name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
5167
51682004-12-19  scintilla
5169    * Convert native jcpuid code from C++ to C. This should alleviate build
5170      problems experienced by some users.
5171
5172* 2004-12-18  0.4.2.4 released
5173
51742004-12-16  jrandom
5175    * Catch another oddball case for a reset connection in the streaming lib.
5176    * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
5177      dumps the current state of that peer's profile.  Instead of the full
5178      base64, you can pass in however many characters you have and it will
5179      return the first match found.
5180
51812004-12-16  jrandom
5182    * Remove the randomized factor in the tunnel rejection by bandwidth -
5183      we now accept the request if we've allocated less than our limit
5184      and reject it if we've allocated more.
5185    * Stick to the standard capacity scale on tunnel rejection, even for
5186      the 10m period.
5187    * Build the time message at the very last possible moment
5188
51892004-12-15  jrandom
5190    * Handle hard disconnects more gracefully within the streaming lib, and
5191      log unmonitored events more aggressively.
5192    * If we drop a peer after connection due to clock skew, log it to the
5193      /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
5194      the stat 'tcp.disconnectAfterSkew'.
5195    * Fixed the formatting in the skew display
5196    * Added an ERROR message that is fired once after we run out of
5197      routerInfo files (thanks susi!)
5198    * Set the connect timeout equal to the streaming lib's disconnect timeout
5199      if not already specified (the I2PTunnel httpclient already enforces a
5200      60s connect timeout)
5201    * Fix for another connection startup problem in the streaming lib.
5202    * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
5203    * Adjust the capacity calculations so that tunnel failures alone in the
5204      last 10m will not trigger a 0 capacity rank.
5205
52062004-12-14  jrandom
5207    * Periodically send a message along all I2NP connections with the router's
5208      current time, allowing the receiving peer to determine that the clock
5209      has skewed too much, and hence, disconnect.  For backwards compatability
5210      reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
5211      next time we have a backwards compatability break, we can put in a proper
5212      message setup for it.
5213
52142004-12-14  jrandom
5215    * Reenable the probabalistic drop on the TCP queues to deal with good old
5216      fashioned bandwidth limiting.  However, by default the probability is
5217      rigged to reserve 0% of the queue free - meaning we just aggressively
5218      fail messages in the queue if we're transferring too slowly.  That
5219      reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
5220      (or whatever) and the drop code can be disabled with the parameter
5221      'tcp.dropProbabalistically=false'.
5222    * Still penalize a peer on tunnel failure, but don't immediately drop
5223      their capacity to 0.
5224    * More aggressively ACK duplicates
5225    * Randomize the timestamper period
5226    * Display the clock skew on the connection logs when a peer sends it.
5227    * Allow the timestamper to fix skews of up to 10 minutes
5228    * Logging
5229
52302004-12-13  jrandom
5231    * Added some error checking on the new client send job (thanks duck!)
5232    * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
5233      proportional to the bytes allocated in existing tunnels vs the bytes
5234      allowed through the bandwidth limiter).
5235    * Enable a new configuration parameter for triggering a tunnel rebuild
5236      (tunnel.maxTunnelFailures), where that is the max allowed test failures
5237      before killing the tunnel (default 0).
5238    * Gather more data that we rank capacity by (now we monitor and balance the
5239      data from 10m/30m/60m/1d instead of just 10m/60m/1d).
5240    * Fix a truncation/type conversion problem on the long term capacity
5241      values (we were ignoring the daily stats outright)
5242
52432004-12-11  jrandom
5244    * Fix the missing HTTP timeout, which was caused by the deferred syn used
5245      by default.  This, in turn, meant the I2PSocket creation doesn't fail
5246      on .connect, but is unable to transfer any data in any direction.  We now
5247      detect that condition for the I2PTunnelHTTPClient and throw up the right
5248      error page.
5249    * Logging
5250
52512004-12-11  jrandom
5252    * Use a simpler and less memory intensive job for processing outbound
5253      client messages when the session is in mode=bestEffort.  We can
5254      immediately discard the data as soon as its sent the first time,
5255      rather than wait for an ack, since we will never internally resend.
5256    * Reduce some synchronization to avoid a rare deadlock
5257    * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
5258      case it within the tunnel controller.
5259    * Script cleanup for building jbigi/jcpuid
5260    * Logging
5261
5262* 2004-12-08  0.4.2.3 released
5263
52642004-12-08  jrandom
5265    * Revised the buffering when reading from the SAM client and writing
5266      to the stream.  Also added a thread (sigh) so we don't block the
5267      SAM client from giving us more messages for abnormally long periods
5268      of time.
5269    * Display the router version in the logs on startup (oft requested)
5270    * Fix a race during the closing of a messageOutputStream
5271
52722004-12-06  jrandom
5273    * Don't do a 'passive flush' while there are already outbound messages
5274      unacked.
5275    * Show the reseed link if up to 10 peers profiles are active (thanks
5276      dburton!)
5277
52782004-12-06  jrandom
5279    * Don't propogate streaming connection failures out to the SAM bridge as
5280      fatal errors.
5281    * Dont barf on repeated I2CP closure.
5282
52832004-12-05  jrandom
5284    * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
5285      getLocalhost call
5286
52872004-12-05  jrandom
5288    * Default the I2CP listener to localhost only, unless overridden by
5289      i2cp.tcp.bindAllInterfaces=true (thanks dm!)
5290    * More SAM fixes for things recently broken (whee)
5291
52922004-12-05  jrandom
5293    * Fix the recently broken SAM bridge (duh)
5294    * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
5295      net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
5296      StreamSink and StreamSend apps for transferring files.
5297    * Make the passive flush timer fire more frequently.
5298
52992004-12-05  jrandom
5300    * Fixed some links in the console (thanks ugha!) and the javadoc
5301      (thanks dinoman!)
5302    * Fix the stream's passive flush timer (oh, its supposed to work?)
5303
53042004-12-03  jrandom
5305    * Toss in a small pool of threads (3) to execute the events queued up with
5306      the SimpleTimer, as we do currently see the occational event
5307      notification spiking up to a second or so.
5308    * Implement a SAM client API in java, useful for event based streaming (or
5309      for testing the SAM bridge)
5310    * Added support to shut down the SAM bridge on OOM (useful if the SAM
5311      bridge is being run outside of the router).
5312    * Include the SAM test code in the sam.jar
5313    * Remove an irrelevent warning message from SAM, which was caused by
5314      perfectly normal operation due to a session being closed.
5315    * Removed some unnecessary synchronization in the streaming lib's
5316      PacketQueue
5317    * More quickly clean up the memory used by the streaming lib by
5318      immediately killing each packet's resend job as soon as it is ACKed (or
5319      cancelled), so that there are no longer any valid pointers to the
5320      (potentially 32KB) packet.
5321    * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
5322    * Drop packets that would expand our inbound window beyond our maximum
5323      buffer size (default 32 messages)
5324    * Always read the ACK/NACK data from the verified packets received, even
5325      if we are going to drop them
5326    * Always adjust the window when there are messages ACKed, though do not
5327      change its size except as before.
5328    * Streamlined some synchronization in the router's I2CP handling
5329    * Streamlined some memory allocation in the SAM bridge
5330    * Default the streaming lib to disconnect on inactivity, rather than send
5331      an empty message.
5332
53332004-12-01  jrandom
5334    * Fix for a race in the streaming lib as caused by some odd SAM activity
5335
5336* 2004-12-01  0.4.2.2 released
5337
53382004-12-01  jrandom
5339    * Fixed a stupid typo that inadvertantly allowed persistent HTTP
5340      connections to work (thanks duck!)
5341    * Make sure we override the inactivity timeout too
5342
5343* 2004-12-01  0.4.2.1 released
5344
53452004-12-01  jrandom
5346    * Strip out any of the Accept-* HTTP header lines, and always make sure to
5347      include the forged User-agent header.
5348    * Adjust the default read timeout on the eepproxy to 60s, unless
5349      overridden.
5350    * Minor tweak on stream shutdown.
5351
53522004-11-30  jrandom
5353    * Render the burst rate fields on /config.jsp properly (thanks ugha!)
5354    * Build in a simple timeout to flush data queued into the I2PSocket but
5355      not yet flushed.
5356    * Don't explicitly flush after each SAM stream write, but leave it up to
5357      the [nonblocking] passive flush.
5358    * Don't whine about 10-99 connection events occurring in a second
5359    * Don't wait for completion of packets that will not be ACKed (duh)
5360    * Adjust the congestion window, even if the packet was resent (duh)
5361    * Make sure to wake up any blocking read()'s when the MessageInputStream
5362      is close()ed (duh)
5363    * Never wait more than the disconnect timeout for a write to complete
5364
53652004-11-29  jrandom
5366    * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
5367
53682004-11-29  jrandom
5369    * Reduced contention for local client delivery
5370    * Drop the new code that munges the wrapper.config.  Instead, updates that
5371      need to change it will include their own wrapper.config in the
5372      i2pupdate.zip, overwriting the existing file.  If the file
5373      "wrapper.config.updated" is included, it is deleted at first opportunity
5374      and the router shut down, displaying a notice that the router must be
5375      started again cleanly to allow the changes to the wrapper.config to take
5376      effect.
5377    * Properly stop accept()ing I2PSocket connections if we close down the
5378      session (duh).
5379    * Make sure we cancel any outstanding Packets in flight when a connection
5380      is terminated (thanks susi!)
5381    * Split up the I2PTunnel closing a little further.
5382
53832004-11-28  jrandom
5384    * Accept IP address detection changes with a 2-out-of-3 minimum.
5385    * As long as the router is up, keep retrying to bind the I2CP listener.
5386    * Decrease the java service wrapper ping frequency to once every 10
5387      minutes, rather than once every 5 seconds.
5388
53892004-11-27  jrandom
5390    * Some cleanup and bugfixes for the IP address detection code where we
5391      only consider connections that have actually sent and received messages
5392      recently as active, rather than the mere presence of a TCP socket as
5393      activity.
5394
53952004-11-27  jrandom
5396    * Removed the I2PTunnel inactivity timeout thread, since the new streaming
5397      lib can do that (without an additional per-connection thread).
5398    * Close the I2PTunnel forwarder threads more aggressively
5399
54002004-11-27  jrandom
5401    * Fix for a fast loop caused by a race in the new streaming library (thanks
5402      DrWoo, frontier, pwk_, and thetower!)
5403    * Minor updates to the SimpleTimer and Connection to help track down a
5404      high CPU usage problem (dumping debug info to stdout/wrapper.log if too
5405      many events/tasks fire in a second)
5406    * Minor fixes for races on client disconnects (causing NPEs)
5407
5408* 2004-11-26  0.4.2 released
5409
54102004-11-26  jrandom
5411    * Enable the new streaming lib as the default.  That means, for any
5412      substantial definition, it is NOT BACKWARDS COMPATIBLE. 
5413
54142004-11-25  jrandom
5415    * Revised the installer to include start menu and desktop shortcuts for
5416      windows platforms, including pretty icons (thanks DrWoo!)
5417    * Allow clients specified in clients.config to have an explicit startup
5418      delay.
5419    * Update the default install to launch a browser pointing at the console
5420      whenever I2P starts up, rather than only the first time it starts up
5421      (configurable on /configservice.jsp, or in clients.config)
5422    * Bugfix to the clock skew checking code to monitor the delta between
5423      offsets, not the offset itself (duh)
5424    * Router console html update
5425    * New (and uuuuugly) code to verify that the wrapper.config contains
5426      the necessary classpath entries on update.  If it has to update the
5427      wrapper.config, it will stop the JVM and service completely, since the
5428      java service wrapper doesn't reread the wrapper.config on JVM restart -
5429      requiring the user to manually restart the service after an update.
5430    * Increase the TCP connection timeout to 30s (which is obscenely long)
5431
54322004-11-22  jrandom
5433    * Update to the SAM bridge to reduce some unnecessary memory allocation.
5434    * New stat to keep track of slow jobs (ones that take more than a second
5435      to excute).  This is published in the netDb as jobQueue.jobRunSlow
5436
54372004-11-21  jrandom
5438    * Update the I2PTunnel web interface to include an option for the new
5439      streaming lib (which is ignored until the 0.4.2 release).
5440    * Revised the I2PTunnel web interface to keep the I2CP options of client
5441      and httpclient tunnels in sync, as they all share the same I2CP session.
5442
54432004-11-21  jrandom
5444    * Only allow small clock skews after the first 10 minutes of operation
5445      (to prevent later network lag bouncing us way off course - yes, we
5446      really need an NTP impl to balance out the network burps...)
5447    * Revamp the I2PTunnel web interface startup process so that everything
5448      is shown immediately, so that different pieces hanging don't hang
5449      the rest, and other minor bugfixes.
5450    * Take note of SAM startup error (in case you're already running a SAM
5451      bridge...)
5452    * Increase the bandwidth limiter burst values available to 10-60s (or
5453      whatever is placed in /configadvanced.jsp, of course)
5454
54552004-11-21  jrandom
5456    * Allow end of line comments in the hosts.txt and other config files,
5457      using '#' to begin the comments (thanks susi!)
5458    * Add support to I2PTunnel's 'client' feature for picking between multiple
5459      target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
5460    * Add a quick link on the left hand nav to reseed if there aren't enough
5461      known peers, as well as link to the config page if there are no active
5462      peers.  Revised config page accordingly.
5463
54642004-11-21  jrandom
5465    * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
5466      rather that every 15 minutes, and increase the warning period in which
5467      we refresh tags from 30s to 2 minutes.
5468    * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
5469      to close the I2PSocket (leaving it to timeout).
5470
54712004-11-19  jrandom
5472    * Off-by-one fix to the tunnel pool management code, along side some
5473      explicit initialization.  This can affect clients whose lengths are
5474      shorter than the router's default (thanks duck!)
5475
54762004-11-17  jrandom
5477    * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
5478      Ragnarok!)
5479
54802004-11-17  jrandom
5481    * Minor logging update.
5482
54832004-11-16  jrandom
5484    * Clean up the propogation of i2psocket options so that various streaming
5485      libs can honor them more precisely
5486
54872004-11-16  jrandom
5488    * Minor logging update
5489
54902004-11-14  jrandom
5491    * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
5492    * Fix a leak injected into the SimpleTimer
5493    * Fix a race condition in the tunnel message handling
5494
54952004-11-13  jrandom
5496    * Added throttles on how many I2PTunnel client connections we open at once
5497    * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
5498      the streaming library used should take care of any buffering.
5499    * Added a cache for some objects used in I2PTunnel, especially useful when
5500      there are many short lived connections.
5501    * Trimmed the SimpleTimer's processing a bit
5502
55032004-11-10  jrandom
5504    * Allow loading the (mini)streaming connection options from the
5505      environment.
5506    * More defensive programming in the DSA implementation.
5507
55082004-11-08  jrandom
5509    * Remove spurious flush calls from I2PTunnel, and work with the
5510      I2PSocket's output stream directly (as the various implementations
5511      do their own buffering).
5512    * Another pass at a long standing JobQueue bug - dramatically simplify
5513      the job management synchronization since we dont need to deal with
5514      high contention (unlike last year when we had dozens of queue runners
5515      going at once).
5516    * Logging
5517
55182004-11-08  jrandom
5519    * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
5520
5521* 2004-11-06  0.4.1.4 released
5522
55232004-11-06  jrandom
5524    * Expose a drop down on the /configclients.jsp to enter the outbound
5525      tunnel depth.
5526    * Improved *hosts.txt loading
5527    * Explicitly override the JVM's timezone settings to use GMT so that
5528      any client applications which use timezones won't leak sensitive
5529      data (thanks gott!)
5530    * Bundle sam.jar in the update (thanks duck!)
5531
55322004-11-06  jrandom
5533    * Fix for a long standing synchronization bug in the SDK that in rare
5534      instances can add a few seconds of lag.
5535
55362004-11-05  jrandom
5537    * Bugfixes and unit tests for the SAM bridge to handle quoted message
5538      parameters, verify proper operation after multiple session lifetimes,
5539      as well as some synchronization problems.
5540    * New properties method on the DataHelper class.
5541    * Address a race on fast disconnecting clients
5542
55432004-11-02  jrandom
5544    * Fix for a long standing synchronization bug in the JobQueue (and added
5545      some kooky flags to make sure it stays dead)
5546    * Update the ministreaming lib to force mode=guaranteed if the default
5547      lib is used, and mode=best_effort for all other libs.
5548
55492004-11-02  jrandom
5550    * Fixed up the configuration overrides for the streaming socket lib
5551      integration so that it properly honors env settings.
5552    * More memory usage streamlining (last major revamp for now, i promise)
5553
55542004-11-01  jrandom
5555    * Increase the tunnel test timeout rapidly if our tunnels are failing.
5556    * Honor message expirations for some tunnel jobs that were prematurely
5557      expired.
5558    * Streamline memory usage with temporary object caches and more efficient
5559      serialization for SHA256 calculation, logging, and both I2CP and I2NP
5560      message handling.
5561    * Fix some situations where we forward messages too eagerly.  For a
5562      request at the tunnel endpoint, if the tunnel is inbound and the target
5563      is remote, honor the message by tunnel routing the data rather than
5564      sending it directly to the requested location.
5565
55662004-10-30  jrandom
5567    * Cache the temporary objects used in the AES encryption/decryption
5568      process so that AES doesn't require any memory allocation to process
5569      data.
5570    * Dramatically reduce memory usage within various crypto implementations
5571      by avoiding unnecessary (though simplifying) buffers.
5572    * If we specify some tags to be sent in an I2CP message explicitly, use
5573      only those, not those plus a new set (otherwise we aren't sure on ACK
5574      which set was delivered)
5575    * Allow configuration for the partial send timeout (how long before
5576      resending a message down a different tunnel in a lease).  This can be
5577      updated with the "router.clientPartialSendTimeout" router config prop.
5578    * Logging
5579
55802004-10-29  jrandom
5581    * Strip the Referer, Via, and From headers completely, rather than
5582      inserting a bogus value ("i2p").  This should help with the use of
5583      SnipSnap and Geeklog (thanks nickster and DrWoo!)
5584
55852004-10-27  jrandom
5586    * Fix a strange race condition on i2cp client disconnect.
5587    * win98 startup fixes (thanks tester-1 and ardvark!)
5588    * include build scripts for the new streaming lib (which is NOT ready
5589      for use yet, but you can hack around with it)
5590
55912004-10-24  jrandom
5592    * Allow explicit inclusion of session tags in the SDK, enabling the
5593      resending of tags bundled with messages that would not otherwise
5594      be ACKed.
5595    * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
5596      no DeliveryStatusMessage will be bundled (and as such, client apps using
5597      it will need to do their own session tag ack/nack).
5598    * Handle client errors when notifying them of message availability.
5599    * New StreamSinkSend which sends a file to a destination and disconnects.
5600    * Update the I2PSocketManagerFactory to build the specific
5601      I2PSocketManager instance based on the "i2p.streaming.manager" property,
5602      containing the class name of the I2PSocketManager to instantiate.
5603
56042004-10-23  jrandom
5605    * Minor ministreaming lib refactoring to simplify integration of the full
5606      streaming lib.
5607    * Minor bugfixes to data structure serialization.
5608
5609* 2004-10-18  0.4.1.3 released
5610
56112004-10-18  jrandom
5612    * Allow sending messages with a section of a byte array.
5613    * Reduced stats published.
5614
56152004-10-17  jrandom
5616    * Don't b0rk on whitespace in the router address.
5617
56182004-10-16  jrandom
5619    * More aggressively reduce the capacity of peers if their tunnels are
5620      failing so that we move off them quicker.
5621    * Simplify some data structure serialization for reuse in the streaming
5622      lib, as well as add support for signing and verifying partial byte
5623      arrays.
5624    * Logging updates
5625
56262004-10-16  jrandom
5627    * Increased the default minimum tunnel test time to 5 seconds, since we
5628      still see the occational message processing time spike to 2 seconds.
5629    * Update the SimpleTimer to allow rescheduling a task thats already
5630      queued (useful for the new streaming lib).
5631
56322004-10-15  jrandom
5633    * Replaced old minimum tunnel test timeout of 1s with a configurable
5634      value (router.config property "router.tunnelTestMinimum", with the
5635      default of 2s).
5636
56372004-10-14  jrandom
5638    * Tunnel rejection is no longer a sign of an overwhelmingly loaded
5639      peer, so don't use it as a key point of the IsFailing calculator.
5640      We still use it as a key point of the Capacity calculator, however.
5641
56422004-10-14  jrandom
5643    * Allow for a configurable tunnel "growth factor", rather than trying
5644      to achieve a steady state.  This will let us grow gradually when
5645      the router is needed more, rather than blindly accepting the request
5646      or arbitrarily choking it at an averaged value.  Configure this with
5647      "router.tunnelGrowthFactor" in the router.config (default "1.5").
5648    * Adjust the tunnel test timeouts dynamically - rather than the old
5649      flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
5650      test time (the deviation factor can be adjusted by setting
5651      "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
5652      find the 'good' tunnels.
5653    * Added some crazy debugging to try and track down an intermittent hang.
5654
56552004-10-13  jrandom
5656    * Fix the probabalistic tunnel reject (we always accepted everything,
5657      since the docs on java.util.Random.nextDouble() are wrong..)
5658    * Fixed a race on startup (thanks Quadn!)
5659
56602004-10-12  jrandom
5661    * Disable the probabalistic drop by default (enable via the router config
5662      property "tcp.dropProbabalistically=true")
5663    * Disable the actual watchdog shutdown by default, but keep track of more
5664      variables and log a lot more when it occurs (enable via the router
5665      config property "watchdog.haltOnHang=true")
5666    * Implement some tunnel participation smoothing by refusing requests
5667      probabalistically as our participating tunnel count exceeds the previous
5668      hour's, or when the 10 minute average tunnel test time exceeds the 60
5669      minute average tunnel test time.  The probabilities in both cases are
5670      oldAverage / #current, so if you're suddenly flooded with 200 tunnels
5671      and you had previously only participated in 50, you'll have a 25% chance
5672      of accepting a subsequent request.
5673
5674* 2004-10-10  0.4.1.2 released
5675
56762004-10-10  cervantes
5677    * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
5678      the request.
5679
56802004-10-09  jrandom
5681    * Added a watchdog timer to do some baseline liveliness checking to help
5682      debug some odd errors.
5683    * Added a pair of summary stats for bandwidth usage, allowing easy export
5684      with the other stats ("bw.sendBps" and "bw.receiveBps")
5685    * Trimmed another memory allocation on message reception.
5686
56872004-10-08  jrandom
5688    * Revamp the AESInputStream so it doesn't allocate any temporary objects
5689      during its operation.
5690
56912004-10-08  jrandom
5692    * Don't kill the establisher threads during a soft restart.
5693    * Attempt to validate the peer's routerInfo earlier during handshaking.
5694    * Revamp the AESOutputStream so it doesn't allocate any temporary objects
5695      during its operation.
5696
56972004-10-07  jrandom
5698    * Reimplement the I2NP reading with less temporary memory allocation.
5699      There is still significant GC churn, especially under load, but this
5700      should help.
5701    * Catch some oddball errors in the transport (message timeout while
5702      establishing).
5703
57042004-10-07  jrandom
5705    * Expire queued messages even when the writer is blocked.
5706    * Reimplement most of the I2NP writing with less temporary memory
5707      allocations (I2NP reading still gobbles memory).
5708
57092004-10-06  jrandom
5710    * Implement an active queue management scheme on the TCP transports,
5711      dropping messages probabalistically as the queue fills up.  The
5712      estimated queue capacity is determined by the rate at which messages
5713      have been sent to the peer (averaged at 1, 5, and 60m periods).  As
5714      we exceed 1/2 of the estimated capacity, we drop messages throughout
5715      the queue probabalistically with regards to their size.  This is based
5716      on RFC 2309's RED, with the minimum threshold set to 1/2 the
5717      estimated connection capacity.  We may want to consider using a send
5718      rate and queue size measured across all connections, to deal with our
5719      own local bandwidth saturation, but we'll try the per-con metrics first.
5720
57212004-10-06  jrandom
5722    * Enable explicit disabling of the systray entirely for windows machines
5723      with strange configurations: add -Dsystray.disable=true to the java
5724      command line.  (thanks mihi!)
5725
57262004-10-05  jrandom
5727    * Allow peers on the same LAN to communicate with each other safely even
5728      when they cannot talk to each other through the external address.
5729
57302004-10-05  jrandom
5731    * Display how much time is left before the graceful shutdown is complete.
5732    * Debug some improperly failed messages on timeout or disconnection.
5733
57342004-10-05  jrandom
5735    * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
5736      (thanks mule!)
5737    * Handle some more error conditions regarding abruptly closing sockets
5738      (thanks Jonva!)
5739
57402004-10-04  jrandom
5741    * Update the shitlist to reject a peer for an exponentially increasing
5742      period of time (with an upper bounds of an hour). 
5743    * Various minor stat and debugging fixes
5744
57452004-10-03  jrandom
5746    * Add a new stat logging component to optionally dump the raw stats to
5747      disk as they are generated, rather than rely upon the summarized data.
5748      By default, this is off, but the router property "stat.logFilters" can
5749      be set to a comma delimited list of stats (e.g. "client.sendAckTime")
5750      which will be written to the file "stats.log" (or whatever the property
5751      "stat.logFile" is set to).  This can also log profile related stats,
5752      such as "dbResponseTime" or "tunnelTestResponseTime".
5753
57542004-10-02  jrandom
5755    * Assure that we quickly fail messages bound for shitlisted peers.
5756    * Address a race on startup where the first peer contacted could hang the
5757      router (thanks Romster!)
5758    * Only whine about an intermittent inability to query the time server once
5759
57602004-10-02  jrandom
5761    * Command line utility to verify a peer's reachability - simply run
5762      net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
5763      will print out whether that peer is reachable or not (using a simple
5764      verification handshake).
5765
5766* 2004-10-01  0.4.1.1 released
5767
57682004-10-01  jrandom
5769    * Handle partial reseeds, caused by seeds going away before the download
5770      completes (thanks Sugadude!)
5771
57722004-10-01  jrandom
5773    * Explicitly refuse IPv6 addresses, since only some peers support
5774      them and we want fully reachable peers.
5775
57762004-10-01  jrandom
5777    * Additional error handling for a variety of transport layer errors.
5778
5779* 2004-09-30  0.4.1 released (not backwards compatible)
5780
57812004-09-30  jrandom
5782    * Bundle the configuration necessary to run an eepsite out of the box
5783      with Jetty - simply edit ./eepsite/docroot/index.html and give people
5784      the key listed on the I2PTunnel configuration page, and its up.
5785    * Router console cleanup, and some (off by default) tunnels -
5786      smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
5787      irc.baffled.i2p (port 7661)
5788
57892004-09-29  jrandom
5790    * Always wipe the Jetty work directory on startup, so that web updates
5791      are reflected immediately (Jetty does not honor the cache across
5792      multiple executions)
5793
57942004-09-27  jrandom
5795    * Limit the number of connection tags saved to 10,000.  This is a huge
5796      limit, but consumes no more than 1MB of RAM.  For now, we drop them
5797      randomly after reaching that size, forcing those dropped peers to use
5798      a full DH negotiation.
5799    * HTML cleanup in the console.
5800
58012004-09-26  jrandom
5802    * Complete rewrite of the TCP transport with IP autodetection and
5803      low CPU overhead reconnections.  More concise connectivity errors
5804      are listed on the /oldconsole.jsp as well.  The IP autodetection works
5805      by listening to the first person who tells you what your IP address is
5806      when you have not defined one yourself and you have no other TCP
5807      connections.
5808    * Update to the I2NP message format to add transparent verification at
5809      the I2NP level (beyond standard TCP verification).
5810    * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
5811      implementation (rather than verifying with E(H(key)), we now verify with
5812      E(H(iv))).
5813    * The above changes are NOT BACKWARDS COMPATIBLE.
5814    * Removed all of the old unused PHTTP code.
5815    * Refactor various methods and clean up some javadoc.
5816
58172004-09-21  jrandom
5818    * Have two tiers of hosts.txt files - the standard "hosts.txt" and
5819      the new "userhosts.txt".  Updates to I2P will only overwrite the former,
5820      but values stored in the later take precedence.  Both are queried on
5821      lookup.
5822
58232004-09-16  jrandom
5824    * Refactor the TCP transport to deal with changing identities gracefully,
5825      and to prevent some wasted effort by keeping track of what host+port
5826      combinations we are connected to (rather than just the identities).  Also
5827      catch a few configuration errors earlier.
5828    * Removed no longer relevent methods from the Transport API that were
5829      exposing ideas that probably shouldn't be exposed.
5830    * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
5831      updates)
5832
58332004-09-13  jrandom
5834    * Update for the SDK reconnection to deal with overflow.
5835    * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
5836      rounding on lifetime bandwidth used [thanks gott!]).
5837
5838* 2004-09-08  0.4.0.1 released
5839
58402004-09-08  jrandom
5841    * Updated the "Active:" peer count to display the # of connections as well
5842      as the number of recently active router identities.
5843    * Implement some basic updating code - on startup, if there is a file named
5844      "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
5845      then restart.
5846    * Added an ugly little script to allow launching the router on win9x
5847      machines without a dos box (using javaw to run a .bat file).
5848    * Logging updates.
5849    * Updated VERSION constants to 0.4.0.1
5850
58512004-09-08  hypercubus
5852    * Bugfix: Running the installer as a non-privileged user on Red Hat (and
5853      hopefully any other affected *nix systems) now properly discards non-
5854      essential directories after installation.
5855    * Support for Win9x in the installer and postinstall.bat.
5856    * Changed the name of the default installation directory on all platforms
5857      from "I2P" to "i2p" in the installer.
5858    * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
5859      other configuration files.
5860
58612004-09-07  cervantes:
5862    * Proxy recursion disabled by default (strict)
5863    * Password Authentication for session commands
5864    * Support for http://path?i2paddresshelper=BASE64
5865    * Support for http://i2p/BASE64/path syntax
5866
58672004-09-07  jrandom
5868    * Make sure that peers placed in the 'fast' group are ones we both know
5869      how to reach and have been able to reach recently.  These peers may
5870      still be placed in the 'high capacity' group however (though that group
5871      is only queried if the 'fast' group is too small)
5872    * Include some updates to the ProgileOrganizer's CLI.
5873
58742004-09-07  jrandom
5875    * Disable the timestamper by default for all applications except the router
5876      (enable via -Dtime.disabled=false)
5877    * Simplify the retrieval of the full destination with text based browsers.
5878    * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
5879
58802004-09-07  jrandom
5881    * Write the native libraries to the current directory when they are loaded
5882      from a resource, and load them from that file on subsequent runs (in
5883      turn, we no longer *cough* delete the running libraries...)
5884    * Added support for a graceful restart.
5885    * Added new pseudo-shutdown hook specific to the router, allowing
5886      applications to request tasks to be run when the router shuts down.  We
5887      use this for integration with the service manager, since otherwise a
5888      graceful shutdown would cause a timeout, followed by a forced hard
5889      shutdown.
5890    * Made the capacity calculator a bit more dynamic by not outright ignoring
5891      the otherwise valid capacity data for a period with a single rejected
5892      tunnel (except for the 10 minute period).  In addition, peers with an
5893      equal capacity are ordered by speed rather than by their hashes.
5894    * Cleaned up the SimpleTimer, addressing some threading and synchronization
5895      issues.
5896    * When an I2PTunnel client or httpclient is explicitly closed, destroy the
5897      associated session (unless there are other clients using it), and deal
5898      with a closed session when starting a new I2PTunnel instance.
5899    * Refactoring and logging.
5900
59012004-09-06  jrandom
5902    * Address a race condition in the key management code that would manifest
5903      itself as a corrupt router identity.
5904    * Properly clear old transport addresses from being displayed on the old
5905      console after soft restarts.
5906    * Properly refuse to load the client applications more than once in the
5907      same JVM.
5908    * Added support for a graceful restart (a graceful shutdown followed by a
5909      full JVM restart - useful for restarting client apps).
5910    * More defensive programming, HTML cleanup, logging
5911    * wrapper.config cleanup of duplicate lines
5912
59132004-09-04  jrandom
5914    * Added some basic guards to prevent multiple instances from running.
5915      Specifically, a file "router.ping" in the install directory which is
5916      written to once a minute - if that file exists and has been modified
5917      within the last minute, refuse to start up.  In turn, adjust the
5918      service wrapper to wait a minute before restarting a crashed JVM.
5919    * Create a "work" directory in the I2P install dir which Jetty will
5920      use for all of its temporary files.
5921    * Tell the browser not to cache most of the router console's pages.
5922
59232004-09-04  jrandom
5924    * Update the SDK to automatically reconnect indefinitely with an
5925      exponential delay on retries (capped at 5 minutes).
5926
5927* 2004-09-03  0.4 released
5928
59292004-09-03  jrandom
5930    * Updated default wrapper.config to deal with the hard restart option
5931    * Include the history.txt in the /help.jsp page
5932    * HTML updates (wrapper.log, and no more unix scripts)
5933    * Updated VERSION constants to 0.4
5934
59352004-09-03  hypercubus
5936    * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
5937    * Temporarily removed install_i2p_service_unix and
5938      uninstall_i2p_service_unix from distribution packages.
5939    * postinstall.bat/postinstall.sh cleans installation directory of all files
5940      not applicable to the host OS.
5941
59422004-09-03  oOo
5943    * Added some filters to the HTTP request, replacing the User-Agent,
5944      Referrer, Via, and From headers, which helps until we have a more
5945      comprehensive filtering system.
5946
59472004-09-03  jrandom
5948    * Disabled the old listener on port 7655.
5949
59502004-09-02  jrandom
5951    * Cleaned up the base build.xml, adding a new target ("updater") which
5952      builds the file i2pupdate.tar.bz2 which can be safely extracted over
5953      existing installs.
5954
59552004-xx-xx  jrandom
5956    * Implemented the new web architecture and router console
5957    * Implemented I2PTunnel web interface, and revamped startup process.
5958    * Revamped peer selection code to address skew.
5959    * Removed all temporary threads from the router and the SDK.
5960    * Bugfix dealing with timeouts and resends.
5961    * Integrated Iakin's jcpuid library and jbigi update, with modifications.
5962
59632004-xx-xx  hypercubus
5964    * Implemented the new installation process.
5965    * Integrated systray
5966    * Integrated service manager
5967
59682004-xx-xx  oOo
5969    * Implemented ?i2paddresshelper= hook
5970    * Many small bugfixes to the web interface, router, i2ptunnel, and core.
5971
59722004-xx-xx  Nightblade
5973    * libSAM updates.
5974
59752004-xx-xx  cervantes
5976    * Imported i2pProxy.pac proxy script in with the build.
5977
5978* 2004-08-20  0.3.4.3 released
5979* 2004-08-12  0.3.4.2 released
5980* 2004-08-08  0.3.4.1 released
5981* 2004-07-29  0.3.4 released
5982* 2004-07-23  0.3.3 released
5983* 2004-07-16  0.3.2.3 released
5984* 2004-07-14  0.3.2.2 released
5985* 2004-07-11  0.3.2.1 released
5986* 2004-07-07  0.3.2 released
5987* 2004-06-25  0.3.1.5 released
5988* 2004-05-23  0.3.1.4 released
5989* 2004-05-20  0.3.1.3 released
5990* 2004-05-13  0.3.1.2 released
5991* 2004-05-07  0.3.1.1 released
5992* 2004-04-30  0.3.1 released
5993* 2004-04-20  0.3.0.4 released
5994* 2004-04-04  0.3.0.3 released
5995* 2004-03-30  0.3.0.2 released
5996* 2004-03-25  0.3.0.1 released
5997* 2004-03-21  0.3.0 released
5998* 2004-03-10  0.2.5.4 released
5999* 2004-03-04  0.2.5.3 released
6000* 2004-02-28  0.2.5.2 released
6001* 2004-02-27  0.2.5.1 released
6002* 2004-02-25  0.2.5 released
6003* 2004-02-19  0.2.4.2 released
6004* 2004-02-15  0.2.4.1 released
6005* 2004-02-14  0.2.4 released
6006* 2004-01-27  0.2.3.6 released
6007* 2004-01-21  0.2.3.5 released
6008* 2004-01-14  0.2.3.4 released
6009* 2003-12-29  0.2.3.3 released
6010* 2003-12-27  0.2.3.2 released
6011* 2003-12-25  0.2.3.1 released
6012* 2003-12-13  0.2.3 released
6013* 2003-12-01  0.2.2 released
6014* 2003-11-18  0.2.1.1 released
6015* 2003-11-12  0.2.1 released
6016* 2003-11-09  0.2.0.3 released
6017* 2003-11-08  0.2.0.2 released
6018* 2003-11-03  0.2.0.1 released
6019* 2003-11-01  0.2 released
Note: See TracBrowser for help on using the repository browser.