After sending the pack, we call receive_status() which gets both the "unpack" line and the ref status. Let's break these into two functions so we can call the first part independently.
Signed-off-by: Jeff King <p...@peff.net> --- send-pack.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/send-pack.c b/send-pack.c index 6195b43e9..12e229e44 100644 --- a/send-pack.c +++ b/send-pack.c @@ -130,22 +130,27 @@ static int pack_objects(int fd, struct ref *refs, struct sha1_array *extra, stru return 0; } -static int receive_status(int in, struct ref *refs) +static int receive_unpack_status(int in) { - struct ref *hint; - int ret = 0; - char *line = packet_read_line(in, NULL); + const char *line = packet_read_line(in, NULL); if (!starts_with(line, "unpack ")) return error("did not receive remote status"); - if (strcmp(line, "unpack ok")) { - error("unpack failed: %s", line + 7); - ret = -1; - } + if (strcmp(line, "unpack ok")) + return error("unpack failed: %s", line + 7); + return 0; +} + +static int receive_status(int in, struct ref *refs) +{ + struct ref *hint; + int ret; + hint = NULL; + ret = receive_unpack_status(in); while (1) { char *refname; char *msg; - line = packet_read_line(in, NULL); + char *line = packet_read_line(in, NULL); if (!line) break; if (!starts_with(line, "ok ") && !starts_with(line, "ng ")) { -- 2.12.0.429.gde83c8049