BUG/MINOR: http-htx: Just warn if payload of an errorfile doesn't match the C-L

During startup, when an errorfile is parsed, if its payload does not match the
announced content-length, an error is triggered. This change was introduced in
the 2.3, which is ok. But for a stable release it may be seen as a
regression. Thus, now a warning is emitted, instead of an error. And the
content-length header is updated with the real payload length.

This patch depends on 58f55acf4e ("MINOR: http-htx: Add understandable errors
for the errorfiles parsing"). Both must be backported as far as 2.0. This bug
only exists in the 2.2, 2.1 and 2.0. Thus, there is no upstream commit ID for
this patch.

(cherry picked from commit 7bf3d81d3cf4b9f4587cee061c2ef4a533125002)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 729b2ee4553283bc3a38f5516be2158df4f10501)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/http_htx.c b/src/http_htx.c
index 396468d..4025a4c 100644
--- a/src/http_htx.c
+++ b/src/http_htx.c
@@ -694,9 +694,17 @@
 		goto error;
 	}
 	if ((flags & HTX_SL_F_CLEN) && h1m.body_len != (raw.len - ret)) {
-		memprintf(errmsg, "payload size does not match the announced content-length (%lu != %lu)",
+		struct ist clen = ist(ultoa(raw.len - ret));
+		int i;
+
+		memprintf(errmsg, "payload size does not match the announced content-length (%lu != %lu)."
+			  " C-L header is updated accordingly but it should be fixed to avoid any errors on future versions.",
 			  (raw.len - ret), h1m.body_len);
-		goto error;
+
+		for (i = 0; hdrs[i].n.len; i++) {
+			if (isteqi(hdrs[i].n, ist("content-length")))
+				hdrs[i].v = clen;
+		}
 	}
 
 	htx = htx_from_buf(buf);