From aabfbb8df656cfaf7533c1f50a2049d49f258091 Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Mon, 24 Mar 2025 22:28:44 +0100 Subject: [PATCH] Added support for large http reports When sending large http reports with URL encoding, they are now encoded in chunks to avoid the encoding limitations in .NET. This fixes #2843 --- Duplicati/Library/Modules/Builtin/SendHttpMessage.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Duplicati/Library/Modules/Builtin/SendHttpMessage.cs b/Duplicati/Library/Modules/Builtin/SendHttpMessage.cs index 6bd57fdec..9218aacb0 100644 --- a/Duplicati/Library/Modules/Builtin/SendHttpMessage.cs +++ b/Duplicati/Library/Modules/Builtin/SendHttpMessage.cs @@ -319,11 +319,17 @@ namespace Duplicati.Library.Modules.Builtin } else { + const int chuncksize = 2048; contenttype = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); - var postData = $"{m_messageParameterName}={System.Uri.EscapeDataString(body)}"; + var sb = new StringBuilder(); + sb.Append(m_messageParameterName).Append("="); + for (int i = 0; i < body.Length; i += chuncksize) + sb.Append(System.Uri.EscapeDataString(body.Substring(i, Math.Min(chuncksize, body.Length - i)))); + if (!string.IsNullOrEmpty(m_extraParameters)) - postData += $"&{m_extraParameters}"; - data = Encoding.UTF8.GetBytes(postData); + sb.Append("&").Append(m_extraParameters); + + data = Encoding.UTF8.GetBytes(sb.ToString()); } var request = new HttpRequestMessage