File: TODO

package info (click to toggle)
libnetxap-perl 0.02-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 232 kB
  • ctags: 276
  • sloc: perl: 1,595; sh: 156; makefile: 49
file content (239 lines) | stat: -rw-r--r-- 8,435 bytes parent folder | download | duplicates (6)
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
###############################################################################
General

+ implement autoloading

+ add ability to override default port

+ get the URI modules in a releasable state

###############################################################################
Net::xAP

-------------------------------------------------------------------------------
B the mechanism that getline uses to stuff the literal payload into
  the string passed to parse_line needs to be improved.
  currently just tacks it onto the end.  maybe it should tack it into
  the end as a scalar ref and have parse_line look for '{\d+} SCALAR(.*)'.
  that should eliminate the chance of falsely interpreting {\d+} as a
  literal tag in instances where it isn't. make sure it derefs the
  scalar ref when it stuffs it into the list that is to be returned.
-------------------------------------------------------------------------------
B need to gracefully handle the server closing the connection without a bye

+ add methods for opening and closing a debug file as an alternative to stderr

B there are some things in IMAP that should be moved to xAP, and vice versa

B the addition of ACAP and IMSP might require the quotification to be
  revamped, with more direct control being moved into the subclasses

+ in synchronous mode, maybe have command failure synthesize a response
  object to alleviate the need to check status of the command method

+ add ability to selectively turn on or off debug for individual
  commands and callbacks

+ throw an error message when comment method is passed incorrect
  parameter count

+ documentation
  + document how top-level protocols should use xAP
###############################################################################
Net::IMAP

-------------------------------------------------------------------------------
B need to handle modified-utf-7 mailbox names correctly

B make the regex in _extract_resp_code more rigorous

B have callbacks do stronger arg checking in response data, particularly
  arg counts.

B clean up and test behavior when connection is terminated due to autologout
-------------------------------------------------------------------------------
+ maybe implement extensions as separate modules

+ force a LOGOUT if IMAP object goes out of scope

+ review various internet drafts to make sure they can be supported when RFCed
  + id		ok
  + sort	ok
  + thread	ok
  + children	ok
  + view	?
  + command+	?
  + annotate	?

B regression tests
  + extensions: namespace, acl, quota, uidplus
  + login and the various authentication extensions
  + lsub
  + more complete testing of quoted strings and literals
  + add more tests for fetched envelopes
  + verify Date option in append method (some servers may not honor it)
  + verify Flags option in append method (some servers may not honor it)
  + tests for imap2addr conversion methods
  + add ability to use non-local imap servers
  + test against cyrus, netscape, microsoft, innosoft

+ documentation
  + make sure the responses for extensions mention the appropriate extension
  + document the valid states for the various extension commands
  + document the response codes that need specific handling
  + add info about how to handle login and mailbox referrals
  + document which responses can be unsolicited
    + also mention what they indicate and when they are likely to be seen

+ add some more examples
-------------------------------------------------------------------------------
+ maybe have resp_codes have their own callbacks

+ write get_response that returns a list with the tag and rest of the
  response, instead of Net::IMAP::Envelope->new and Net::IMAP::FetchData->new

+ some response objects can be wired directly into parent Net::IMAP object
  + capability
  + flags
  + namespace
  + others...

B finish implementing authenticate command
  + add support for the security layer
  + figure out a reasonable way to hide auth info from debug command

+ add support for more extensions
  + login referrals
    + don't follow more than 10 referrals
  + mailbox referrals
  + idle
  + tls
  + various authentication extensions
    + otp
    + external
    + digest
    + gssapi
    + kerberos_v4

+ add ability to generate group lists in Net::IMAP::Address

+ maybe figure out a nice way to interface to Mail::Internet and MIME::Entity

+ implement smart EOL <-> crlf processing in append method
  check first line of string and adjust accordingly

B add support for X* commands

B implement and document prevention of ambiguous multiple pending requests
  + except for FETCH, STORE, and SEARCH, command must wait for a response
    before the following commands can be issued:
      FETCH, STORE, COPY, UID?, SEARCH (partially)
  + fetch -> store involving flags
  + select/examine -> select/examine
  + others, no doubt...

B add various items from IMAP Implementation Recommendations
  + look at limiting length of command lines through use of literals
  + don't SELECT a mailbox that has \noselect flag set
  + don't CREATE a submailbox in a mailbox that has \noinferiors flag set
  + don't respond to a failing COPY or APPEND with a CREATE if the
    server doesn't respond with a TRYCREATE response code
  + always put a trailing hierarchy delimiter in LIST reference argument
-------------------------------------------------------------------------------
+ write an interface for LWP (ala LWP::Protocol/ldap.pm)

+ decide whether X-NON-HIERARCHICAL-RENAME bug in cyrus imapd needs
  special handling

+ is there anything preventing module from being used in an off-line mode?

+ maybe implement the whole thing as two layers - the first layer is
  pure IMAP calls with minimal caching - the second layer uses cache
  information is it's available, only resorting to real imap calls if
  the data isn't cached

- maybe support older version of IMAP
###############################################################################
URI::imap

* need to write code for converting modified-utf7 <-> utf8

* need to do better job of preventing mutually exclusive url components
  (last one in wins)

* write regression test

* write documentation
-------------------------------------------------------------------------------
URI::acap

* write regression test

* write documentation
###############################################################################
Net::ACAP

* if it makes it into the release, remove the appropriate lines from
  the MANIFEST.SKIP file

* use the PAREN type in more places

* parse untagged condition responses

* response codes of interest to authentication failure:
  + auth-too-weak
  + encrypt-needed
  + transition-needed

* make sure xAP character set for autoquotification is correct for acap

* maybe coerse untagged ACAP response into an Acap object, otherwise
  get rid of Net::ACAP::Acap class

* figure out a way to take Return parm in search command into account
  when processing entry responses

* have deletedsince method accept an integer for its time parameter
  if length(timearg) >= 14 then its an acap time string, else its an integer

* have store method accept an integer for its unchangedsince parameter
  if length(timearg) >= 14 then its an acap time string, else its an integer

* UTF-8

+ spec limits size of an atom to 1024

+ NUL octets are only permitted in values of attributes whose names end with
  '.bin'.  client should send non-binary data as valid utf-8 data

+ context names must not start with '/'

+ need to handle extension responses

+ clients writing to a shared dataset SHOULD use UNCHANGEDSINCE when
  modifying an existing entry.

+ make sure any 'server SHOULD' items aren't a problem to the client
  if the 'server DOESNT'

+ clients MUST ignore unknown server responses which meet the syntax
  of response-extend or resp-code-ext

+ maybe include ability to cancel authentication exchange with a '*' line

+ tons more to do...

###############################################################################
Net::IMSP

* if it makes it into the release, remove the appropriate lines from
  the MANIFEST.SKIP file

* convert IMSP to use newer callback design

+ implement core commands
###############################################################################
Net::ICAP				Note: this will probably do away

+ implement core commands
###############################################################################