Author: toad
Date: 2008-01-15 00:01:15 +0000 (Tue, 15 Jan 2008)
New Revision: 17050
Modified:
trunk/freenet/src/freenet/node/Version.java
Log:
1098: (mandatory 17/01/08)
Request layer:
- Lots of comments and logging.
- Trivial refactoring.
- Don't relay non-local REJECTED_OVERLOAD after the first one.
- RequestHandler: Don't send responses after we're sure the requestor has timed
out, don't make the default state SUCCESS.
Opennet:
- Do not fetch ARKs for seed clients.
Datastore:
- Improve recovery from corrupt datastore significantly:
-- Create .lru file for each store. This is an array of long's, the same number
of long's as header+data are in the main store file. We record the LRU number
for each key as we change it. Use this to reconstruct the LRU when we lose the
database.
-- Create .keys file for the SSKs stores. This is an array of keys, allowing us
to reconstruct the SSK store in a similar way. We don't need it for other store
types. We also need to look up the pubkeys via the node through the GetPubkey
interface.
- Lots of refactoring:
-- Rename variables, no more "chk" in BDBFS variable names.
-- Key.getFullKey().
-- NodeCHK: rename KEY_SIZE_ON_DISK -> FULL_KEY_LENGTH.
-- StorableBlock: KeyBlock (SSKBlock, CHKBlock), DSAPublicKey.
-- StoreCallback: BDBFS gets size of data, headers, keys, whether they can
collide etc from it at startup. Also base for SSKStore, CHKStore, PubkeyStore,
to which the keytype-specific fetch() and put() methods have been moved. Thus
BDBFS doesn't need to know anything about SSKs, CHKs and pubkeys! Significant
simplification, eliminates code duplication, will make it easier to build
alternative FS implementations, makes the stores in Node be typed correctly,
cuts number of arguments to BDBFS constructor/factories.
Client layer/FCP:
- Always set started=true when finishing.
- Prevent some deadlocks, avoid some nested locking (SplitFileFetcherSubSegment
maintains its own cancelled status, we update on fail() or completion; also
some simpler nested lock breaking).
Web interface:
- Only show total number of useralerts of each type if there is more than one
type.
- Don't start startup toadlet if fproxy is disabled.
- Tell the user if there is a clock problem.
Link level:
- Don't enable routing if there is a clock problem.
- Differential noderef support: send a node to node message whenever our
noderef changes (node name, ARK edition, physical.* changes). Uses N2NM system.
- Message priorities. Include in MessageItem, LimitedRangeIntByteArray,
ResendPacketItem etc.
- Don't requeue messages from the wrong end! This and message priorities
combined greatly reduce the number of timeouts in simulation - well done robert!
N2NM support:
- Refactor, delete some dead code.
- sendNodeToNodeMessage() is now in PeerNode, but queueing still only happens
on darknet peers.
- New option queueOnNotConnected on sendNodeToNodeMessage() - will be used by
clients.
Local network interfaces:
- Don't get the port if disabled, lazily bind (except for HTTP: bind at init
time to get the exception).
- FCP, TMCI, HTTP.
Data transfer:
- Avoid some unclaimed messages.
- Refactoring.
FCP:
- Remove the Frost hack
L10n:
- Updated French translation from batosai.
- Updated German translation from NEOatNHNG and tommy.
- Updated Italin translation from _ph00.
- Delete references to #freenet-refs in translations. Some will be incomplete.
- Add finnish to the list of languages.
TMCI:
- Add missing newline to help.
- Don't create the network interface if disabled.
UDP:
- Fix a bug causing a shutdown timeout if we shut down before we have started
up.
ARKs:
- Don't consider ipAddressOverride to have changed if the before and after
strings are identical. If it hasn't changed we won't redetect and reinsert.
Performance:
- PeerNodeStatus: don't copy the message tables unless we need to.
- Some other minor memory churn optimisations.
- Let BDB max utilisation default to 50%, we were setting it to 90% which
caused a lot of Cleaner activity.
- Fix memory leak in ClientRequestScheduler.removePendingKeys().
Block transmit layer:
- BlockTransmitter/Receiver logging: error codes.
- When we abort the receive, tell the sender (including the reason).
- BlockTransmitter: tell the receiver when we abort.
- Relay the cause (Downstream transmit error: <reason> etc).
- Simplify transmitter: rely on the receiver thread noticing failure when
aborted or not connected (may cost one extra packet, but much simpler code).
Dev stuff:
- PeerNode: routability-related variables/functions renaming. Also update
comments.
- Logging.
- Comments.
- Indenting.
- Add some serial versions.
- Cache PeerNode.shortToString to reduce memory allocations.
- Lots of minor refactoring.
- Delete some dead DMT messages.
- Delete dead code.
- Minor synchronization.
Simulations: (one VM multiple nodes)
- Don't re-init DiffieHellman, it throws.
KeyExplorer:
- Prevent an NPE
Installer:
- Localise the welcome.html (if a localised version is available). French and
German so far.
- Make the welcome.html standards compliant.
batosai
Michael Tanzer
NEOatNHNG
_ph00
robert
saces
toad
tommy
zothar
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-01-14 23:48:15 UTC (rev
17049)
+++ trunk/freenet/src/freenet/node/Version.java 2008-01-15 00:01:15 UTC (rev
17050)
@@ -24,17 +24,17 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1097;
+ private static final int buildNumber = 1098;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 1094;
- private static final int newLastGoodBuild = 1097;
+ private static final int newLastGoodBuild = 1098;
static final long transitionTime;
static {
final Calendar _cal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// year, month - 1 (or constant), day, hour, minute, second
- _cal.set( 2008, Calendar.JANUARY, 7, 0, 0, 0 );
+ _cal.set( 2008, Calendar.JANUARY, 17, 0, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}