diff options
author | Sverre Rabbelier <srabbelier@gmail.com> | 2011-07-16 15:03:35 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-07-19 11:17:47 -0700 |
commit | cc567322acbfd5b32e61ab5d005352347cd7eeaf (patch) | |
tree | e3c5401196f790ee340e57c04fa0a4a1b65e66f6 | |
parent | transport-helper: factor out push_update_refs_status (diff) | |
download | tgif-cc567322acbfd5b32e61ab5d005352347cd7eeaf.tar.xz |
transport-helper: check status code of finish_command
Previously the status code of all helpers were ignored, allowing
errors that occur to go unnoticed if the error text output by the
helper is not noticed.
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | transport-helper.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/transport-helper.c b/transport-helper.c index dd8dd2c1ae..e02f4a3e5a 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -209,6 +209,7 @@ static int disconnect_helper(struct transport *transport) { struct helper_data *data = transport->data; struct strbuf buf = STRBUF_INIT; + int res = 0; if (data->helper) { if (debug) @@ -220,13 +221,13 @@ static int disconnect_helper(struct transport *transport) close(data->helper->in); close(data->helper->out); fclose(data->out); - finish_command(data->helper); + res = finish_command(data->helper); free((char *)data->helper->argv[0]); free(data->helper->argv); free(data->helper); data->helper = NULL; } - return 0; + return res; } static const char *unsupported_options[] = { @@ -304,12 +305,13 @@ static void standard_options(struct transport *t) static int release_helper(struct transport *transport) { + int res = 0; struct helper_data *data = transport->data; free_refspec(data->refspec_nr, data->refspecs); data->refspecs = NULL; - disconnect_helper(transport); + res = disconnect_helper(transport); free(transport->data); - return 0; + return res; } static int fetch_with_fetch(struct transport *transport, @@ -415,8 +417,11 @@ static int fetch_with_import(struct transport *transport, sendline(data, &buf); strbuf_reset(&buf); } - disconnect_helper(transport); - finish_command(&fastimport); + if (disconnect_helper(transport)) + die("Error while disconnecting helper"); + if (finish_command(&fastimport)) + die("Error while running fast-import"); + free(fastimport.argv); fastimport.argv = NULL; @@ -760,8 +765,10 @@ static int push_refs_with_export(struct transport *transport, die("Couldn't run fast-export"); data->no_disconnect_req = 1; - finish_command(&exporter); - disconnect_helper(transport); + if (finish_command(&exporter)) + die("Error while running fast-export"); + if (disconnect_helper(transport)) + die("Error while disconnecting helper"); return 0; } |