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