Skip to content

build01472: 2016-03-19

Compare
Choose a tag to compare
@Thynix Thynix released this 19 Mar 19:25
· 2642 commits to next since this release
build01472
Freenet 0.7.5 build 1472 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 and using the official
update key will now use 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!

This version was initially partially released as build 1471 - it was
released to the website but not auto-update. Build 1472 fixes a bug
which when using Java 6 prevented nodes from starting for the first
time. It did not break existing installations.

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!

[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
[enumerate user-facing changes]

Thank you for using Freenet!

- Steve Dougherty

Developer changelog:

2016-03-19

Changes in 1472:

This is the last build to support Java 6! The next build will require
Java 7 or higher. Nodes running Java 7 or higher and using the official
update key will now use 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!

This version was initially partially released as build 1471 - it was
released to the website but not auto-update. Build 1472 fixes a bug
which when using Java 6 prevented nodes from starting for the first
time. It did not break existing installations.

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.

[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 (54):
      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
      NodeUpdateManager: fix using SSK on Java 6
      update TRANSITION_BUILD for build delay
      Build 1472

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