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 <gdifo...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org