summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-04-30 04:50:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-04-30 04:50:24 (GMT)
commit279a2e637a69afd6157e8287c2599e8ae5e6cb8c (patch)
treec5bbe9e4826c73d04ba8bb7ee31842ad5b40b3d3
parent13158b9910f8de4a88b39420be80f03c681b3ec9 (diff)
parent332ec963bc6fedc0ca9c0b5a66ea842d7fbd6baa (diff)
downloadgit-279a2e637a69afd6157e8287c2599e8ae5e6cb8c.zip
git-279a2e637a69afd6157e8287c2599e8ae5e6cb8c.tar.gz
git-279a2e637a69afd6157e8287c2599e8ae5e6cb8c.tar.bz2
Merge branch 'mt/pkt-write-errors'
When packet_write() fails, we gave an extra error message unnecessarily, which has been corrected. * mt/pkt-write-errors: pkt-line: do not report packet write errors twice
-rw-r--r--pkt-line.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/pkt-line.c b/pkt-line.c
index 0194137..98304ce 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -194,13 +194,16 @@ int packet_write_fmt_gently(int fd, const char *fmt, ...)
return status;
}
-static int packet_write_gently(const int fd_out, const char *buf, size_t size)
+static int do_packet_write(const int fd_out, const char *buf, size_t size,
+ struct strbuf *err)
{
char header[4];
size_t packet_size;
- if (size > LARGE_PACKET_DATA_MAX)
- return error(_("packet write failed - data exceeds max packet size"));
+ if (size > LARGE_PACKET_DATA_MAX) {
+ strbuf_addstr(err, _("packet write failed - data exceeds max packet size"));
+ return -1;
+ }
packet_trace(buf, size, 1);
packet_size = size + 4;
@@ -215,15 +218,29 @@ static int packet_write_gently(const int fd_out, const char *buf, size_t size)
*/
if (write_in_full(fd_out, header, 4) < 0 ||
- write_in_full(fd_out, buf, size) < 0)
- return error(_("packet write failed"));
+ write_in_full(fd_out, buf, size) < 0) {
+ strbuf_addf(err, _("packet write failed: %s"), strerror(errno));
+ return -1;
+ }
+ return 0;
+}
+
+static int packet_write_gently(const int fd_out, const char *buf, size_t size)
+{
+ struct strbuf err = STRBUF_INIT;
+ if (do_packet_write(fd_out, buf, size, &err)) {
+ error("%s", err.buf);
+ strbuf_release(&err);
+ return -1;
+ }
return 0;
}
void packet_write(int fd_out, const char *buf, size_t size)
{
- if (packet_write_gently(fd_out, buf, size))
- die_errno(_("packet write failed"));
+ struct strbuf err = STRBUF_INIT;
+ if (do_packet_write(fd_out, buf, size, &err))
+ die("%s", err.buf);
}
void packet_buf_write(struct strbuf *buf, const char *fmt, ...)