Previously, we detected null results but did not catch exceptions
thrown by the value deserializers, caused by database corruption,
deserialization bugs, or input validation or serialization errors.
This prevented the database repair code from running, rendering
the remainder of the skip span inaccessible, and no entries displayed
in susidns.
With this change, corrupted entries that throw unchecked exceptions
are removed from the skip span.
to make validators that insist on unique id values happy.
Change DTD to the 9.3 DTD.
For new installs only; migration code for existing installs to follow.
Ancient msgfmt doesn't know about generics.
This change allows devs to set javac.compilerargs=-Xlint:unchecked
in override.properties without getting an
overwhelming number of false positives from the bundles.
If msgfmt ever adds a --java5 option, we can remove this,
but it's been almost 20 years.
For the same reason, while the sed script is fragile,
seems unlikely msgfmt will change the output without a new option.
If they do, we'll fix it then.
Hopefully fixes rare case where torrents get stuck.
Tested that it doesn't break anything, but was never able to reproduce the issue.
As reported in torrent at http://tracker2.postman.i2p/index.php?view=TorrentDetail&id=85798
Fix adapted and greatly simplified from source code included in that torrent.
Apparently from old trac ticket #691.
Credit: smtorrents
Also:
- Fix place where removePeerFromPieces() was being called twice,
once directly and once from disconnect(true).
- Fix javadoc for Peer.disconnect()
- Fix log typo
- Add comments
Description from OP of that torrent:
This update now finally fixes the decades old ticket number 691 which prevents torrents to complete from time to time. The bug manifests itself by keeping a couple of outstanding pieces (> 8, so we never get into the endgame) that are marked as requested from a peerID, with a corresponding peer that has long gone. Those pieces are never requested from any other peer. There are consequently more peerIDs than peers connected.
The only place in code, where peers and peer IDs are mixed up, is a reconnect logic that tries to reuse an existing connection while keeping outstanding requests from the old connection, when the other end tries to reconnect.
Keeping old requests is faulty by itself because someone reconnecting to us will definitely have dropped our previous requests, so we must do the same. The fix now always drops previous connections along with all outstanding requests.
that are single-point or two-point shapes,
since we can't see them anyway.
Will still be shown in the overlay.
Exception: If next country starts with a relative move (m),
leave it in.
Adapted from https://github.com/rweather/noise-java/pull/18
Section 5.1 of the The Noise Protocol Framework, revision 34 states in the description for DecryptWithAd that:
If an authentication failure occurs in DECRYPT() then n is not incremented and an error is signaled to the caller.
But noise-java currently increments the nonce unconditionally.
This change defers incrementing the nonce until encryption/decryption operations actually succeed.