Author: toad
Date: 2007-10-26 23:17:05 +0000 (Fri, 26 Oct 2007)
New Revision: 15607

Modified:
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
Log:
don't send packets with the packet number and the key tracker potentially 
incompatible. once allocated a packet number, use the same tracker used to 
allocate it.
if the tracker is changed, we will need to allocate a new packet number on the 
new tracker.

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java        2007-10-26 
22:42:41 UTC (rev 15606)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java        2007-10-26 
23:17:05 UTC (rev 15607)
@@ -1707,6 +1707,8 @@
                        }
                        realSeqNumber = seqNumber + (decrypted[ptr++] & 0xff);
                }
+               if(logMINOR)
+                       Logger.minor(this, "Real sequence number: 
"+realSeqNumber);

                //Logger.minor(this, "Reference seq number: 
"+HexUtil.bytesToHex(decrypted, ptr, 4));

@@ -1846,14 +1848,13 @@
                        if(mi.formatted) {
                                try {
                                        byte[] buf = mi.getData(pn);
-                                       kt = pn.getCurrentKeyTracker();
                                        if(kt == null) {
                                                if(logMINOR) Logger.minor(this, 
"kt = null");
                                                
pn.requeueMessageItems(messages, i, messages.length-i, false, "kt = null");
                                                return;
                                        }
                                        int packetNumber = 
kt.allocateOutgoingPacketNumberNeverBlock();
-                                       this.processOutgoingPreformatted(buf, 
0, buf.length, pn.getCurrentKeyTracker(), packetNumber, mi.cb, 
mi.alreadyReportedBytes);
+                                       this.processOutgoingPreformatted(buf, 
0, buf.length, kt, packetNumber, mi.cb, mi.alreadyReportedBytes);
                                        mi.onSent(buf.length + 
fullHeadersLengthOneMessage);
                                } catch (NotConnectedException e) {
                                        Logger.normal(this, "Caught "+e+" while 
sending messages ("+mi_name+") to "+pn.getPeer()+requeueLogString);


Reply via email to