Author: toad
Date: 2007-03-29 00:59:06 +0000 (Thu, 29 Mar 2007)
New Revision: 12421
Modified:
trunk/freenet/src/freenet/node/Version.java
Log:
1021:
- MANDATORY ON APRIL 28 DUE TO NEW LINK SETUP
- Remote security improvement: Implement (a form of) STS. Based on the current
4-phase diffie-hellman, last 2 messages are signed, including g^x and g^y
(currently the first two stages are simply g^x and g^y, followed by 2 stages of
encrypted data including noderefs). auth.negTypes added to noderefs, this
includes the supported negotiation types for the node (0 = old DH, 1 = new
signed DH, so far).
- Local security improvements: (previously we relied on the node not
overwriting files, this is not much of a protection)
-- Prevent symlink attacks by always writing to a tempfile (created by java
with an unpredictable name) and then moving over the target.
-- {fproxy,fcp}.allowedHostsFullAccess - List of hosts which are allowed full
access to the nodes. Full access includes reconfig, restart etc. Non-full
access includes direct disk access as well as requests and queue access.
-- node.downloadAllowedDir/uploadAllowedDir options. List of dirs to where/from
where downloads/uploads are allowed.
- Resource utilisation
-- Maybe fix the USK leak
-- Weak -> Soft : keep the cached encoded blocks if possible
-- Delete requests from their queues immediately when the request changes
priority or is cancelled. (If they were low priority, they may not be freed for
a long time with the old "leave them there and clear them when we get to them"
tactic)
-- Single FEC encode/decode thread (per VM) runs all FEC jobs asynchronously.
Saves 2 threads per FEC encode/decode. don't sleep in FEC decoding, the OS can
deal with the cpu usage.
-- Close some InputStream's
-- Convert some maintenance threads to PacketSender scheduled jobs: NodePinger,
throttle data persisters, aggressiveGC
- FCP
-- Minor error handling fixes to AddPeer
-- Progress towards full config over FCP
-- Stats changes (numberOfInserts -> numberOfInsertSenders etc)
-- New TestDDA command (disabled for now, needs more work)
- Refactoring
-- SendableRequest is now an abstract class
-- Split up stats from Node into NodeStats, PeerManager, separate node and
client throttles (with separate files), factor out persistence to a fieldset to
Persister/Persistable
-- NodeStats is node.load. moved some settings there e.g.
aggressiveGCModificator, nodeThrottleFile. in future *BandwidthLimit may be
moved there as well. added node.load.memoryChecker option to enable/disable
memory usage logging.
-- Delete dead code etc
-- Minor stuff e.g. final declarations, moving variables around
-- Variables in node for inputBandwidthLimit, outputBandwidthLimit, use these
rather than pulling from config or throttle
- Pre-emptive rejection, requests (need to allow a reasonable number of
requests but not timeout when/if a group all succeed as occasionally happens)
-- Reject on low memory
-- Increase fetch timeout to 2 minutes
-- Remove arbitrary maximum on # requests/# inserts
-- Add upper limit on # threads (reject all requests if over limit), default
500 (would be 300 but for frost...)
-- Increase max throttle delay from 1000/2000ms to 2000/3000ms
-- Track expected bandwidth if all pending requests succeed at once. Reject
requests if this would cause timeouts.
-- Check for loop before checking for overload
- Stats
-- Separate throttle (for stats only) for CHKs vs SSKs and inserts vs requests
-- Track number of running CHK/SSK inserts/requests
-- Don't leak locked UIDs, and remove them only when the Handler or the
real{Get,Put}{SSK,CHK} (not the Sender) completes.
-- Fixes to stats page wording
-- # inserts on stats page is more accurately # insert senders running, same
for requests
-- Track average bytes used by each successful request for each type
-- Slightly more accurate in recent transfer rate
-- Don't give the first report after restart a massive weight in
TimeDecayingRunningAverage
-- Show # transferring handlers as well as senders
-- Show # threads of each type on the stats page
-- Cosmetic changes to stats page
- Queued requests
-- FUQID-like promote-on-success: on every other request we try the last
successful request group, but only if it is equal priority and retry count to
the top request
-- Run splitfile.schedule() off-thread as it can take a very long time. Speeds
up loading (and other stuff too probably) if there are many queued requests
(not inserts).
-- Other minor fixes
-- Fix double block completion bug
-- Splitfile errors are not usually fatal
- Filter fixes
-- Minor filter bug fix ( "../" wasn't always detected )
-- Allow </form>
- Many synchronization fixes
-- Check removeFirst() inside lock in RequestStarter (prevents delays on race
condition, allows us to wait(bignum) instead of (smallnum))
-- notify() -> notifyAll() in many places
- Store
-- Fix wrapper timeout when shrinking
-- Detect another indication of a corrupt secondary DB
-- Check for holes when reason to believe there are dupes
- Fix possible NPE in address detection
- Better error handling various places
- Fix infinite loop when offering to queue a download from fproxy when the file
has been downloaded twice already.
- Fix the hash verification bug (hopefully!).
- TMCI
-- New FILTER command
-- Cleaner code
- Some rebranding - freenet is basically F2F, lets use this: Darknet peer ->
Friend. Node name -> nickname.
- Trivial optimisations
- "UdpSocketManager sender thread" -> "UdpSocketManager packet receiver thread"
- trim extra spaces from FreenetURI's before parsing
- Some debug paranoia, assertions etc
- Comments
- Indenting
- Lots of logging
- Unit tests: MersenneTwisterTest and related code ScalarSampleStatisticsTest
Related changes:
- New UP&P plugin. Not yet functional. Based on heavily hacked SVN code from
another project so let the huge commit mail through as-is. Will ultimately
allow us to find our IP without resort to STUN servers, and set up port
forwards, improving the fraction of nodes which are "open" significantly.
- New JabberLinker plugin. Will be useful for darknet stuff, notifications etc.
- Some improvements to JSTUN plugin. Add a web interface, remove sysout
messages, some minor detection fixes.
- New dir for maintenance scripts, verify-patch.sh
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2007-03-29 00:16:28 UTC (rev
12420)
+++ trunk/freenet/src/freenet/node/Version.java 2007-03-29 00:59:06 UTC (rev
12421)
@@ -24,17 +24,17 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1020;
+ private static final int buildNumber = 1021;
/** Oldest build of Fred we will talk to */
- private static final int oldLastGoodBuild = 1010;
- private static final int newLastGoodBuild = 1016;
+ private static final int oldLastGoodBuild = 1016;
+ private static final int newLastGoodBuild = 1021;
static final long transitionTime;
static {
final Calendar _cal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// year, month - 1 (or constant), day, hour, minute, second
- _cal.set( 2007, Calendar.MARCH, 1, 0, 0, 0 );
+ _cal.set( 2007, Calendar.APRIL, 28, 0, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}