path: root/remote-curl.c
diff options
authorScott Chacon <>2010-04-01 22:14:35 (GMT)
committerJunio C Hamano <>2010-04-02 06:24:59 (GMT)
commit42653c09c85015addc6fa8dd4d49cb250253412e (patch)
treecd33603246f89be8c771ff51284f9833bc565efa /remote-curl.c
parent890a13a45285ad44858add2ce2f74eb478f549c8 (diff)
Prompt for a username when an HTTP request 401s
When an HTTP request returns a 401, Git will currently fail with a confusing message saying that it got a 401, which is not very descriptive. Currently if a user wants to use Git over HTTP, they have to use one URL with the username in the URL (e.g. "") for write access and another without the username for unauthenticated read access (unless they want to be prompted for the password each time). However, since the HTTP servers will return a 401 if an action requires authentication, we can prompt for username and password if we see this, allowing us to use a single URL for both purposes. This patch changes http_request to prompt for the username and password, then return HTTP_REAUTH so http_get_strbuf can try again. If it gets a 401 even when a user/pass is supplied, http_request will now return HTTP_NOAUTH which remote_curl can then use to display a more intelligent error message that is less confusing. Signed-off-by: Scott Chacon <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'remote-curl.c')
1 files changed, 2 insertions, 0 deletions
diff --git a/remote-curl.c b/remote-curl.c
index b76bfcb..0782756 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -132,6 +132,8 @@ static struct discovery* discover_refs(const char *service)
die("%s not found: did you run git update-server-info on the"
" server?", refs_url);
+ die("Authentication failed");
http_error(refs_url, http_ret);
die("HTTP request failed");