diff --git a/src/net/sf/briar/plugins/modem/Receiver.java b/src/net/sf/briar/plugins/modem/Receiver.java index e11c8e5d436eb5a28a1a21654ab513c659b85bde..09f373b0e2af62644a508d9d5e268d79ac6e8155 100644 --- a/src/net/sf/briar/plugins/modem/Receiver.java +++ b/src/net/sf/briar/plugins/modem/Receiver.java @@ -11,11 +11,11 @@ import java.util.logging.Logger; class Receiver implements ReadHandler { + static final int MAX_WINDOW_SIZE = 8 * Data.MAX_PAYLOAD_LENGTH; + private static final Logger LOG = Logger.getLogger(Receiver.class.getName()); - private static final int MAX_WINDOW_SIZE = 8 * Data.MAX_PAYLOAD_LENGTH; - private final Sender sender; private final SortedSet<Data> dataFrames; // Locking: this diff --git a/src/net/sf/briar/plugins/modem/Sender.java b/src/net/sf/briar/plugins/modem/Sender.java index 5b5779bc6010ac05080294128f432c2e2e7de33d..9c8ef82af4d442ce5be46e03fccc5ce7ef200bf1 100644 --- a/src/net/sf/briar/plugins/modem/Sender.java +++ b/src/net/sf/briar/plugins/modem/Sender.java @@ -106,7 +106,8 @@ class Sender { // Update the window lastWindowUpdateOrProbe = now; int oldWindowSize = windowSize; - windowSize = a.getWindowSize(); + // Don't accept an unreasonably large window size + windowSize = Math.min(a.getWindowSize(), Receiver.MAX_WINDOW_SIZE); if(LOG.isLoggable(FINE)) LOG.fine("Window at sender " + windowSize); // If space has become available, notify any waiting writers if(windowSize > oldWindowSize || foundIndex != -1) notifyAll();