Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2013-09-28 12:32:02 +0400
committerJonathan Nieder <jrnieder@gmail.com>2013-10-15 03:55:23 +0400
commit78868962c03e5bdddad5c5d02c1d5a0c72a7ac26 (patch)
tree9a2c181a6543de8068494c34d6bb05a23fb7c2f3
parent2501aff8b7516115c409cb34cc50305cdde40a47 (diff)
http: provide effective url to callers
When we ask curl to access a URL, it may follow one or more redirects to reach the final location. We have no idea this has happened, as curl takes care of the details and simply returns the final content to us. The final URL that we ended up with can be accessed via CURLINFO_EFFECTIVE_URL. Let's make that optionally available to callers of http_get_*, so that they can make further decisions based on the redirection. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
-rw-r--r--http.c4
-rw-r--r--http.h6
2 files changed, 10 insertions, 0 deletions
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_*() */