Mercurial > dovecot > original-hg > dovecot-1.2
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. |