Things to be done shortly ========================== * fix and test [mac]fuse (poorly tested at this point, I have mostly been using XBMC and afpcmd) * more testing of the network code, especially in high latency/unstable network environments * refactor lib internals Things to be fixed post-0.5 (aka original FUTURE file) =========================== Command line: * remote filename completion * completion with BSD's readline * version detection * OS guessing FUSE: * readonly mounts aren't supported AFP 2.x: * non-UTF8 server names aren't supported * signature in status appears to be broken * use getsrvrinfo to get connection IP address to make room for AT * connection recovery - open files - locked files General bugs: * requesting a specific AFP version is unreliable * filenames have a maximum length of 255, but AFP 3.x allows for much more * forget username/password after they're used. Can we actually do this? * Multiple users: have one afpfsd running and multiple uids doing mounts * Icon support: - full query/result support - retrieval tool: a userspace app that can parse icons from resource forks * Complete implementation of AFP 3.2 - pretty much every function needs testing and correcting * Proper utf8 support - need per-volume character encoding * AFP 2.x support - desktop database support - UTF8 flag is now server-specific, but it should be volume-specific - non-UTF8 codepage translation - lots, lots more * More UAMs - ClientKRB - reconnection * Being able to change password - Open directory integration * Extended attributes * Function 75, whatever this is * Ongoing performance tweaking - in mknod(), you only need to do the setfiledirparms if the mode or perms are different - measurements, comparisons to other clients - asynchronous unlocking - use rx and tx quantums properly - queue writes to be one tx quantum - optimize locking - don't go back through the select loop to read what comes after the DSI packet - make a preallocated pool of dsi requests - make a preallocated pool for dsi messages - is_dir function should look in did cache - check to see how Mac OS does locking on writes - large block writes for FUSE 3.x * Mount by servername - integration with avahi/bonjour * use locking primitives in fuse 2.6.1 - mount a subdir Development: * When running afpfsd under gdb, unmount doesn't work because of the use of signals Protocol bugs: * afpfs-ng doesn't handle the situation where the server is shutdown * reconnect isn't reliable * Do DSI buffers get trampled if there's more than one being handled at the same time? * if there is a broken server, the DSI buffers could be overridden * If a DSI stream gets broken or there's a protocol error, the connection should be reset * We don't currently handle reconnect flags or timeouts for DSI attention packets * for logins, fpLoginExt should be used instead of fpLogin * for fpCreateFile, use soft creates * honour volume's HasConfigInfo flag Coding * the apple_translate() function should be truly 'const char * path' Mounting * do correct address/signature matching; right now we don't actually use the signature. Packaging and polish: * Make startup scripts (not much point without multi-user support) Other - rewrite pick_version to do more intelligent guessing for a version number - right now, there's a hard coded 1024 in afp_write(). See how the Mac OS client works. - after many operations, commands no longer work and neither does ^c - fix FUSE_USE_VERSION definition - stop using MAX_PATH, since this is server-specific - document API - shutting down notices aren't honoured