This is an automated email from the ASF dual-hosted git repository. elecharny pushed a commit to branch 2.0.X in repository https://gitbox.apache.org/repos/asf/mina.git
The following commit(s) were added to refs/heads/2.0.X by this push: new 7fd6905 Backorted JonV patch new 6ef9ea2 Merge branch '2.0.X' of http://gitbox.apache.org/repos/asf/mina into 2.0.X 7fd6905 is described below commit 7fd6905a9235d7ce8cd587ae0bd845b36b29c5bf Author: emmanuel lecharny <elecha...@apache.org> AuthorDate: Tue Feb 8 02:29:13 2022 +0100 Backorted JonV patch --- .../org/apache/mina/core/polling/AbstractPollingIoProcessor.java | 6 ++++-- .../src/main/java/org/apache/mina/filter/ssl/SslHandler.java | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java index 0d2ad17..6d7f682 100644 --- a/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java +++ b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java @@ -910,8 +910,10 @@ public abstract class AbstractPollingIoProcessor<S extends AbstractIoSession> im } // Reset the Schedule for flush flag for this session, - // as we are flushing it now - session.unscheduledForFlush(); + // as we are flushing it now. This allows another thread + // to enqueue data to be written without corrupting the + // selector interest state. + session.unscheduledForFlush(); SessionState state = getState(session); diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java index 1eaac9e..82ba849 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java +++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java @@ -41,6 +41,7 @@ import org.apache.mina.core.session.IoEventType; import org.apache.mina.core.session.IoSession; import org.apache.mina.core.write.DefaultWriteRequest; import org.apache.mina.core.write.WriteRequest; +import org.apache.mina.core.write.WriteRequestQueue; import org.apache.mina.filter.ssl.SslFilter.EncryptedWriteRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -525,9 +526,11 @@ class SslHandler { } // Empty the session queue - while (!session.getWriteRequestQueue().isEmpty(session)) { - WriteRequest writeRequest = session.getWriteRequestQueue().poll( session ); - WriteFuture writeFuture = writeRequest.getFuture(); + WriteRequestQueue queue = session.getWriteRequestQueue(); + WriteRequest request = null; + + while ((request = queue.poll(session)) != null) { + WriteFuture writeFuture = request.getFuture(); writeFuture.setException(exception); writeFuture.notifyAll(); }