From: Mike Hommey <mh@glandium.org>
To: git@vger.kernel.org, gitster@pobox.com
Cc: johannes.schindelin@gmx.de
Subject: [WIP Patch 10/12] Use the new http API in http-walker.c:fetch_index()
Date: Sun, 18 Jan 2009 09:04:35 +0100 [thread overview]
Message-ID: <1232265877-3649-11-git-send-email-mh@glandium.org> (raw)
In-Reply-To: <1232265877-3649-10-git-send-email-mh@glandium.org>
Signed-off-by: Mike Hommey <mh@glandium.org>
---
http-walker.c | 55 +++++--------------------------------------------------
1 files changed, 5 insertions(+), 50 deletions(-)
diff --git a/http-walker.c b/http-walker.c
index edcb779..bc1db2b 100644
--- a/http-walker.c
+++ b/http-walker.c
@@ -368,15 +368,7 @@ static int fetch_index(struct walker *walker, struct alt_base *repo, unsigned ch
char *hex = sha1_to_hex(sha1);
char *filename;
char *url;
- char tmpfile[PATH_MAX];
- long prev_posn = 0;
- char range[RANGE_HEADER_SIZE];
- struct curl_slist *range_header = NULL;
- struct walker_data *data = walker->data;
-
- FILE *indexfile;
- struct active_request_slot *slot;
- struct slot_results results;
+ int ret = 0;
if (has_pack_index(sha1))
return 0;
@@ -388,48 +380,11 @@ static int fetch_index(struct walker *walker, struct alt_base *repo, unsigned ch
sprintf(url, "%s/objects/pack/pack-%s.idx", repo->base, hex);
filename = sha1_pack_index_name(sha1);
- snprintf(tmpfile, sizeof(tmpfile), "%s.temp", filename);
- indexfile = fopen(tmpfile, "a");
- if (!indexfile)
- return error("Unable to open local file %s for pack index",
- tmpfile);
-
- slot = get_active_slot();
- slot->results = &results;
- curl_easy_setopt(slot->curl, CURLOPT_FILE, indexfile);
- curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite);
- curl_easy_setopt(slot->curl, CURLOPT_URL, url);
- curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, data->no_pragma_header);
- slot->local = indexfile;
-
- /* If there is data present from a previous transfer attempt,
- resume where it left off */
- prev_posn = ftell(indexfile);
- if (prev_posn>0) {
- if (walker->get_verbosely)
- fprintf(stderr,
- "Resuming fetch of index for pack %s at byte %ld\n",
- hex, prev_posn);
- sprintf(range, "Range: bytes=%ld-", prev_posn);
- range_header = curl_slist_append(range_header, range);
- curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, range_header);
- }
-
- if (start_active_slot(slot)) {
- run_active_slot(slot);
- if (results.curl_result != CURLE_OK) {
- fclose(indexfile);
- return error("Unable to get pack index %s\n%s", url,
- curl_errorstr);
- }
- } else {
- fclose(indexfile);
- return error("Unable to start request");
- }
-
- fclose(indexfile);
- return move_temp_to_file(tmpfile, filename);
+ if (http_get_file(url, filename, 0) != HTTP_OK)
+ ret = error("Unable to get pack index %s\n", url);
+ free(url);
+ return ret;
}
static int setup_index(struct walker *walker, struct alt_base *repo, unsigned char *sha1)
--
1.6.1.141.gb32a
next prev parent reply other threads:[~2009-01-18 8:07 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-17 15:36 [PATCH] http-push: fix off-by-path_len Johannes Schindelin
2009-01-17 15:40 ` Where's Nick?, was " Johannes Schindelin
2009-01-17 15:41 ` [PATCH] t5540: clarify that http-push does not handle packed-refs on the remote Johannes Schindelin
2009-01-18 7:49 ` [PATCH] http-push: fix off-by-path_len Mike Hommey
2009-01-18 8:04 ` [WIP Patch 00/12] Refactoring the http API Mike Hommey
2009-01-18 8:04 ` [WIP Patch 01/12] Don't expect verify_pack() callers to set pack_size Mike Hommey
2009-01-18 8:04 ` [WIP Patch 02/12] Some cleanup in get_refs_via_curl() Mike Hommey
2009-01-18 8:04 ` [WIP Patch 03/12] Two new functions for the http API Mike Hommey
2009-01-18 8:04 ` [WIP Patch 04/12] Use the new http API in http_fetch_ref() Mike Hommey
2009-01-18 8:04 ` [WIP Patch 05/12] Use the new http API in get_refs_via_curl() Mike Hommey
2009-01-18 8:04 ` [WIP Patch 06/12] Use the new http API in http-walker.c:fetch_indices() Mike Hommey
2009-01-18 8:04 ` [WIP Patch 07/12] Use the new http API in http-push.c:fetch_indices() Mike Hommey
2009-01-18 8:04 ` [WIP Patch 08/12] Use the new http API in update_remote_info_refs() Mike Hommey
2009-01-18 8:04 ` [WIP Patch 09/12] Use the new http API in fetch_symref() Mike Hommey
2009-01-18 8:04 ` Mike Hommey [this message]
2009-01-18 8:04 ` [WIP Patch 11/12] Use the new http API in http-push.c:fetch_index() Mike Hommey
2009-01-18 8:04 ` [WIP Patch 12/12] Use the new http API in http-walker.c:fetch_pack() Mike Hommey
2009-01-18 15:18 ` [WIP Patch 08/12] Use the new http API in update_remote_info_refs() Johannes Schindelin
2009-01-18 19:23 ` Mike Hommey
2009-01-18 15:14 ` [WIP Patch 07/12] Use the new http API in http-push.c:fetch_indices() Johannes Schindelin
2009-01-18 15:12 ` [WIP Patch 05/12] Use the new http API in get_refs_via_curl() Johannes Schindelin
2009-01-18 15:10 ` [WIP Patch 04/12] Use the new http API in http_fetch_ref() Johannes Schindelin
2009-01-18 19:21 ` Mike Hommey
2009-01-18 15:03 ` [WIP Patch 03/12] Two new functions for the http API Johannes Schindelin
2009-01-18 19:06 ` [WIP Patch 02/12] Some cleanup in get_refs_via_curl() Johannes Schindelin
2009-01-18 19:11 ` Johannes Schindelin
2009-01-18 19:30 ` Mike Hommey
2009-01-18 21:09 ` Johannes Schindelin
2009-01-18 19:19 ` Mike Hommey
2009-01-18 21:10 ` Johannes Schindelin
2009-01-18 8:30 ` [WIP Patch 00/12] Refactoring the http API Junio C Hamano
2009-01-18 9:12 ` Mike Hommey
2009-01-18 11:29 ` Boyd Stephen Smith Jr.
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=1232265877-3649-11-git-send-email-mh@glandium.org \
--to=mh@glandium.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).