commit - 23fbe390bd2006b2da54d7ed1fdd5e9615e58d4b
commit + 66926cfc3a240fee6da318457f40e62cc246fdc9
blob - d6a99253ffffc262530b8630b09829f1dab17e61
blob + 47a94afe0da6f6a6dd2afeb1f06da63c983a8589
--- kamid/ChangeLog
+++ kamid/ChangeLog
+2022-05-23 Omar Polo <op@omarpolo.com>
+
+ * client.c (tread): allow "jumbo" reads
+
2022-05-22 Omar Polo <op@omarpolo.com>
* client.c (handle_message): allow "jumbo" writes
blob - 29b640835134e4aea8b320ba987c21af9b39f0b8
blob + a906118a4be90368060771d0784128b29cb69255
--- kamid/client.c
+++ kamid/client.c
do_send(void)
{
size_t len;
- void *data;
+ uint8_t *data;
len = EVBUFFER_LENGTH(evb);
data = EVBUFFER_DATA(evb);
#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
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) ||