afpfs-ng-mac/TODO

147 lines
3.6 KiB
Plaintext

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