You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2021/07/08 08:50:09 UTC

[james-project] 06/08: JAMES-3610 IMAP: unit for size related options

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 <bt...@linagora.com>
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: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org