From: Junio C Hamano <gitster@pobox.com>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: Jeff King <peff@peff.net>, git@vger.kernel.org
Subject: Re: [PATCH] Retry HTTP requests on SSL connect failures
Date: Mon, 01 Oct 2012 14:47:58 -0700 [thread overview]
Message-ID: <7v626tc19t.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <1349126586-755-1-git-send-email-spearce@spearce.org> (Shawn O. Pearce's message of "Mon, 1 Oct 2012 14:23:06 -0700")
"Shawn O. Pearce" <spearce@spearce.org> writes:
> Lets assume the site operators (Hi Google!) have a clue and are
> doing everything they already can to ensure secure, successful
> SSL connections from a wide range of HTTP clients. Implementing a
> single level of retry in the client can make it more robust against
> transient failure modes.
> ---
Sign off?
> http.c | 19 ++++++++++++-------
> remote-curl.c | 2 ++
> 2 files changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/http.c b/http.c
> index 345c171..953f2e6 100644
> --- a/http.c
> +++ b/http.c
> @@ -784,7 +784,7 @@ static int http_request(const char *url, void *result, int target, int options)
> struct slot_results results;
> struct curl_slist *headers = NULL;
> struct strbuf buf = STRBUF_INIT;
> - int ret;
> + int ret, attempts;
>
> slot = get_active_slot();
> slot->results = &results;
> @@ -820,12 +820,17 @@ static int http_request(const char *url, void *result, int target, int options)
> curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
> curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "gzip");
>
> - if (start_active_slot(slot)) {
> - run_active_slot(slot);
> - ret = handle_curl_result(slot);
> - } else {
> - error("Unable to start HTTP request for %s", url);
> - ret = HTTP_START_FAILED;
> + for (attempts = 0; attempts < 2; attempts++) {
> + if (start_active_slot(slot)) {
> + run_active_slot(slot);
> + if (slot->results->curl_result == CURLE_SSL_CONNECT_ERROR)
> + continue;
> + ret = handle_curl_result(slot);
> + } else {
> + error("Unable to start HTTP request for %s", url);
> + ret = HTTP_START_FAILED;
> + }
> + break;
> }
Two naïve questions, that applies to this and the one in remote-curl.c::run_slot().
(1) why only twice?
(2) no need for "wait a bit and then retry"?
> diff --git a/remote-curl.c b/remote-curl.c
> index a269608..04a379c 100644
> --- a/remote-curl.c
> +++ b/remote-curl.c
> @@ -353,6 +353,8 @@ static int run_slot(struct active_request_slot *slot)
>
> slot->results = &results;
> slot->curl_result = curl_easy_perform(slot->curl);
> + if (slot->curl_result == CURLE_SSL_CONNECT_ERROR)
> + slot->curl_result = curl_easy_perform(slot->curl);
> finish_active_slot(slot);
>
> err = handle_curl_result(slot);
next prev parent reply other threads:[~2012-10-01 21:48 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-20 2:55 [PATCH] Disable dumb HTTP fallback with GIT_CURL_FALLBACK=0 Shawn O. Pearce
2012-09-20 3:22 ` Shawn Pearce
2012-09-20 3:52 ` Jeff King
2012-09-20 3:48 ` Jeff King
2012-09-20 5:57 ` Shawn Pearce
2012-09-20 5:58 ` [PATCH] Revert "retry request without query when info/refs?query fails" Shawn O. Pearce
2012-09-20 6:29 ` Junio C Hamano
2012-09-20 6:31 ` Junio C Hamano
2012-09-20 16:24 ` Jeff King
2012-09-20 16:59 ` [PATCH 0/2] smart http toggle switch fails" Jeff King
2012-09-20 17:00 ` [PATCH 1/2] remote-curl: rename is_http variable Jeff King
2012-09-20 17:05 ` [PATCH 2/2] remote-curl: let users turn off smart http Jeff King
2012-09-20 17:53 ` Junio C Hamano
2012-09-20 18:12 ` Jeff King
2012-09-20 18:36 ` Junio C Hamano
2012-09-20 20:51 ` Jeff King
2012-09-20 21:15 ` Junio C Hamano
2012-09-20 21:30 ` Jeff King
2012-09-21 17:34 ` Junio C Hamano
2012-09-21 17:41 ` Jeff King
2012-09-20 17:24 ` [PATCH] Disable dumb HTTP fallback with GIT_CURL_FALLBACK=0 Jeff King
2012-09-20 23:05 ` Shawn Pearce
2012-09-21 5:26 ` Jeff King
2012-09-21 14:19 ` Shawn Pearce
2012-10-01 21:23 ` [PATCH] Retry HTTP requests on SSL connect failures Shawn O. Pearce
2012-10-01 21:47 ` Junio C Hamano [this message]
2012-10-01 21:53 ` Junio C Hamano
2012-10-01 22:23 ` Jeff King
2012-10-01 23:20 ` Junio C Hamano
2012-10-01 22:18 ` Jeff King
2012-10-02 2:38 ` Shawn Pearce
2012-10-02 13:57 ` Drew Northup
2012-10-02 0:14 ` Drew Northup
2012-09-20 4:14 ` Re* [PATCH] Disable dumb HTTP fallback with GIT_CURL_FALLBACK=0 Junio C Hamano
2012-09-20 4:14 ` [PATCH 1/2] Disable dumb HTTP fallback with GIT_DUMB_HTTP_FALLBACK=false Junio C Hamano
2012-09-20 4:14 ` [PATCH 2/2] remote-curl: make dumb-http fallback configurable per URL Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7v626tc19t.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.