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

_______________________________________________
Devl mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to