[dovecot-cvs] dovecot TODO,1.40,1.41

cras at procontrol.fi cras at procontrol.fi
Sun Jun 15 08:02:07 EEST 2003


Update of /home/cvs/dovecot
In directory danu:/tmp/cvs-serv26272

Modified Files:
	TODO 
Log Message:
updated



Index: TODO
===================================================================
RCS file: /home/cvs/dovecot/TODO,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- TODO	3 May 2003 18:32:21 -0000	1.40
+++ TODO	15 Jun 2003 04:02:05 -0000	1.41
@@ -1,3 +1,16 @@
+ - openbsd: if we ever write() to a file that is mmaped(), even if munmap()ed
+   in the middle, the mmaped area doesn't get updated. This mostly happens
+   when updating headers with write().. is it worth fixing? ..
+ - maildir append doesn't actually need the mailbox to be synced.
+   index->open_mailbox() could have some parameter to specify if mailbox
+   should be synced or not.
+ - postgresql support doesn't reconnect if connection drops.
+ - we could process multiple commands (especially command + implicit sync
+   after it) without dropping (index) lock in the middle. that'd mean all
+   commands should be able to begin in any lock state and they shouldn't drop
+   the lock. there'd be some new drop_lock() function which finally does that.
+
+ - fix cygwin compile? _close and _read in *stream*.c fails.
  - fix SSL for RedHat 9. Use pkg-config.
  - PAM waits for two seconds on wrong passwords. dovecot-auth is completely
    stuck at that time. maybe fork() new PAM checkers?
@@ -22,11 +35,15 @@
     - the process that assigns UID to message should be the one to see
       it as recent
     - we don't handle non-contiguous recent ranges
- - maildir: stat()ing new/ would be enough if mtime is unchanged and older
-   than a few seconds
  - don't break if we rename selected mailbox
  - struct mail_index_data_record_header isn't 8byte padded with 32bit off_t
- - quota full: rename() is problematic, uidlist and new/ dir especially
+ - handle out of quota conditions:
+     - if dovecot-uidlist can't be written, assume the new mails have UIDs 
+       beginning from uidlist.next_uid. Whenever mails are expunged, overwrite
+       the next_uid field with the current highest next_uid. Whenever we have
+       assumed UIDs and uidlist gets updated, throw the client out with
+       "inconsist mailbox".
+     - make sure all syscalls check for ENOSPACE (and ENOACCESS while at it)
  - NFS safety:
     - use link()s instead of relying on O_EXCL
     - .subscriptions: use rename() like dovecot-uidlist
@@ -61,17 +78,12 @@
  - full_filesystem_access=yes + Maildir + SELECT "INBOX/" works? ..
  - should we support some non-tokenizing way to parse mail addresses? ..
    eg. "foo ? bar <x at y>" would now show up as "foo? bar <x at y>"
- - add charset/us-ascii to body/bodystructure
  - we hang if ssl key is password protected
- - is there still something wrong with SSL proxy?
 
  - DELETE/RENAME: when someone else had the mailbox open, we should
    disconnect it (when stat() fails with ENOENT while syncing).
 
  - bugs
-    - maildir: if mail file isn't found, it may be because it was renamed
-      (flag changed). we must then sync the directory and see again if the mail
-      is found
     - SIGHUP didn't update imap_listen. this is a bit annoying to fix though,
       since new listen() may fail for a few times because login processes may
       not die immediately..
@@ -83,7 +95,6 @@
       other IMAP people agree to that.
 
  - reliability fixes:
-    - maildir: check if there's base name conflicts when syncing.
     - if we deleted mail from index but didn't write modify log, other
       dovecots don't handle it properly. they either assert at index-sync.c:42
       or if new mails have also been added since, they don't notice it at all
@@ -197,6 +208,16 @@
       eg. allowing max. 20 hierarchies.
 
  - index:
+    - currently we read-lock it when eg. fetching mails. that can be a very
+      long lock. currently we also wait for exclusive lock if we want to sync
+      mailbox. with shared folders this would be real problem, but it's not
+      nice currently either if you want to have multiple connections to same
+      mailbox. solutions:
+        - syncing shouldn't wait lock more than a few seconds
+	- fetching could drop the lock after a few seconds. might get tricky
+	  though.
+        - maybe more fine grained locking? reading all mails shouldn't prevent
+	  appending new mails. accessing header could be more problematic.
     - we could try compressing same from/to/subject fields into a single
       location in data file. requires larger changes..
     - Most messages are text/plain/7bit/us-ascii/no-other-content-type-params.
@@ -254,12 +275,11 @@
  - general:
     - sieve (rfc3028), we can use Cyrus Sieve
     - rfc2231 continuation support
-    - rfc2557 support for BODYSTRUCTURE, as specified by latest IMAP4rev1 draft
-    - lmtp server
+    - rfc2557 support for BODYSTRUCTURE, as specified by RFC3501
+    - lmtp server - is it needed? dovecot-deliver binary at least would be
+      useful
     - create indexer binary
     - support Maildir++ quota
-    - provide some helper binary to save new mail into mailboxes with CR+LF
-      line breaks?
     - some kind of IMAP proxy for load distributing
     - maybe give more untagged NO/ALERT replies? like when mailbox is in
       inconsistent state. and when UIDs are reordered because they're too
@@ -273,7 +293,7 @@
  - cleanups:
     - check if t_push()/t_pop() should be added somewhere
     - try to fix @UNSAFE code to use buffer API instead
-	- subscription-file.c, custom_flags, ioloop
+	- subscription-file.c, custom_flags
 	- [io]stream-file.c?
     - grep for FIXME
     - index/create_temp_file is used in only two places. once mbox rewriting



More information about the dovecot-cvs mailing list