$Cambridge: hermes/src/prayer/docs/DONE-OLD,v 1.1.1.1 2003/04/15 13:00:03 dpc22 Exp $ 10/01/2002 ========== Lots of undocumented work cleaning up the user interface. This file probably now redundant! 18/11/2001 ========== Folder delete with confirmation disabled --> bang prayer process could end up hanging if far end gets stuck: added (long) timeout as countermeasure.

--> on login and logout page until we can come up with something better. (and later fixed stray

: sigh). Added (sometimes rather large) timeouts to all iostreams. Search for closest map in zoommap. Fixed logout screen Added html_session_message to help screen. Why does postmaster --> postmaster@hermes expansion work correctly even though no entry in map? Suspect some help from c-client here... - postmaster alias defined: need to include in map! list/unmark finds "closest" message before unmarking => no silly jumping around. Add "Sender:" to messages if/when From address changed. QP decoding on messages when Reply/ Forward: check closely! 16/11/2001 ========== Post message with invalid address --> boom. - Was failing to catch NIL response. Run through validator. - Done (check on live system tomorrow!). config file for accountd? Need to lift out stuff e.g: password strings. - First pass achieved Run through filter file test. Test QP engine again! Silly little bugs: Added "cc" to short header list for compose and display. Doh! rfc1522_decode stuff not working correctly in msg list screen? Refresh no longer pushs to last message in folder if new mail. Cc not copied when forwarding messages. "Compose new message" on abook_lookup screen not getting on well with roles. 15/11/2001 ========== Reply -> Linewrap -> send causes reproducible crash. - Fixed: rfc1522_encode being painful.. Restart from list with substitution: garbage in output - response_redirect has to discard any accumulated body data. Bugs: Sucessful passwd change crashes engine compare and contrast. Need to spot empty .MSforward upload - suggest read into array and then scan before writing file! Reverse arrival sort was broken. 14/11/2001 ========== Negotiate filter_restrict on login 13/11/2001 ========== Send binary downloads as HTTP/1.0 with use_persist disabled. - should work will all browsers this way. Need background colour set on some frontend pages: set of utility routines? Work out why icons pulled _every_ time that someone logs in from new session. - No idea: ask Jon Add foreground, link colours to documents Switched back to using text links rather than form entries on various folder screens: appears that forms within tables are illegal in HTML 4.01! - See Interface Changes Passed all screens through HTML validator looking for HTML markup bugs. 12/11/2001 ========== "-- " optimisations. IP address lock now selective. 06/11/2001 ========== Check/rationalise ping events: SSL Key generate. Log cycling. CDB reopen. Check error handling esp. logging of invalid input Fixed abook import stuff Save options more: After initial user interface level selection. Whenever abook updated. Done: may wish to only save when exiting abook_list screen? 02/11/2001 ========== BUG: Crash if sorting switched on in empty mailbox mail_sort doesn't like being passed an empty list? Fixed with special case. prayer-session crashes if ispell not present - catch error condition. Lost core dumps? - "daemon" option in Redhat init.d scripts disables this - Solution: just run prayer by hand 01/11/2001 ========== Fix rename -> Cancel bug __ICONS__ == /icons/ Need log rotation script User Preferences: Should have use_welcome and confirm logout on novice mode - help text correct? 30/10/2001 ========== Fix Date headers Fix check_cookie -> fail case. Simple redirection Lost core dumps? - No: just need to set ulimit -c unlimited - How do this portably? Help text on preferences screen should update immediately if user-level changed. 26/10/2001 ========== Sort out logging code (again): Either reopen log file for every entry or record inode and check it every couple of minutes ("struct log" as wrapper might help). 25/10/2001 ========== Fixed (Un)Delete and (Un)Mark bugs on display screen when sorting != arrival (didn't use zoommap). 23/10/2001 ========== Fix log/CDB file rotation. - DONE Make sure that invalid page requests return 404. robots.txt 22/10/2001 ========== Test concurrent access to mailfolder code with MBX folders Forward messages needs to track zoommap for sorted message Fixed Text/HTML stuff 19/10/2001 ========== Compose: Send, Cancel, Postpone should all return to correct parent screen. Does compose parent exist? Increased width of abook_xfer field 18/10/2001 ========== Folder transfer: replaced Buttons with links Extend compose lines Expanded welcome and user_level screen 13/10/2001 ========== User Preferences for sent-mail and postponed-msgs folders Mailbox --> Folder on Preferences screen 14/10/2001 ========== Change preferences code to only save stuff which is != default? means that we can quitely change defaults if problems emerge. Need to extend config to add missing option! 13/10/2001 ========== Completed code documentation after 4 days. Yuck! Need config options for sent-mail and postponed-msgs. Mailbox --> Folder on Preferences screen 09/10/2001 ========== account.c: Need to fix transparent reconnection + timeouts properly. accountd: Conver int -> BOOL accountd_server: need to support "red-intramail, yellow-intramail, ..." 08/10/2001 ========== Replace config_mailbox and config_maildir with session_XXX equivalents -> can apply more intelligence when building server locations. config: Add cdb maps for imapd, accountd server - DONE: Need to test, use in config_mailbox and config_dir Add support for separate accountd_nis server. Accountd: Use prayer style logging. config: Need support for imapd_server = "yellow-intramail : red-intramail : ..." config: Improve Documentation. Rename a few options? config: Parser should allocate into one pool, then copy into second to minimise overhead. Decided not (at least for the time being: quite a lot of work). Changed my mind! DONE. Check install procedure - Fix silly permissions. Generate self signed certificate as part of install (see stunnel install scripts). 08/10/2001 ========== Document command line options prayer+prayer_session Separate SSL startup from iostream_create: need two separate routines for client and server size startup. Add SSL to (both ends of) the accountd stuff - DONE: Need to fix + test Fix SSL accountd support. Accountd: Need config option plus accountd command line options to work around mail/ restriction! 06/10/2001 ========== Replaced MSconvert.pl with equivalent C. Need to test fully 03/10/2001 ========== Add config option to determine prayer_background Prayer session needs to support all options used by prayer frontend. Prayer -> prayer-session startup Close down unused sockets Need config option for min servers, max servers Session Idle mode: shut down IMAP connections after few minutes idle time. 28/09/2001 ========== Second go at install script: make config, edit ./Config, make, make install + make install-config + make install need proper redhat start and stop scripts. "make clean" should clear out Emacs backup files in docs directory. Rename prayer-backend ---> prayer-session Document properly (user + technical documentation). - docs/ mostly done now (will need to review!) 25/09/2001 ========== prayer-frontend --> prayer, should fork off subprocess First go an install scripts 25/09/2001 ========== Need correct MIME encoding when sending messages containing 8 bit chars - Done. Fixed attachment upload. Still some kind of problem involving download... Added directory cache upload button for cmd_folders and cmd_transfer. Need on other mailbox manipulation screens. 19/09/2001 ========== Short URLs links e.g: "AAAD@list@34@2" --> .../session/dpc22//AAAD@list@34@2 "/icons/fred.gif" --> .../icons:fred.gif Port to FreeBSD and Solaris. - Factor out OS dependant code into os.c: STARTED - Solaris needs EDG support, maybe fake urandom daemon using pwd hashes 12/09/2001 ========== Problem with SSL and Mac Netscape 4.7X: double clicks for many operations - Suggest: Use old/new versions of stunnel, see if any difference. - Answer Mac Netscape 4.7X appears to be broken. - Disable user_agent use_persist for Mac Netcape 4, come back and be more efficient later. 10/09/2001 ========== User Interface: Back --> Mailbox on some screens. Mailboxes--> folders. - DONE: may need to rename list --> mailbox (tedious!). Correct MIME encoding for ISO-latin-1 in headers please! - DONE: Test please! 10/09/2001 ========== string_printf() --> pool_printf(). Fix Makefile. Fix compilation with -Wall -W? - No: Lots of cases involving session where we might actually want - to use session logs etc at some later point 05/09/2001 ========== Why no coredump when running as root? - Answer: programs which start out running as root are paranoid about leaking state on at least some operating systems . Answer would be to bind ports, exec subprocess as unpriveldged user. Links should be buttons on mailboxes etc screen - Try one and see what it looks like. - Answer: looks good. Have done this everywhere. Add "Compose New message" to abook listing screen. Should backend_session_inet use asynchronous send as well as receive for normal requests? Appears to work just fine with aync input, sync output. One last go at "Undo"? - Undo is working correct, just not entirely intuitively. 03/09/2001 ========== Shortcuts in novice mode. Fix line wrap algorithmn: "I have" "Save message" needs to do a ml_check if save to open stream. From address on list screen should be link to display, not reply Address book import should translate: "Surname, Firstname". Small problem with compose and postponed messages? - tripping over own feet. Colour clues for Compose screen? 30/08/2001 ========== Problem with empty mail folders & compose? - can't duplicate! Login screen: Emphasis SSL Warning. Enter on Login screen should be login: NO: Don't think that you can do this w/o Javascript? Warning to user page: cmd_welcome Emphasise fact that people should log out! Tell them to use navigation icons on page rather than browser. Add abook alias: should be form button. Others? Add new addressbook entry should warn if overwriting existing alias cmd_seach: Year as input field rather than select. Single name rather than First Name/Last Name in addressbook 28/08/2001 ========== MIME torture test: Passed first time (thanks to c-client!). Mozilla however falls over in a heap. . See Interface Changes file. 28/08/2001 ========== Moved Favourite manipulation to subscreen of mailboxes. Replaced Logout icon Added "Check" icon. Added banner to bottom of display screen. Others too? - New: use_tail_banner option Switched icons on list screen around to match display screen. This might take several attempts to get it right. Add "check for new mail" button to list screen. Rearrange icons so that list and display correspond better? DONE Added "(Hermes) Webmail service" to title bar of all screens. Paperclip on cmd_display screen All: Put "Hermes Email Service: xxx" or similiar in title bar Initial User level: Indicate "_Webmail_ User Interface Level". Logout button. Logout screen should say logout from Hermes. 26/08/2001 ========== Improve directory cache: Shouldn't need to invalidate parts of cache automatically Need invalidate link! Factor out os dependant code into os.c - Added IP address handing code Preferences file: Need some useful way to wrap lines. - Can't think of terribly sensible way to do this without two stage parsing: string_get_lws_line followed by decode, _then_ split into tokens. - Lets stick with the current approach for the time being! frontend/session should bail out on illegal option 25/08/2001 ========== Folder transfer slow: Use multiappend for upload. Any way to improve download speeds? Done. Howeer, no obvious imporvement. Sigh! Caching problems with Mozilla, Netscape. Look at what hotmail do. - Answer: use Javascript to clear out history and Cache. Sigh :(. - Leave as is for the time being. Hide history list: Look at Javascript? - Leave as is for the time being 24/08/2001 ========== Better role system: NO Other languages: Later Fixed ghastly SSL bug: SSL * can mention own local read buffer. Need to check this before we select(). (use_persist == NIL) broken with direct connection. Almost certainly a problem with SSL * buffering? No: a completely separate bug. Hmmm! Mozilla caching far too much (Expires: ignored). - Yep: Doesn't seem any way to stop it. Sigh! - Check bug database. Warning message? Seperate window? - Seems to be true of all browsers. Check what Hotmail do. 23/08/2001 ========== Added border to abook_list Save deletes message Icons: Prev --> Previous on list and display pages Abook --> Addressbook on list and display pages Moved Back icon on display screen to the canonical place Added banner to reply page Lookup --> Expand on Directory page. Need Abook search to? Save message => mark as deleted. Should be option? 23/08/2001 ========== Abook lookups: case insensitive lookup done right at the assoc_lookup level... Save icon replaced (need a small version). Address Books -> Addressbooks singulat. Save Msgs: mark messages as deleted. Emphasis status line. (And hide if no status) Abook --> Addressbook, Prebv --> Previous etc 22/08/2001 ========== TUS meeting. 21/08/2001 ========== Warning on HTTP screen (infer default HTTPS channel!) Accountd needs to have new canon encoding iostream.c: SSL_accept should not be fatal error Translate to be end of file Attachment download: Need to translate ' ' -> '_' in URL for attachment name somehow 17/08/2001 ========== Upload/Download mail folder broken? - Fixed. Still some speed issues here. Verify configuration properly! - Done. May need to test fully abook.c: Use hash for lookup Lost favourites list? Clean up management screens when accountd disabled. - No: they are fine the way that they are I think Added icons to logout and rm screens to keep vrw10 happy... r -> request in request.c and response.c Fixed string_get_lws and use for e.g prefences. Added whole bunch of stuff to config file Need length limits for method and headers as well as body - DONE. Also fixed the response_error stuff (again) 16/08/2001 ========== Sanity check prefs esp: From, Reply-To and alt-addresses Session preferences handled correctly? Automatic update should take effect Add user_agent debug page SSL: Do we need to support DH? Yes What is DH? Still no idea! Separate out as module? : NO Check Quota error handling - First part complete: on the right track! - Test things more extensively as we go on Verify Reply-To address in role system! - DONE. Also fixed silly bug with empty alias! 15/08/2001 ========== Better logging: More session events. Log HTTP level + response code sent to broswer 09/08/2001 ========== string_canon_encode() && string_canon_decode() - appears to be some kind of obscure bug with '@' in URLs and Mozilla 0.9.2? Appeared to be specific to cmd_display and cmd_rawdisplay. Replace with url_encode/url_decode throughout? - Need to investigate some. - Switched string_canon_encode to use '%' rather than '@' - lets see if this has any unpleasant side effects! Bugs: Folder download broken? Long delay: - Downloading large folder from IMAP server takes time! - Some kind of feedback would be useful! Attachment Download names silly - Fixed (I hope...) Forward and reply should forward attachments too, (as an option). - Already does this! Put sessions into own process group so that kill signal to server doesn't kill everything (actually rather useful while developing!) - Probably not Personalisated From as well as default domain - DONE Stuff affecting UI: Rich headers? Dircache invalidate root doesn't work! - Now fixed Fix frontend reuse-connection stuff for ports 9090 etc - Need test case to show to Ben! Check that every string printed as html goes through buffer_puts_quote_html! - DONE 08/08/2001 ========== Need override mechanism for session setup: user_agent=mozilla, netscape, ie, lynx, other debug record_telemetry. failsafe (equiv: disable = all) disable = 1.1, persist, <-- Only one that frontend interested in icons, cookie, frame, html_inline, html_inline_auto, preserve_mimetype enable = (the same) - fixed silly bug with user-agent stuff Abook lookup should convert hermes -> hermes.cam.ac.uk etc? - NO Better hash function. - Look at Perl algorithm - No: Existing one seems fine. Use sigaction plus robust repear everywhere. Signal handling code: At very least backend master server should remove session sockets. - No: current arrangement works rather well thank you! Netscape has problems if images disabled - but only if frame in use => Netscape bug! Added return_path_domain config option. 06/08/2001 ========== Mike O'Donahue needs quoting. backend_session_inet can now cope with arbitary number of simultaneous connections to backend. Question: Do we need asynchronous responses too? Fix ml stuff: no automatic reopen... : DONE Streams: Flush .prayer file after each prefs/abook update: Would need special stream. :: DONE Special stream for uploads/downloaded :: DONE Crash after timeout (UIDs changed)? - Need to check this consistency. Check all session_redirect --> "restart" - FIXED: was failure to call zoommap_associate after reopen! Need to test all ioXXX fns for error codes No: io fns all silently discard output on error condition Only need to worry about this for fns that generate lots of output. - Should be safe 31/07/2001 ========== Pat thinks that "maintainly maintained forward file" stuff not obvious. Can't distinguish "no such file" from other NO responses from accountd server. Propose either: NO [NOEXISTS] ... or OK {0} Message sending using c-client SMTP routines Use c-client routines to construct message with attachments - less likely to break down? - Look at Pine code for sending messages - NO: own version is fine. - apart from CRLF -> LF conversion which is a ghastly hack. - Consistent use of c-client message handling code could make our life much easier... - NO: Exim handling error queue much nicer. Abook sorting. Probably not. Adopt Exim style syntax for configuration file. 30/07/2001 ========== Possible to use Keep-Alive for permanant sessions, not for icons? - Removes overhead associated with SSL channel startup. - Part of the way there: HTTP redirects are a pain... - DONE: separate timeouts for icons and session connections. Use short session_prefix if User agent can cope? - Netscape + Outlook seem fine. Lynx chokes. - 12K -> 10K (cmd_list) - 16K -> 12K (cmd_list) - 30K -> 24K (cmd_mailboxes) - Is a 30% saving really worthwhile? :: NO, probably not! Repeated headers in HTTP request: Currently concatinated, Any situation where this is incorrect thing to do? What does Apache do in this situation? Check Apache behaviour in general: might learn a few useful lesons. - cookies only likely problem case: have list/last split - Do nothing, at least for the moment. Possible to remove intermediate copies of HTTP Requests/Responses using chunked encoding. Looks like we have to supprt chunked requests at least properly. Sigh... - One case still to be dealt with. Marked in source Rename: zoommap -> msgmap to reflect additional functionality - NO: Leave it alone! Capability database for user agents: Session Persist (yes for everything which supports persistent) Icons Persist (no for Netscape, ?Mozilla) HTTP Pipeline (yes if we ever find a broswer which supports it!) Use icons (yes by default, no for Lynx and other text only) Use frame (yes if likely to be useful) Use Javascript (yes if likely to be useful) HTTP Redirect Persist (yes if session can persist across HTTP redirect) HTTP POST Persist (yes if session can persist across HTTP POST) Send icons over HTTP link Need consistant way of splitting up User-Agent strings Clean up .prayer file: Version number Wrap/unwrap long lines true/false rather than 0/1. _Some_ level of sanity checking. However current strategy of ignoring everything that we don't understand works reasonably well. Password changes: Need to remember two passwords, switch magically - DONE: Still need to test properly. Add confirmation dialogue for delete mail folder - DONE 29/07/2001 ========== Remove proxy (as option) o could run each backend server on different port, :: DONE with master server a la inetd to catch requests to expired :: DONE slots which have not been reused. 24/07/2001 ========== o Possible to send icons over non-https channel? : DONE as hack - Icons channels should only use Keep-Alive if we are confident that it is likely to be a benifit e.g: HTTP/1.1 pipeline - RAN TEST: Works in IE and Mozilla but not Netscape (sigh) - Need some kind of capability table for browsers... Added extra links on cmd_list screen Added year to Dates on cmd_list, cmd_reply eytc screens. Use prefork at frontend 23/07/2001 ========== Need directory permissions in prayer.cf file - DONE Move files to /usr/local/prayer/[version] and /var/spool/prayer/[stuff] - DONE Added check_directory_perms option to check directory permissions on $var_prefix and directories that appear under it. - not 100% there but should be good enough. Automatically create directory hierachy if doesn't exist. - Need some way to define directory permissions in config file. Better line wrap algorithmn - DONE earlier Split frontend/backend? DONE! 20/07/2001 ========== iostream.c -> frontend_iostream.c & backend_iostream.c. Only compile in SSL support if it is required! 19/07/2001 ========== Add setproctitle with some useful information. 16/07/2001 ========== Add session default preferences to config option e.g: window sizes 13/07/2001 ========== Configuration file tuning. Address lookups: If unqualified address doesn't appear in abook, hermes or cam databases then its an invalid address: should report as such immediately rather than trying to send mail? 12/07/2001 ========== Configuration file. 10/07/2001 ========== Rename: int -> unsigned long or BOOL forall int printf routines should support/use lu rather than d - DONE. About 3 hours work! Generic List function. - DONE: moved all the obvious things over to use it Replace ioputs, bgetc, bputs etc with macros 09/07/2001 ========== Further work on Line Wrap algorithmn Mixed cased aliases in name. Funny interactions with Mozilla: need extra CRLFs somewhere? - Extra CRLF at end of each response appears to fix this - read RFCs a bit more closely Sort out modal help text. Forward as postmaster, lookup "Pat" crashes? - No: large amount of text in Compose window stops User Agent = from sending. - Look at RFCs, make sure that its not Prayer doing something - stupid with byte counts. session_check_streams? - ml_ping inbox and other if > 20 mins : DONE - close postponed, transfer and prefs streams if > 20 mins : DONE abook_entry_to_string: code duplicated in one or two places: should try and factor out set of routines that are single place so that any updates can be made consistantly. - abook_entry_to_string() itself - abook_list - should interpret strings better: See "joel" entry - add_address - clone of abooj_entry_to_strin() code is marked XXX - DONE 05/07/2001 ========== Need better line wrap algorithmn which wraps in blocks... - DONE. Hurrah! That was hard work! Date search broken - Fixed 04/07/2001 ========== Pat: has some messages that blow up Prayer Fixed: invalid QP messages Roger managed to blow system up on preferences screen: Yes - works for me too now. The only thing I had done in the previous session before attempting to change the reply-to header default value was to send a message. However, doing that now still works. - Fixed: options->prefs_save = options->prefs without copy. DPC: Small button loses headers. Deja vu... - Fixed DPC: Spell check in "Large" mode corrupts headers - Fixed PH: Fixed cmd_help() to record last help text displayed for reload. redirect file: I went to the mail redirection screen. It correctly showed my redirection to CUS. However, below the top line of links it said: Status: Account Server response: no such file which seems a bit odd. Believe that he means vacation screen, however need to check this. Added a few literal_catch_no - may be better to have server generate OK {0} for empty files. Added "Send" button on Large screen. 6. I did a speeling check. It picked up the error and said it was highlighted, but it wasn't. Seems to be there!
   Hllo Wrld
   
