Skip to content

Commit

Permalink
Merge pull request #2111 from gitgitgadget/jk/no-sigpipe-during-netwo…
Browse files Browse the repository at this point in the history
…rk-transport

Fix t5570 flakiness on macOS
  • Loading branch information
dscho committed Mar 7, 2019
2 parents 89cb7de + 1435889 commit 1a02835
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
2 changes: 2 additions & 0 deletions builtin/fetch.c
Original file line number Diff line number Diff line change
Expand Up @@ -1556,7 +1556,9 @@ static int fetch_one(struct remote *remote, int argc, const char **argv, int pru

sigchain_push_common(unlock_pack_on_signal);
atexit(unlock_pack);
sigchain_push(SIGPIPE, SIG_IGN);
exit_code = do_fetch(gtransport, &rs);
sigchain_pop(SIGPIPE);
refspec_clear(&rs);
transport_disconnect(gtransport);
gtransport = NULL;
Expand Down
9 changes: 6 additions & 3 deletions fetch-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -1165,7 +1167,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;
Expand Down
6 changes: 4 additions & 2 deletions pkt-line.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,15 @@ static void packet_trace(const char *buf, unsigned int len, int write)
void packet_flush(int fd)
{
packet_trace("0000", 4, 1);
write_or_die(fd, "0000", 4);
if (write_in_full(fd, "0000", 4) < 0)
die_errno(_("unable to write flush packet"));
}

void packet_delim(int fd)
{
packet_trace("0001", 4, 1);
write_or_die(fd, "0001", 4);
if (write_in_full(fd, "0001", 4) < 0)
die_errno(_("unable to write delim packet"));
}

int packet_flush_gently(int fd)
Expand Down

0 comments on commit 1a02835

Please sign in to comment.