summaryrefslogtreecommitdiff
path: root/fetch-pack.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-03-20 06:16:06 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-03-20 06:16:06 (GMT)
commit27cdbdd134f181fc97f9589039ed7c0d12759b5a (patch)
tree3a42ab156427cfa7c1b7bd2f7d08469b6fdfc434 /fetch-pack.c
parentea327760d38b03be552418de044843cd2f0dba2e (diff)
parent143588949c8a0672302403c722fc433a5bb2ea2a (diff)
downloadgit-27cdbdd134f181fc97f9589039ed7c0d12759b5a.zip
git-27cdbdd134f181fc97f9589039ed7c0d12759b5a.tar.gz
git-27cdbdd134f181fc97f9589039ed7c0d12759b5a.tar.bz2
Merge branch 'jk/no-sigpipe-during-network-transport'
On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX), the upload-pack that runs on the other end that hangs up after detecting an error could cause "git fetch" to die with a signal, which led to a flakey test. "git fetch" now ignores SIGPIPE during the network portion of its operation (this is not a problem as we check the return status from our write(2)s). * jk/no-sigpipe-during-network-transport: fetch: ignore SIGPIPE during network operation fetch: avoid calling write_or_die()
Diffstat (limited to 'fetch-pack.c')
-rw-r--r--fetch-pack.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fetch-pack.c b/fetch-pack.c
index 812be15..e69993b 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -191,8 +191,10 @@ static void send_request(struct fetch_pack_args *args,
if (args->stateless_rpc) {
send_sideband(fd, -1, buf->buf, buf->len, LARGE_PACKET_MAX);
packet_flush(fd);
- } else
- write_or_die(fd, buf->buf, buf->len);
+ } else {
+ if (write_in_full(fd, buf->buf, buf->len) < 0)
+ die_errno(_("unable to write to remote"));
+ }
}
static void insert_one_alternate_object(struct fetch_negotiator *negotiator,
@@ -1163,7 +1165,8 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
/* Send request */
packet_buf_flush(&req_buf);
- write_or_die(fd_out, req_buf.buf, req_buf.len);
+ if (write_in_full(fd_out, req_buf.buf, req_buf.len) < 0)
+ die_errno(_("unable to write request to remote"));
strbuf_release(&req_buf);
return ret;