Re: [PATCH 6/9] http: update base URLs when we see redirects
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Sep 29, 2013, 19:26 UTC
- Message-ID
- <CAPig+cQVQ6iY8onvb--88W0XHofC815NZHTb=L744hANtT8mVQ@mail.gmail.com>
- In-Reply-To
- <20130928083405.GA2782@sigill.intra.peff.net>
On Sat, Sep 28, 2013 at 4:34 AM, Jeff King <peff@peff.net> wrote:
Show 18 quoted lines
> diff --git a/http.c b/http.c
> index 65a0048..8775b5c 100644
> --- a/http.c
> +++ b/http.c
> @@ -921,11 +921,71 @@ static int http_request_reauth(const char *url,
> +static int update_url_from_redirect(struct strbuf *base,
> + const char *asked,
> + const struct strbuf *got)
> +{
> + const char *tail;
> + size_t tail_len;
> +
> + if (!strcmp(asked, got->buf))
> + return 0;
> +
> + if (strncmp(asked, base->buf, base->len))
> + die("BUG: update_url_from_redirect: %s is not a superset of %s",
> + asked, base->buf);Is there something non-obvious going on here? die(...,base->buf) takes advantage of the terminating NUL promised by strbuf, but then strncmp(...,base->buf,base->len) is used rather than the simpler strcmp(...,base->buf).
Show 11 quoted lines
> + tail = asked + base->len; > + tail_len = strlen(tail); > + > + if (got->len < tail_len || > + strcmp(tail, got->buf + got->len - tail_len)) > + return 0; /* insane redirect scheme */ > + > + strbuf_reset(base); > + strbuf_add(base, got->buf, got->len - tail_len); > + return 1; > +}