зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
d2e73c6f2a
Коммит
cc567322ac
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче