Skip to content

Releases: hyphanet/fred

build01471: 2016-03-19

19 Mar 17:51
build01471
Compare
Choose a tag to compare
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

16 Aug 21:15
build01470
Compare
Choose a tag to compare
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

19 Jul 23:10
build01469
Compare
Choose a tag to compare
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

11 Jul 17:22
build01468
Compare
Choose a tag to compare
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

27 Jun 19:01
build01467
c356185
Compare
Choose a tag to compare
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

09 Nov 22:41
build01466
Compare
Choose a tag to compare
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

27 Sep 21:55
build01465
Compare
Choose a tag to compare
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

28 Sep 00:54
build01464
Compare
Choose a tag to compare
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.

22 Nov 15:52
build01463
Compare
Choose a tag to compare
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.

22 Nov 20:34
build01462
Compare
Choose a tag to compare
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]>