From: Junio C Hamano Date: Tue, 28 Aug 2012 18:06:52 GMT Subject: Re: [PATCH 7/8] http: factor out http error code handling Message-ID: <7vd32a28n7.fsf@alter.siamese.dyndns.org> In-Reply-To: <20120827132604.GG17375@sigill.intra.peff.net> Jeff King writes: > Most of our http requests go through the http_request() > interface, which does some nice post-processing on the > results. In particular, it handles prompting for missing > credentials as well as approving and rejecting valid or > invalid credentials. Unfortunately, it only handles GET > requests. Making it handle POSTs would be quite complex, so > let's pull result handling code into its own function so > that it can be reused from the POST code paths. > > Signed-off-by: Jeff King > --- > http.c | 51 ++++++++++++++++++++++++++++----------------------- > http.h | 1 + > 2 files changed, 29 insertions(+), 23 deletions(-) > > diff --git a/http.c b/http.c > index b61ac85..6793137 100644 > --- a/http.c > +++ b/http.c > @@ -745,6 +745,33 @@ char *get_remote_object_url(const char *url, const char *hex, > return strbuf_detach(&buf, NULL); > } > > +int handle_curl_result(struct active_request_slot *slot) > +{ > + struct slot_results *results = slot->results; > + > + if (results->curl_result == CURLE_OK) { > + credential_approve(&http_auth); > + return HTTP_OK; > + } else if (missing_target(results)) > +... > + return HTTP_ERROR; > + } > +} > + > @@ -820,9 +828,6 @@ static int http_request(const char *url, void *result, int target, int options) > curl_slist_free_all(headers); > strbuf_release(&buf); > > - if (ret == HTTP_OK) > - credential_approve(&http_auth); OK, now this is part of handle_curl_result() so the caller does not have to worry about it, which is nice ;-) > return ret; > }