diff --git a/http.c b/http.c index 5703074d95..1569c56108 100644 --- a/http.c +++ b/http.c @@ -894,6 +894,10 @@ static int http_request(const char *url, curlinfo_strbuf(slot->curl, CURLINFO_CONTENT_TYPE, options->content_type); + if (options && options->effective_url) + curlinfo_strbuf(slot->curl, CURLINFO_EFFECTIVE_URL, + options->effective_url); + curl_slist_free_all(headers); strbuf_release(&buf); diff --git a/http.h b/http.h index 17116abc57..974ede7736 100644 --- a/http.h +++ b/http.h @@ -133,6 +133,12 @@ struct http_get_options { /* If non-NULL, returns the content-type of the response. */ struct strbuf *content_type; + + /* + * If non-NULL, returns the URL we ended up at, including any + * redirects we followed. + */ + struct strbuf *effective_url; }; /* Return values for http_get_*() */