diff --git a/src/net/sf/briar/plugins/modem/Receiver.java b/src/net/sf/briar/plugins/modem/Receiver.java index e11c8e5d4..09f373b0e 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 dataFrames; // Locking: this diff --git a/src/net/sf/briar/plugins/modem/Sender.java b/src/net/sf/briar/plugins/modem/Sender.java index 5b5779bc6..9c8ef82af 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();