forked from simonvetter/afpfs-ng
-
Notifications
You must be signed in to change notification settings - Fork 1
/
FUTURE
145 lines (92 loc) · 3.37 KB
/
FUTURE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
Things to be fixed post-0.5
===========================
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:
* no ipv6 support
* 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