database-related cleanups and paranoia tests;
[citadel.git] / citadel / ChangeLog
index 0701c444f7e6642e7b6b9825539a254da9e36c04..ece984e9c9c62347c384768709899647e937509b 100644 (file)
@@ -1,4 +1,359 @@
  $Log$
+ Revision 573.107  2001/03/06 03:31:58  nbryant
+ database-related cleanups and paranoia tests;
+ fixed a transaction-leak/deadlock problem in cdb_delete;
+ solved the SIGPIPE mystery (GDB stops on SIGPIPE is all it was)
+
+ Revision 573.106  2001/03/05 04:59:31  ajc
+ * IMAP COPY
+
+ Revision 573.105  2001/03/04 23:49:41  ajc
+ * IMAP EXPUNGE responses -should- be correct now
+
+ Revision 573.94  2001/02/20 00:02:56  ajc
+ * IMAP: implemented the STATUS command (sort of).
+
+ Revision 573.93  2001/02/19 22:24:41  ajc
+ * IMAP server: added untagged, unsolicited server messages for newly arrived
+   messages, and messages expunged by another session.
+
+ Revision 573.92  2001/02/17 05:53:35  ajc
+ * Repaired the creation of page log rooms in the wrong namespace when the
+   recipient does not yet have his/her log room created.
+ * Rewrite "EXPI messages" to run in two passes: one to gather messages to
+   purge and the next to delete them.  Works better in transactionland.
+
+ Revision 573.91  2001/02/14 08:11:27  error
+ * citadel.rc: added $Id$ (it's about time!)
+
+ Revision 573.90  2001/02/14 04:23:54  ajc
+ * Fixed POP3 server responses ending in \n instead of \r\n as they should be.
+   This was causing some clients (such as Pine) to lock up.
+
+ Revision 573.89  2001/02/13 04:06:14  ajc
+ * Worked out the remaining bugs in IMAP FETCH for the BODYSTRUCTURE and
+   BODY[n] data items.  I think.  So much protocol crud, so little time...
+
+ Revision 573.88  2001/02/13 01:18:44  ajc
+ * imap fetch
+
+ Revision 573.87  2001/02/12 04:31:34  ajc
+ * sysdep.c ig_tcp_server() - use IPPROTO_TCP instead of getprotobyname()
+
+ Revision 573.86  2001/02/08 04:45:58  ajc
+ * Fixed namespace problems resulting from the automatic namespece prefixing
+   added to create_room().  Also added the ability to specify "create a mailbox
+   but I've already supplied the namespace prefix" for situations where the
+   namespace isn't that of the logged in user.
+ * Made the POP3 server response messages slightly less humorous
+
+ Revision 573.85  2001/02/06 04:44:12  ajc
+ * Added a floor listing (complete with \NoSelect flag) to LIST and LSUB
+
+ Revision 573.84  2001/02/06 02:09:38  ajc
+ * citadel.rc: changed the default for local_screen_dimensions to 1, since
+   Internet users now outnumber dialup users 100 to 0.
+ * room_ops.c: added a really_create option to create_room().  Also moved the
+   generation of personal namespace into that function.  MODULE OWNERS PLEASE
+   CHECK YOUR CALLS TO AVOID MULTIPLE NAMESPACING!!
+ * room_ops.c: fixed a bug in cgetfloor() that left bad pointers around
+ * serv_imap.c: finished the CREATE command (finally)
+
+ Revision 573.83  2001/02/05 05:20:22  ajc
+ * Made some changes to functions which translate between Citadel room names
+   and IMAP folder names.  They're still buggy.
+
+ Revision 573.82  2001/02/04 23:17:28  ajc
+ * Implemented the IMAP CREATE command
+
+ Revision 573.81  2001/02/04 02:40:07  ajc
+ * more imap.  imap sucks.  die crispin die.
+
+ Revision 573.80  2001/02/03 10:02:12  error
+ * serv_ical.c: Verify that objects posted to My Calendar> are of type
+   text/x-calendar or text/calendar; abort saving if not
+
+ Revision 573.79  2001/02/03 09:30:46  error
+ * serv_ical.c: now creates a My Calendar> personal room, sets attributes
+
+ Revision 573.78  2001/02/03 08:21:00  error
+ * serv_ical.c and serv_ical.h added; skeleton code for now
+
+ Revision 573.77  2001/02/02 20:18:18  ajc
+ * Changed the error message in cdb_delete() to actually *say* cdb_delete
+   instead of cdb_store.  Useful to know which function failed...
+
+ Revision 573.76  2001/02/01 04:08:03  ajc
+ * IMAP minor change to mailbox name output
+ * Increased size of buffer in lprintf()
+
+ Revision 573.75  2001/01/28 09:50:02  error
+ * sysdep.c: lprintf() now generates timestamps
+
+ Revision 573.74  2001/01/28 07:35:04  error
+  * serv_bio.c: RBIO now also returns stats about a user, see session.txt
+
+ Revision 573.73  2001/01/16 04:03:13  ajc
+ * yeesh ... more on the IMAP BODYSTRUCTURE
+
+ Revision 573.72  2001/01/16 01:51:12  ajc
+ * imap bodystructure
+
+ Revision 573.71  2001/01/16 00:46:40  ajc
+ * Changed the MIME parser API *again* because we now need the ability to
+   supply callback functions to be executed before and/or after parsing a
+   multipart.  (Need this for IMAP BODYSTRUCTURE output.  Crispin sucks.)
+
+ Revision 573.70  2001/01/15 23:59:26  ajc
+ * user_ops.c: reject NULL password in CtdlTryPassword() instead of crashing
+
+ Revision 573.68  2001/01/15 20:34:04  ajc
+ * "Path:" removed for now because it confuses brain-dead Microsoft shitware
+   into thinking that mail messages are newsgroup messages instead.  When we
+   add NNTP support back into Citadel we'll have to add code to only output
+   this field when appropriate.
+
+ Revision 573.67  2001/01/15 16:30:31  ajc
+ * temporary implementation of 901 asynchronous express messages
+
+ Revision 573.66  2001/01/14 14:55:39  ajc
+ * Changed the format of <.W>holist <L>ong
+
+ Revision 573.65  2001/01/13 06:40:26  nbryant
+ merged remaining changes from TRANSACTIONS (using cvs update -j TRANSACTIONS)
+ which should now be considered closed.
+
+ Revision 573.64  2001/01/13 06:12:15  ajc
+ * Added the ASYN command
+
+ Revision 573.63  2001/01/12 22:05:46  ajc
+ * Fixed a bug that caused bogus wholist lines to be displayed when a non-aide
+   reads a list containing stealth mode sessions.
+
+ Revision 573.62  2001/01/09 05:39:45  ajc
+ * Merged in code from the TRANSACTIONS branch for testing.
+
+ Revision 573.61  2000/12/30 06:17:17  ajc
+ * Still more work on IMAP.  Damn this is tedious.
+
+ Revision 573.60  2000/12/30 04:55:05  ajc
+ * more buffer size stuff
+
+ Revision 573.59  2000/12/27 20:19:51  ajc
+ * The size constant "256" which shows up everywhere as a buffer size has now
+   been changed to SIZ.  And, SIZ has been defined now as 1024, not 256, because
+   we need 1024 byte buffers for most Internet protocols.
+
+ Revision 573.58  2000/12/27 05:09:58  ajc
+ * Added a skeleton IMAP "SEARCH" command (based on the FETCH logic)
+
+ Revision 573.57  2000/12/26 03:46:50  ajc
+ * More IMAP tweaks
+
+ Revision 573.56  2000/12/25 22:50:43  ajc
+ * Added an API function to extract and unfold specific RFC822 fields.
+ * imap-->fetch-->envelope-->in-reply-to now works
+ * More robust checking and reporting of temp file errors in the client
+
+ Revision 573.55  2000/12/25 20:43:24  ajc
+ * imap_fetch.c: added support for fetch-->envelope-->from
+
+ Revision 573.54  2000/12/20 04:09:24  ajc
+ * A few memory handling fixes to netproc.
+
+ Revision 573.53  2000/12/20 01:57:37  ajc
+ * netproc.c: added bounds check to fpgetfield()
+
+ Revision 573.52  2000/12/19 20:41:55  ajc
+ * Fixed generation of unique file names for network uploads etc.
+
+ Revision 573.51.2.11  2000/12/26 05:30:55  nbryant
+ remove extraneous transaction around dynamic module initializations. this will
+ fix the crash on database creation.
+
+ Revision 573.51.2.10  2000/12/24 23:00:58  nbryant
+ clean: also remove parsedate.c
+
+ Revision 573.51.2.9  2000/12/20 01:38:42  nbryant
+ require transactional cursors
+
+ Revision 573.51.2.8  2000/12/20 00:30:01  nbryant
+ release any stale db handles at the end of a server command
+ (unfinished transactions will be aborted to annoy lazy programmers)
+
+ Revision 573.51.2.7  2000/12/19 06:18:27  nbryant
+ set sched_yield as sleepycat's yield function. this should improve locking
+ performance.
+
+ Revision 573.51.2.6  2000/12/19 02:22:29  nbryant
+ added automatic transaction start/end on cdb_fetch, cdb_delete, and cdb_store
+
+ Revision 573.51.2.5  2000/12/18 03:51:13  nbryant
+ ditto S_USER_TRANS, S_CALLLOG, and S_HOUSEKEEPING, which are no longer used at
+ all
+
+ Revision 573.51.2.4  2000/12/18 02:49:17  nbryant
+ removed all references to S_MSGMAIN critical section; it wasn't really needed.
+ this should make things significantly more scaleable.
+
+ Revision 573.51.2.3  2000/12/17 22:12:48  nbryant
+ reworked shutdown sequence to wait for worker threads to terminate before
+ checkpointing and closing databases. it is no longer safe to call
+ master_cleanup() directly to force a shutdown; instead, just set
+ time_to_die to a nonzero value
+
+ Revision 573.51.2.2  2000/12/17 05:06:09  nbryant
+ added deadlock detection and cleaned up messages
+
+ Revision 573.51.2.1  2000/12/16 21:06:59  nbryant
+ created TRANSACTIONS branch
+ track cursor and transaction id's in thread-specific data
+
+ Revision 573.51  2000/12/14 18:36:34  ajc
+ * Fixed the "users not in chat" wholist display
+
+ Revision 573.50  2000/12/12 18:06:46  ajc
+ * Removed the transaction stuff (but left the log in).  It wasn't working.
+
+ Revision 573.49  2000/12/12 06:19:55  ajc
+ * Stabilize, dammit!!
+
+ Revision 573.48  2000/12/12 04:20:03  ajc
+ * Made the transaction open/close a global thing, in a frantic attempt to get
+   Uncensored to stop crashing.  More fixes on the way...
+
+ Revision 573.47  2000/12/11 06:08:41  ajc
+ * Removed the housekeeper thread, moved terminate_idle_sessions() out to a
+   timer event, and check_sched_shutdown() to the end of the worker thread
+   loop.  Seems to have improved reliability (but why?)
+
+ Revision 573.46  2000/12/11 03:22:11  ajc
+ * Added server-side REQT command to issue client termination requests
+
+ Revision 573.45  2000/12/11 02:19:26  ajc
+ * Client now honors EM_GO_AWAY flag, used by the server to request that a
+   client log off.  (The server doesn't support sending that flag yet, though)
+
+ Revision 573.44  2000/12/09 06:20:06  ajc
+ * A few final touches to the Sleepycat DB back-end
+
+ Revision 573.43  2000/12/08 17:06:33  ajc
+ * Wrap txn_begin and txn_end in S_DATABASE mutex
+
+ Revision 573.42  2000/12/07 20:21:39  ajc
+ * begin/end transaction in master_startup()
+
+ Revision 573.41  2000/12/07 16:59:02  nbryant
+ added --with-db and --with-gdbm options to configure
+
+ Revision 573.40  2000/12/07 04:50:33  ajc
+ * Wrap housekeeper and timer events in transaction open/close functions
+ * Checkpoint the DB as an EVT_TIMER event instead of after each session
+   (runs each minute, but actually limited by the parameters of the function)
+
+ Revision 573.39  2000/12/06 04:44:36  ajc
+ * Changed netproc to keep the use table in a flat file instead of a database
+
+ Revision 573.38  2000/12/05 05:32:58  ajc
+ * Added support for non-USA country identities in vCard and registration
+ * User edit now asks whether it should prompt to change the password
+
+ Revision 573.37  2000/12/03 04:12:21  ajc
+ * Finished (mostly) the Sleepycat DB backend ... added transaction logging
+
+ Revision 573.36  2000/11/30 03:23:17  ajc
+ * Got the Sleepycat DB back end working, by opening the databases in a non
+   shared, non threaded mode, and using Citadel's locking to serialize access.
+
+ Revision 573.35  2000/11/29 05:00:02  ajc
+ * I think the db stuff is ok, but my db library is fux0red...
+
+ Revision 573.34  2000/11/27 14:12:09  error
+ * commands.c: fixups to print_express() to make external command not print
+   extraneous stuff to the terminal and make the displayed message consistent
+
+ Revision 573.33  2000/11/27 10:41:14  error
+ * print_express(): now uses GEXP instead of old PEXP; displays timestamps
+
+ Revision 573.32  2000/11/27 10:29:59  error
+ * serv_chat.c: fix send_express_message() to include timestamps
+
+ Revision 573.31  2000/11/27 03:44:27  ajc
+ * Initial checkin of database_sleepycat.c (doesn't work yet)
+
+ Revision 573.30  2000/11/26 05:24:22  ajc
+ * msgbase.c: Added new API function CtdlOutputPreLoadedMsg(), and
+   re-implemented the existing CtdlOutputMsg() as a wrapper around it.
+ * imap_fetch.c: used the above function to do all output pre-loaded
+
+ Revision 573.29  2000/11/25 09:36:18  error
+ * Added a bit of detail to syslog entries; now shows session id attached to
+   client, hostname, and username, and time the session ended.
+
+ Revision 573.28  2000/11/25 06:17:06  ajc
+ * Minor IMAP tweaks.  It still doesn't work.  :(
+
+ Revision 573.27  2000/11/23 07:22:21  error
+ * citadel.spec: update version number
+
+ Revision 573.26  2000/11/21 11:12:56  error
+  * domain.h: changed the HP/UX compatibility code to use defines from
+    typesize.h for integers of specific bit widths (needed for Solaris, etc)
+
+ Revision 573.25  2000/11/12 04:20:49  ajc
+ * Optimized server side input of message text
+
+ Revision 573.24  2000/11/10 03:55:06  ajc
+ * Ford's Fix for Faster Functionality (save position during reply)
+
+ Revision 573.23  2000/11/09 04:48:50  ajc
+ * tools.c: striplt() strips all whitespace, not just spaces
+
+ Revision 573.22  2000/11/07 20:47:21  ajc
+ * imap_fetch.c: added a skeleton "ENVELOPE" fetch.  Currently sends NIL's.
+
+ Revision 573.21  2000/11/07 15:54:53  ajc
+ * xx FETCH n:n BODY[pn.MIME] now works
+
+ Revision 573.20  2000/11/06 05:10:01  ajc
+ * Changed the mime_parser() API (again) to allow "don't decode" mode
+
+ Revision 573.19  2000/10/29 18:11:07  ajc
+ * Start numbering top-level MIME parts as 1, 2... not 1.1, 1.2...
+
+ Revision 573.18  2000/10/28 14:14:19  error
+ * msgbase.c: eliminated most gotos; a single goto in alias() remains because
+   it actually makes sense to do it that way...
+
+ Revision 573.17  2000/10/25 21:37:09  ajc
+ * Implemented the AUTHENTICATE LOGIN command in IMAP
+
+ Revision 573.16  2000/10/25 19:20:37  ajc
+ * FETCH now works for ranges *and* sets, and with sequence numbers *and* UID's
+
+ Revision 573.15  2000/10/24 20:39:59  ajc
+ * Added RFC822, RFC822.HEADER, RFC822.SIZE, RFC822.TEXT fetch keys to IMAP
+
+ Revision 573.14  2000/10/23 20:26:51  error
+ * War on goto:  rewrote a few easy functions to eliminate unnecessary gotos
+
+ Revision 573.13  2000/10/11 23:03:44  error
+ * utilsmenu: obey $PAGER environment var, if any.  Default to more if neither
+   $PAGER nor less is available.
+
+ Revision 573.12  2000/10/11 22:55:25  error
+ * citadel.c: when ansi_color=user, enable color at login, so Lobby> posts
+   displayed at login are in color
+
+ Revision 573.11  2000/10/11 22:47:51  error
+ * domain.c: getmx() returns hostname as MX if no MX records found a la RFC 974
+
+ Revision 573.10  2000/10/10 19:18:12  ajc
+ * Added support of macros ALL, BODY, FAST, and FULL to the IMAP FETCH command
+
+ Revision 573.9  2000/10/06 03:31:55  ajc
+ * Mark Crispin is a fscking idiot.  IMAP is a convoluted mess.
+
  Revision 573.8  2000/10/05 22:23:16  ajc
  * Slowly and painfully writing IMAP support