Author: toad
Date: 2005-11-25 15:48:52 +0000 (Fri, 25 Nov 2005)
New Revision: 7597

Modified:
   trunk/freenet/src/freenet/node/KeyTracker.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java
Log:
216:
Fix packet throttle, hopefully.

Modified: trunk/freenet/src/freenet/node/KeyTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/KeyTracker.java      2005-11-25 15:13:48 UTC 
(rev 7596)
+++ trunk/freenet/src/freenet/node/KeyTracker.java      2005-11-25 15:48:52 UTC 
(rev 7597)
@@ -6,6 +6,7 @@

 import freenet.crypt.BlockCipher;
 import freenet.io.comm.NotConnectedException;
+import freenet.io.xfer.PacketThrottle;
 import freenet.support.DoublyLinkedList;
 import freenet.support.DoublyLinkedListImpl;
 import freenet.support.IndexableUpdatableSortedLinkedListItem;
@@ -457,7 +458,13 @@
                        }
             Logger.minor(this, "Removed ack request");
             callbacks[i] = sentPacketsContents.getCallbacks(realSeqNo);
-            sentPacketsContents.remove(realSeqNo);
+            byte[] buf = sentPacketsContents.get(realSeqNo);
+            if(sentPacketsContents.remove(realSeqNo)) {
+               if(buf.length > Node.PACKET_SIZE) {
+                       PacketThrottle throttle = getThrottle();
+                       throttle.notifyOfPacketAcknowledged();
+               }
+            }
                }
        int cbCount = 0;
        for(int i=0;i<callbacks.length;i++) {
@@ -473,7 +480,11 @@
                Logger.minor(this, "Executed "+cbCount+" callbacks");
     }

-    /**
+    private PacketThrottle getThrottle() {
+       return PacketThrottle.getThrottle(pn.getPeer(), Node.PACKET_SIZE);
+       }
+
+       /**
      * Called when we have received a packet acknowledgement.
      * @param realSeqNo
      */
@@ -487,7 +498,13 @@
                }
         Logger.minor(this, "Removed ack request");
         callbacks = sentPacketsContents.getCallbacks(realSeqNo);
-        sentPacketsContents.remove(realSeqNo);
+        byte[] buf = sentPacketsContents.get(realSeqNo);
+        if(sentPacketsContents.remove(realSeqNo)) {
+               if(buf.length > Node.PACKET_SIZE) {
+                       PacketThrottle throttle = getThrottle();
+                       throttle.notifyOfPacketAcknowledged();
+               }
+        }
         if(callbacks != null) {
             for(int i=0;i<callbacks.length;i++)
                 callbacks[i].acknowledged();
@@ -511,6 +528,8 @@
     public void resendPacket(int seqNumber) {
         byte[] resendData = sentPacketsContents.get(seqNumber);
         if(resendData != null) {
+               if(resendData.length > Node.PACKET_SIZE)
+                       getThrottle().notifyOfPacketLost();
             synchronized(packetsToResend) {
                 packetsToResend.add(new Integer(seqNumber));
             }

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-11-25 15:13:48 UTC (rev 
7596)
+++ trunk/freenet/src/freenet/node/Version.java 2005-11-25 15:48:52 UTC (rev 
7597)
@@ -20,10 +20,10 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       public static final int buildNumber = 215;
+       public static final int buildNumber = 216;

        /** Oldest build of Fred we will talk to */
-       public static final int lastGoodBuild = 215;
+       public static final int lastGoodBuild = 216;

        /** The highest reported build of fred */
        public static int highestSeenBuild = buildNumber;

Modified: trunk/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java
===================================================================
--- trunk/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java  
2005-11-25 15:13:48 UTC (rev 7596)
+++ trunk/freenet/src/freenet/support/LimitedRangeIntByteArrayMap.java  
2005-11-25 15:48:52 UTC (rev 7597)
@@ -127,14 +127,17 @@
         throw new WouldBlockException();
     }

-    public synchronized void remove(int index) {
+    /**
+     * @return true if we removed something.
+     */
+    public synchronized boolean remove(int index) {
         Logger.minor(this, "Removing "+index+" - min="+minValue+" 
max="+maxValue);
         if(contents.remove(new Integer(index)) != null) {
-            if(index > minValue && index < maxValue) return;
+            if(index > minValue && index < maxValue) return true;
             if(contents.size() == 0) {
                 minValue = maxValue = -1;
                 notifyAll();
-                return;
+                return true;
             }
             if(index == maxValue) {
                 for(int i=maxValue;i>=minValue;i--) {
@@ -142,7 +145,7 @@
                     if(contents.containsKey(ii)) {
                         maxValue = i;
                         notifyAll();
-                        return;
+                        return true;
                     }
                 }
                 // Still here - WTF?
@@ -155,7 +158,7 @@
                     if(contents.containsKey(ii)) {
                         minValue = i;
                         notifyAll();
-                        return;
+                        return true;
                     }
                 }
                 // Still here - WTF?
@@ -165,6 +168,7 @@
             notifyAll();
             throw new IllegalStateException("impossible");
         }
+        return false;
     }

     /**


Reply via email to