comparison TODO @ 3541:3cc9212b1c66 HEAD

update
author Timo Sirainen <tss@iki.fi>
date Thu, 18 Aug 2005 19:43:21 +0300
parents 5c92b51f2b38
children d597feda0c5e
comparison
equal deleted inserted replaced
3540:0ddbfc6aa2d7 3541:3cc9212b1c66
1 - if PAM child process doesn't finish within a minute, kill it
2 - maildir: hardlink copying + keywords are broken
3 - Support listening in multiple sockets?..
4 - Thunderbird+pop3 DELE error..?
1 - calls fsync()s etc. less often (when copying). optionally disable them. 5 - calls fsync()s etc. less often (when copying). optionally disable them.
2 - stop using atol(), atoi(), strtoul() etc. in places where we actually 6 - stop using atol(), atoi(), strtoul() etc. in places where we actually
3 care about what they return, and rather create our own function which 7 care about what they return, and rather create our own function which
4 checks if the input overflows the integer, and if so call i_fatal() 8 checks if the input overflows the integer, and if so call i_fatal()
5 - for master/config rewrite: make sure the log changes will work 9 - for master/config rewrite: make sure the log changes will work
44 len = strlen(cur_prefix); 48 len = strlen(cur_prefix);
45 if (cur_prefix[len-1] == ns->sep) 49 if (cur_prefix[len-1] == ns->sep)
46 50
47 51
48 - auth master refcounting when handling user/request? 52 - auth master refcounting when handling user/request?
49 - prepend_uid is useless nowadays?
50 53
51 - mail_index_map() -> sync from transaction log -> refresh -> mail_index_map() 54 - mail_index_map() -> sync from transaction log -> refresh -> mail_index_map()
52 - buffer_create_data() behavior has changed from silent-truncating to 55 - buffer_create_data() behavior has changed from silent-truncating to
53 hard-crashing. See if it breaks anywhere (PAM!) 56 hard-crashing. See if it breaks anywhere (PAM!)
54 - PAM / checkpassword should use passdb-blocking 57 - PAM / checkpassword should use passdb-blocking
68 assertion failed:(idx == size || data[idx].uid1 <= update.uid1) 71 assertion failed:(idx == size || data[idx].uid1 <= update.uid1)
69 72
70 - keywords: 73 - keywords:
71 - add some limits to how many there can be 74 - add some limits to how many there can be
72 - don't return \* in PERMANENTFLAGS when we're full 75 - don't return \* in PERMANENTFLAGS when we're full
73 - send FLAGS/PERMANENTFLAGS untagged replies when they change
74 - remove unused keywords? 76 - remove unused keywords?
75 77
76 - caching 78 - caching
77 - cache _all_ existing headers when headers are being parsed, not just the
78 ones client is requesting at that time.
79 - size.physical isn't cached
80 - force bits should be used only for nonregistered fields 79 - force bits should be used only for nonregistered fields
81 - change envelope parsing not to use get_headers() so imap.envelope can 80 - change envelope parsing not to use get_headers() so imap.envelope can
82 actually be cached without all the headers.. 81 actually be cached without all the headers..
83 - compression should drop fields with last_used < 82 - compression should drop fields with last_used <
84 (latest_mail_index_date - month) 83 (latest_mail_index_date - month)
85 - when parsing mbox or saving message, parse the mail through index-mail 84 - when parsing mbox or saving message, parse the mail through index-mail
86 so things gets saved into cache immediately 85 so things gets saved into cache immediately
87 - we can mail_cache_add() same header multiple times..
88 - get_field() doesn't work if it's not already cached
89 - we could try compressing same field values into a single 86 - we could try compressing same field values into a single
90 location in cache file. 87 location in cache file.
91 - Most messages are text/plain/7bit/us-ascii/no-other-content-type-params.
92 Instead of saving tons of nearly identical BODY/BODYSTRUCTURE fields
93 into cache, we could just set INDEX_MAIL_FLAG_TEXT_PLAIN_7BIT_ASCII bit
94 on and generate the bodystructure for such messages on the fly.
95 - support caching all message headers. this could be useful when 88 - support caching all message headers. this could be useful when
96 indexes are in local disk but actual mails are accessed through NFS. 89 indexes are in local disk but actual mails are accessed through NFS.
97 90
98 - mbox 91 - mbox
92 - size.physical isn't cached, but should it even be? ..
99 - syncing existing indexes takes 4x longer than creating new one, why? 93 - syncing existing indexes takes 4x longer than creating new one, why?
100 - how well does dirty sync + status work? it reads the last mail every 94 - how well does dirty sync + status work? it reads the last mail every
101 time? not very good.. 95 time? not very good..
102 - mbox file offsets still aren't 64bit aligned for some reason..
103 - when we're updating flags with lazy writing, we're still parsing the
104 mbox, just not writing to it!
105 - always add empty line. make the parser require it too? syncing should 96 - always add empty line. make the parser require it too? syncing should
106 make sure there always exists two LFs at end of file. raw-mbox-stream 97 make sure there always exists two LFs at end of file. raw-mbox-stream
107 should make sure the last message ends with LF even if it doesn't exist 98 should make sure the last message ends with LF even if it doesn't exist
108 in the file 99 in the file
109 - COPY doesn't work to itself (lock assert crash) 100 - COPY doesn't work to itself (lock assert crash)
120 - hardlink copying doesn't update indexes 111 - hardlink copying doesn't update indexes
121 - rename foo foo.xyz -> infinite loop possible? 112 - rename foo foo.xyz -> infinite loop possible?
122 - we probably shouldn't do duplicate detection/fixing?.. or at least stat() 113 - we probably shouldn't do duplicate detection/fixing?.. or at least stat()
123 the old file before trying, because we might have just previously seen 114 the old file before trying, because we might have just previously seen
124 the old file and then new file and then we try to fix it.. 115 the old file and then new file and then we try to fix it..
125 - if .customflags is removed and Maildir files have custom flags, add
126 "unknown1" "unknown2" etc. flags to .customflags file for each found flag
127 - with pop3 don't move messages from new/ to cur/ before RETR 116 - with pop3 don't move messages from new/ to cur/ before RETR
128 117
129 - index 118 - index
130 - if uoff_t or time_t size changes, don't rebuild indexes because they 119 - if uoff_t or time_t size changes, don't rebuild indexes because they
131 don't use them. just rebuild cache file. 120 don't use them. just rebuild cache file.
132 - flag merging code is too complex in index syncing. it should be moved
133 into mbox/maildir syncing where they're combined
134 - mail_index_lookup_ext() doesn't handle resizes between views. probably 121 - mail_index_lookup_ext() doesn't handle resizes between views. probably
135 needs size_t *size_r parameter added.. 122 needs size_t *size_r parameter added..
136 - optimize initial left_idx in mail_index_lookup_uid_range() 123 - optimize initial left_idx in mail_index_lookup_uid_range()
137 - when referencing log files, open them immediately?
138 - if log file is lost, generate it from old and new index 124 - if log file is lost, generate it from old and new index
139 - make sure when changing flags multiple times in transaction it goes ok.
140 especially replace + dirty flag
141 - transaction log: when replacing log with a same sequence, we remove it 125 - transaction log: when replacing log with a same sequence, we remove it
142 from log's file list, but we don't do anything to existing log views. 126 from log's file list, but we don't do anything to existing log views.
143 this can crash later in mail_transaction_log_view_set() because 'first' 127 this can crash later in mail_transaction_log_view_set() because 'first'
144 is from log list, while we're comparing it into view->tail which it never 128 is from log list, while we're comparing it into view->tail which it never
145 is. also overwriting it leaks memory.. 129 is. also overwriting it leaks memory..
153 - index_removal_timeout gets leaked in some conditions. how? 137 - index_removal_timeout gets leaked in some conditions. how?
154 - subscribe: IMAP(anonymous): open(anonymous/mail/.temp...) failed: Permission denied 138 - subscribe: IMAP(anonymous): open(anonymous/mail/.temp...) failed: Permission denied
155 - subscriptions file should contain namespace prefixes. at least optionally. 139 - subscriptions file should contain namespace prefixes. at least optionally.
156 there's the subscriptions = yes setting now for namespaces.. do it so that 140 there's the subscriptions = yes setting now for namespaces.. do it so that
157 if prefix = "" has subscriptions, it contains prefixes. otherwise not. 141 if prefix = "" has subscriptions, it contains prefixes. otherwise not.
158 - support zlib compressed mbox/maildir? mbox maybe just read-only.
159 do it through istream-zlib wrapper
160 - should we allow following symlinks in mbox/maildirs? they are now. 142 - should we allow following symlinks in mbox/maildirs? they are now.
161 - if we implement shared mailboxes with shared indexes, never do that or 143 - if we implement shared mailboxes with shared indexes, never do that or
162 others could symlink your personal mailboxes and see the indexes 144 others could symlink your personal mailboxes and see the indexes
163 created for it which may contain envelope etc. data 145 created for it which may contain envelope etc. data
164 - this allows circular mailbox hierarchies which should be prevented by 146 - this allows circular mailbox hierarchies which should be prevented by
193 - auth protocol: make sure values can't have tabs/lfs 175 - auth protocol: make sure values can't have tabs/lfs
194 - auth cache: cache userdb data too. 176 - auth cache: cache userdb data too.
195 - remove system_user and allow returning multiple gids instead. 177 - remove system_user and allow returning multiple gids instead.
196 - SIGHUP restarts auth processes .. but does it wait until they've finished 178 - SIGHUP restarts auth processes .. but does it wait until they've finished
197 with all requests? no. 179 with all requests? no.
198 - post-login-sql-command 180 - post-login-sql-command (userdb command doesn't do because of dovecot-lda)
199 - does dovecot-auth really break when it runs out of fds? 181 - does dovecot-auth really break when it runs out of fds?
200 - dovecot-auth should limit how fast authentication requests are allowed from 182 - dovecot-auth should limit how fast authentication requests are allowed from
201 login processes. especially if there's one login/connection the speed 183 login processes. especially if there's one login/connection the speed
202 should be something like once/sec. also limit how fast to accept new 184 should be something like once/sec. also limit how fast to accept new
203 connections. 185 connections.
249 do. like: SEARCH X-PRINT-MATCHES TEXT "hello" -> * SEARCH 1 "He said: 231 do. like: SEARCH X-PRINT-MATCHES TEXT "hello" -> * SEARCH 1 "He said:
250 Hello world!" 2 "Hello, I'm ...". This would be especially useful with 232 Hello world!" 2 "Hello, I'm ...". This would be especially useful with
251 the above attachment scanning. 233 the above attachment scanning.
252 234
253 - lib 235 - lib
254 - file cache: last block in file isn't cached.
255 - ioloop-kqueue.c patch 236 - ioloop-kqueue.c patch
256 - dotlocking: stale_timeout should probably take into account how old the 237 - dotlocking: stale_timeout should probably take into account how old the
257 file is.. so uses more time with more recent locks.. 238 file is.. so uses more time with more recent locks..
258 239
259 - lib-charset 240 - lib-charset
263 - cache iconvs? they'd probably be faster if we just reset the 244 - cache iconvs? they'd probably be faster if we just reset the
264 conversion instead of opening new one every time. and there will likely 245 conversion instead of opening new one every time. and there will likely
265 be only one or two charsets which are used for nearly all conversions. 246 be only one or two charsets which are used for nearly all conversions.
266 247
267 - general 248 - general
268 - sieve (rfc3028), we can use Cyrus Sieve
269 - rfc2231 continuation support (useless?) 249 - rfc2231 continuation support (useless?)
270 - rfc2557 support for BODYSTRUCTURE, as specified by RFC3501 250 - rfc2557 support for BODYSTRUCTURE, as specified by RFC3501
271 - lmtp server - is it needed? dovecot-deliver binary at least would be 251 - lmtp server - is it needed?
272 useful
273 - create indexer binary 252 - create indexer binary
274 - ~/.dovecotrc to override system wide settings. namespace settings should 253 - ~/.dovecotrc to override system wide settings. namespace settings should
275 override all the previous namespace settings instead of adding new. 254 override all the previous namespace settings instead of adding new.
276 - ESTALE handling for NFS safety 255 - ESTALE handling for NFS safety
277 - option to disable SORT, SEARCH and other memory/cpu-intensive features. 256 - option to disable SORT, SEARCH and other memory/cpu-intensive features.