Releases: hyphanet/fred
Releases · hyphanet/fred
build01471: 2016-03-19
Freenet 0.7.5 build 1471 is now available. This is the last build to support Java 6! The next build will require Java 7 or higher. Nodes running Java 7 or higher now default to a new update key. Nodes on Java 6 remain using the old update key and will not be updated to further builds. Thanks to yadevel for fixing the regression this release was blocking on! Highlights: - Fix uploads stalling when using MAXIMUM physical security. - Fix lots of "setNativePriority(X) has failed!", which was caused by a serious thread priority problem. This might fix nodes unexpectedly losing peers. - Order alerts within a category by time: if you have lots of messages from darknet peers they will remain nicely sorted. Translations: - Add partial Greek translation. - Update German, Bokmål, Brazilian Portuguese, Simplified Chinese, and Traditional Chinese translations. - Fix Bokmål localization loading. Also: - Remove Gantros Index because it stopped updating. - Remove Linkageddon because it stopped updating. - New version of UPnP to fix some instability and compatibility problems. Thanks to 007pig we have a new UPnP plugin in development which supports UPnP2, but it is not yet included. [2] - New version of KeyUtils. WebOfTrust now has an updatable testing version built and maintained by xor. To use it, unload WebOfTrust, then load "WebOfTrust Testing Versions" on the Plugins page. Versions built by xor will not work with Java 6. Sites can set favicons with <link ref="icon" type=... href=...>. (type could be "image/x-icon") Extensive review and improvement of English source strings and French and Spanish translations. Tests for and fixes of value substitution in translations. Thanks Vaughan Woodzell! The default theme is now sky-static instead of clean-dropdown. This looks less outdated, though not modern. There is now a caching layer on the store. This should significantly reduce I/O load. [0] Fix default bookmarks missing the "software" category since build 1470. If you don't see this category please re-add the default bookmark set from the bookmark editing page. IpToCountry database is updated. (This allows providing the country flags on the peers pages. It is local to each instance and does not contact an external service.) WebOfTrust is updated to build 18. Its changelog is separate, [1] but one of the major changes is incremental score recomputation which requires roughly 3% of the time of a full recomputation. Add partial CSS3 support, including viewport lengths. Thanks, Ben Green! Thank you for using Freenet! - Steve Dougherty [0] https://github.com/freenet/fred/pull/157 [1] USK@QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/flog/27/Content-617C8FC.html [2] https://github.com/freenet/plugin-UPnP2 Developer changelog: 2016-03-19 Changes in 1471: This is the last build to support Java 6! The next build will require Java 7. Nodes running Java 7 or higher now default to a new update key. Nodes on Java 6 remain using the old update key and will not be updated to further builds. Thanks to yadevel for fixing the regression this release was blocking on! Highlights: - Fix uploads stalling when using MAXIMUM physical security. - Fix lots of "setNativePriority(X) has failed!", which was caused by a serious thread priority problem. This might fix nodes unexpectedly losing peers. - Order alerts within a category by time: if you have lots of messages from darknet peers they will remain nicely sorted. Translations: - Add partial Greek translation. - Update German, Bokmål, Brazilian Portuguese, Simplified Chinese, and Traditional Chinese translations. - Fix Bokmål localization loading. Also: - Remove Gantros Index because it stopped updating. - Remove Linkageddon because it stopped updating. - Tighten security by removing old deprecated DSA-based crypto and compatibility, and always include identity= in opennet noderefs. - Fix JVM version string parsing. - Fix and add test for broken localization substitution token pairs. - Due to node reference changes packets for setting up connections to opennet seednodes are now larger. If you set Freenet's MTU lower than its default (1280 bytes) this may prevent you from connecting to seed nodes. If you experience this, please raise the MTU. - New version of UPnP to fix some instability and compatibility problems. Thanks to 007pig we have a new UPnP plugin in development which supports UPnP2, but it is not yet included. [2] - New version of KeyUtils. WebOfTrust now has an updatable testing version built and maintained by xor. To use it, unload WebOfTrust, then load "WebOfTrust Testing Versions" on the Plugins page. Versions built by xor will not work with Java 6. Sites can set favicons with <link ref="icon" type=... href=...>. (type could be "image/x-icon") Extensive review and improvement of English source strings and French and Spanish translations. Tests for and fixes of value substitution in translations. Thanks Vaughan Woodzell! The default theme is now sky-static instead of clean-dropdown. This looks less outdated, though not modern. There is now a caching layer on the store. This should significantly reduce I/O load. [0] Fix default bookmarks missing the "software" category since build 1470. If you don't see this category please re-add the default bookmark set from the bookmark editing page. Fix problems caused by bookmarks without a name. Adding bookmarks without a name is not allowed, and loaded bookmarks without a name will be renamed (otherwise they would prevent modifying any bookmarks). Thanks to _xiaoyu for the report! IpToCountry database is updated. (This allows providing the country flags on the peers pages. It is local to each instance and does not contact an external service.) WebOfTrust is updated to build 18. Its changelog is separate, [1] but one of the major changes is incremental score recomputation which requires roughly 3% of the time of a full recomputation. Add partial CSS3 support, including viewport lengths. Thanks, Ben Green! See the merge commit - 143cb856f5dc8aee7457eb027fac11c34d18bd2c - for details. FCP: Add Identifier to all messages sent by ListPersistentRequests. Note to plugin authors: we removed KeyListenerConstructionException because it was never thrown. Plugins that handled it will need to be updated. This is (largely) why KeyUtils updated. - Only update essential plugins if we have to. This should avoid connectivity problems for installs for which plugins are necessary to connect. - Show peer locations, not distance in peer location histogram on the statistics page in advanced mode. - Sort alerts within a category by time, newest first (including node-to-node messages). [0] https://github.com/freenet/fred/pull/157 [1] USK@QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/flog/27/Content-617C8FC.html [2] https://github.com/freenet/plugin-UPnP2 KeyUtils v5026: --- Bert Massop (1): Remove references to removed KeyListenerConstructionException Steve Dougherty (1): Version 5026 saces (1): show fpi and gh bugtracker UPnP 10007: --- Bert Massop (5): Fix NPE when binding SSDP socket does not succeed. Fix NPE when a service provider fails to list its services Language: use UPnP instead of UP&P Fix NPE when no ports have been forwarded Fix connection reset on case sensitive Host HTTP header name Juiceman (2): Reformat codebase using Jindent tool Remove extra spaces Steve Dougherty (2): Add readme 10007: improve stability Changes from 1470: --- Ben Green (8): Altered test to reflect the correct values for box-sizing. Added CSS Defaulting Keywords to Filter, no need to explicitly define: initial, inherit and unset for all CSS properties as the standard says they are valid for all. CSS Properties: inherit, initial and unset are valid for all elements, they are so-called CSS Defaulting Keywords. As such I have made the CSSPropertyVerifier will always accept them if they are the only property. All inherit keywords also removed from the arrays where they were present in CSSTokenizerFilter. Renamed function to better describe how it works. Added some comments, corrected a typo and made a slight optimisation Added support for more attributes related to CSS3: UI and Flexbox. nav-* attributes require a valid selector which can be matched by HTMLelementVerifier, made HTMLelementVerifier static so it can be used in CSSPropertyVerifier to verify an se type (isSelector) for nav-down, nav-left, nav-right and nav-up. Added support for attribute box-suppress to complete support for CSS3 Display Fixed Generic ArrayList Constructor for Java 6 compatibility. Changed line endings and allowed numbers to look like this: "1.em" Benjamin Green (6): Added additional units to isLength() method. In CSS3 they are variable length 1-4 chars. Added box-sizing CSS3 property to filter. Added CSS3 flex attributes and values to the filter. Added tests for the above. Style updates (K&R Style ifs). Commented code removed (sorry). Also: Changed "lengthValue = value.substring(0, value.length());" to "lengthValue = value;" strings are immutable. Style changes again: Missed an if in the previous commit. Made a mistake in the acceptable values for box-sizing attribute. Bert Massop (5): Simplify RGA removeRandomExhaustiveSearch wakeupTime conditions HTMLFilter: fix processing of reset input element Show peer locations, not distance in peer location histogram Fix JVM version comparison for version >1.9 and build >99 Reduce memory usage of SplitFileInserterStorageTest David ‘Bombe’ Roden (15): Fix potential resource leak Allow icons in <link> tags Add method to wrap message with list request identifier Add list request identifier to end list message Send list request identifier with all replies to a list request Make field “Identifier” optional for ListPersistentRequestsMessage Don’t create new message if no identifier needs to be added Remove check for impossible condition Copy hashcode correctly Use common base class for input and output streams Remove useless exception rethrows Remove exception that was never thrown Fix wrapped FCP message Override list request identifier Fix wrapping a null FCP message Florent Daigniere (51): How much do we bet? assertTrue(false); => fail(); Revert "Slightly safer locking". It's not. Fix CID-122355: Resource leak in Metadata.java Fix CID-74397: Indefinite wait in RealCompressor Fix CID-122317: Indefinite wait in FCPConnectionOutputHandler RealCompressor: previous commit was wrong; better fix to land next release Simplify RealCompressor bug6591: improve compression algorithm choice get rid of useless variable Junit4 is already added 3 lines below upgrade to BC 1.52 UPnP: require v10006 after purge-db4o USKRetriever: remove superfluous logging Improve RealCompressor bug6600: minimumVersion for connection essential plugins bug4490: Recommended version support in official plugins Be smarter about the maximum heap size on 32bit systems turns out that sun.arch.data.model might not exist toad is right: this isn't what we want toad thinks that this is superfluous Thanks for the code review toad! remove migration code from 2011 remove useless import (thanks bombe) Fix bug #6623 : Wrapper.log: Lots of "setNativePriority(X) has failed!" Deprecate old variables; One should use the enum Document NativeThread.dontCheckRenice Only update essential plugins if we have to Actively prevent newer plugins from being deployed Remove DiffieHellman related code (pre-neg9) Remove DSA and compat code from PeerNode* Stop sending a DSA signature Use P256 pubkey as identity Don't re-use a MD returned to the pool! Remove more dead-code Major modification of DSA keys in references Always send/parse the identity line on opennet Remove more dead code Implement the workaround suggested by toad Second part of the workaround Setup CI at https://travis-ci.org/freenet/fred/ Integer.compare() is java7 ... thanks @Bombe for spotting it try the container-based infrastructure Critical bugfix following #440 Remove dead code (DHGroup) Remove some more pre-negtyp9 code Remove more deadcode as suggested by IDEA Improve locking for nonce-handling Fix logging on DarknetPeerNode We need to write to the peer-file when we add a darknet peer; duh! Ensure that we always write the peer file when we add a peer Lucas Phillips (1): change recommendation of Truecrypt to Wikipedia's list of FDE software Matthew Toseland (115): Use synchronized(this) for size etc (no need for a read/write lock here), check for size in pushAll loop without having to lock again. We need to synchronize when accessing startJob, *NOT* when calling pushAllCachingStores. Document a bit. Do not change startJob in the "too full" case. Rename and clarify queuedJob runningJob prevents us from running pushAllCachingStores twice at once. queuedJob prevents us from queueing two or more jobs to write everything in the future. Better for unit testing. Doh! Trivial tidyup of code. Paranoia. Clarify Increase number of keys to write before rotating, add FIXME. Don't queue job twice if over the limit, reduce code duplication. FIXME Use return value of -1 to indicate empty, and document. Make isEmpty() package local so we can use it for unit tests but not other stuff. Move CachingFreenetStore* to src/freenet/store/caching/ Move CachingFreenetStoreTest too Doh, fix accidental change of comparison, broke caching (would always not cache). Factor out getTotalBlockSize() to StoreCallback Add testCollisionsOverMaximumSize Add SleepingFreenetStore, useful for a test. Test all the possibilities for pushLeastRecentlyBlock, *including the tricky one where it returns 0*. Increase the delay. Maybe this will make Jenkins happy. It works here even with 200ms. Try a different executor. Don't use Future, it appears to confuse Jenkins. :( Longer delay, again for Jenkins. Javadocs. Clarify Create ProxyFreenetStore, base class for CachingFS, SleepingFS etc. Implement WriteBlockableFreenetStore, use it to make test both faster and more reliable. SleepingFS is a really dirty hack, deprecate it. Add waitForSomeBlocked(), wait until a write is actually blocked before starting another one. Use Lock/Condition. Overkill, but not necessarily any uglier. Use Future, now that the problem is solved. block cannot be null here, thanks findbugs. Always close the InputStream Slightly safer locking Reduce priority for updater inserts except in most critical cases. Be much, much less aggressive about inserting the main jar blob. Fix RGA.wakeupTime never getting set. Fix Delete unused code. Tidy up Javadocs. Document Add isOpennetForNoderef(), cleanup. Remove some opennet-specific code from PeerNode. Factor out writePeers() Factor out writePeers(), don't write darknet peers for seeds Move fromAnonymousInitiator to a method too. Remove PeerManager argument too. Get rid of OutgoingPacketMangler argument too. Don't set mustCheckpoint if not checkpointing Check for checkpointing in lock() too. Wake up lock()'ers and clear flag (bug 6612) Improve logging Logging Logging Add test for disabling checkpointing (bug #5512) Purge LocationUIDPair. Cleanly handle dropping too old peers, tell the user. Prevent logging code from breaking startup Add missing file, sorry! Re-check the stores list periodically Re-check the stores list periodically Cleanup: Factor out pushOffThread* Only queue one job in the >90% case. Move variable declaration inside look (Bombe) Use spaces not tabs on changed lines Replace spinning wait in test with proper wait Rename variables isSelector -> isIDSelector Only allow ID selectors. Fix test: Class selector no longer allowed in nav-* Explain issues here Improve cursor handling (2 coordinates or none) Do not accept empty for && expressions (+explain) align-items doesn't accept content-distribution Fix justify-items and add tests Fix leaking a message when rejecting because not routable Comments: Explain what identity is for nowadays Don't reuse key material (depends on #440) Fix comment Remove outdated comments. Indent. Remove unused variables Simplify and rename method Match by pubkey hash, not obfuscation key Match by pubkey not identity (fixes opennt bug) Remove now unused getIdentity() Remove unused code Remove more unused obsolete code Remove out of date comment Remove unused method Factor out dropped peers UI into a useralert Rename l10n strings Fix l10n string typo Fix nondeterminism Remove more non-determinism Need slot filters for SSK tests Need a real delay Fix NPE on creating a new node, argh! Indent. Fix regression in refactoring (someBroken) Log after saving the .broken file Send the new format UOMAnnouncement message for legacy Get rid of all the special treatment of freenet-ext.jar Get rid of old UOMAnnounce message Send the legacy jar if necessary in UOM Remove some more old-UOM cruft Fix the UOM URI as well :( Argh, fix normal UOM case (no transition)! Broadcast only to appropriately versioned nodes Send the correct announcement on connect too Send UOMAnnouncement only after we know the other side's version Delete bogus/outdated check which breaks transition UOM Pascal666 (2): Fix improper indenting & logging bug caused by it Add instructions for installing dependencies on CentOS Simon Vocella (30): improving locking in pushAll add testOverMaximumSize in CachingFreenetStore that test the case when we are going over maximum size change in textOverMaximumSize in CachingFreenetStore: SaltedHashFreenetStore is lossy, since it only has 5 possible places to put each key, so change howManyBlocks in howManyBlocks*5 CachingFreenetStore: use LRUMap instead of two Treemap and change the logic in pushAll add CachingFreenetStoreTracker that It's a single counter, a single flush job that gets called when it's full add CachingFreenetStoreTracker in Node add CachingFreenetStoreTracker in CachingFreenetStore and change some methods fix tests in CachingFreenetStoreTest CachingFreenetStoreTracker: add unregisterCachingFS, lock in register/unregister and take snapshot in pushAllCachingStores CachingFreenetStore: add unregisterCachingFS in close and add registerCachingFS in start CachingStore: setUserAlertManager set the property in the *underlying* store CachingFreenetStore: now pushAll return the number of bytes that it pushed down to the *underlying* store CachingFreenetStoreTracker: fix in pushAllCachingStores and unregisterCachingFS, improvements and fixing in add CachingFreenetStoreTest: add one check in testOnCloseSSK and testTimeExpireSSK and waiting the flushing of the cache in testOverMaximumSize CachingFreenetStoreTracker: use toArray(new CachingFreenetStore[cachingStores.size()]) to avoid casting from Object, delete pushAllCachingStores call direclty in add CachingStore: change pushAll in pushLeastRecentlyBlock CachingFreenetStoreTracker: do while{} in unregisterCachingFS and pushAllCachingStores CachingFreenetStoreTest: check where is the block in testOnCollisions CachingFreenetStoreTest: delete two useless lines CachingFreenetStore: add size to avoid useless cycles in CachingFreenetStoreTracker CachingFreenetStoreTracker: now use the size of CachingFreenetStore delete useless size in CachingFreenetStore and use isEmpty use isEmpty instead of getSize in CachingFreenetStoreTracker and push a limited number of keys instead of one push in add CachingFreenetStoreTracker: add "|| maxSize == 0" in the assert in add() function because if maxSize == 0 we have a queuedJob = false use a "final int sizeBlock;" set at construction, instead of getSizeBlock() in CachingFreenetStore CachingFreenetStore: peekKey() can change, if a block is re-added due to a collision (with overwrite=true). So push* needs to keep the key for the block it's just written, check that the blocks are equals(), check the return value from removeKey(), and THEN add the bytes to the counter. CachingFreenetStoreTracker: add() have a lower threshold, say 90% of maxSize, when it will start a write job, but still accept the data. CachingFreenetStore: If backDatastore.put() throws, we should probably still remove the key. We don't want to keep looping forever. This is especially important for KeyCollisionException. CachingFreenetStore: always remove the key, even if we get IOException and check if the last version of the block are equals to the block pushed. it might have changed if there was a put() with overwrite=true. If it has changed, return 0, i.e. don't remove it CachingFreenetStore: error in equals, correct Steve Dougherty (51): Close output stream Update Spanish, French, and Brazilian Portuguese translation Refine English strings MessageAuthCode: fix JVM-version-dependent test failure Fix Norwegian Bokmål path and configuration themes: avoid styling headers as normal text l10n: remove unused strings l10n: polish phrasing and fix typos l10n: fix spelling of "compromised" l10n: reduce configuration description aggression l10n: polish phrasing and fix typos Convert NEWS to Markdown NEWS: remove 1468 tray download mention Fix spelling of "infeasible" CONTRIBUTING: document adding news entries l10n: remove unused string l10n: replace "meta-string" with "path component" l10n: remove duplication; fix phrasing in SSL options l10n: avoid duplication; fix phrasing l10n: polish phrasing l10n: fix mailing list address l10n: clarify progress page purpose Move Gantros' index to top bookmark BookmarkEditor: reduce code duplication BookmarkEditor: disallow empty bookmark names Parse empty bookmark name as "Unnamed Bookmark" Add bookmark name NEWS entry default bookmarks: move Enzo's Index to the top Update WebOfTrust to build 18 Update translations Remove untranslated strings Update Freemail to v0.2.7.2 Update FlogHelper to v35 Update KeyUtils to v5025 BaseL10n: fix Bokmål slug reformat canAutoconfigureDatastoreSize() fix loss of precision Update translations test: fix resource path on Java 6 l10n: remove unused somePeersDisconnectedBlockedTooLong remove 1421-specific legacy updater DroppedOldPeersUserAlert: fix ".broken" suffix duplication Update UPnP to 10007 Update KeyUtils to v5026 l10n: add Greek translation Update translations l10n: fix token mismatch in Traditional Chinese updater: change old update key to new for Java 7+ fix offering legacy jar UOM using the stable key Update default bookmark editions Build 1471 Vaughan Woodzell (16): Add unit tests for BaseL10n Refactor a little to combine calls to addL10nSubstitutionInner() Avoid returning partially-populated node on l10n error Always clone node before adding in addL10nSubstitutionInner() Remove unused key parameter from addL10nSubstitutionInner() Use fallback string on error in addL10nSubstitutionInner() Add test for invalid l10n strings Fix broken l10n substitution variables Return key from addL10nSubstitution() if fallback fails Pass l10n parse exception into Logger.error() Separate BaseL10n.getFallbackString() from getDefaultString() Separate l10n fallback logic from value handling Move exception handling out of BaseL10n.tryGetL10nSubstitution() Remove unneeded null check from BaseL10n.addL10nSubstitution() Improve method names and javadoc in BaseL10n Copy l10n test properties in unit-build drak@kaverne (23): l10n: suggest store values between 100MiB and 20GiB Improve suggested store size wording wizard: improve datastore size selection adjust indentation to using spaces wizard: use 10GiB from 50GiB free to 100GiB free add a NEWS file add a NEWS entry about the NEWS file bookmarks: indexes for default bookmarks in software category were wrong. default bookmarks: Fix: did not adjust the documentation category name. update NEWS improve our READMEs with build instructions add a note how to run the built freenet yourself. switch the default theme to sky static Order node-to-node message alerts by sent time l10n: Simplify N2NTM useralert header useralerts.N2NTM: order by received time instead of sent time useralerts: order messages in each class by updated time n2ntms: the composed time is the time the user hit send UserAlertManager: fix the comments and make them actually useful NEWS: add sorted n2ntms Gantros is likely dead. Let us preserve his or her memory. Linkageddon stopped updating. update NEWS file oo (1): CompatibilityAnalyser: fix dontCompress always being false saces (1): set addItem to public xor-freenet (4): Fix updating for official plugins whose JAR URI is USK OfficialPlugins: Add testing versions of WOT published by xor WOT testing versions' l10n: Warn user about permanent auto-update Eclipe classpath: Fix sourcepath of contrib to match repository name yadevel (1): Avoid claiming of unrejected messages by NodeDispatcher
build01470: 2015-08-16
Freenet 0.7.5 build 1470 is now available. This release fixes Freemail problems that prevented sending mail, and removes a compromised opennet seed node. Freemail also gains a new message link on the inbox page, links to senders' WoT profiles, and new translations: - Czech - Greek - Spanish - Finnish - Hungarian - Dutch - Polish - Portuguese (Portugal) - Serbian - Turkish To clarify, the CHK metadata bug fixes in 1468 are added as a new compatibility mode that is not yet the default. Compatibility with 1416 keys is available. The Fred Spanish translation has comprehensive updates as well. Thank you for using Freenet! - Steve Dougherty Developer changelog: 2015-08-16 Changes in 1470: This release fixes Freemail problems that prevented sending mail, and removes a compromised opennet seed node. Freemail also gains changes to IMAP / SMTP handling, a new message link on the inbox page, links to senders' WoT profiles, and new translations: - Czech - Greek - Spanish - Finnish - Hungarian - Dutch - Polish - Portuguese (Portugal) - Serbian - Turkish To clarify, the CHK metadata bug fixes in 1468 are added as a new compatibility mode that is not yet the default. Compatibility with 1416 keys is available. The Fred Spanish translation has comprehensive updates as well. - Steve Dougherty Freemail v0.2.7.1: --- David ‘Bombe’ Roden (18): Remove “delete on finalize” constructor parameter Add convenience method for the “seen” IMAP flag Add convenience method for the “deleted” IMAP flag Add convenience method for the “recent” IMAP flag Add convenience method for setting the “seen” flag Add convenience method for setting the “recent” flag Add convenience method for clearing the “recent” flag Add convenience method for setting the “deleted” flag Use constants for flag names Append link to web of trust for a sender identity Rename method to match any Java style guide Add methods to check for existence of a real name and expose it Add method that returns the address Add method that returns the WoT identity of an email address Rework sender cell generation Try setting a read timeout on the socket Automatically disconnect after 30 minutes Set thread names for IMAP and SMTP handlers Martin Nyhus (18): Add date missing message to InboxToadlet if needed Add date to message view Rewrite welcome message slightly Fix NPE when displaying a message without a from header Don't show deleted messages in folder view Add from missing message to InboxToadlet if needed Initialize RNG before running message transport test Mock Executor to fix ordering during transport test smtp: reject auth when usernames are not the same smtp: don't try to deal with auth plain with one nul smtp: add support for auth cancelation Don't close test side of the fake socket on close() imap: fix reading of literals during append smtp: reject auth when already authenticated imap: reject search with extra spaces near paranthesis Fix EmailAddress test to allow UTF-8 Make the default build target fail on unit test failure imap: avoid copying partial buffer on append Steve Dougherty (8): Update translations Rename Norwegian localization to more specific dialect Update translations Add Hamcrest to test classpath Clarify when override.properties is necessary Update translations Version v0.2.7 Version v0.2.7.1 drak@kaverne (2): readme: Add note about override.properties and remove short address ui: Add New Message link on inbox page Fred --- Steve Dougherty (5): Fix Norwegian Bokmål path and configuration Update Freemail to v0.2.7.1 Update translations Update default bookmark editions Build 1470
build01469: 2015-07-19
Freenet 0.7.5 build 1469 is now available. This release fixes two bugs introduced in build 1468. One caused very slow operation and high CPU usage with large files and physical security levels above None (i.e. Freenet-level disk encryption). The other prevented interactive usage (e.g. freesite browsing) while finishing large downloads or starting large uploads. Thank you for using Freenet! - Steve Dougherty Developer changelog: 2015-07-19 This release fixes two bugs introduced in build 1468. One caused very slow operation and high CPU usage with large files and physical security levels above None (i.e. Freenet-level disk encryption). The other prevented interactive usage (e.g. freesite browsing) while finishing large downloads or starting large uploads. Fred now requires Bouncy Castle 1.52, which fixes the slow performance of SkippingCiphers. Bouncy Castle 1.51 implemented it by incrementing repeatedly. MemoryLimitedJobRunner now requires a maximum priority when instantiated and runs jobs in priority order. getPriority() returns the priority of the job (changed from 1468 where it was the priority of the thread running the job). There are also minor changes to the splitfile internal APIs. These do not appear to affect KeyUtils or Shoeshop, but might affect other very low-level plugins. - Steve Dougherty Java installer changes: --- Florent Daigniere (1): Update to BC1.52 Karl Semich (3): Inform user re: https://bugs.freenetproject.org/view.php?id=6544 Give some working java versions. Check DH prime size issue by trial rather than error text Steve Dougherty (5): Fix whitespace Correct key size limit message Clarify comment Clarify what action to take Revert "Correct key size limit message" Windows installer changes: --- Florent Daigniere (1): Update to BC1.52 Steve Dougherty (1): Update Java installer to 8u51 Fred changes: --- Matthew Toseland (6): Prioritise memory limited jobs (and hence FEC). Fix tests Priority class of FEC is now the priority class of the request itself Update docs/build: bcprov 1.52 Update dependecies: bcprov 1.52 Fix url in README Steve Dougherty (2): Update default bookmark editions Build 1469
build01468: 2015-07-11
The Freenet team is very happy to announce the stable release of Freenet 0.7.5 build 1468. *Important notes*: downgrading from build 1468 is not supported; if you want to go back to build 1467 without losing the upload and download queues, *before* upgrading, back-up the following files and directories: master.keys, persistent-temp-*/, and node.db4o (see https://wiki.freenetproject.org/Program_files ). Please note that running transfers will be restarted from scratch too. A reminder to those testing auto-update to 1468-pre4: please restore your auto-update key to the default. One way to do this is to stop Freenet, remove the "node.updater.URI" line from freenet.ini, and start Freenet again. In this release, the way Freenet stores data locally has changed drastically by no longer using the now-deprecated db4o object storage. It is replaced with the product of toad's summer of work - a custom on-disk format that is much more robust against corruption and more efficient. * Existing unfinished downloads and uploads will be imported to a new format, which requires restarting them from the beginning. * Space for downloads is now all allocated at the start, so machines very low on disk space may run out, which causes downloads to temporarily fail until more space is available. * CHKs will change due to metadata bugfixes. * Some unofficial plugins will need to be updated because of API changes. Sone already works, as do all official plugins. * The queue format changes should make it extremely rare to lose the entire queue: the impact of corruption will almost always be localized. * Multi-container / site uploads can now be persistent, making it more practical to upload large sites. * Passworded physical security is now much stronger. (Full-disk encryption is still preferable.) * The Windows installer now defaults to starting Freenet on login. * There is a new Windows tray app with some useful features that is included with new installations. [0] If you are using the existing Windows tray app you can download the new one here. [1] No need to put it in a specific directory - it will try the default installation location and prompt if it can't find it. * The list of download keys moved from downloads/listFetchKeys.txt to downloads/listKeys.txt. * A list of upload keys is now available at uploads/listKeys.txt * Gantros' index is now in the default bookmarks. It uses the same software as Enzo's index, which is no longer updated. * The obsolete and deprecated XMLLibrary and XMLSpider plugins are no longer officially supported. They will still load for those who have them added, but are no longer shown on the plugin page. * In the interests of releasing this build more quickly, the new version of FlogHelper does not support exporting and importing backups from the web UI. The old backup code did not work with the new Freenet version after removing db4o. People can instead back up "plugins.floghelper.FlogHelper" files in the plugin-data directory. These can be dropped into the directory after unloading FlogHelper to restore a backup. * ThawIndexBrowser works again. Thanks saces! * Fred translations are updated. * Add two seed nodes, one sponsored by meshnet.pl - the Polish radio/meshnet darknet users group, and another run by ArneBab. Thanks! * Update existing seed node references. Thank you for using Freenet! [0] https://github.com/freenet/wintray [1] https://downloads.freenetproject.org/alpha/installer/FreenetTray.exe.build01468 Developer changelog: 2015-07-11 The Freenet team is very happy to announce the stable release of Freenet 0.7.5 build 1468. *Important notes*: downgrading from build 1468 is not supported; if you want to go back to build 1467 without losing the upload and download queues, *before* upgrading, back-up the following files and directories: master.keys, persistent-temp-*/, and node.db4o (see https://wiki.freenetproject.org/Program_files ). Please note that running transfers will be restarted from scratch too. A reminder to those testing auto-update to 1468-pre4: please restore your auto-update key to the default. One way to do this is to stop Freenet, remove the "node.updater.URI" line from freenet.ini, and start Freenet again. db4o is gone from Fred. It is replaced with the product of toad's summer of work - a custom on-disk format that is much more robust against corruption and is more efficient in both CPU and I/O. [0] A new crypto API (unixninja92’s Google Summer of Code) is available for plugins to easily perform cryptographic operations within Freenet. This new API has been designed to make it as simple as possible to do the “right” thing cryptographically and to follow current best security practices. See freenet.crypt.EncryptedRandomAccessBuffer and freenet.crypt.MessageAuthCode for details. * Existing unfinished downloads and uploads will be imported to a new format, which requires restarting them from the beginning. * Space for downloads is now all allocated at the start, so machines very low on disk space may run out, which causes downloads to temporarily fail until more space is available. * CHKs will change due to metadata bugfixes. * Some unofficial plugins will need to be updated because of API changes. Sone already works, as do all official plugins. * The queue format changes should make it extremely rare to lose the entire queue. The impact of corruption will almost always be localized. * Multi-container / site uploads can now be persistent, making it more practical to upload large sites. * Passworded physical security is now much stronger. (Full-disk encryption is still preferable.) * The Windows installer now defaults to starting Freenet on login. * There is a new Windows tray app with some useful features that is included with new installations. [1] If you are using the existing Windows tray app you can download the new one here. [2] No need to put it in a specific directory - it will try the default installation location and prompt if it can't find it. * The list of download keys moved from downloads/listFetchKeys.txt to downloads/listKeys.txt. * A list of upload keys is now available at uploads/listKeys.txt * Gantros' index is now in the default bookmarks. It uses the same software as Enzo's index, which is no longer updated. * The obsolete and deprecated XMLLibrary and XMLSpider plugins are no longer officially supported. They will still load for those who have them added, but are no longer shown on the plugin page. * In the interests of releasing this build more quickly, the new version of FlogHelper does not support exporting and importing backups from the web UI. The old backup code did not work with the new Freenet version after removing db4o. People can instead back up "plugins.floghelper.FlogHelper" files in the plugin-data directory. These can be dropped into the directory after unloading FlogHelper to restore a backup. * ThawIndexBrowser works again. Thanks saces! * Fred translations are updated. * Add two seed nodes, one sponsored by meshnet.pl - the Polish radio/meshnet darknet users group, and another run by ArneBab. Thanks! * Update existing seed node references. * This build introduces a new API (not finalized, pending feedback) for synchronous and asynchronous bidirectional FCP and inter-plugin communication. It is fully documented; see PluginRespirator.connectToOtherPlugin() and FredPluginFCPMessageHandler for details. [3] KeyUtils changes since v5022: --- Matthew Toseland (2): Use the right sendReply method Fix compile for purge-db4o fred changes Steve Dougherty (3): Version 5023 Update German, French, and Brazilian Portuguese translations Version 5024 saces (1): Update for more Fred API changes Library v36 --- Linus Tolke (1): Avoid the use of the "freenet:"-prefix. Matthew Toseland (4): Add two new indexes, woot! Fix build for purge-db4o merge. v36: Cleanups, inspired by TheSeeker's post-purge. (Not Yaml updates!) Fix leak Steve Dougherty (1): Update build for broken snakeyaml link Spider v52 --- David ‘Bombe’ Roden (1): Include time of last activity in web interface. Matthew Toseland (4): Fix priority Add missing @Override's Use Spider as RequestClient, don't need a new one. No, we don't want to use the local freenet root URI. Explain why. TheSeeker (1): Try to make Spider work post-purge. WebOfTrust build0015 --- See its release notes. [4] WoT build0016-rc1 is also available. It has performance and efficiency improvements but came out while Fred was in feature freeze. [5][6][7] Fred changes since build01467: --- Bert Massop (7): SentTimeCache: fix new Coverity defects PluginInfoWrapper: Add code quality TODO of reducing useless caching SplitFileInserterStorage: provide linear upper bounds on chooseBlock SplitFileInserterStorage: adapt chooseBlock to coding standards SplitFileInserterStorage: separate random iteration logic Add unit tests for RandomArrayIterator SplitFileFetcherStorage: use RandomArrayIterator for segment choice Charles Teese (1): Fixed CryptByteBufferTest for iv length. David ‘Bombe’ Roden (4): Try to reload seednodes if they are missing Add request client builder Replace anonymous classes by request client builder Fix potential resource leak Florent Daigniere (8): Fix more overflows (CID 75145,75137,75104,75094) Update dependencies in ant and documentation Fix the ant build script (for Windows) /usr/share/java should also be scanned for libtest Uniformize the javac invocations Fix CID-122355: Resource leak in Metadata.java Fix CID-74397: Indefinite wait in RealCompressor Fix CID-122317: Indefinite wait in FCPConnectionOutputHandler Matthew Toseland (1662): [1636 purge-db4o commits omitted] Fix classpath for Eclipse Tell the TempBucket when the RAF is freed, and clarify. Better to just set the flag. Free outside the lock unless it's stored in RAM Check for double free here too (will happen for temp->buffer). Fix bucket leak on non-persistent inserts. Don't start() on encoding finished if only getting CHK Fix bogus ERROR on GetCHKOnly Resume ClientPutDir.manifestElements on startup, fixes NPE Fix getWakeupTime() to return -1 when done as contracted. Move getWakeupTime into Storage (encapsulation, locking!) Clarify: Javadocs, code style, comments. Wait at the right point. Fix barrier code, hence fix race condition in test. Set max threads to 1, explain why. Fix another leak Fix issues with comments Add FIXME's Style fixes Unregister Sender when finishing insert (off thread). Javadocs Make storage and sender volatile. Spacing Don't need test for null here. Fix another unit test race condition. RdrOfTheSt0rm (2): JavaDoc: fix broken links JavaDoc: fix more broken links Steve Dougherty (25): Fix addition overflow for large files Update build documentation for package support ClientRequester: add default getSchedulerGroup() implementation Update translations Update KeyUtils to v5024 Reduce startup page refresh period to 1 second ClientRequester: clarify default behavior l10n: clarify Norwegian dialect Fix whitespace RandomArrayIteratorTest: add missing EOF newline Update Spider to v52 Mark XMLLibrarian and XMLSpider as unsupported Increase Spider minimum version Update Library to v36 Update WebOfTrust to build0015 Fix whitespace and braces Use consistent capitalization in bookmark l10n keys Update translations Document purpose of seed node retry RequestClientBuilder: remove superfluous documentation Update ThawIndexBrowser to v6 Add contributing guidelines Update FlogHelper to v34 Close output stream Update Spanish, French, and Brazilian Portuguese translation TheSeeker (6): Fix favicon.ico on the /feed/ screen Fix type conversion error breaking large files Update compatibilityMode versions Remove redundant function Fix #6513 Implement text list of inserted keys. Fix: Transfer backoff was never being reset. drak@kaverne (17): Fix whitespace Add getMimeType() to ManifestElement ContainerInserter: Use getMimeType, not *Override Share stuff: Add checkbox to select all Friends. move checkAll javascript into staticfiles/js/. hide the no-library warning. FetchKeyLabel shows that in can download files. Refactor search box logic into function remove old unneeded comment simpler boolean functions formatting (space after if). formatting: remove duplicate spaces default bookmarks: add Gantros index default bookmarks: change order: nerd, gantros, link, enzo default bookmarks: add my sharewiki and update descriptions Split default bookmark software and docs; add docs sites Add bookmark localization leberhome (1): rescuing the genetive saces (2): eclipse: export freenet-ext.jar fix the 'open with ThawIndexBrowser' link unixninja92 (30): Added KeyGenUtils, MessageAuthCode, CryptBitSet, and ERAT plus supporting type enums. Added Tests for ERAT and MasterSecret. Renamed CryptBitSet to CryptByteBuffer. Wrote unit tests for MasterSecret Documented MasterSecret Wrote unit tests for ERAT and fixed some bugs that were found becasue of it. Worked more on ERAT unit tests Check for fileOffset < 0 in ERAT Fixed several bugs in ERAT ERAT now performs sucessful round trip! More ERAT tests More ERAT testing and preping to document ERAT Documented ERAT Added Licence Notices Finished adding Licence Notices Documented EncryptedRandomAccessThingType Documented key derivation in KeyGenUtils Added more unit tests for ERAT Added ivSize documentation to KeyType Added comment explaining that the SuppressWarnings("deprecation") at the top of CryptByteBuffer is for uses of CryptByteBuffer.RigndaelPCFB. Added hasIv to CryptByteBuffer for better readability. Fixed -1 that should have been null in CryptByteBufferType Check for unsupportedType in getIV() in CryptByteBuffer Fixed comments in CryptByteBuffer Changed extra catch statements to multi-catch Moved suggested algorithm/type choise from var to docs Converted String comparisons to .equals from ==s. Removed unused classwide var in ERAT Cleaned up ERAT Made isClosed volatile in ERAT and made more vars final. Made cipherPrams final in ERAT xor-freenet (580): FCPConnectionHandler: Prepare to use UUID instead of 16 hex-encoded bytes [570 plugin-fcp-rewrite commits omitted] ClientRequester: Keep track of latest success/failure Date SplitfileProgressEvent: Propagate Date latestSuccess & latestFailure FCP SimpleProgressMessage: add LastSuccess and LastFailure *RequestStatus: Propgate Date latestSuccess & latestFailure QueueToadlet: Use new RequestStatus.getLastFailure() / getLastActivity() QueueToadlet: disable "Last failure" column Users of ClientRequester.latestSuccess: Document reason of default value FCP SimpleProgressMessage: disable "LastFailure" field Fix branch's whitespace to be coherent with pre-existing style [0] http://amphibian.dyndns.org/flogmirror/#20140926-release USK@yGvITGZzrY1vUZK-4AaYLgcjZ7ysRqNTMfdcO8gS-LY,-ab5bJVD3Lp-LXEQqBAhJpMKrKJ19RnNaZMIkusU79s,AQACAAE/toad/55/#20140926-release [1] https://github.com/freenet/wintray [2] https://downloads.freenetproject.org/alpha/installer/FreenetTray.exe.build01468 [3] https://github.com/freenet/fred/pull/319 [4] CHK@rSqSS7l5Nr-~LTTtWf6-E6Hc1penQVEpBWe3nrup11w,x71H8irUhVYIR1hkLTvnj-tHInStAFg1mVrfizHS0Go,AAMC--8/WoT-build0015.txt [5] CHK@2oYjqKfwAqmdk-iogm1p~rXngAeCGVL6JW2wRvZjqKE,fj~bOGvl-l30KZoueErBo5uqDQ6ZaqIOu5yknbc3pTo,AAMC--8/WebOfTrust-build0016-rc01.zip [6] CHK@Wk0E3jOHDqvxLYsvbRotJUMIcrJZM9eErEALdUn2o3s,zKvndt1RuQUX5mvI232jiugoRasQYasVS5RKkiFMkZE,AAMC--8/WebOfTrust-build0016-rc01.zip.sig [7] USK@QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/flog/23/
build01467: 2014-11-23
Freenet 0.7.5 build 1467 is now available. This release fixes a bug introduced in build 1466 which can erase the list of plugins to load when Freenet starts if it crashes. If you are affected by this bug and can no longer connect, try adding the UPnP or JSTUN plugins again. This release also has updated Finnish, French, Dutch, and Brazilian Portuguese translations thanks to volunteers on Transifex. [0] The Windows installer is updated: * It now disables the Java installer's sponsor offers. Thanks artart78! * It gained a Finnish translation. Thanks oselotti! Thank you for using Freenet! - Steve Dougherty [0] https://www.transifex.com/projects/p/freenet/ Developer changelog: 2014-11-23 Changes in 1467: This release fixes a bug introduced in build 1466 which can erase the list of plugins to load when Freenet starts if it crashes. [0] Thanks to anonymous for the report and Eleriseth for diagnosing the problem! purge-db4o was going to be in this release if there weren't surprises, but this was a surprise. Barring even more surprises, purge-db4o will be released in build 1468. - Steve Dougherty [0] https://bugs.freenetproject.org/view.php?id=6411 Windows installer: --- Arthur Blot (2): Prevent Java from installing the Ask! toolbar Fix README.md AutoHotKey build instructions Steve Dougherty (5): README: use more concise wording README: fix typo READMEs: remove trailing whitespace Document ending newline policy Add Finnish language entry and convert to ANSI oselotti (1): Add Finnish translation romnGit (2): README: remove obsolete build history Add a Readme for FreenetInstaller_InnoSetup_library fred: --- Eleriseth (1): Remove unnecessary logging Steve Dougherty (6): Default bookmarks: fix operhiem1's blog not appearing PluginManager: fix plugin configuration corruption PluginManager: use idomatic collection addition Add updated translations Update default bookmark editions Build 1467
build01466: 2014-11-09
Freenet 0.7.5 build 1466 is now available. This release is planned to be the second-to-last version of Freenet to support Java 6. The version after this one will refuse to upgrade unless running on Java 7 or later. Support for this behavior is part of a larger effort to allow separate official update channels - stable, testing, and unstable - as well as make it easier to publish unofficial update channels and further improve deployment security. Highlights for this build: * Add Hungarian Windows installer translation. Thanks drezzium! * Allow hiding the Java version End Of Life alert. (I'm sorry for the excessive annoyingness. Still - please upgrade Java!) * Upgrades to the next version (that is, when running this build's upgrade code) should no longer get stuck in an upgrade loop. [0] * Increase opennet peer limit to 142 peers. This now has more math behind it and will change when network parameters are adjusted. [1] * Add more opennet seed nodes. Thanks saces and juiceman! * This build will be mandatory starting 2014-11-16, because old nodes will reject new nodes with more than 110 peers. Updates only take a few hours to spread, so this should only cause short term disruption. Additionally Matthew's (toad_'s) summer work on a custom on-disk format is done. This release lays the groundwork to include the results of that work in the next next release. [2] This is designed for less disk activity and better behavior when corrupted. This release coincides with the 25th anniversary of the demolition of the Berlin wall (Mauerfall), which marked the beginning of the end of a large censorship and surveillance regime. May censorship fall everywhere! Thank you for using Freenet! - Steve Dougherty and Arne Babenhauserheide [0] https://bugs.freenetproject.org/view.php?id=3208 [1] https://github.com/freenet/fred/pull/286 [2] USK@pxtehd-TmfJwyNUAW2Clk4pwv7Nshyg21NNfXcqzFv4,LTjcTWqvsq3ju6pMGe9Cqb3scvQgECG81hRdgj5WO4s,AQACAAE/blog/23/Content-626611C.html "Release Roadmap 1466--1468" Developer changelog: 2014-11-09 Changes in 1466: Barring surprises this is the second-to-last version of Freenet to support Java 6. If all goes according to plan, the next version will merge purge-db4o, and the next will require Java 7. The version with purge-db4o will refuse to upgrade unless running on a version of Java recent enough to run the next version. Support for this behavior is part of a larger effort to allow separate official update channels - stable, testing, and unstable - as well as make it easier to publish unofficial update channels and further improve deployment security. The coding standards are now being enforced on incoming code and commit messages. [0] These focus both on higher code quality and more descriptive commit messages. The latter make it easier to understand changes between versions and to provide descriptive release information automatically. Highlights for this build: * Add Hungarian Windows installer translation. Thanks drezzium! * Update to Bouncy Castle 1.51. * Allow hiding the Java version EOL alert. (I'm sorry for the excessive annoyingness. Still - please upgrade Java!) * Fix external container redirect path. When large files are moved into external containers they will no longer give a spurious "Not in archive" error. [1] * Add more opennet seed nodes. Thanks saces and juiceman! * Remove bloom filter false positive logging. * Starting Freenet on operating systems that put Java behind a script (Gentoo; Arch) should work by default more often. * Upgrades to the next version (that is, when running this build's upgrade code) should no longer get stuck in an upgrade loop. [2] * Increase opennet peer limit to 142 peers. This now has more math behind it and will change when network parameters are adjusted. [3] * This build will be mandatory starting 2014-11-16, because old nodes will reject new nodes with more than 110 peers. Updates only take a few hours to spread, so this should only cause short term disruption. The next steps: toad_'s summer work on replacing db4o with a custom on-disk format is done and will be in the next release. This is designed for less disk activity and better behavior when corrupted. Plugins will have to be updated due to accompanying API changes. KeyExplorer is ready for the API change, FlogHelper has some work done, and I don't know about the rest. Further plans are detailed in a short-term roadmap. [4] - Steve Dougherty [0] https://wiki.freenetproject.org/Coding_standards [1] https://github.com/freenet/fred/pull/282 [2] https://bugs.freenetproject.org/view.php?id=3208 [3] https://github.com/freenet/fred/pull/286 [4] USK@pxtehd-TmfJwyNUAW2Clk4pwv7Nshyg21NNfXcqzFv4,LTjcTWqvsq3ju6pMGe9Cqb3scvQgECG81hRdgj5WO4s,AQACAAE/blog/23/Content-626611C.html "Release Roadmap 1466--1468" --- Bert Massop (6): Node config defaults: fix minimum store size bug Packet handling: simple efficiency improvements Default bookmarks: add operhiem1's flog Introduce lightweight exceptions without stack trace LightweightException: improve Javadoc and coding style WrapperConfig: always set reload_configuration=TRUE David ‘Bombe’ Roden (18): Update jSite version and download link. Remove link to FAFS, add link to jSite homepage. Don’t use “new String(String)” constructor Don’t use “new String()” constructor, just use an empty String Declare t where needed Move log and alog table generation to their own method Move S box generation to its own method Move inverted G matrix generation into its own method Move T box generation into its own method Don’t implicitly unbox the primitives, use the correct parser method Use autoboxing instead of creating new Integer objects Don’t iterate over keys and look up the values, iterate over entries Don’t use String concatenation in loops, use a StringBuilder Declare constants as static Remove unused fields Remove unused parameter Fix exception when parsing “/*/*” Add test case for fixed CSS parser bug Eleriseth (3): Fix exception on illegal SSK key. Fix racing Deobfuscate NewPacketFormatKeyContext.ack() Florent Daigniere (1): update the CA; pin on GlobalSign's root Marios Isaakidis (2): bookmarks: expose manager and updated status BookmarkItem: rename status methods; only allow clear Matthew Toseland (13): Purge false positives log spam. It is not necessary, and not helpful. If the 20%+ "false positives" were the result of actual bloom filter false positives it would indicate a serious problem, but the most likely explanation is simply a consequence of us fetching more blocks than we strictly need (since some of them will fail), and similar issues. We could quantify this in detail but IMHO it isn't a serious problem. Fix big containers losing files: When we move a file to an archive ("external" container), we need to reset its name as we won't use the full path when looking it up. Logging: Free by finalize is a leak Fix bucket leak Fix a bucket leak in updater code Fix leak in SlashdotStore and add logging Fix bucket leak in inserting date hints Fix concurrency issue resultin in IMPOSSIBLE: BUCKET IS NULL and bucket leaks Delete unused methods re last data fetched lastRequestData is now only used internally, so we need to free it. Consistently synchronize when accessing lastRequestData Start the plugins off-thread. Don't let them block the rest of startup. If they are loaded from Freenet, they could take a long time to load, especially if they also block IP detection! Simplify Steve Dougherty (10): README: update links FProxy: allow hiding JVM EOL alert Fix whitespace and line length; reword comments opennet: replace improperly-truncated constant Fix clobbering old logs on startup Remove needless cast Download queue: link to text key list Update translations Update default bookmark editions Build 1466 drak@kaverne (6): better error message with too old node. Moved long too old message from *TooOldShort to *ToOld. opennet: increase maxpeers to 140 opennet manager: clearer comment opennet manager: derive max peers. opennet manager: cleaner. unixninja92 (2): Upgraded to BouncyCastle 1.51 and JUnit 4 Updated dependencies.properties for BC 1.51 xor-freenet (2): PluginReplySender: Add getConnectionIdentifier() - This allow identifying to which client connection a PluginReplySender belongs. - It is need for WOT SubscriptionManager (= event-notifications) so it can determine whether a certain client is already subscribed to certain events. Also, it will have to store the connection ID in the database so when events happen in the future it can obtain the PluginReplySender with the matching ID to send the events back to. - For pure FCP network connections, the data needed for this was already stored: A random per-network-connection identifier at FCPConnectionHandler.connectionIdentifier. It was only a matter of exposing it through a getter. - For intra-node connections between plugins, a new random ID is stored for each PluginTalker - The result of getConnectionIdentifier() is not only the connection ID but also contains the client-specified "Identifier" from FCP which was already existing in the code. This is to not break clients which try to maintain multiple connections by using a different "Identifier" field. DisconnectedException: Don't synchronize function which modifies nothing; JavaDoc - The synchronized likely resulted from copy-pasting the parent function which does modify stuff as skeleton. - Add JavaDoc which explains the typical reason for not producing a stack trace.
build01465: 2014-08-09
Freenet 0.7.5 build 1465 is now available. Oracle Java 6 has not received security updates since February 2013. [0] Starting with this release, Freenet displays an alert when running on old versions of Java. [1] It will require Java 7 or later in a future release. This release changes the rules for accepting connections in a way that we hope will improve performance. Because it is likely that this will interact poorly with the existing behavior, build 1464 and older will become too old on 2014-08-16. Also in this release: * Add Russian Windows installer translation. Thanks zabuldon! If you want to give a translation for another language please do so; the English source file is here: [2] In addition to Russian there are currently translations for Spanish, French, and Dutch. * Enhance the CSS filter to prevent pages from appearing differently based on browser history. * Update German, Finnish, French, Japanese, Dutch, Brazilian Portuguese, and Simplified Chinese translations thanks to volunteers on Transifex. * Update seed nodes. Thanks justusranvier and Stanley! Thank you for using Freenet! - Steve Dougherty [0] http://www.oracle.com/technetwork/java/javase/eol-135779.html [1] https://github.com/freenet/fred/pull/269 [2] https://github.com/freenet/wininstaller-innosetup/blob/master/translations/Messages_en.isl Developer changelog: 2014-08-09 Build 1465: The major network structure change in this release is preferential opennet peer acceptance based on link length. The Roos, Schiller, Hacker, and Strufe paper reports far too many long links. [0] The statistics we've been collecting observe this as well. This release accepts comparatively few long links, which should allow much better navigation of the local keyspace. This will result in rejecting more connections offered over announcement, so in a future version announcements may indicate link length preference to lessen the load. Matthew speculates that this will not interact well with the existing behavior, so it will be mandatory 2014-08-16. Java 6 has been EOL since February 2013. [1] This release adds an alert when running with Java earlier than 1.7. [2] Freenet will require Java 1.7 or later in a future release. Also in this release: * Add Russian Windows installer translation. Thanks zabuldon! If you want to give a translation for another language please do so; the English source file is here: [2] In addition to Russian there are currently translations for Spanish, French, and Dutch. * Update German, Finnish, French, Japanese, Dutch, Brazilian Portuguese, and Simplified Chinese translations thanks to volunteers on Transifex. * Add permissions attribute to main jar manifest. * Allow building with Bouncy Castle 1.50 and higher. 1.49 had a draft implementation of OCBBlockCipher, and an updated draft in 1.50 limited the nonce size below what Freenet was using. Bouncy Castle 1.51 will be deployed in a future release. * Add X-Content-Type-Options nosniff header. This requests that browsers treat files as their given MIME types and not guess based on their content. As Microsoft explains, "[it] is a security feature that helps prevent attacks based on MIME-type confusion." [3] * Disable negtypes before 9. Negtype 9 has been mandatory since build 1448 went mandatory on July 23rd, 2013. Future releases will remove the code for these unused negtypes. * Remove :visited from CSS to prevent pages from appearing differently based on browser history, which is useful in attacks. [4] * Clean up CSS filter. * Add documentation. * Code cleanup. * Update seed nodes. Thanks justusranvier and Stanley! - Steve Dougherty [0] https://freenetproject.org/papers/roos-pets2014.pdf [1] http://www.oracle.com/technetwork/java/javase/eol-135779.html [2] https://github.com/freenet/fred/pull/269 [3] http://msdn.microsoft.com/en-us/library/ie/gg622941%28v=vs.85%29.aspx [4] http://lcamtuf.coredump.cx/css_calc/ Authors: Bert Massop <[email protected]> David ‘Bombe’ Roden <[email protected]> Florent Daigniere <[email protected]> Matthew Toseland <[email protected]> Steve Dougherty <[email protected]> unixninja92 <[email protected]> xor-freenet <[email protected]>
build01464: 2014-07-12
Freenet 0.7.5 build 1464 is now available. The website now shows screenshots more recent than 2009. (!) There is a new paper [0] out about Freenet. We are implementing some changes based on their findings. In this release: - Translation updates for French, German, Italian, Japanese, Dutch, Brazilian Portuguese, and Simplified Chinese thanks to volunteers on Transifex. [1] - Untranslated strings appear again in the translation page in Fred. This problem was due to Transifex returning untranslated strings as though they were translations. - Code cleanup. Thank you for using Freenet! - Steve Dougherty [0] https://freenetproject.org/papers/roos-pets2014.pdf [1] https://www.transifex.com/projects/p/freenet/ --- [0] freenet:USK@ZLwcSLwqpM1527Tw1YmnSiXgzITU0neHQ11Cyl0iLmk,f6FLo3TvsEijIcJq-X3BTjjtm0ErVZwAPO7AUd9V7lY,AQACAAE/fix-link-length/3/2014-07-03-freenet-paper-pets-roos2014.pdf [1] https://www.transifex.com/projects/p/freenet/ Developer changelog: 2014-07-12 There is a new paper [0] out which was years in the making. It includes many measurements taken from the live Freenet network with as many as 150 instrumented nodes at once. It even offers suggestions for improvement! It covers node churn, approximating node uptime with probe requests, and link length distribution and its impact on routing efficiency. In response to this paper's findings on link length distribution, we plan to implement preferential acceptance of connections based on link length in order to improve the distribution. There are too many long links compared to an ideal distribution. [1] It's not yet complete, but there are changes in this release toward that goal: - Plot FOAF link length distribution on the statistics page. This should be helpful in displaying the local impact of the upcoming changes. The green is the proportion in the bucket; gray is cumulative. - Include location in path folding and announcement noderefs. This must go mandatory before the preferential acceptance can be deployed; without this a peer's location is not known at the time it would need to be. It will be mandatory 2014-07-19. Reminder: Deprecated things such as freenet.l10n.BaseL10n.addL10nSubstitution() are subject to removal in a future version. The website now shows screenshots more recent than 2009. (!) Changes in 1464: - Add Location unit tests. - FCP and SFS: Always return size values as bytes instead of formatting for display. This affects: - GetConfig / freenet.ini: sizes (datastore; bandwidth limits) are in bytes and no longer sometimes have IEC units. (KiB, MiB...) Units are still parsed when loading. - ModifyConfig: considers size options different and applies them if they differ from the string containing the number of bytes. Units are still parsed. - Allow setting download bandwidth limit to the default of -1 for 4x upload. There is a pull request [2] intended to test this. - Improve Toadlet.showAsToadlet() documentation. - Normalize statistics page histograms to full height. - Close file and stream resource leaks. - Remove translations with no corresponding English key. - Trim whitespace from thread names. - Update French, German, Italian, Japanese, Dutch, Brazilian Portuguese, and Simplified Chinese translations thanks to volunteers on Transifex. [3] - Rename keys to avoid presenting translators on Transifex with part of what Fred considers the key in the value to translate. - Remove untranslated strings from translations. This fixes all strings appearing translated in Fred's translation pages. - Update default bookmark editions. - Update seed node references. - Steve Dougherty Authors: Bert Massop <[email protected]> David ‘Bombe’ Roden <[email protected]> Matthew Toseland <[email protected]> Steve Dougherty <[email protected]> xor-freenet <[email protected]> [0] https://freenetproject.org/papers/roos-pets2014.pdf [1] freenet:USK@ZLwcSLwqpM1527Tw1YmnSiXgzITU0neHQ11Cyl0iLmk,f6FLo3TvsEijIcJq-X3BTjjtm0ErVZwAPO7AUd9V7lY,AQACAAE/fix-link-length/3/ [2] https://github.com/freenet/fred-staging/pull/254 [3] https://www.transifex.com/projects/p/freenet/ --- [0] freenet:USK@ZLwcSLwqpM1527Tw1YmnSiXgzITU0neHQ11Cyl0iLmk,f6FLo3TvsEijIcJq-X3BTjjtm0ErVZwAPO7AUd9V7lY,AQACAAE/fix-link-length/3/2014-07-03-freenet-paper-pets-roos2014.pdf [1] freenet:USK@ZLwcSLwqpM1527Tw1YmnSiXgzITU0neHQ11Cyl0iLmk,f6FLo3TvsEijIcJq-X3BTjjtm0ErVZwAPO7AUd9V7lY,AQACAAE/fix-link-length/3/ [2] https://github.com/freenet/fred-staging/pull/254 [3] https://www.transifex.com/projects/p/freenet/
build01463: Freenet 0.7.5 build 1463 is now available.
The Windows installer runs on Windows XP again. In 1462 it failed on XP with the error message "Floating point division by zero." If you are still running XP, please upgrade! It is no longer supported by Microsoft and is not secure. [0] We will drop support for installing on XP in a future release. In this release: - Translation updates for Freenet, Freemail, FlogHelper, and KeyUtils thanks to volunteers on Transifex. To upgrade a plugin, reload it from the Plugins page and check "Remove the plugin from the cache." - Update default bookmarks. - Code cleanup. - Fix seed node problems. Thank you for using Freenet! - Steve Dougherty [0] http://windows.microsoft.com/en-us/windows/end-support-help Developer changelog: Changes in 1463: Fix Windows installer failing with "Floating point division by zero" on XP. This was caused by a bitmap formatting problem. [0] Windows Vista and Windows 8 testers would be appreciated for significant future changes such as the .NET 4.5 tray application. Fix seed node NPE that prevented seed node operation. This was a demonstration that ""+getPeer() does not behave like getPeer().toString() when getPeer() returns null. The change was part of a much larger set of other cleanup, and as one can imagine didn't look wrong. We hopefully have a volunteer who plans to work on easier update channels. This will allow a testing channel that can catch problems like this before they get released as stable provided that an active seed node operator switches to it. We also intend to write integration tests for seed node functionality. Update translations for Fred, Freemail, FlogHelper, and KeyUtils. Transifex has problems [1] with including untranslated strings. If Transifex does not resolve the issue we can write something to fix it locally, but for now I've committed localization which copies the English string when it does not have a translation. - Remove unused support classes. See 6c3136cb8669a859f11e2afa3f6d2043995336cf - Remove OOM hooks. - Update seed node references. - Update default bookmark editions. - Steve Dougherty [0] https://stackoverflow.com/questions/11473521/inno-setup-exe-fails-with-floating-point-division-by-zero-on-windows-xp [1] http://support.transifex.com/customer/en/portal/questions/7803194-developer-mode-without-untranslated-strings?new=7803194 Authors: Bert Massop <[email protected]> David ‘Bombe’ Roden <[email protected]> Matthias Treydte <[email protected]> Steve Dougherty <[email protected]>
build01462: Freenet 0.7.5 build 1462 is now available.
There is a new Windows installer; it is signed. (Without breaking internal integrity checks like the last release.) It can run from and install to paths with non-English characters. Thanks romnGit! There are currently translations for English, French, and Spanish. If you'd like to contribute a translation for your language [0] please send it to us. Options for contacting us include Sone, GitHub, IRC, FMS, and the mailing list [1]. There are performance problems with some types of file downloads - specifically bulk downloads for CHKs. We think this might be due to unofficial performance patches negatively impacting performance for everyone not using them. If you are running these patches we ask that you not run them so that bulk CHK performance can be restored network-wide. In August 2011 build 1397 enabled New Load Management, which was intended to avoid these types of weaknesses, but it introduced performance problems at scale and was disabled. In the long term we hope to fix these problems and redeploy NLM, but for right now we ask that people not use these patches. In this release: * Add an opennet seed node. Thanks Juiceman! * Add Korean Windows tray application translation. Thanks ilbe123! * Fix potential security problems with malicious UPnP devices. Thanks to waldheinz for the report. * Select options by default on the "Add a Friend" page. * Omit empty plugin groups on the plugin page. * Avoid leaking node location in link length probe. * Base stats page average distance on actual location instead of 0.0. There is a new Windows tray application in development. It is planned to replace the current tray and launcher for new installations. Its features: * Hide the tray icon while Freenet continues running. * Change startup preferences. * Change which browser it launches. * Hopefully will be false-positived less by antiviruses that are overly suspicious of scripting languages. * Be signed. If you want to give feedback on the tray application it is here. [2] Thank you for using Freenet! - Steve Dougherty ---- [0] https://github.com/Thynix/Freenet_wininstaller_innosetup/tree/master/translations [1] https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl [2] http://downloads.freenetproject.org/FreenetTray-testing-00c0832.exe ---- [0] CHK@8EdYztEh4HWmpLYj3ZQRauc6PEytM~lqYFdhEICs6TQ,qFrT-kz3-DK9eCz2ZeYcQk8xRmdKWbGroBewv0VYXfk,AAMC--8/Messages_en.isl [1] https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl [2] CHK@98KM59LH-ellIBKQTPtx0evoA-iyd~vncm7qVtvEvis,HJDOEOae4QMo0k-Y2fABBZzUErcRQYRe-Vxhl~drG4g,AAMC--8/FreenetTray-testing-00c0832.exe Developer changelog: Changes in 1462: The InnoSetup Windows installer that romnGit made is included in this release. It is signed and can run from Unicode paths. Because the launcher and tray do not pack files, they are not affected by the Wine bug that results in 0-byte output files. This allows using AHK-L, which supports Unicode paths. Changes in Fred: * New seed node run by Juiceman. * Select options by default on the "Add a Friend" page. * Omit empty plugin groups on the plugin page. * Plugin manager refactoring. * Replace some custom synchronization methods with standard library ones. * Restore Fniki default bookmark localization to avoid a log message for those who have not updated their default bookmarks. * Formatting and minor performance cleanup. * Rewrite Location class for simplicity and boundary case bugs. * Base stats page average distance on actual location instead of 0.0. * Exclude invalid locations from link length probe results. New peers that have yet to exchange references will have the sentinal location -1.0. When this happened the link length was between a fixed negative value and the node's location, which is noticable. Changes in UPnP: * Escape strings from the UPnP device. These were only displayed on the detailed device status page. The CHK bulk queue has performance problems. It's not clear whether they're gone at the moment but given that no new release went out that might have prompted them, shenanigans are afoot. It might be an attack on the network, or it might be these unofficial patches: --- a/src/freenet/node/PeerNode.java +++ b/src/freenet/node/PeerNode.java @@ -2924,14 +2924,25 @@ public boolean isRoutingBackedOff(boolean realTime) { long now = System.currentTimeMillis(); - double pingTime; + double pingTime; double mPeerPingTime; synchronized(this) { long routingBackedOffUntil = realTime ? routingBackedOffUntilRT : routingBackedOffUntilBulk; long transferBackedOffUntil = realTime ? transferBackedOffUntilRT : transferBackedOffUntilBulk; - if(now < routingBackedOffUntil || now < transferBackedOffUntil) return true; + if(now < routingBackedOffUntil || now < transferBackedOffUntil) { + //oo + long remRoutingBackedOff = Math.max(0, routingBackedOffUntil - now); + long remTransferBackedOff = Math.max(0, transferBackedOffUntil - now); + Logger.minor(this, "remaining routingBackedOff="+remRoutingBackedOff+" remaining transferBackedOff="+remTransferBackedOff+ + " last reason="+getLastBackoffReason(realTime)); + return true; + } pingTime = averagePingTime(); } - if(pingTime > maxPeerPingTime()) return true; + mPeerPingTime = maxPeerPingTime(); + if(pingTime > mPeerPingTime) { + Logger.minor(this, "pingTime="+pingTime+" maxPeerPingTime="+mPeerPingTime); + return true; + } return false; } @@ -2951,21 +2962,21 @@ long routingBackedOffUntilRT = -1; long routingBackedOffUntilBulk = -1; /** Initial nominal routing backoff length */ - static final int INITIAL_ROUTING_BACKOFF_LENGTH = (int) SECONDS.toMillis(1); + static final int INITIAL_ROUTING_BACKOFF_LENGTH = 200; //oo: 200 ms //1000; // 1 second /** How much to multiply by during fast routing backoff */ static final int BACKOFF_MULTIPLIER = 2; /** Maximum upper limit to routing backoff slow or fast */ - static final int MAX_ROUTING_BACKOFF_LENGTH = (int) HOURS.toMillis(3); + static final int MAX_ROUTING_BACKOFF_LENGTH = 3*60*1000; //oo: 3 minutes //3 * 60 * 60 * 1000; // 3 hours /** Current nominal routing backoff length */ // Transfer Backoff long transferBackedOffUntilRT = -1; long transferBackedOffUntilBulk = -1; - static final int INITIAL_TRANSFER_BACKOFF_LENGTH = (int) SECONDS.toMillis(30); // 60 seconds, but it starts at twice this. + static final int INITIAL_TRANSFER_BACKOFF_LENGTH = 200; //oo: 200 ms //30*1000; // 60 seconds, but it starts at twice this. static final int TRANSFER_BACKOFF_MULTIPLIER = 2; - static final int MAX_TRANSFER_BACKOFF_LENGTH = (int) HOURS.toMillis(3); + static final int MAX_TRANSFER_BACKOFF_LENGTH = 3*60*1000; //oo: 3 minutes //3 * 60 * 60 * 1000; // 3 hours int transferBackoffLengthRT = INITIAL_TRANSFER_BACKOFF_LENGTH; int transferBackoffLengthBulk = INITIAL_TRANSFER_BACKOFF_LENGTH; @@ -3143,7 +3154,7 @@ synchronized(this) { // Don't un-backoff if still backed off long until; - if(now > (until = realTime ? routingBackedOffUntilRT : routingBackedOffUntilBulk)) { + if (true) { //oo (now > (until = realTime ? routingBackedOffUntilRT : routingBackedOffUntilBulk)) { if(realTime) routingBackoffLengthRT = INITIAL_ROUTING_BACKOFF_LENGTH; else @@ -3225,7 +3236,7 @@ synchronized(this) { // Don't un-backoff if still backed off long until; - if(now > (until = realTime ? transferBackedOffUntilRT : transferBackedOffUntilBulk)) { + if (true) { //oo (now > (until = realTime ? transferBackedOffUntilRT : transferBackedOffUntilBulk)) { if(realTime) routingBackoffLengthRT = INITIAL_TRANSFER_BACKOFF_LENGTH; else This adds logging and greatly reduces backoff - both the initial value and the maximum. To be fair the 3 hour maximum backoff time does seem ridiculously high. It also immeditately exits backoff upon a successful transfer or not receiving an overload. We speculate this leads to a patched node overwhelming its peers with requests. --- a/src/freenet/node/RequestStarter.java +++ b/src/freenet/node/RequestStarter.java @@ -80,6 +80,8 @@ private final boolean isInsert; private final boolean isSSK; final boolean realTime; + private long lastDelay; + private final long a, b, c, minDelay; static final int MAX_WAITING_FOR_SLOTS = 50; @@ -96,6 +98,11 @@ this.isInsert = isInsert; this.isSSK = isSSK; this.realTime = realTime; + this.lastDelay = 4000; // start slowly + this.a = 10;//7; + this.b = 400;//2; + this.c = 1;//1; + this.minDelay = 0; //100 } void setScheduler(RequestScheduler sched) { @@ -141,8 +148,15 @@ if(logMINOR) Logger.minor(this, "Running "+req+" priority "+req.getPriority()); if(!req.localRequestOnly) { // Wait - long delay; - delay = throttle.getDelay(); + long delay; long toadsDelay; + toadsDelay = throttle.getDelay(); + if (this.isSSK || this.realTime) { // use toads delay + delay = toadsDelay; + } else { + delay = (a*this.minDelay + b*this.lastDelay + c*toadsDelay) / (a + b + c); + if(logMINOR) Logger.minor(this, "timestamp="+System.currentTimeMillis()+" toadsDelay="+toadsDelay+" newDelay="+delay+" from "+throttle); + } + this.lastDelay = delay; if(logMINOR) Logger.minor(this, "Delay="+delay+" from "+throttle); long sleepUntil = cycleTime + delay; if(!LOCAL_REQUESTS_COMPETE_FAIRLY) { This prioritizes the bulk CHK queue over the others by decreasing the delay on its requests. These were distributed with a script that fetches the source tarball and applies the patches. The public release of the script correlated with hundreds of fetches of the source tarball from the project webserver (we don't keep logs for long so we can't check more precisely than that) and an apparent plummeting in block longevity. [0] This may actually be that nodes are overwhelmed and backed off, and patched nodes are more aggressive. - Steve Dougherty [0] SSK@sCzfyxndzgtfzoPRUQExz4Y6wNmLDzOpW04umOoIBAk,~X5tIffdcfNWPIKZ2tHgSGPqIk9au31oJ301qB8kTSw,AQACAAE/fetchpull-1168/figure/fetchplots.png Authors: Amorphous-Serendipity <[email protected]> Bert Massop <[email protected]> David ‘Bombe’ Roden <[email protected]> misaakidis <[email protected]> nicolas hernandez <[email protected]> Steve Dougherty <[email protected]>