You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2020/06/08 13:16:13 UTC

[james-project] 19/30: JAMES-3179 Fix a ImapRequestFrameDecoder leak

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

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

commit ddf638b56ef30ab2bd859556fd8d1c0a07b3dc6e
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue May 12 16:38:26 2020 +0200

    JAMES-3179 Fix a ImapRequestFrameDecoder leak
---
 .../james/imap/decode/ImapRequestStreamLineReader.java       | 12 ++++++++++--
 .../james/imapserver/netty/ImapRequestFrameDecoder.java      |  9 +++++++++
 .../imapserver/netty/NettyStreamImapRequestLineReader.java   |  6 ++++--
 3 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java
index bbc7445..11c277b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.imap.decode;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -31,9 +32,8 @@ import com.google.common.io.ByteStreams;
 /**
  * {@link ImapRequestLineReader} which use normal IO Streaming
  */
-public class ImapRequestStreamLineReader extends ImapRequestLineReader {
+public class ImapRequestStreamLineReader extends ImapRequestLineReader implements Closeable {
     private final InputStream input;
-
     private final OutputStream output;
 
     public ImapRequestStreamLineReader(InputStream input, OutputStream output) {
@@ -102,4 +102,12 @@ public class ImapRequestStreamLineReader extends ImapRequestLineReader {
         }
     }
 
+    @Override
+    public void close() throws IOException {
+        try {
+            input.close();
+        } finally {
+            output.close();
+        }
+    }
 }
diff --git a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
index c8e35de..bebc259 100644
--- a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
+++ b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.imapserver.netty;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -211,6 +212,14 @@ public class ImapRequestFrameDecoder extends FrameDecoder implements NettyConsta
                 
                 buffer.resetReaderIndex();
                 return null;
+            } finally {
+                if (reader instanceof Closeable) {
+                    try {
+                        ((Closeable) reader).close();
+                    } catch (IOException ignored) {
+                        // Nothing to do
+                    }
+                }
             }
         } else {
             // The session was null so may be the case because the channel was already closed but there were still bytes in the buffer.
diff --git a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyStreamImapRequestLineReader.java b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyStreamImapRequestLineReader.java
index d6b2f61..562f271 100644
--- a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyStreamImapRequestLineReader.java
+++ b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyStreamImapRequestLineReader.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.imapserver.netty;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -28,7 +29,7 @@ import org.jboss.netty.channel.Channel;
 
 import com.google.common.io.ByteStreams;
 
-public class NettyStreamImapRequestLineReader extends AbstractNettyImapRequestLineReader {
+public class NettyStreamImapRequestLineReader extends AbstractNettyImapRequestLineReader implements Closeable {
 
     private final InputStream in;
 
@@ -96,7 +97,8 @@ public class NettyStreamImapRequestLineReader extends AbstractNettyImapRequestLi
         
     }
 
-    public void dispose() throws IOException {
+    @Override
+    public void close() throws IOException {
         in.close();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org