From 526aadb559d433be9c6e53d4ed899f03417af642 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Thu, 2 Aug 2018 21:08:20 +0000
Subject: [PATCH] NTCP2: Fix padding calculation for small frames

---
 router/java/src/net/i2p/router/RouterVersion.java            | 2 +-
 .../src/net/i2p/router/transport/ntcp/NTCPConnection.java    | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index f5c9264549..43dca92409 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
     /** deprecated */
     public final static String ID = "Monotone";
     public final static String VERSION = CoreVersion.VERSION;
-    public final static long BUILD = 20;
+    public final static long BUILD = 21;
 
     /** for example "-test" */
     public final static String EXTRA = "";
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
index 259f30af18..b1d37ab1db 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
@@ -915,6 +915,11 @@ public class NTCPConnection implements Closeable {
      *  @since 0.9.36
      */
     private int getPaddingSize(int dataSize, int availForPad) {
+        // since we're calculating with percentages, get at least a
+        // 0-16 range with the default 0% min 6% max,
+        // even for small dataSize.
+        if (dataSize < 256)
+            dataSize = 256;
         // what we want to send, calculated in proportion to data size
         int minSend = (int) (dataSize * _paddingConfig.getSendMin());
         int maxSend = (int) (dataSize * _paddingConfig.getSendMax());
-- 
GitLab