This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit abd809c5dfa957c3e2441b37748a3537c3e985ec Author: Benoit Tellier <[email protected]> AuthorDate: Wed Jul 7 16:38:18 2021 +0700 JAMES-3610 IMAP: unit for size related options - inMemorySizeLimit - literalSizeLimit --- .../org/apache/james/imapserver/netty/IMAPServer.java | 15 ++++++++++++--- .../protocols-imap4/src/test/resources/imapServer.xml | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java index fbe69f3..6c53ed6 100644 --- a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java +++ b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java @@ -20,6 +20,7 @@ package org.apache.james.imapserver.netty; import static org.jboss.netty.channel.Channels.pipeline; +import java.util.Optional; import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLEngine; @@ -38,6 +39,7 @@ import org.apache.james.protocols.netty.ChannelGroupHandler; import org.apache.james.protocols.netty.ChannelHandlerFactory; import org.apache.james.protocols.netty.ConnectionLimitUpstreamHandler; import org.apache.james.protocols.netty.ConnectionPerIpLimitUpstreamHandler; +import org.apache.james.util.Size; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.ChannelUpstreamHandler; @@ -78,7 +80,7 @@ public class IMAPServer extends AbstractConfigurableAsyncServer implements ImapC private int literalSizeLimit; public static final int DEFAULT_MAX_LINE_LENGTH = 65536; // Use a big default - public static final int DEFAULT_IN_MEMORY_SIZE_LIMIT = 10485760; // Use 10MB as default + public static final Size DEFAULT_IN_MEMORY_SIZE_LIMIT = Size.of(10L, Size.Unit.M); // Use 10MB as default public static final int DEFAULT_TIMEOUT = 30 * 60; // default timeout is 30 minutes public static final int DEFAULT_LITERAL_SIZE_LIMIT = 0; @@ -97,8 +99,15 @@ public class IMAPServer extends AbstractConfigurableAsyncServer implements ImapC hello = softwaretype + getHelloName() + " is ready."; compress = configuration.getBoolean("compress", false); maxLineLength = configuration.getInt("maxLineLength", DEFAULT_MAX_LINE_LENGTH); - inMemorySizeLimit = configuration.getInt("inMemorySizeLimit", DEFAULT_IN_MEMORY_SIZE_LIMIT); - literalSizeLimit = configuration.getInt("literalSizeLimit", DEFAULT_LITERAL_SIZE_LIMIT); + inMemorySizeLimit = Math.toIntExact(Optional.ofNullable(configuration.getString("inMemorySizeLimit", null)) + .map(Size::parse) + .orElse(DEFAULT_IN_MEMORY_SIZE_LIMIT) + .asBytes()); + literalSizeLimit = Optional.ofNullable(configuration.getString("literalSizeLimit", null)) + .map(Size::parse) + .map(Size::asBytes) + .map(Math::toIntExact) + .orElse(DEFAULT_LITERAL_SIZE_LIMIT); plainAuthDisallowed = configuration.getBoolean("plainAuthDisallowed", false); timeout = configuration.getInt("timeout", DEFAULT_TIMEOUT); diff --git a/server/protocols/protocols-imap4/src/test/resources/imapServer.xml b/server/protocols/protocols-imap4/src/test/resources/imapServer.xml index d968015..0b8b39a 100644 --- a/server/protocols/protocols-imap4/src/test/resources/imapServer.xml +++ b/server/protocols/protocols-imap4/src/test/resources/imapServer.xml @@ -8,6 +8,6 @@ <idleTimeInterval>120</idleTimeInterval> <idleTimeIntervalUnit>SECONDS</idleTimeIntervalUnit> <enableIdle>true</enableIdle> - <inMemorySizeLimit>65536</inMemorySizeLimit> <!-- 64 KB --> - <literalSizeLimit>131072</literalSizeLimit> <!-- 128 KB --> + <inMemorySizeLimit>64K</inMemorySizeLimit> + <literalSizeLimit>128K</literalSizeLimit> </imapserver> \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
