[PATCH v3 17/19] remote-curl: pass buffer straight to get_remote_heads
- From
Jeff King <peff@peff.net>
- Date
- Feb 20, 2013, 20:07 UTC
- Message-ID
- <20130220200702.GQ25647@sigill.intra.peff.net>
- In-Reply-To
- <20130220195147.GA25332@sigill.intra.peff.net>
Until recently, get_remote_heads only knew how to read refs from a file descriptor. To hack around this, we spawned a thread (or forked a process) to write the buffer back to us.
Now that we can just pass it our buffer directly, we don't have to use this hack anymore.
Signed-off-by: Jeff King <peff@peff.net> --- remote-curl.c | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-)
diff --git a/remote-curl.c b/remote-curl.c index 3bc6cb5..e07f654 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -170,33 +170,11 @@ static struct ref *parse_git_refs(struct discovery *heads, int for_push) return last; } -static int write_discovery(int in, int out, void *data) -{ - struct discovery *heads = data; - int err = 0; - if (write_in_full(out, heads->buf, heads->len) != heads->len) - err = 1; - close(out); - return err; -} - static struct ref *parse_git_refs(struct discovery *heads, int for_push) { struct ref *list = NULL; - struct async async; - - memset(&async, 0, sizeof(async)); - async.proc = write_discovery; - async.data = heads; - async.out = -1; - - if (start_async(&async)) - die("cannot start thread to parse advertised refs"); - get_remote_heads(async.out, NULL, 0, &list, - for_push ? REF_NORMAL : 0, NULL); - close(async.out); - if (finish_async(&async)) - die("ref parsing thread failed"); + get_remote_heads(-1, heads->buf, heads->len, &list, + for_push ? REF_NORMAL : 0, NULL); return list; }
-- 1.8.2.rc0.9.g352092c