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();
                 }

Reply via email to