commit 66926cfc3a240fee6da318457f40e62cc246fdc9 from: Omar Polo date: Mon May 23 10:57:40 2022 UTC allow jumbo reads commit - 23fbe390bd2006b2da54d7ed1fdd5e9615e58d4b commit + 66926cfc3a240fee6da318457f40e62cc246fdc9 blob - d6a99253ffffc262530b8630b09829f1dab17e61 blob + 47a94afe0da6f6a6dd2afeb1f06da63c983a8589 --- kamid/ChangeLog +++ kamid/ChangeLog @@ -1,3 +1,7 @@ +2022-05-23 Omar Polo + + * client.c (tread): allow "jumbo" reads + 2022-05-22 Omar Polo * client.c (handle_message): allow "jumbo" writes blob - 29b640835134e4aea8b320ba987c21af9b39f0b8 blob + a906118a4be90368060771d0784128b29cb69255 --- kamid/client.c +++ kamid/client.c @@ -637,7 +637,7 @@ static void do_send(void) { size_t len; - void *data; + uint8_t *data; len = EVBUFFER_LENGTH(evb); data = EVBUFFER_DATA(evb); @@ -645,8 +645,18 @@ do_send(void) #if DEBUG_PACKETS hexdump("outgoing packet", data, len); #endif - client_send_listener(IMSG_BUF, data, len); - evbuffer_drain(evb, len); + + while (len > IMSG_MAXSIZE) { + client_send_listener(IMSG_BUF, data, IMSG_MAXSIZE); + evbuffer_drain(evb, IMSG_MAXSIZE); + len -= IMSG_MAXSIZE; + data += IMSG_MAXSIZE; + } + + if (len != 0) { + client_send_listener(IMSG_BUF, data, len); + evbuffer_drain(evb, len); + } } static void @@ -1487,12 +1497,12 @@ serialize_stat(const char *fname, struct stat *sb, str static void tread(struct np_msg_header *hdr, const uint8_t *data, size_t len) { + static char buf[MSIZE9P - HEADERSIZE - 4]; struct fid *f; ssize_t r; size_t howmuch; uint64_t off; uint32_t fid, count; - char buf[2048]; /* fid[4] offset[8] count[4] */ if (!NPREAD32("fid", &fid, &data, &len) ||