Re: [PATCH v5 1/2] http-backend: respect CONTENT_LENGTH as specified by rfc3875
- From
Max Kirillov <max@max630.net>
- Date
- Nov 26, 2017, 08:13 UTC
- Message-ID
- <20171126081329.GD26158@jessie.local>
- In-Reply-To
- <xmqqo9npitx7.fsf@gitster.mtv.corp.google.com>
On Sun, Nov 26, 2017 at 12:46:12PM +0900, Junio C Hamano wrote:
Show 20 quoted lines
> Max Kirillov <max@max630.net> writes:
> > +ssize_t git_env_ssize_t(const char *k, ssize_t val)
> > +{
> > + const char *v = getenv(k);
> > + if (v && !git_parse_ssize_t(v, &val))
> > + die("failed to parse %s", k);
> > + return val;
> > +}
> > +
>
> If this were passing "v" that is a string the caller obtains from
> any source (and the callee does not care about where it came from),
> that would be a different story, but as a public interface that is
> part of the config.c layer, "k" that has to be the name of the
> environment variable sticks out like a sore thumb.
>
> If we were to add one more public function to the interface, I
> suspect that exposing the existing git_parse_ssize_t() and have the
> caller implement the above function for its use would be a much
> better way to go.I'm afraid I did not get the reasonsing and not fully the desired change. Is this http-backend code change (compared to the last patch) what you mean?
--- a/http-backend.c +++ b/http-backend.c @@ -346,9 +346,18 @@ static ssize_t read_request_fixed_len(int fd, ssize_t req_len, unsigned char **o } } +static ssize_t env_content_length() +{ + const char *str = getenv("CONTENT_LENGTH"); + ssize_t val = -1; + if (str && !git_parse_ssize_t(str, &val)) + die("failed to parse CONTENT_LENGTH: %s", str); + return val; +} + static ssize_t read_request(int fd, unsigned char **out) { - ssize_t req_len = git_env_ssize_t("CONTENT_LENGTH", -1); + ssize_t req_len = env_content_length(); if (req_len < 0) return read_request_eof(fd, out); else