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

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit ba34e7242c95fa215b871a2af133e75ee14952ad
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Wed Feb 21 14:21:22 2024 +0100

    JAMES-4007 ImapChannelUpstreamHandler should always cleanup INBOUND message
    
    It needs to account for unexecuted messages, rejected messages,
    cancelled subscriptions.
---
 .../apache/james/imapserver/netty/ImapChannelUpstreamHandler.java | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
index c0ef774c19..4e9e5985fd 100644
--- 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
+++ 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
@@ -405,9 +405,6 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
                     }
                     if (signal.isOnComplete() || signal.isOnError()) {
                         afterIDLEUponProcessing(ctx);
-                        if (message instanceof Closeable) {
-                            ((Closeable) message).close();
-                        }
                     }
                     if (signal.hasError()) {
                         ctx.fireExceptionCaught(signal.getThrowable());
@@ -419,6 +416,11 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
                 .contextWrite(ReactorUtils.context("imap", mdc(session))), 
message)
             // Manage throttling errors
             .doOnError(ctx::fireExceptionCaught)
+            .doFinally(Throwing.consumer(any -> {
+                if (message instanceof Closeable) {
+                    ((Closeable) message).close();
+                }
+            }))
             .subscribe();
         disposableAttribute.set(disposable);
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to