From 96f707f74b93fa19b1eb8a99fe7f3794da6617fe Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Wed, 24 Mar 2021 05:04:27 +0800 Subject: [PATCH] Fix #6082 Reduce SSL buffer compaction (#6083) Fix #6082 Reduce SSL buffer compaction Only compact when buffer is underflown. Note that BufferUtil will also do a cheap "compact" when flipping empty buffers. Signed-off-by: Greg Wilkins --- .../main/java/org/eclipse/jetty/io/ssl/SslConnection.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java index f85c5f788ea9..8a047170acbb 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java @@ -654,7 +654,6 @@ public int fill(ByteBuffer buffer) throws IOException else { appIn = _decryptedInput; - BufferUtil.compact(_encryptedInput); } // Let's try reading some encrypted data... even if we have some already. @@ -712,12 +711,18 @@ public int fill(ByteBuffer buffer) throws IOException return filled = -1; case BUFFER_UNDERFLOW: + // Continue if we can compact? + if (BufferUtil.compact(_encryptedInput)) + continue; + + // Are we out of space? if (BufferUtil.space(_encryptedInput) == 0) { BufferUtil.clear(_encryptedInput); throw new SSLHandshakeException("Encrypted buffer max length exceeded"); } + // if we just filled some if (netFilled > 0) continue; // try filling some more