Blob


1 Stuff that's still to-do
2 ========================
5 - compile with -D_FILE_OFFSET_BITS=64 on linux.
6 related: this is needed only for glibc or musl too?
8 - (possibly related) find out what pread(2) black magic we can do to
9 read stuff on 32 bits
11 - rework the ninepscript so tests are parsed and executed by the _kamid
12 user and not by root.
14 - tweak iounit so it's always lower than the choosen msize
16 - handle message bigger than MAX_IMSGSIZE - IMSG_HEADER_SIZE. One
17 way to do that would be to *not* use asynchroonus imsgs in client.c
18 but synchronous I/O: this way, once a message has been processed,
19 we can just receive the next in the same function (i.e. twrite) and
20 go ahead.
22 - fill user and group name in struct stat. The problem is that, being
23 chrooted, we don't have access to /etc/passwd nor /etc/group. We
24 could use setpassent(3) and setgroupent(3), but if they change in the
25 meantime we can't do anything. Another solution would be to not
26 to chroot(2) and just switch to the targeted user.
28 - find a way to avoid opening directories twice. During a walk
29 we open the directories, but if later we try to open that fid,
30 we end up re-opening the same directory again! It's not easy
31 to avoid because we need to fdopendir(3) and upon closedir it'll
32 close the file descriptor, while the same file descriptor could
33 be shared with other fids (f->dir is a shared read-only resource).
34 One solution may be to not use readdir and roll our own on top
35 of getdents(2) and lseek(2), but that may not be portable.
37 - reply with an Rerror in kamid/listener.c:/^client_read when we get
38 an invalid message (too big or too small) before closing the
39 connection.
41 - how (if) handle serialize_stat overflow? If the info for the file
42 we want to give don't fit inside 16 bit we're currently either
43 skipping the file entry (if during a directory read) or return an
44 error (during Tstat.)