Author: toad
Date: 2007-09-14 23:22:00 +0000 (Fri, 14 Sep 2007)
New Revision: 15184
Modified:
trunk/freenet/src/freenet/node/FNPPacketMangler.java
trunk/freenet/src/freenet/node/KeyTracker.java
Log:
Always call receivedPacket() even if there is no payload.
Necessary to keep open incompatible connections in order to do Update Over
Mandatory.
Which worked until nextgens' fix to Packet Sender; previously we would assume
that incompatible connections are always open, and therefore it would work.
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-09-14
20:07:57 UTC (rev 15183)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2007-09-14
23:22:00 UTC (rev 15184)
@@ -863,6 +863,8 @@
tracker.destForgotPacket(realSeqNo);
}
+ tracker.pn.receivedPacket(false); // Must keep the connection
open, even if it's an ack packet only and on an incompatible connection - we
may want to do a UOM transfer e.g.
+
if(seqNumber == -1) {
if(logMINOR) Logger.minor(this, "Returning because seqno =
"+seqNumber);
return;
@@ -870,8 +872,7 @@
// No sequence number == no messages
if((seqNumber != -1) && tracker.alreadyReceived(seqNumber)) {
- tracker.queueAck(seqNumber);
- tracker.pn.receivedPacket(false);
+ tracker.queueAck(seqNumber); // Must keep the connection open!
Logger.error(this, "Received packet twice ("+seqNumber+") from
"+tracker.pn.getPeer()+": "+seqNumber+" ("+TimeUtil.formatTime((long)
tracker.pn.pingAverage.currentValue(), 2, true)+" ping avg)");
return;
}
Modified: trunk/freenet/src/freenet/node/KeyTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/KeyTracker.java 2007-09-14 20:07:57 UTC
(rev 15183)
+++ trunk/freenet/src/freenet/node/KeyTracker.java 2007-09-14 23:22:00 UTC
(rev 15184)
@@ -441,8 +441,7 @@
*/
public synchronized void receivedPacket(int seqNumber) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
- if(logMINOR) Logger.minor(this, "Received packet "+seqNumber);
- pn.receivedPacket(false);
+ if(logMINOR) Logger.minor(this, "Received packet "+seqNumber+" from
"+pn.shortToString());
if(seqNumber == -1) return;
// FIXME delete this log statement
if(logMINOR) Logger.minor(this, "Still received packet: "+seqNumber);