$Log$
+ Revision 621.14 2004/06/15 20:42:42 ajc
+ * Store the body of any large (>1K) message in a separate database. This
+ will allow fast headers-only retrieval later.
+
+ Revision 621.13 2004/06/15 03:05:01 ajc
+ * Bumped internal version number to 6.22
+ * Added a new faster headers-only mode that excludes enumeration of
+ MIME parts.
+
+ Revision 621.12 2004/06/14 19:09:26 ajc
+ * serv_vandelay.c: re-inserted a missing line of code for setting tempfile
+ names, which was causing exports to crash.
+
+ Revision 621.11 2004/06/11 01:26:02 ajc
+ * Optimized the scheduler some more. The S_I_WANNA_SELECT mutex now
+ wraps only the select() call itself.
+
+ Revision 621.10 2004/06/09 03:54:07 ajc
+ * The scheduler can now "wake up" a session to deliver async messages.
+ * Renumbered the "instant msgs waiting" message and changed its usage
+
+ Revision 621.9 2004/06/07 22:12:19 ajc
+ * Removed network/filterlist network/mailinglists network/rnews.xref
+ because none of these are used anymore.
+
+ Revision 621.8 2004/06/07 16:41:28 ajc
+ * Changed "express message" to "instant message" everywhere in the code
+ and documentation, to reflect the now industry-standard terminology for
+ this function. (Obviously, the server command names have not changed,
+ because that would break everything.)
+
+ Revision 621.7 2004/06/06 22:30:10 ajc
+ * New session scheduler. All sessions which select() marks for activity
+ are now handled before select() is called again.
+
+ Revision 621.6 2004/06/03 02:49:14 ajc
+ * html.c: allow parsing of tags even when they're qualified
+ (i.e. <TAG foo=bar> instead of just <TAG> )
+ * html.c: handle escaped decimal characters (such as ' for an apostrophe)
+
+ Revision 621.5 2004/06/03 02:28:16 ajc
+ * citadel_ipc.c: SETR command was missing defaultview and flags2. Added.
+
+ Revision 621.4 2004/05/31 15:19:14 ajc
+ * Reworked the security checks for move/copy commands. Theoretically it's
+ performing all the same checks, but the code is far more readable.
+
+ Revision 621.3 2004/05/26 18:13:15 nbryant
+ * stress.c: silence warning
+
+ Revision 621.2 2004/05/26 16:53:31 nbryant
+ * configure.ac: check for /usr/local/BerkeleyDB.4.2
+
+ Revision 621.1 2004/05/24 01:59:16 ajc
+ * serv_network.c: when processing incoming IGnet spool, give the <C> field
+ priority over the <R> field. This allows messages emailed to a network
+ room to be shared properly instead of attempting to deliver via email a
+ second time.
+
+ Revision 621.0 2004/05/21 01:58:16 ajc
+ * THIS IS 6.21
+
+ Revision 620.35 2004/05/20 16:14:08 ajc
+ * Changed internal version number to 6.21
+ * Added missing VIEW_* defines in citadel.h (they're used only by WebCit
+ for now, which is why Citadel didn't need them, but they should be there
+ anyway for completeness)
+ * Removed the last vestiges of the built-in spam filter. It had been
+ commented out, but it's definitely never coming back now, so away it goes.
+ * Updated some of the docs
+
+ Revision 620.34 2004/05/15 14:19:52 error
+ * Scheduler: when next_session is to be deleted, make it point to some
+ other session which isn't being deleted (or NULL if there aren't any).
+
+ Revision 620.33 2004/05/14 03:09:54 ajc
+ * When a session kills itself (for example, due to a broken socket),
+ force the dead_session_purge() to run immediately. This avoids
+ thousands of error messages for up to the next five seconds while it
+ waits for the next purge.
+ * For the main select() loop, we can now recover from EBADF by jumping
+ back to the code that scans for valid descriptors. (Yeah, I used a
+ goto. It's more readable that way, so STFU if you have a problem with
+ it.)
+
+ Revision 620.32 2004/05/11 15:21:45 nbryant
+ * configure.ac: check for <sys/prctl.h>
+ * server_main.c: call prctl(PR_SET_DUMPABLE, 1) if we are dropping root
+ permissions.
+ * sysdep.c: no longer call setrlimit(RLIMIT_CORE, ...); this can be handled
+ from a shell script.
+
+ Revision 620.31 2004/05/10 01:47:11 error
+ * messages.c: Fix crash when trying to use m<Y> next
+
+ Revision 620.30 2004/05/07 20:27:46 ajc
+ # citadel-openldap.schema: updated to include RFC2739 objects & attributes
+
+ Revision 620.29 2004/05/07 19:31:40 ajc
+ * More RFC2739 compliance: when converting vCard to LDAP, include
+ the calFBURL attribute.
+
+ Revision 620.28 2004/05/07 19:09:07 ajc
+ * Implemented partial RFC2739 compliance (calendar free/busy URL in vCard).
+ Still need to add it to LDAP.
+
+ Revision 620.27 2004/05/07 18:17:26 ajc
+ * Scrawled some notes in roadmap.txt
+
+ Revision 620.26 2004/05/06 03:38:26 ajc
+ * Never reduce the size of the thread pool, only increase it (still
+ observing the max ceiling, of course)
+ * Don't explicitly call RemoveContext() when a session exits. The
+ subsequent call to dead_session_purge() will handle it.
+
+ Revision 620.25 2004/05/03 00:12:27 ajc
+ * Found and removed a bug that caused network rooms to be un-shared with
+ all nodes instead of only with nodes that no longer exist.
+ * New target "make upgrade" (to be consistent with other projects)
+
+ Revision 620.24 2004/04/29 02:37:58 ajc
+ * Updated the roadmap
+
+ Revision 620.23 2004/04/26 15:11:17 ajc
+ * Enable core dumps regardless of system ulimit setting
+ (maybe temporary until we fix BOOM)
+
+ Revision 620.22 2004/04/23 17:27:50 ajc
+ * user_ops.c: do not attempt to save the loaded user record into the
+ supplied buffer, when the supplied buffer is NULL. (This calling
+ syntax is used to check for the existence of a user without storing it.)
+
+ Revision 620.21 2004/04/21 03:44:50 ajc
+ * serv_crypto.c: small fix to make self-signed certs no longer invalid
+
+ Revision 620.20 2004/04/21 03:00:06 ajc
+ * Replace ctdl_install_certificate() with convenience functions found
+ in the OpenSSL library.
+
+ Revision 620.19 2004/04/20 02:42:54 ajc
+ * techdoc/binaries.txt : updated, now includes WebCit instructions
+ * setup.c: detect when setup is run from within the Citadel/UX Ridiculously
+ Easy Installer and skip the directory prompt; the installer sets it.
+
+ Revision 620.18 2004/04/14 18:43:51 nbryant
+ * citadel.spec: BuildRequire redhat-rpm-config
+
+ Revision 620.17 2004/04/14 16:16:47 nbryant
+ * citadel.spec: don't BuildRequire newt-devel
+
+ Revision 620.16 2004/04/14 03:42:01 ajc
+ * ICAL FREEBUSY output now includes ORGANIZER, DTSTART, and DTEND fields.
+ (Required for Kolab compatibility.)
+
+ Revision 620.15 2004/04/13 23:53:00 nbryant
+ * citadel.spec: BuildRequire bison
+
+ Revision 620.14 2004/04/13 22:44:35 nbryant
+ * citadel.spec: commented out Icon line and the openldap-servers dependency.
+ * citadel.spec: added several BuildRequires. Some of these are, strictly
+ speaking, compile time options, but the goal is to document the runtime
+ dependencies and make sure our RPM's are always built consistently.
+
+ Revision 620.13 2004/04/13 21:09:20 error
+ * citadel.spec: Updated for 6.20p1
+
+ Revision 620.12 2004/04/13 18:31:40 ajc
+ * serv_calendar.c: ICAL FREEBUSY command now tries the supplied name not
+ only as a screen name, but as an email address, and then as an
+ unqualified email address in every hosted domain. (For Kolab compat)
+
+ Revision 620.11 2004/04/13 02:45:07 ajc
+ * Don't display the "Ending SSL/TLS" log message unless TLS is actually present
+
+ Revision 620.10 2004/04/12 20:51:40 error
+ * citadel.lsm: Update LSM for 6.20p1; uploaded to ibiblio.org
+
+ Revision 620.9 2004/04/09 23:11:01 error
+ * serv_chat.c: Differentiate when a user does not exist when paging users.
+
+ Revision 620.8 2004/04/09 23:05:52 error
+ * user_ops.c: fix unused variable compiler warnings
+
+ Revision 620.7 2004/04/03 15:42:35 ajc
+ * stress.c: include <stdlib.h> in order to get RAND_MAX
+ (Submitted by Thomas.Lotterer@cw.com, Cable & Wireless / OpenPKG)
+
+ Revision 620.6 2004/04/01 04:41:55 ajc
+ * Put some blankety-blank values in the default generated vCard so it's
+ more acceptable to LDAP conversion
+
+ Revision 620.5 2004/03/31 02:19:09 ajc
+ * Change the IMAP folder delimiter from "|" to "/" because more than a few
+ client programs don't follow RFC2060 strictly enough to work with
+ non-"/" delimiters. Actual slashes in room names appear as "|" in IMAP.
+
+ Revision 620.4 2004/03/30 03:11:07 ajc
+ * control.c: when config.c_maxsessions is unset or negative, set it to 0
+ instead of setting it to 1 when it is 0 or negative. The default should
+ be unlimited sessions.
+
+ Revision 620.3 2004/03/29 16:05:02 ajc
+ * begin_critical_section() -- bypass transaction checking for S_FLOORCACHE
+ sections, to avoid crashing the db layer
+
+ Revision 620.2 2004/03/29 02:33:19 error
+ * citadel.spec: major modifications for 6.xx (hasn't been updated since 5.xx)
+
+ Revision 620.1 2004/03/27 23:04:59 error
+ * citadel.lsm: update version number, sending to ibiblio
+
+ Revision 620.0 2004/03/27 02:33:26 ajc
+ * THIS IS 6.20
+
+ Revision 614.105 2004/03/27 02:33:10 ajc
+ * Bumped the version number to 6.20
+ * Corrected session.txt writeup for CONF command (three of the five LDAP
+ related fields were missing)
+ * Updated the roadmap documentation slightly
+
+ Revision 614.104 2004/03/27 02:21:30 ajc
+ * Completed documenting the LDAP Connector
+
+ Revision 614.103 2004/03/26 05:41:25 ajc
+ * Began writing up the LDAP Connector for Citadel in the documentation
+
+ Revision 614.102 2004/03/26 05:40:47 ajc
+ *** empty log message ***
+
+ Revision 614.101 2004/03/26 05:13:15 ajc
+ * citadel-slapd.conf: comment out the reference to the Citadel schema
+ and add "schemacheck off" to make it easier to get started with the
+ Citadel LDAP connector. Also made the backend in the sample conf
+ ldbm instead of bdb, because that's what RH9 ships with.
+
+ Revision 614.100 2004/03/24 21:23:50 ajc
+ * msgbase.c: repaired a memory leak
+
+ Revision 614.99 2004/03/24 17:07:11 ajc
+ * Put a new memory leak checker into the server because it turns out that
+ the third-party ones all suck. :) This one doesn't involve renaming
+ all of the malloc() related functions, though.
+
+ Revision 614.98 2004/03/24 15:04:06 ajc
+ * stress.c: fix "wrong password" race condition by giving the very
+ first worker thread time to finish creating the user account before the
+ other threads start using it. (Ok, I fixed it by creating a different
+ race condition, but if your Citadel takes more than three seconds to
+ create an account, your problems can't be fixed with the stress tester.)
+
+ Revision 614.97 2004/03/24 03:46:40 ajc
+ * Reorg header stuff to make it more compatible with leak checkers
+
+ Revision 614.96 2004/03/24 03:25:19 ajc
+ * Removed the built-in memory leak checker. It wasn't threadsafe and
+ there now exist third-party utilities that do this job better.
+
+ Revision 614.95 2004/03/24 02:59:19 ajc
+ * After initializing the database, chown and chmod all files in the data/
+ directory correctly to avoid EPERM errors later on when we drop root privs
+
+ Revision 614.94 2004/03/22 19:37:28 error
+ * sysdep.c: worker_thread(): Make scheduling a little more fair to higher
+ sessions
+ * sysdep.c: lprintf(): Enable microsecond display in trace file
+ * stress.c: worker(): Sleep for random amount of time as per specification
+
+ Revision 614.93 2004/03/21 22:51:54 error
+ * Fix a few remaining lprintf(9, ...) to lprintf(CTDL_DEBUG, ...)
+
+ Revision 614.92 2004/03/21 22:35:20 error
+ * stress.c: Wait before posting instead of after posting.
+
+ Revision 614.91 2004/03/21 22:34:41 error
+ * database_sleepycat.c: emit a panic message when Berkeley DB wants us to
+ run recovery; should provide a little more detail on the actual error
+
+ Revision 614.90 2004/03/21 22:32:24 ajc
+ * room_ops.c: increased the thread safety of cgetfloor()
+ * housekeeping.c: check floor reference counts in two passes instead of
+ trying to manipulate multiple tables in O^2
+
+ Revision 614.89 2004/03/21 17:14:46 error
+ * stress.c: Fixed. Now properly spawns threads and stresses out your
+ favorite Citadel server by simulating large numbers of really active
+ users. (It's configurable on the command line, too, to vary the stress
+ level.) Don't use it against a production system! You've been warned!
+
+ Revision 614.88 2004/03/21 17:13:15 error
+ * configure.ac: Fix for defines for pthreads not being included properly
+
+ Revision 614.87 2004/03/21 06:15:06 ajc
+ * docs/citadel.html: documented TLS support and administration procedures
+
+ Revision 614.86 2004/03/20 22:32:06 ajc
+ * citadel.rc: changed the comments around local_screen_dimensions= to
+ reflect its legacy type of situation
+
+ Revision 614.85 2004/03/16 22:44:15 ajc
+ * Better conversion of friendly name to fully qualified vcard name
+
+ Revision 614.84 2004/03/16 21:09:37 ajc
+ * Eliminate EVT_OUTPUTMSG server extensions (don't need them anymore)
+ * Add EVT_NEWUSER server extensions
+ * EVT_NEWUSER and EVT_PURGEUSER server extensions now specify a
+ struct ctdluser * instead of a username and usernum
+ * serv_vcard.c: automatically create and submit a skeleton vCard when
+ a new user is created.
+
+ Revision 614.83 2004/03/16 19:05:50 error
+ * Further changes to stress.c, Makefile.in to build it, .cvsignore
+ (but it's still broken)
+
+ Revision 614.82 2004/03/15 18:11:34 error
+ * stress.c: various fixed/improvements (but it still isn't working)
+
+ Revision 614.81 2004/03/15 17:22:14 error
+ * First draft of the stress tester. Isn't quite ready (it needs to be
+ tested itself!).
+
+ Revision 614.80 2004/03/15 16:48:22 error
+ * Documentation update: update citadel.html for new syslog logging
+
+ Revision 614.79 2004/03/15 16:47:04 error
+ * msgbase.c: cmd_move(): Fix the security logic for non-aides trying to
+ move or copy messages. The logic should do the following:
+ * Allow move/copy for Aides
+ * Allow regular users to:
+ * Move a message between two personal rooms
+ * Copy a message from a Personal room to a room the user is subscribed to
+ * Copy a message from a room the user is subscribed to, to a personal room
+ * Prohibit other moves/copies
+
+ Revision 614.78 2004/03/15 16:39:27 error
+ * Multiple files: Set permissions on existing Citadel directories to prevent
+ access to the database by local unix users to prevent direct database reads.
+
+ Revision 614.77 2004/03/15 16:36:50 error
+ * Multiple files: Convert most remaining client code to use new Citadel IPC
+ functions. A few bits remain and will be converted when the chat system
+ is rewritten.
+
+ Revision 614.76 2004/03/14 06:35:46 ajc
+ * Cache IMAP "BODY" fetches in an already-converted format. This speeds
+ up clients like Mozilla and Thunderbird that request big messages in
+ chunks -- we don't have to load and convert the message every time
+ another chunk is requested.
+ * Fixed a potential memory leak in fetch
+
+ Revision 614.75 2004/03/13 23:26:10 ajc
+ * imap_fetch.c: don't fetch the message from disk at all for UID and FLAGS
+ fetch items. (It's rare, but sometimes IMAP optimizations are actually
+ possible, despite Mark DIE DIE DIE Crispin's brain-dead design!)
+
+ Revision 614.74 2004/03/13 22:52:05 ajc
+ * Documented the GNET and SNET commands :)
+
+ Revision 614.73 2004/03/12 19:35:13 error
+ * routines2.c: Fix two typos
+
+ Revision 614.72 2004/03/12 19:32:09 error
+ * routines2.c: Convert multiple functions to use new IPC code (almost done!)
+
+ Revision 614.71 2004/03/12 19:30:06 error
+ * citadel.c: main(): Fix error response for RCHG, HCHG and UCHG commands.
+
+ Revision 614.70 2004/03/12 19:28:04 error
+ * Implement GNET/SNET commands in IPC code; provide a CtdlIPC_delete();
+ emit warnings when client code uses CtdlIPC_getline() or CtdlIPC_putline()
+ (These are reserved and should not be used by client code.)
+
Revision 614.69 2004/03/10 04:50:04 ajc
* serv_expire.c: auto-purge any Citadel account that is associated with
a Unix account that no longer exists.