From: Felipe Contreras Date: Sat, 12 Apr 2014 20:33:29 GMT Subject: [PATCH 2/5] remote-helpers: make recvline return an error Message-ID: <1397334812-12215-3-git-send-email-felipe.contreras@gmail.com> In-Reply-To: <1397334812-12215-1-git-send-email-felipe.contreras@gmail.com> Instead of exiting directly, make it the duty of the caller to do so. Signed-off-by: Felipe Contreras --- transport-helper.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/transport-helper.c b/transport-helper.c index bf329fd..1432a6d 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -58,7 +58,7 @@ static int recvline_fh(FILE *helper, struct strbuf *buffer, const char *name) if (strbuf_getline(buffer, helper, '\n') == EOF) { if (debug) fprintf(stderr, "Debug: Remote helper quit.\n"); - exit(128); + return 1; } if (debug) @@ -157,7 +157,8 @@ static struct child_process *get_helper(struct transport *transport) while (1) { const char *capname; int mandatory = 0; - recvline(data, &buf); + if (recvline(data, &buf)) + exit(128); if (!*buf.buf) break; @@ -302,7 +303,8 @@ static int set_helper_option(struct transport *transport, strbuf_addch(&buf, '\n'); sendline(data, &buf); - recvline(data, &buf); + if (recvline(data, &buf)) + exit(128); if (!strcmp(buf.buf, "ok")) ret = 0; @@ -374,7 +376,8 @@ static int fetch_with_fetch(struct transport *transport, sendline(data, &buf); while (1) { - recvline(data, &buf); + if (recvline(data, &buf)) + exit(128); if (starts_with(buf.buf, "lock ")) { const char *name = buf.buf + 5; @@ -558,7 +561,9 @@ static int process_connect_service(struct transport *transport, goto exit; sendline(data, &cmdbuf); - recvline_fh(input, &cmdbuf, name); + if (recvline_fh(input, &cmdbuf, name)) + exit(128); + if (!strcmp(cmdbuf.buf, "")) { data->no_disconnect_req = 1; if (debug) @@ -736,7 +741,8 @@ static void push_update_refs_status(struct helper_data *data, for (;;) { char *private; - recvline(data, &buf); + if (recvline(data, &buf)) + exit(128); if (!buf.len) break; @@ -960,7 +966,8 @@ static struct ref *get_refs_list(struct transport *transport, int for_push) while (1) { char *eov, *eon; - recvline(data, &buf); + if (recvline(data, &buf)) + exit(128); if (!*buf.buf) break; -- 1.9.1+fc3.9.gc73078e