http: avoid empty error messages for some curl errors
authorJonathan Nieder <jrnieder@gmail.com>
Mon, 5 Sep 2011 22:22:02 +0000 (17:22 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 Sep 2011 22:49:23 +0000 (15:49 -0700)
When asked to fetch over SSL without a valid
/etc/ssl/certs/ca-certificates.crt file, "git fetch" writes

error:  while accessing https://github.com/torvalds/linux.git/info/refs

which is a little disconcerting.  Better to fall back to
curl_easy_strerror(result) when the error string is empty, like the
curl utility does:

error: Problem with the SSL CA cert (path? access rights?) while
accessing https://github.com/torvalds/linux.git/info/refs

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http.c

diff --git a/http.c b/http.c
index 74197519b16994bc8bd67a1de00da476cc5df9e1..61a90896ecb154089ef77756c1cfa8b03f524170 100644 (file)
--- a/http.c
+++ b/http.c
@@ -846,8 +846,13 @@ static int http_request(const char *url, void *result, int target, int options)
                                init_curl_http_auth(slot->curl);
                                ret = HTTP_REAUTH;
                        }
-               } else
+               } else {
+                       if (!curl_errorstr[0])
+                               strlcpy(curl_errorstr,
+                                       curl_easy_strerror(results.curl_result),
+                                       sizeof(curl_errorstr));
                        ret = HTTP_ERROR;
+               }
        } else {
                error("Unable to start HTTP request for %s", url);
                ret = HTTP_START_FAILED;