cmd_add_address wasn't dealing with: Joel Seymour "Joel Seymour " in same way as main abook_entry -> string routine. [Have companion routine?] CJ: Wants rawdisplay to rawdisplay: DONE PH: Would like "Switch to inbox" on list screen Not done unless someone else asks for it. 03/07/2001 ========== Use cdb database of CRSid->Full name mapping in both places. - Come back and do this later - Can also use CRSid database to decide when unqualified filter is safe (dpc22 --> dpc22@*cam.ac.uk) - Partly (mostly!) done. Add comment: "including XX attachments" in postpone and forward code. Addressbook lookup bug? Stella -> bang? Assorted tidying up. Fixed mailboxes bug Address parsing --------------- Default domain for outgoing messages. Stella stuff ============ June 25 - Reply all with 1 address in cc: produces a surplus comma To: Stella Page Cc: , spage@kanina.freeserve.co.uk - can't reproduce this 02/07/2001 ========== T/C/B links on abook_list/abook_search pages now To/Cc/Bcc Extra checks on form input into abook_entry... Sort out HTTP headers in response Current situation is overkill - DONE. Mozilla caches regardless :(. Extra user options: Display HTML mail Display text/plain that start as HTML... DONE cmd_display(), cmd_reply2() and cmd_forward1(): All call ml_fetchbody(), then immediately set initial_msg[len] = '\0'; - is this safe? - better way to do this? - factor out common code - Made all consistent. - Sufficient space is allocated, so string[len] = '\0'; can't hurt? Postpone message with attachments: Attachements get lost? - can't reproduce Fix problems in mailbox etc screens - Possible to define single mailbox "class" that calls back defined routines to fill in the skeleton. - appears to be sorted now. 29/06/2001 ========== Replace list_add, list_remove with: list_push, list_pop, list_shift, list_unshift - use unshift in filter menu Fix frame use: init2 shouldn't be visible! Reverse sort toggle 28/06/2001 ========== cmd_list: Trailer banner not correct if mail folder empty. Display HTML inline with links Need to do this carefully to remove scripts Any conventions about correct way to do this? - steal code from sqwebmail which appears to have the right ideas. - DONE Need to improve html_secure_strip_all() - replace with html_to_text fn that strips all tags, and can translate <&> style codes! - DONE 27/06/2001 ========== sp253 bug reports: June 07 - problem with Addressbook Entry regrettably not reliably reproducible After a series of actions, e.g. adding and deleting entries, there comes a point when an attempt to add an entry fails quietly - i.e. after the Add/Update entry button is used the user is returned to the Addressbook list screen but the new entry has not been added June 07 - possible enhancement don't let the buggers add an address entry without an alias part. June 19 - HTML buglet - Address Search two
and only one
June 19 - I would like to add some general words of wisdom somewhere along the lines of if you don't logout and the session times out you'll lose any changes you made to addressbook or options. Could be somewhere general or could be on options and addressbook entry pages. Latter easier owing to handy links already there. General location would also be nice - where? June 21 - bug in novice message list screen - remove "Mark" td in tr June 21 - with frames off I still get a target=_top assoc with Logout Options screen June 22 - problem with changing password. After an initial couple of deliberate mistakes entered correct current and valid new. After selecting Change Password the session "hung" in the sense that the only action accepted was to use the "Stop" button in Netscape. An accountd was started on prism at the time at which the Change Password button used sp999 15271 5250 0 12:27:38 ? 0:00 ./accountd --daemon June 25 - Message list screen. If "Mark All" selected, then "Zoom" should not appear June 25 - small buglet in message listing - to do with division of number of messages in mailbox by number you want to list? Scenario:- Start with listing 20 messages Take a mailbox with 20 messages in it. Change to listing 10 Using the Prev/Next/First/Last buttons will only show you 1-10 and 20 (it is not possible to list 11-19) There is a subtly different thing if you change to, say, 9 or the default 12 messages per screen, the movement through the mailbox using Prev/Next/First/Last is:- - choosing 12 messages lists 1-12 and 12-20 (rather than 13-20) - choosing 9 lists 1-9, 9-17, 18-20 June 25 - stray (control) characters in "ACTION=" in forms. Unfortunately I can't trace when/how this started but I am now noticing it every time I View Source or save a page, e.g. in mailbox list screen (not maybe the most useful bug report :-( ) FIXED: Actually stray
on banner screens after favourite folders set up. Missing fl->form = NIL in banner_reset; June 25 - there are some stray wrapping of text in table cells. Examples include - mailbox list after one or more "favourite" mailboxes selected - Need to fix systematically - single mailbox listing fn with callbacks would be very useful. - Moved to separate TODO list 27/06/2001 ========== Passwords, quota etc screen: We are missing a screen for changing passwords, checking quotas and setting vacation/forward messages. This is going to require some kind of special protocol server at the Hermes end. 21/06/2001 ========== Added: Password Change Fullname Change Check Quota Added (Un)Mark All to cmd_list screen Moved search icon from top to bottom of screen Experimental: Removed nowrap from banner lines Switch off 'font size="2"' for time being Added sort on To and Cc 16/06/2001 ========== Add "favorite favourite" folder - DONE Add shortcuts for subscribed folders at bottom of list screen. - (Not convinced that we actually want to do this) - Save marked messages to nominated folder - Change to nominated folder - DONE! Use HTTP/1.1 Pipelining when Mozilla/Outlook support it reliably. - Should be able to push lots of icons down a single connection! - DONE previously 14/06/2001 ========== Help text layout from Stella: I think the following should all be part of one page compose/{role_list, normal, large} options/{general, folder, compose, advanced} I am easy on search - I am quite happy to amalgamate the existing separate pages for Text, Date, Status and Size into the main Search page. You're letting novices transfer mailboxes but not addressbooks? Folder sorting - new improved zoommap that combines sorting and zoom mode - should probably rename as "msgmap". 12/06/2001 ========== Rearranged source tree: src and files subdirectories... Pine addressbook import/export - Partly done: have address book export/import - Need to switch to using Pine format address books, which appear to be a series of TAB separated items: Single item: alias\tName\taddress\tComment Distribution list: alias\tName\t(addr1,addr2,addr3)\tFcc\tComment In both cases LWS padding in use! - FINISHED modulo testing. Hurrah! Mail folder import/export (standard Unix format mail folder). - DONE mostly: still need to clean up a little bit. 11/06/2001 ========== Use Frame to remove history list - DONE Mail folder import/export (standard Unix format mail folder). - DONE (need to clean up a little bit!) Address book import/export - First attempt finished. Need to refine. Record session_redirects in log! - DONE Improve HTTP error page (have links back to main session?) - DONE 07/06/2001 ========== Added HTTP 1.1 Pipeling? - Need some way to test this? Extra options: Autozoom after search Autounzoom after aggregate operation "save to sent-mail" should be permanently unsettable Use frameset to hide history Use HTTP redirects Check user interface: Add session_message() and session_log calls as appropriate. - DONE PARTLY come back later and see what else is possible. Need extra abstraction level to remove duplicate calls? : NO Make sure that every ml_ call checked for error conditions about 1 days work. Do a ml_ping if session idle for more than approx 20 minutes. - Need separate timestamps for each MAILSTREAM. - ml_XXX routines can recover last access on each stream... - Actually now do ping and then checkpoint - might what to make the checkpoingt optional Try to reduce nnumber of random cmd_restart calls? Possible: Make cmd_XXX fns return (T) or (NIL) - NIL -> automatic redirect to cmd_restart? - Tried this: ended up being far more complex that needed - Current situation is better arrangement: each cmd_XXX routine will always generate a page or redirect even if it wasn't the page that you were expecting after a few transparent redirects. Session caching Get rid of HTTP redirects: (as option only!) This causes session to disconnect. Netscape only: IE better behaved (sigh!) Better now, however POST still seems to confuse Netscape. . Record session sequence number and replay last command if sequence number doesn't match 06/06/2001 ========== Worked out why Mozilla is not using Persistent HTTP connections: Mozilla is broken! Logging: Possible to log more information than at the moment? - User_Agent and other headers. 05/06/2001 ========== Help text: Need stubs for forms in help text. (Must be way to have inactive form!) Need __PREFIX__ and __SESSION_PREFIX__ substitution in help text. 11 remaining XXX comments! - remove 2->3, include remainder in this file for sorting. - DONE Bugs: ----- Better handling for undo. - Undo completely broken. Remove entirely? - _believe_ that this is working now. Let Stella loose on it? Spell checker needs some work: Case problems. Why does it convert first word to lower case? - Appears to be okay now that we have removed a few lcases! Remove html_table*, html_form* nonsense with minimal set of functions, plus some macros to generate form and table elements. - No: current naming scheme makes much more sense. - Only problem is that some of the names are > 14 characters zoommap: - Use memblock to avoid need to allocate, reallocate block? : DONE - Partial invalidation should now be possible! No, typically more work to work out which parts of the zoommap are still valid then to you rebuild the entire thing (esp now malloc()/free() overhead is removed, MAILSTREAM scan is only remaining bottleneck). zoommap - Define stream/zoommap abstraction: - mark message - unmark message - clear all marks - set all marks => won't need to worry about getting zm_invalidates correct => no main program use of elt->spae => may be able to optimise certain cases - DONE 04/06/2001 ========== Should be possible to eliminate a lot of strip_whitespaces if string processing routines do this automatically. Does anything actually _need_ leading/trailing whitespace preserved? Look for strip_whitespace references. - Was done at some point in the past. request_decode_get() and request_decode_post() do string_url_decode for us. Check that we aren't duplicating this elsewhere. - DONE. Need maximum Request-Size: (25 Mbytes?) - DONE (need to clean up error strings a bit!) Check Makefile dependancies. makedepend? - DONE cmd_dispatch(): - Switch to use binary chop SSL support: Need to regenerate RSA temporary key once an hour - DONE zoommap_find(): Switch to use binary chop - DONE Fixed silly bug in mark/unmark code: - Forgot to run zoommap invalidate - Would be be better to abstract out all changes to the zoommap -> know when to invalidate. - FIXED Use STR * instead of char * for strings - record size in each string could make a number of string operations a lot more efficient - Lots of work: Think some about this. - Thought: I don't think that we need this. Only real use is to make strip_whitespace more efficient, and should be possible to do this automatically. - DISCARD 30/05/2001 ========== Need to get rid of icons on mailboxes etc screen - DONE Add message status icons unless (prefs->use_icons == NIL) - DONE. Need combined icons for mark? Many assorted small cleanups (Reduced XXX comment count 75 --> 12) - replace individual mail_flag with sequences - replace mail_append with mail_copy (inc sequence) when appropriate - ml_append does auto_create on TRYCREATE - add &len parameter to draft_make_recipients and draft_make_msg (removes silly strlens on msg) - paniclog <-> mm_fatal cleanup and rationalisation (still need to log errrors). - alt_addr stuff in cmd_display lifted one level - ml_fill_overview() [still need zoommap version!] - html_XXX routines renames html_XXX_table where appropriate Replace delete/undelete etc aggregate with sequence range stuff from cmd_list.c - DONE folder object to route mail folder manipulation through one location? - NO Addressbook lookup applies far too many strip_whitespaces. - No longer the case! Session timeouts: backend should just shut down after n mins of inactivity (should be easy!) - Did this some time ago! 29/05/2001 ========== Added address and subject length cap (using string_prune) on cmd_compose (postponed message) and cmd_list screens. Replace all UID tests in cmd_delete etc with single call. 25/05/2001 ========== May 23 - HTML buglet - Options form -

General Options:

The is not inside a table - No

round "User Interface Level:" although I agree this buggers the spacing. Works with another TABLE May 23 - HTML buglet - Options -> Roles Multiple occurrences of Roles etc. No

round "Options:" May 24 - Did you say you were going to add a "Back" to the main options screen? May 22 - Options form - What's on each sub-form in the way of "Help", "Back" etc is different. There's nothing under "General", "Folder" or "Compose". There's 3 GIFS under "Roles" and a "Back" input choice under "Personal Dictionary". - there doesn't seem to be an "action" defined for the POST at the top of the form? May 24 - two probably thick queries about the Dictionary screen. - If they can delete worms by clicking on them do they really need a "Remove" field as well? - Won't it confuse the little dears if they enter a Worm with a capital and it appears as a worm without a capital and in front of the all-lower-case worms? May 22 - odd needs - Forms in help text, if help is HTML rather than GIF based. - We need a null stub for POST and GET. One to cover both that just returns a "Nope, not active" type message? Named something like action="https://magenta.csi.cam.ac.uk:8080/actionstub" maybe? - I imagine input type="submit" things would be dealt with as-if-by-magic if the action changed? ------------------------------------------- May 24 - trouble with Spell Check. My original message was:- Morandacat and I would like to invite you to join us, that is me and mirandacat at home at CB1 3LL or rather CB1 3LD. That should trigger something in the spell checker! By the time I'd spell checked it (a) it didn't seem to pick up my all my Personal Dictionary words - these contain CB1 (which it did accept as OK), mirandacat and 3LD (which it didn't), and it changed everything to lower case thus morandacat and I would like to invite you to join us, that is me and mirandacat at home at CB1 3ll or rather CB1 3ld. That should trigger something in the spell checker! This appears to be related to the fact that the Personal Dictionary screen seems to auto-convert everything to lower case - see point above this? 22/05/2001 ========== Add lots of help text icons, just to cheer up Stella Delete folder fails to remove from dircache? Message status for messages > 100 in folder not displayed correctly!!! - DONE (silly string -> number conversion bug !) Fixed running against Netscape 4.08 (ghastly hack stolen from old version of Stunnel is not required with modern versions of openssl library: #define SSL_CTX_set_tmp_rsa_callback(ctx,cb) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA_CB,0,(char *)cb) Small spelling buglets - Compose screen reached in expert mode after "Forward marked" selected. Subject: ^seperate^separate Small HTML buglets and queries - change fairly generic, seen in message list screen, mailboxes screen - delete the after the CRSid of the logged-in-user screens so far - message list, mailboxes, addressbook - in the message list screen - the first add " "
so far seen in - message list screen - can the blank ALT tags be filled in with something? - tables - delete the and matching just before bit as it's in/applicable to TDs screens so far - message list, mailboxes, addressbook Stella ====== Date visible in message srceen listing changes when saving a message: Message sent on 17th May shows as that in inbox 20. No May 17 Pat Stewart 1K An FAQ? D S R F Save message to folder Date visible in message screen listing is date of save 157. No May 18 Pat Stewart 1K An FAQ? D S R F ============================================================= Random small things - Sometimes they're mailboxes and sometimes mail folders, e.g. see the "Mailboxes" screen with Subscribed "mail folders" and creating "mailbox". Is there any point in standardising on one name? 21/05/2001 ========== Check running against Mozilla - Hangs: expecting more input that it is getting on each transaction? Extraneous CRLF in send_html interaction. Something funny going on with Back button in Roles screen: HTTP/1.0 200 OK Date: Tue, 08 May 2001 12:18:07 GMT Server: Prayer/0.0 MIME-Version: 1.0 Allow: GET, HEAD, POST Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 Pragma: no-cache Cache-control: no-cache Expires: Tue, 08 May 2001 12:18:07 GMT Content-Length: 1589 blatted across the top of the screen, above the otherwise normal remainder of the form. A long pause showing the watch cursor ensues. I was going "back" from "roles" to "options". In fact it seems to be repeatable. FIXED: either CRLF bug or string_itoa_tmp bug 17/05/2001 ========== IMAP connection dropped after 30 minutes idle time. - Need automatic/transparent reconnect:: DONE 16/05/2001 ========== Transparently create sent-mail folder just like the others. - Should work. TRYCREATE stuff broken? - TRYCREATE stuff fixed, hopefully consistent. Putting an entry such as cs-info in the addressbook shows us as cs%2Dinfo - Fixed: missing buffer_puts_quote_html 15/05/2001 ========== Need inactive icons on message display screen. - DONE Text under icons too small. - Made them a bit bigger. Draft <-> Role integration - Select role on compose screen - Trigger role based on address book. - NO: at least not on this interation. 09/05/2001 ========== Objective: ========== Have something useful by next MDCM (9th May). - DONE! 04/05/2001 ========== Looking for silly MM bug. Session disconnect. 03/05/2001 ========== Logging ------- Need to log normal + abnormal events - 2/3 days work. - DONE Extra options - about two days work. ------------- Simple options: - Use icons. - Size of Small and Large Compose windows: DONE Advanced options, disabled by default: DONE using USER_LEVEL - Roles : DONE - Postpone message : DONE - Spell check : DONE - Large/Small window. : DONE Prettify the interface - DONE (some tweaking remains?) Unmark after aggregate operation - DONE (test fully!) 02/05/2001 ========== Icons ----- Need to apply icons - Need separate HTTP and HTTPS listeners! Easy route: - repeat headers x 2 Harder route: - build up list and apply. 01/05/2001 ========== Fixed ISO-8859-1 address display. Question: other charsets? 30/04/2001 ========== Assorted things that I've decided not to do. -------------------------------------------- Printing? - should be reasonably easy for plain text. - what to we do about inline graphics etc? - NO: Not unless we are specifically asked for this. Private version of rfc822_parse_adrlist based on pool allocation might be useful. Would remove lots of fun memory allocation. - Quick look suggests lots of duplication from c-client. - Private library of address parsing code might be appropriate! Spelling list ------------- - need ability to add and remove words from the personal dictionary Search ------ Search on date, status and size addr.c ------ Nasty mess: must be a better way to do this! - DONE. (Stolen some code from Pine to estimate size of ADDR!) Misc ---- Eliminated a few strlen and sprintf calls. msgno should be long throughout: check. 27/04/2001 ========== Fixed include and attachments options ------------------------------------- - string_get_lws_line was broken. Sigh... Fixed "reply" bug: Need to check Makefile dependancies are correct Clean up session structure :: Unknown -------------------------- Move data out into sub-structures :: NO - Probably not: just clean up into groups. :: DONE Possible to support multiple folders? :: DONE - inbox and other. Why do we have two IMAP sessions open at the moment? - FIXED Use multiple IMAP sessions: DONE INBOX postponed messages One other folder != inbox Cleaned up cmd_restart code: DONE Cleaned up init code: only needs single IMAP session to get started 26/04/2001 ========== Postponed messages :: 2 days ------------------ Proper postponed message folder - "Postpone" button saves to folder - "Compose" looks for postponed messages (have flag) - "Need to check for postponed messages at startup 25/04/2001 ========== Option screens :: 1 day :: DONE in entirity -------------- Make options screens work properly. - Need three copies of preferences data: initial : In case we want to rewrite .prayer folder active : Working options working : for updates within options screen before commit - Primitives: Create new empty preferences list Generate copy of preferences Free up list of preferences. - Question: use pools? Preferences don't change very frequently. Move abook and dictionary outside prefs. Address parsing :: 1 day --------------- Use local versions of c-client routines for both address book lookup and message sending. Also alt_addr stuff. DONE Use cdb database of CRSid->Full name mapping in both places. - Come back and do this later 11/04/2001 ========== - Clean up folder list - DONE - integrate directory cache - DONE - spread options over multiple screens - DONE (Add more options!) Address book lookup: Recursive aliases? - DONE Need some way to detect loops. - DONE Could be more efficient! Directory cache: DONE - at the moment invalidate whenever anything changes - possible to make this more efficient? cmd_mailboxes()/cmd_save()/cmd_rename(): - Sort out confusion and duplication - (suggest three separate cmd_files with common code factored out) - Done. 10/10/2000 ========== - "compose/fresh". - Expunge with large numbers of messages -> out of memory last < first at line 236 of cmd_list_simple(). - variant on the "Re: Re:" bug, now only applicable if the Re: is capitalised (RE:) - purge in zoom mode crashes need to invalidate zoom map and recalculate session->marked. - Undisclosed Recipient list. - Replying to From: "Eburne, Katharine" strips off the quotes and sends to To: Eburne@cam.ac.uk, Katharine - Should always download as octet/byte-stream - Attachment names. - Aggregate save misses stream->nmsgs Things done by 10/10/2000 ========================= cmd_compose(): Large window mode: DONE Sort out silly interdependancies: DONE Add undo option: DONE cmd_list(): Should prefetch envelope data as single mail_xxx operation. Currently many round trips to server. cmd_list(): Move search stuff to bottom of screen: DONE FULL hdrs in cmd_display Things done by 01/10/2000 ========================= Replace popen() in cmd_send with some sane code. - DONE (Need to test properly!) Add personal dictionary to spell check: DONE - Stage 1: Accept for spell check run - add to tmp personal dict - File processed line by line: need to remember accepts for current line (request->pool fine!) - Step 2: Add perseonal dictionary - Store as "Dict: " lines in prefs message. - send to /tmp file each time speller starts - record changes to personal dictionary immediately => don't have to parse /tmp file. - Try to clean up variable names used in struct speller: - multiple I/O streams rather confusing at the moment. Things done by 11/08/2000 ========================= Important: ========== Need some way to pass IP address of client on to backend to check okay. Suggest special header line at start of request that is only allowed on proxy connections. DON'T worry about HTTP/1.1 - make sure that HTTP/1.0 code is stable - HTTP 1.1 fron end can be bolted on afterwards, shouldn't affect rest of the code Add support for Cookies. Need unique session IDsx Other ===== Improve error reports. request_* code should use any of CR, LF and CRLF for line break - Break on CR or LF - If CR swallow LF if next character - not urgent, should be able to replace method by method Need to fix hash_insert Server response 501 (Not implemented) for anything that we recognise, don't implement. OLD list ======== Replace message -> buffer (so name reflects actual use) - New methods bputc (macro) bputchar buffer_seek_offset (simple implementation) buffer_printf (simple implementation: use sprintf) bprintf Add simple explanatory message body to error messages - response_error(status) - All responses other than following must have Content-Length header: 1xx (informational, not used in 1.0) 204 (no content) 304 (not modified) 0.9 request => reply with imformative message. DONE. Need some way to test. %XY decoding in URLs - Don't think that we actually need this for Webmail only app. Check ".." checking correct - don't expect ".." to be vaoid Add nodup option to hash_update. Need versions of hash and buffer data types which work without pool - suggest that NIL => no pool - use alloc (malloc with fatal) instead of pool_alloc - pool_alloc could use malloc if NIL Get rid of ALL fixed length buffers that might involve user input? POST requests must content Content-Length in 1.0 - should generate 400 (bad request) if they don't BUFFERSIZE of 0 for buffer_create etc should be same as iostream_create - use system provided default URL encoding: Currently using '@XY' to encode special characters for both URLs and GET forms. WING only uses '@' in URLs where '%' might be interpreted by Apache. Do the same thing? DONE: %XY used everywhere apart from filenames which are embedded directly in URLs HTTP 1.0 only server: Possible to merge iostream and buffer, reduce data copying only IO operations that we actually need are: read entire request write entire response. Actually rather messy as we need to calculate Content-Length in header. Simplest solution is to generate response body, then header and combined. Requires multiple small writes without iostream.