On Jan 2, 2008, at 7:38 AM, Florent Daigni?re wrote:
>>>>> synchronized void updateShouldDisconnectNow() {
>>>>> //FIXME: We should not update VERIFIED unless we HANDSHAKE WITH
>>>>> THE NODE
>>>>> - if (isConnected()) {
>>>>> + if (isConnected() || verifiedIncompatibleOlderVersion ||
>>>>> verifiedIncompatibleNewerVersion) {
>>>>> verifiedIncompatibleOlderVersion = forwardInvalidVersion();
>>>>> verifiedIncompatibleNewerVersion = reverseInvalidVersion();
>>>>> }
>>>>
>>>> I suggest you call isRoutable() instead
>>>>
>>>> NextGen$
>>>
>>> Hmm, on a latter thought, I don't understand why it helps... nor
>>> why we
>>> are calling it from PacketSender
>>>
>>> What about getting rid of both the "if" branch and the call in
>>> PacketSender ?
>>
>> Why not just use if(isConnected()) { ... } ? As far as I can see
>> that is
>> correct: if we're not connected, we don't care about verified*.
>
> You're suggesting to revert robert's patch, wich is fine by me... as I
> said, I don't understand why it helps
>
> NextGen$
This function is called at various times (connected or not). If the
only condition baring updating the 'verified' flags is:
"isConnected()"... then the added condition could SET the verified-
incompatible flags but could not UNSET them unless connected. The
purpose for adding the extra OR's to the conditional is to allow this
function to clear the verified-incompatible flags even if not
connected (e.g. new ark fetched, node has a new version, clear the
verified-flag).
I have had what appears to be this 'deadlock' twice, the first with a
laptop (whose IP and node-version changed at the same time), and it is
this:
(1) last-seen node version is incompatible (but before r16834, would
set 'verified')
(2) attempt handshakes, but don't fetch ark
(3) IP has changed, so can't handshake
(4) wont get new IP (ark), because older version
A better solution to this might simply be to fetch arks even on
version incompatibility, but (for caution) behavior #2 seemed
intentional (dont fetch ark on incompatible version), whereas #1 did
not, and brought it closer to the comments (i.e. don't set 'verified'
unless handshake).
--
Robert Hailey
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://emu.freenetproject.org/pipermail/devl/attachments/20080102/0806e301/attachment.html>