Skip to content

Commit 75be9f3

Browse files
committed
Revert "[fix] adjust write fix to revert regressions (hangs)"
This reverts commit 744b489.
1 parent 1f95043 commit 75be9f3

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

src/main/java/org/jruby/ext/openssl/SSLSocket.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -682,32 +682,28 @@ public int write(ByteBuffer src, boolean blocking) throws SSLException, IOExcept
682682
final boolean blockingMode = channel.isBlocking();
683683
if ( ! blocking ) channel.configureBlocking(false);
684684

685-
boolean loop = false; int written = 0;
685+
int written = 0;
686686
try {
687-
if (netWriteData.hasRemaining()) flushData(blocking);
688-
do {
687+
while (true) {
688+
if (netWriteData.hasRemaining()) flushData(blocking);
689+
else if (!src.hasRemaining()) break;
690+
689691
netWriteData.clear();
690692
final SSLEngineResult result = engine.wrap(src, netWriteData);
691693
netWriteData.flip();
692694

693695
switch (result.getStatus()) {
694696
case OK:
695-
loop = flushData(blocking) && src.hasRemaining();
696697
written += result.bytesConsumed();
697698
break;
698699
case BUFFER_OVERFLOW:
699700
netWriteData = Utils.ensureCapacity(netWriteData, engine.getSession().getPacketBufferSize());
700701
netWriteData.position(netWriteData.limit());
701-
loop = true; // src.hasRemaining();
702-
if (netWriteData.hasRemaining()) flushData(blocking);
703702
break;
704703
case CLOSED:
705704
throw getRuntime().newIOError("closed SSL engine"); // EOF?
706-
case BUFFER_UNDERFLOW:
707-
debug("SSLSocket.write unexpected BUFFER_UNDERFLOW");
708-
return written;
709705
}
710-
} while (loop);
706+
}
711707
}
712708
finally {
713709
if ( ! blocking ) channel.configureBlocking(blockingMode);

0 commit comments

Comments
 (0)