Junio C Hamano <junkio@cox.net> writes: > If that is the case, I'll take your patch verbatim. Thanks. Oops. I spoke too fast. That "sounds like a good idea" of mine was a response to your: > It might be better to extend this to all places that curl_easy_perform > is called, rather than just in fetch_object. ... so the patch still needed some fixups. It had minor dependencies on the previous patches in the series as well, so I tried to fix them up myself. Could you take a look at it and see if the following is good enough, please? ------------ Subject: [PATCH] Return CURL error message when object transfer fails From: Nick Hengeveld <nickh@reactrix.com> Date: 1127757131 -0700 Return CURL error message when object transfer fails [jc: added similar curl_errorstr errors to places where we use curl_easy_perform() to run fetch that _must_ succeed.] Signed-off-by: Nick Hengeveld <nickh@reactrix.com> Signed-off-by: Junio C Hamano <junkio@cox.net> --- http-fetch.c | 24 ++++++++++++++++-------- 1 files changed, 16 insertions(+), 8 deletions(-) 4f1da6322aa5d11091005b23716bcc3c65151a32 diff --git a/http-fetch.c b/http-fetch.c --- a/http-fetch.c +++ b/http-fetch.c @@ -15,6 +15,7 @@ static CURL *curl; static struct curl_slist *no_pragma_header; +static char curl_errorstr[CURL_ERROR_SIZE]; static char *initial_base; @@ -112,10 +113,12 @@ static int fetch_index(struct alt_base * curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, no_pragma_header); + curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); if (curl_easy_perform(curl)) { fclose(indexfile); - return error("Unable to get pack index %s", url); + return error("Unable to get pack index %s\n%s", url, + curl_errorstr); } fclose(indexfile); @@ -264,10 +267,10 @@ static int fetch_indices(struct alt_base curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite_buffer); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, NULL); + curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); - if (curl_easy_perform(curl)) { - return -1; - } + if (curl_easy_perform(curl)) + return error("%s", curl_errorstr); while (i < buffer.posn) { switch (data[i]) { @@ -327,10 +330,12 @@ static int fetch_pack(struct alt_base *r curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, no_pragma_header); - + curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); + if (curl_easy_perform(curl)) { fclose(packfile); - return error("Unable to get pack file %s", url); + return error("Unable to get pack file %s\n%s", url, + curl_errorstr); } fclose(packfile); @@ -373,6 +378,7 @@ int fetch_object(struct alt_base *repo, curl_easy_setopt(curl, CURLOPT_FILE, NULL); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite_sha1_file); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, no_pragma_header); + curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); url = xmalloc(strlen(repo->base) + 50); strcpy(url, repo->base); @@ -388,7 +394,7 @@ int fetch_object(struct alt_base *repo, if (curl_easy_perform(curl)) { unlink(filename); - return -1; + return error("%s", curl_errorstr); } fchmod(local, 0444); @@ -453,6 +459,7 @@ int fetch_ref(char *ref, unsigned char * curl_easy_setopt(curl, CURLOPT_FILE, &buffer); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite_buffer); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, NULL); + curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); url = xmalloc(strlen(base) + 6 + strlen(ref)); strcpy(url, base); @@ -464,7 +471,8 @@ int fetch_ref(char *ref, unsigned char * curl_easy_setopt(curl, CURLOPT_URL, url); if (curl_easy_perform(curl)) - return error("Couldn't get %s for %s\n", url, ref); + return error("Couldn't get %s for %s\n%s", + url, ref, curl_errorstr); hex[40] = '\0'; get_sha1_hex(hex, sha1); - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Tue Sep 27 16:13:52 2005
This archive was generated by hypermail 2.1.8 : 2005-09-27 16:13:55 EST