commit - e22049ccccf16f61c96360a85afc0d0a0ef1085f
commit + 7bafb2fd590c5e1b2ebf342df0c431ff4ca6b74c
blob - 141d4d4d85a59fd7edafe9de79c393661980e9db
blob + c45a5cb11b0b375cb1f32e4716c74b48d44058fa
--- kamiftp/ftp.c
+++ kamiftp/ftp.c
ssize_t nw;
len = MIN(sizeof(buf), msize);
- len -= HEADERSIZE + 4; /* for the request' fields */
+ len -= IOHDRSZ; /* for the request' fields */
r = do_read(fid, p.done, len, buf);
if (r == 0)
evbuffer_drain(dirbuf, EVBUFFER_LENGTH(dirbuf));
for (;;) {
- tread(nfid, off, msize - 4);
+ tread(nfid, off, msize - IOHDRSZ);
do_send();
recv_msg();
expect2(Rread, iota_tag);
blob - 96358ea9cb7c08c8a5b9f018d03ef8c7a23cdbc1
blob + 7fb1e1631419ad1d8f1efab4f08f4b3b0c2c2d53
--- lib/kami.h
+++ lib/kami.h
#define QIDSIZE 13
#define MAXWELEM 16
+/*
+ * from u9fs "ample room for Twrite/Rread header". It's a bit sloppy
+ * but otherwise it fails with "i/o count too large". Only for usage in
+ * clients.
+ */
+#define IOHDRSZ 24
+
#define NPSTATSIZ(namlen, uidnam, gidnam, unam) \
(6 + QIDSIZE + 20 + 2 + namlen + 2 + uidnam + 2 + gidnam + 2 + unam)