From 12bda6f7106a57a05f5b0b25fc82b48f78e4cfb0 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 4 Feb 2006 21:52:32 +0000 Subject: [PATCH] Don't do so much memory copying in mplex_write(). --- io.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/io.c b/io.c index 6dafa2af..dd99913d 100644 --- a/io.c +++ b/io.c @@ -774,12 +774,13 @@ static int readfd_unbuffered(int fd, char *buf, size_t len) if (msg_bytes >= sizeof line) goto overflow; read_loop(fd, line, msg_bytes); - line[msg_bytes] = '\0'; /* A directory name was sent with the trailing null */ if (msg_bytes > 0 && !line[msg_bytes-1]) log_delete(line, S_IFDIR); - else + else { + line[msg_bytes] = '\0'; log_delete(line, S_IFREG); + } break; case MSG_SUCCESS: if (msg_bytes != 4) { @@ -1111,7 +1112,7 @@ static void writefd_unbuffered(int fd,char *buf,size_t len) **/ static void mplex_write(enum msgcode code, char *buf, size_t len) { - char buffer[BIGPATHBUFLEN]; + char buffer[1024]; size_t n = len; SIVAL(buffer, 0, ((MPLEX_BASE + (int)code)<<24) + len); @@ -1124,9 +1125,10 @@ static void mplex_write(enum msgcode code, char *buf, size_t len) contiguous_write_len = len + 4; if (n > sizeof buffer - 4) - n = sizeof buffer - 4; + n = 0; + else + memcpy(buffer + 4, buf, n); - memcpy(&buffer[4], buf, n); writefd_unbuffered(sock_f_out, buffer, n+4); len -= n; -- 2.34.1