All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Kirillov <max@max630.net>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: "Max Kirillov" <max@max630.net>,
	"Jelmer Vernooij" <jelmer@jelmer.uk>,
	git@vger.kernel.org, "Jeff King" <peff@peff.net>
Subject: [PATCH] http-backend: allow empty CONTENT_LENGTH
Date: Thu,  6 Sep 2018 22:35:16 +0300	[thread overview]
Message-ID: <20180906193516.28909-1-max@max630.net> (raw)
In-Reply-To: <20180906061038.GA94045@aiede.svl.corp.google.com>

According to RFC3875, empty environment variable is equivalent to unset,
and for CONTENT_LENGTH it should mean zero body to read.

However, as discussed in [1], unset CONTENT_LENGTH is also used for
chunked encoding to indicate reading until EOF, so keep this behavior also
for empty CONTENT_LENGTH.

Add a test for the case.

[1] https://public-inbox.org/git/20160329201349.GB9527@sigill.intra.peff.net/

Signed-off-by: Max Kirillov <max@max630.net>
---
Hi.

This should fix it. I'm not sure should it treat it as 0 or "-1"
At least the tests mentioned by Jeff fails if I try to treat missing CONTENT_LENGTH as "-1"
So keep the existing behavior as much as possible
 http-backend.c                         |  2 +-
 t/t5562-http-backend-content-length.sh | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/http-backend.c b/http-backend.c
index e88d29f62b..a1230d7ead 100644
--- a/http-backend.c
+++ b/http-backend.c
@@ -353,7 +353,7 @@ static ssize_t get_content_length(void)
 	ssize_t val = -1;
 	const char *str = getenv("CONTENT_LENGTH");
 
-	if (str && !git_parse_ssize_t(str, &val))
+	if (str && *str && !git_parse_ssize_t(str, &val))
 		die("failed to parse CONTENT_LENGTH: %s", str);
 	return val;
 }
diff --git a/t/t5562-http-backend-content-length.sh b/t/t5562-http-backend-content-length.sh
index 057dcb85d6..ca34c2f054 100755
--- a/t/t5562-http-backend-content-length.sh
+++ b/t/t5562-http-backend-content-length.sh
@@ -152,4 +152,15 @@ test_expect_success 'CONTENT_LENGTH overflow ssite_t' '
 	grep "fatal:.*CONTENT_LENGTH" err
 '
 
+test_expect_success 'empty CONTENT_LENGTH' '
+	env \
+		QUERY_STRING=/repo.git/HEAD \
+		PATH_TRANSLATED="$PWD"/.git/HEAD \
+		GIT_HTTP_EXPORT_ALL=TRUE \
+		REQUEST_METHOD=GET \
+		CONTENT_LENGTH="" \
+		git http-backend <empty_body >act.out 2>act.err &&
+	verify_http_result "200 OK"
+'
+
 test_done
-- 
2.17.0.1185.g782057d875


  reply	other threads:[~2018-09-06 19:42 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <f12bc1d7-6acb-6ad9-2917-fbb09105f87a@debian.org>
     [not found] ` <20180905202613.GA20473@blodeuwedd>
2018-09-06  6:10   ` CONTENT_LENGTH can no longer be empty Jonathan Nieder
2018-09-06 19:35     ` Max Kirillov [this message]
2018-09-06 21:54       ` [PATCH] http-backend: allow empty CONTENT_LENGTH Junio C Hamano
2018-09-07  3:27         ` Max Kirillov
2018-09-07  3:38           ` Jeff King
2018-09-07  4:20             ` Max Kirillov
2018-09-07  4:59             ` Max Kirillov
2018-09-07  9:49               ` Junio C Hamano
2018-09-08  5:41                 ` Max Kirillov
2018-09-09  4:40                 ` Max Kirillov
2018-09-06 22:45       ` Jonathan Nieder
2018-09-07  3:36       ` [PATCH v2] " Max Kirillov
2018-09-08  0:19         ` Jonathan Nieder
2018-09-08  5:35           ` Max Kirillov
2018-09-08  5:42           ` [PATCH v3] " Max Kirillov
2018-09-10  5:17             ` Jonathan Nieder
2018-09-10 20:36               ` Max Kirillov
2018-09-11  4:06                 ` Jonathan Nieder
2018-09-11 20:33                   ` [PATCH v2] http-backend test: make empty CONTENT_LENGTH test more realistic Max Kirillov
2018-09-09  4:10         ` [PATCH v4] http-backend: allow empty CONTENT_LENGTH Max Kirillov
2018-09-10  5:25           ` Jonathan Nieder
2018-09-10 13:17             ` Jeff King
2018-09-10 16:37               ` Junio C Hamano
2018-09-10 18:46                 ` Jeff King
2018-09-10 20:53             ` [PATCH] http-backend: Treat empty CONTENT_LENGTH as zero Max Kirillov
2018-09-10 21:22               ` Jonathan Nieder
2018-09-11  1:55                 ` Jeff King
2018-09-11  2:20                   ` Jonathan Nieder
2018-09-11  2:30                     ` Jeff King
2018-09-11  1:58               ` Jeff King
2018-09-11  3:42               ` [PATCH] http-backend: treat " Jonathan Nieder
2018-09-11  4:03                 ` Jonathan Nieder
2018-09-11 18:15                   ` Junio C Hamano
2018-09-11 18:27                     ` Junio C Hamano
2018-09-12  5:56                     ` Jeff King
2018-09-12  6:26                       ` Jonathan Nieder
2018-09-12 16:10                       ` Junio C Hamano
2018-09-11  4:18                 ` Junio C Hamano
2018-09-11  4:29                   ` Jonathan Nieder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180906193516.28909-1-max@max630.net \
    --to=max@max630.net \
    --cc=git@vger.kernel.org \
    --cc=jelmer@jelmer.uk \
    --cc=jrnieder@gmail.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.