send-pack: report signal death of pack-objects
If our pack-objects sub-process dies of a signal, then it likely didn't have a chance to write anything useful to stderr. The user may be left scratching their head why the push failed. Let's detect this situation and write something to stderr. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ba69f92db6
commit
d1a13d3fcb
15
send-pack.c
15
send-pack.c
@ -72,6 +72,7 @@ static int pack_objects(int fd, struct ref *refs, struct sha1_array *extra, stru
|
||||
struct child_process po = CHILD_PROCESS_INIT;
|
||||
FILE *po_in;
|
||||
int i;
|
||||
int rc;
|
||||
|
||||
i = 4;
|
||||
if (args->use_thin_pack)
|
||||
@ -125,8 +126,20 @@ static int pack_objects(int fd, struct ref *refs, struct sha1_array *extra, stru
|
||||
po.out = -1;
|
||||
}
|
||||
|
||||
if (finish_command(&po))
|
||||
rc = finish_command(&po);
|
||||
if (rc) {
|
||||
/*
|
||||
* For a normal non-zero exit, we assume pack-objects wrote
|
||||
* something useful to stderr. For death by signal, though,
|
||||
* we should mention it to the user. The exception is SIGPIPE
|
||||
* (141), because that's a normal occurence if the remote end
|
||||
* hangs up (and we'll report that by trying to read the unpack
|
||||
* status).
|
||||
*/
|
||||
if (rc > 128 && rc != 141)
|
||||
error("pack-objects died of signal %d", rc - 128);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user