PROTON-1972: fix test failures when using TLSv1.3 / Java11
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java
index f2454b3..ca65f18 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapper.java
@@ -106,6 +106,7 @@
*/
private void unwrapInput() throws SSLException
{
+ int prevInRemaining = -1;
while (true) {
SSLEngineResult result = _sslEngine.unwrap(_inputBuffer, _decodedInputBuffer);
logEngineClientModeAndResult(result, "input");
@@ -171,6 +172,14 @@
switch (hstatus)
{
case NEED_WRAP:
+ int inputRemaining = _inputBuffer.remaining();
+ if (inputRemaining > 0 && status == Status.OK && (inputRemaining < prevInRemaining || prevInRemaining < 0)) {
+ // Track remaining input so we break if no progress is made.
+ prevInRemaining = inputRemaining;
+ // Process a wrap, try to progress on the remaining input.
+ pending();
+ continue;
+ }
// wait for write to kick in
break;
case NEED_TASK: