summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Mike Hommey <mh@glandium.org>2009-06-06 16:43:57 +0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2009-06-06 11:03:11 -0700
commit446b941a57d96e0c02375534b6b3f6816e7364e5 (patch)
treef4b06840d1e80aa55e2a31c1110718330caf5ae0
parenthttp.c::http_fetch_ref(): use the new http API (diff)
downloadtgif-446b941a57d96e0c02375534b6b3f6816e7364e5.tar.xz
http-push.c::remote_exists(): use the new http API
Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--http-push.c31
1 files changed, 12 insertions, 19 deletions
diff --git a/http-push.c b/http-push.c
index f18da2a263..c5642b5d4d 100644
--- a/http-push.c
+++ b/http-push.c
@@ -2004,29 +2004,22 @@ static void update_remote_info_refs(struct remote_lock *lock)
static int remote_exists(const char *path)
{
char *url = xmalloc(strlen(repo->url) + strlen(path) + 1);
- struct active_request_slot *slot;
- struct slot_results results;
- int ret = -1;
+ int ret;
sprintf(url, "%s%s", repo->url, path);
- slot = get_active_slot();
- slot->results = &results;
- curl_easy_setopt(slot->curl, CURLOPT_URL, url);
- curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1);
-
- if (start_active_slot(slot)) {
- run_active_slot(slot);
- if (results.http_code == 404)
- ret = 0;
- else if (results.curl_result == CURLE_OK)
- ret = 1;
- else
- fprintf(stderr, "HEAD HTTP error %ld\n", results.http_code);
- } else {
- fprintf(stderr, "Unable to start HEAD request\n");
+ switch (http_get_strbuf(url, NULL, 0)) {
+ case HTTP_OK:
+ ret = 1;
+ break;
+ case HTTP_MISSING_TARGET:
+ ret = 0;
+ break;
+ case HTTP_ERROR:
+ http_error(url, HTTP_ERROR);
+ default:
+ ret = -1;
}
-
free(url);
return ret;
}