Author: toad
Date: 2008-11-08 14:57:23 +0000 (Sat, 08 Nov 2008)
New Revision: 23423
Modified:
trunk/freenet/src/freenet/node/Version.java
Log:
1170: (MANDATORY FRIDAY):
Client layer:
- Use gzip, bzip2, and lzma, for inserted files. Whichever is smallest.
- tar format containers (compressed with the above codecs). On by default, so
freesites inserted with this build won't be retrievable by earlier builds.
Should be a significant saving relative to zip's - maybe 50% - for typical
freesites.
- Serialise compression. Allow a reasonable number to run simultaneously
though, using semaphores. Refactoring, see RealCompressor.
- Run compression at low priority.
- Some minor fixes/improvements to the compression code.
- Move logging out of synchronized blocks in some places (minor optimisation).
- Compression: Limit the number of bytes read and written separately. Hence we
can tell the compressor how big the smallest so far is, so it can abort early.
First time wizard:
- Redirect the user to the first-time wizard until they have completed/skipped
it. Record to the config file when this has happened.
Web interface:
- Fix /darknet or /opennet (no slash).
- Queue page: fix sorting by progress.
- Emphasize open-in-thaw-index-browser option on opening a thaw index in fproxy.
- New theme by dieppe.
- Optimise existing themes' png's with optipng, save some space.
- Fix a bug preventing the config toadlet from being shown if wrapper.conf is
writable but doesn't have a valid memory limit line.
Stats:
- Beginnings of support for a bandwidth graph.
- Group FEC codec threads on the threads list.
Mid level:
- Fix an off-by-one in PaddedEphemerallyEncryptedBucket.getInputStream().read().
IP detection:
- Assuming the IP is the same as it was last time does not give us a valid IP
address. Don't let it prevent us from nagging the user.
- Warn the user if the IP address is not detected and there are no IP detection
plugins loaded.
- Bugfix: failed to call onAddedValidIP/onNotAddedValidIP first time if not
detected. Caused failure to notice a problem.
- When an IP detection plugin is added, reset the once-every-six-hours limit.
- Don't start the IP detection plugin code until after the plugins have been
loaded.
L10n:
- Chinese update from yongjhen.
- Finnish update from Smar.
- Italian translation from Cooo.
- Fix typo in German (tommy)
Plugins:
- If a plugin fails to load, remember that we tried to load it, and attempt it
again on next startup. Change the useralert so the button removes it
(preventing it from being tried again on restart).
- Start plugins synchronously, in the startup completion thread. If not
started, write the same plugin list we inherited. Avoid a race condition
causing an incomplete list of plugins to be written.
- Start and register threadless plugins immediately during load, not later on a
thread. Necessary for IP detection plugins timing fix.
- Remove Put method from HTTP interface.
Temp files:
- Fix a fd leak, don't leave a stream open when migrating buckets that have
been open but are now closed; don't keep an OutputStream if it's not actually
open.
- Avoid closing twice.
Misc:
- Allow changing fproxy port with a restart.
- Don't append in ArrayBucket, overwrite. All 0.7 buckets overwrite, not append.
Salted hash store:
- Config option for whether to complete resize blocking (and therefore fast) on
node restart.
- Avoid timeout on padding on startup.
For the fools out there:
- Add a config option to turn off packet padding. Turn it on on low network
security. Note that this is VERY DANGEROUS if widely adopted and the attacker
can observe packet sizes over most of the network...
Statistics:
- Synchronization fix (nonsynched access to long's for byte counters in
NodeStats).
Dev stuff:
- Specify target 1.5 as well as source 1.5
- Delete some unused code.
- Get rid of redundant casts.
- Comments, javadocs.
- Indenting.
- Logging.
- Use enum's for compression types.
- Generics, autoboxing, for(:), Vector->ArrayList, Comparable<>, etc.
- Map's: Change loop on keys looking up value to loop on entries.
- Casting changes.
- Reduce class/member/constant permissions.
- Remove unused method setPossibleValues() on EnumerableOptionCallback.
- Some refactoring in the web interface code.
- Delete merged saltedhashstore branch.
- Delete unused 0.7.0 branch. (We didn't release from it).
- Singleton NullPersistentFileTracker.
- ArrayList not Vector, iterate over entries instead of keys and then looking
up in collections.
- Imports.
- Fix MessageType.typeOf(), only used in logging.
- Avoid double-toLowerCase() in WelcomeToadlet.
- Make DoublyLinkedList and UpdatableSortedLinkedList implement Iterable, and
add contains() to DoublyLinkedList, all for the FMS plugin.
- Extra logging to try to track down the ext updating bug that has recently
caused some problems. I haven't been able to reproduce the bug, but hopefully
next time...
- Delete lots of unused classes.
- Get rid of BookmarkItems, use List<BookmarkItem> instead. Same with
BookmarkCategories.
- Remove unnecessary & 0xff's when write()ing a byte.
- Trivial optimisations/tidyups with Boolean.equals().
- Refactoring in FileLoggerHook.
- Skip tests when building in Eclipse.
Unit tests:
- Simple tests for Bucket's.
- Tests for temp buckets.
Installer:
- Fix clobbering ACLs in the update.cmd windows updater script: add permission
for the freenet user, but don't revoke permissions for other users.
- Check for and run pre-update.sh in update.sh.
- Italian installer strings update from Luke771.
- Various tweaks to the tarball install script 1run.sh.
Firefox profile:
- Disable all extensions.
- Always show the homepage on starting.
- Don't check whether FF is the default browser.
- Disable history, form values memory, persistent downloads list.
- Various similar paranoia options.
- Get rid of some menu items/menus.
Website:
- Move press enquiries note to end of page.
- Minor improvements to donate page.
- Add some detail to the developer page about SVN and SVN integration etc.
- Add a paypal counter to the site. This uses the hourly-refreshed balance from
paypal, plus a hardcoded bank balance, and a hardcoded currency conversion
rate, to calculate how many days are remaining.
- Add a box to donate whatever you want, as well as the drop-down. Ugly, the
HTML needs rewriting.
UPnP plugin:
- Fix an infinite loop.
Contrib: freenet-ext #24:
- Move various third party code to freenet-ext.jar: Mersenne Twisters, plus the
new compression code: Apache tar, bzip2 libraries, LZMA/7zip. Including unit
tests.
- Disentangle some code, eliminate dependancies on freenet/ code in contrib/,
in some cases by incorporating code...
- Avoid duplicated files in ext jar, cut from 6.2M to 3.8M.
- Cleanup build script.
bombe
dieppe
j16sdiz
luke771
nextgens
smar
toad
tommy
xor
yongjhen
Other stuff going on: (NOT COMPLETELY UP TO DATE):
db4o branch: (toad)
- Merge up to build 1165 into branch.
- Make directory inserts work (fix various bugs breaking them).
- Fix some merge related bugs, including all buckets being persistent.
- Fix lots of activation etc bugs.
- Fix some comments.
- Various db4o 7.X-related fixes (newConfiguration, store(), etc).
- Fix various bugs.
- Various minor refactoring: Move getScheduler() to SendableRequest
(interface), implement in SendableInsert, OfferedKeysList, already implemented
in SendableGet. Add isSSK() to KeyListener.
- Startup KeyListener handling: only add to the correct
ClientRequestSchedulerCore, move loadKeyListeners to a static method on CRS.
- Startup KeyListener handling: ensure we set finished=true and save the item
in SplitFileFetcher and SingleFileFetcher.
- Get rid of canRemove(). The selections are now entirely in RAM so canRemove()
is unnecessary and dangerous. Maybe this fixes the downloads stalling bug.
- PersistentChosenRequest: don't finish if there are live requests; in all
cases where we do finish, remove from running requests.
- Activation bugfixes.
- NPE bugfixes.
- Fix not starting later blocks in DatastoreChecker for MINIMUM_PRIORITY
requests.
- Debugging paranoia.
- Remove silly if(this.persistent) activate(this)'s.
- Remove some more useless code.
- Logging.
- countRequests.html now separately counts the waiting CHKs and the queued CHK
requests, enabling us to quickly see whether there is a leak.
- PaddedEphemerallyEncryptedBucket : delete weak reference to Rijndael.
- Provide a means to queue database jobs to run at startup. Usually this will
be used to clean up structures that had to be committed in multiple
transactions, in the case of a crash obsoleting them.
- Buckets: specify -1 rather than a guess that might be less than the actual
size if we don't know. The estimated size is now a hard limit, although this is
only enforced when the size is exactly 32K.
- Store all block-sized (32K) temp files in a single big blob file in the
temporary directory. Should dramatically reduce the number of files in the
persistent temp dir and thereby prevent OOMs, also should reduce the number of
fd's used by FEC decoding.
- Call bucket.storeTo, don't container.store(bucket).
- Work around a db4o bug related to storage depth with collections.
- Get rid of the SoftReference to the encoded block in SingleBlockInserter. It
doesn't gain much, and it causes heavier GC and complicates profiling.
- Go straight to onDecodedSegment() if we have all the data blocks.
- Split up RGA's array into Block's when we have more than 1024 items. Activate
each individually to save memory and disk I/O for big inserts and anything else
that queues a vast number of requests for a single RGA.
- Don't store FEC codec on SplitFileFetcherSegment.
- Run RegisterMe's in priority order.
WoT plugin: (batosai, xor)
- Don't create identities from people we don't have a positive score for
(prevent spam).
- Comments.
- Create a default OwnIdentity if none exists.
- Major refactoring on the web UI.
- Introduction puzzles (CAPTCHA) support. Architecture and simplecaptcha
implementation.
- Randomize insert intervals.
- db4o-related refactoring.
- Store messages in db4o, query for them instead of having a hashtable.
FMS plugin: (xor)
- Divide into interfaces/abstract classes and implementations, so can support
different trust providers.
- Implement for WoT.
- Lots of work on design.
- Use UpdatableSortedLinkedListWithForeignKey to keep track of messages.
- Thread decoding logic.
jSite:
- 0.6.2: add approximate insert speed to progress bar text
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-11-08 14:15:06 UTC (rev
23422)
+++ trunk/freenet/src/freenet/node/Version.java 2008-11-08 14:57:23 UTC (rev
23423)
@@ -24,7 +24,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1169;
+ private static final int buildNumber = 1170;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 1168;
@@ -34,7 +34,7 @@
static {
final Calendar _cal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// year, month - 1 (or constant), day, hour, minute, second
- _cal.set( 2008, Calendar.NOVEMBER, 10, 0, 0, 0 );
+ _cal.set( 2008, Calendar.NOVEMBER, 14, 0, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}