This is an automated email from the ASF dual-hosted git repository.

johnnyv pushed a commit to branch 2.0
in repository https://gitbox.apache.org/repos/asf/mina.git


The following commit(s) were added to refs/heads/2.0 by this push:
     new 2d7d595  While investigating DIRMINA-1086, I found a exception 
handling flaw which allows fired captured exceptions to occur after the last 
clearWriteRequestQUeue call.  This could cause a memmory leak when caught 
excpetions create WriteRequests.
2d7d595 is described below

commit 2d7d595e4c0a7bb6eeb5a721954ba13fb9d7f811
Author: jvalliere <jon.valli...@emoten.com>
AuthorDate: Wed Feb 6 15:37:48 2019 -0500

    While investigating DIRMINA-1086, I found a exception handling flaw
    which allows fired captured exceptions to occur after the last
    clearWriteRequestQUeue call.  This could cause a memmory leak when
    caught excpetions create WriteRequests.
---
 .../java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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 78807ee..5fe4ca1 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
@@ -1157,7 +1157,6 @@ public abstract class AbstractPollingIoProcessor<S 
extends AbstractIoSession> im
                 filterChain.fireExceptionCaught(e);
             } finally {
                 try {
-                    clearWriteRequestQueue(session);
                     ((AbstractIoService) 
session.getService()).getListeners().fireSessionDestroyed(session);
                 } catch (Exception e) {
                     // The session was either destroyed or not at this point.
@@ -1166,6 +1165,8 @@ public abstract class AbstractPollingIoProcessor<S 
extends AbstractIoSession> im
                     // the return value by bubbling up.
                     IoFilterChain filterChain = session.getFilterChain();
                     filterChain.fireExceptionCaught(e);
+                } finally {
+                    clearWriteRequestQueue(session);
                 }
             }
 

Reply via email to