$Log$
+Revision 1.439 2000/01/12 03:56:27 ajc
+* sysdep.c: start the housekeeping thread *after* dropping root perms.
+
+Revision 1.438 2000/01/09 19:03:16 ajc
+* Removed the fifo-based protocol downloads and replaced it with a less
+ elegant "download temporary file to client, then sx/sb/sz" because
+ downloading through a fifo was confusing some software.
+
+Revision 1.437 2000/01/08 22:19:44 ajc
+* Completed spool to outbound delivery queue (still no queue sender implemented)
+
+Revision 1.436 2000/01/08 05:00:09 ajc
+* Reworked some of the data structures to handle multiple recipients
+* Began implementation of the delivery queue
+* Added CtdlReallocUserData()
+* CtdlSaveMsg() now returns the local message ID in the database
+
+Revision 1.435 2000/01/06 03:50:34 ajc
+* Replaced citmail.c with a new one that simply SMTP-forwards to Citadel
+* Started outbound SMTP queue work
+
+Revision 1.434 1999/12/30 04:56:29 ajc
+* Got initial SMTP delivery working in a very specific situation (delivery
+ to a single, local user)
+
+Revision 1.433 1999/12/29 04:44:00 ajc
+* client_chat.c: display "No message sent" if a send page is aborted.
+ Closes bug #2 in bugzilla.
+
+Revision 1.432 1999/12/26 21:50:07 ajc
+* serv_vcard: don't run hooks when not logged in (such as in SMTP sessions)
+* serv_pop3: added. This is the skeleton for a module implementing POP3.
+
+Revision 1.431 1999/12/23 04:46:23 ajc
+* "Finished" initial hack of RFC822 import
+
+Revision 1.430 1999/12/22 04:46:34 ajc
+* Fixed up the "Date:" headers to be RFC822-compliant
+
+Revision 1.429 1999/12/13 05:30:57 ajc
+* Removed our naive 'conv_date()' RFC822-to-unixtime conversion function
+ and replaced it with the public domain 'parsedate()' function from UseNet
+
+Revision 1.428 1999/12/10 23:58:25 ajc
+* internet_addressing.c: added. (Internet address to Citadel mapping)
+
+Revision 1.427 1999/12/10 21:34:19 ajc
+* serv_smtp: implemented RFC821 "VRFY" and "EXPN" commands
+
+Revision 1.426 1999/12/09 05:01:14 ajc
+* Split cmd_user() and cmd_pass() into frontend/backend functions
+* serv_smtp: implemented AUTH LOGIN for client authentication
+
+Revision 1.425 1999/12/09 00:22:58 ajc
+* Finished the "arbitrary service" registration.
+* Eliminated "special" master socket for Citadel protocol - just register it
+ like any other protocol.
+* Began initial implementation of native SMTP service.
+
+Revision 1.424 1999/12/08 18:09:10 ajc
+* Added CtdlRegisterServiceHook() and its data type, for implementing arbitrary
+ TCP-based services directly in the Citadel server. Not finished yet.
+
+Revision 1.423 1999/11/29 17:39:07 nbryant
+* citserver.c: Solaris lacks inet_aton; use inet_addr instead
+
+Revision 1.422 1999/11/29 17:26:15 nbryant
+* citserver.c: include <sys/types.h>; may help portability to Solaris
+
+Revision 1.421 1999/11/22 00:27:42 ajc
+* Added some temporary variables to OpenCmdResult(). Hopefully fixes
+ bug #14 when running on FreeBSD.
+
+Revision 1.420 1999/11/21 18:30:16 ajc
+* Protected cmd_move() from buffer overrun (no longer crashes the server)
+* cmd_chat() -- truncate input at 100 characters to prevent buffer overruns.
+ Also handle broken client sockets properly. (Thanks to DME for bug report)
+
+Revision 1.419 1999/11/19 01:57:40 ajc
+* Fixed a *serious* memory leak in the database function wrappers.
+* Updated version number to 5.60 -- run setup when installing this version.
+
+Revision 1.418 1999/11/18 03:29:20 ajc
+* Changed the order of parameters in <.A>ide <S>ystem config into a more
+ logical grouping.
+
+Revision 1.417 1999/11/18 02:31:50 ajc
+* Updated some of the documentation
+* Brought the internal version number up to 5.60
+
+Revision 1.416 1999/11/17 04:15:05 ajc
+* Removed the session_count() function. Instead, keep a reference count
+ updated when sessions begin and end.
+* Replaced fixed number of worker threads with lower and upper limits; current
+ code now tries to make thread count == session count, within these limits
+
+Revision 1.415 1999/11/15 03:17:39 ajc
+* Put lockfile in /tmp instead of in /var/lock. The latter is not guaranteed
+ to exist, nor is it guaranteed to be writable by BBSUID
+ (Resolves bug #11 from the Bugzilla repository)
+
+Revision 1.414 1999/11/15 03:07:24 ajc
+* Fixed the network-wide vCard purge logic so that it (1) actually works,
+ and (2) forces a netproc run immediately when a purge is entered
+
+Revision 1.413 1999/11/09 21:20:44 nbryant
+* configure.in: include <sys/types.h> when doing checks which require <utmp.h>
+ (should fix Bug #10 on FreeBSD)
+
+Revision 1.412 1999/11/05 03:53:47 ajc
+* Issue 'cancel' messages for vCard when a user is deleted.
+* Try to delete 'cancel' messages locally after they've been distributed.
+
+Revision 1.411 1999/11/03 04:01:20 ajc
+* Fixed buffer overrun problems in cmd_rchg(), cmd_hchg(), and cmd_uchg()
+* Removed my email address as the feedback content from the docs; replaced
+ it with a reference to the Citadel/UX web site.
+
+Revision 1.410 1999/11/02 19:51:23 ajc
+* Fixed timeout problem for remote client sessions (all timeouts were set to
+ 1 second ... probably a temporary hack that was missed in the cleanup)
+
+Revision 1.409 1999/11/02 03:03:27 ajc
+* Several fixes to msgbase.c and netproc.c to prevent corrupted incoming
+ network traffic from crashing the server. Reject bad messages.
+
+Revision 1.408 1999/11/01 04:21:34 ajc
+* Fixed a concurrency bug which crashed the server when multiple sessions
+ terminated simultaneously.
+
+Revision 1.407 1999/11/01 00:54:02 ajc
+* CtdlFetchMessage() - generate a "<no text>" message body if there's none
+ on disk. Too much stuff goes haywire if there's no M field.
+
+Revision 1.406 1999/10/31 18:17:17 ajc
+* Fixed buffer overrun in cmd_rchg()
+* Call master_cleanup() when time_to_die==1 for proper shutdown
+
+Revision 1.405 1999/10/31 16:26:55 ajc
+* Fixed incorrect assignment of new session ID's
+
+Revision 1.404 1999/10/31 04:17:17 ajc
+* Fixed a bug which was crashing the server during very long message entry.
+
+Revision 1.403 1999/10/29 01:48:45 ajc
+* database.c: Removed arbitrary limit on maximum number of sessions
+
+Revision 1.402 1999/10/29 01:03:03 ajc
+* Debugged all possible ways for a session to terminate; do them cleanly.
+* Assign session numbers in a more portable and less arbitrary way.
+
+Revision 1.401 1999/10/28 19:50:55 ajc
+* Fixed a problem where the client protocol would spit out two responses
+ and therefore get out of sync if ASUP command set the access level to
+ 0 and therefore deleted the user (thanks to Eric McDonald)
+
+Revision 1.400 1999/10/28 05:08:49 ajc
+* Removed all of the thread cancellation cruft that is no longer necessary
+* Moved the now non-system-dependent RemoveContext() out of sysdep.c (now
+ it's part of cleanup() in citserver.c)
+* Removed all references to pthread_* from all modules except sysdep.c
+
+Revision 1.399 1999/10/28 03:20:17 ajc
+* Fixed the problem of worker threads waking up prematurely.
+* 'QUIT'-terminated sessions now exit properly.
+
+Revision 1.398 1999/10/27 04:26:58 ajc
+* Initial hack of worker-thread rearchitecture. Right now it is successfully
+ dispatching worker threads to active client sockets (and to the master
+ socket too, of course). Removing sessions is currently broken.
+
+Revision 1.397 1999/10/26 20:20:29 ajc
+* Removed the auto-reconnect stuff... it was locking the client in an active
+ loop more often than it was reconnecting.
+
+Revision 1.396 1999/10/26 13:59:11 ajc
+damn bugs
+
+Revision 1.395 1999/10/26 03:48:39 ajc
+* Shuffled around the order of events when a thread is terminating. All
+ mutex operations now happen prior to the freeing of the CitContext structure,
+ otherwise begin_critical_section() and end_critical_section() try to
+ manipulate the context's mutex count when there isn't any context.
+
+Revision 1.394 1999/10/26 03:21:16 ajc
+* Changed a lot of strncpy() calls to safestrncpy() and replaced most of their
+ hardcoded size arguments with 'sizeof' based arguments.
+
+Revision 1.393 1999/10/24 19:22:51 nbryant
+ * Makefile.in, configure.in: added --enable-icq flag; made checks for
+ authentication libraries more intelligent.
+
+Revision 1.392 1999/10/23 03:39:12 ajc
+* Finished moving vCard functionality to the new message base functions.
+
+Revision 1.391 1999/10/21 00:50:14 ajc
+* Finished up the flags and replication checks in CtdlSaveMsgPointerInRoom().
+
+Revision 1.390 1999/10/20 16:46:27 ajc
+* More code shuffle. Added some flags to CtdlSaveMessagePointerInRoom() and
+ enabled the MOVE command to also do a "copy" operation (actually just
+ creates a second link and bumps the ref count). Implemented "<C>opy" in
+ the client.
+
+Revision 1.389 1999/10/20 16:07:48 ajc
+* Wholist fixes for users who are in chat mode
+
+Revision 1.388 1999/10/20 03:42:29 ajc
+* In the wholist, only show <private room> if the user viewing the list
+ doesn't know that room. Otherwise show the name.
+
+Revision 1.387 1999/10/20 02:59:22 ajc
+* Code reorganization. Making it easier to move/copy messages without
+ duplicating existing code.
+
+Revision 1.386 1999/10/17 02:25:18 ajc
+* Discovered a huge design flaw in the replication algorithm. Ripped it
+ out and replaced it with something a bit more robust.
+
+Revision 1.385 1999/10/16 05:30:17 ajc
+* Changes to message replication code. Don't do server-side hooks during
+ an ENT3 command. Also fixed a bug in cmd_whok() that caused crashes
+ after a file format change.
+
+Revision 1.384 1999/10/14 03:04:16 ajc
+* Finished the netproc side of Z (zap/supersede) processing for replication
+
+Revision 1.383 1999/10/13 04:24:18 ajc
+* Added search-by-header-fields to CtdlForEachMessage(), and then to the
+ server MSGS command. This will have lots of uses.
+
+Revision 1.382 1999/10/13 01:36:39 ajc
+* Starting some work on network zap (supersede) mode for replication
+
+Revision 1.381 1999/10/08 02:55:57 ajc
+* More vCard-related debugging
+
+Revision 1.380 1999/10/07 02:58:46 ajc
+* Semi-broken vCard replacement implementation in place.
+* Added "Z" (Zap, supersede) field to message format
+
+Revision 1.377 1999/10/04 03:19:52 ajc
+* We now have a housekeeping thread and a housekeeping queue.
+
+Revision 1.376 1999/10/03 21:48:21 ajc
+* Added serv_upgrade.h to automagically convert pre-5.55 format user records
+ to 5.55 format user records and generate vCards.
+
+Revision 1.375 1999/09/29 21:13:17 ajc
+* CtdlWriteObject() can now store objects in personal rooms for any specified
+ user -- rather than only the current user or non-personal rooms.
+
+Revision 1.374 1999/09/29 17:26:56 ajc
+* serv_vcard.c: fixed crashola bug in cmd_greg()
+* tools.c: simplified and improved the string tokenizer. Now it runs in a
+ single pass with no intermediate buffer.
+
+Revision 1.373 1999/09/28 03:27:37 ajc
+* Fully migrated cmd_greg() and cmd_regi() into serv_vcard (still has bugs)
+
+Revision 1.372 1999/09/27 03:33:40 ajc
+* cmd_regi() is now in serv_vcard and writes to the vcard instead of to the
+ usersupp file. Still needs tweaking.
+
+Revision 1.371 1999/09/24 03:32:19 ajc
+* "read my vCard" and "write my vCard" are written and tested.
+
+Revision 1.370 1999/09/24 02:54:17 ajc
+* Worked a little more on the vCard stuff. The serv_vcard module is now in
+ place, and a "read my vcard" function is there; "write my" is next...
+
+Revision 1.369 1999/09/23 03:07:56 ajc
+* The vCard 'class' is now linked into the server, though it's not really
+ functional yet. Its constructors/destructors are debugged, though.
+
+Revision 1.368 1999/09/19 21:28:33 ajc
+* Finished off the message architecture stuff with a new class of hooks to
+ enable future server-side handlers.
+
+Revision 1.367 1999/09/19 15:57:06 ajc
+* migrated cmd_ent3() to CtdlSaveMessage()
+
+Revision 1.366 1999/09/19 05:13:57 ajc
+* Debugged the new version of CtdlWriteObject()
+
+Revision 1.365 1999/09/16 03:23:23 ajc
+* Did most of the migration from save_message() to CtdlSaveMsg(). The
+ latter builds a "struct CtdlMessage" (so we can run server-side handlers
+ against it later on), then serializes it and stores to disk.
+* BROKEN BUILD ALERT!! cmd_ent3() and CtdlWriteObject() are still not
+ migrated. They are stubbed out and will MALFUNCTION if used right now!!
+
+Revision 1.364 1999/09/07 01:42:42 ajc
+* cmd_msg3() now uses serialize_message() for its output. All message
+ commands will eventually exist as a "struct CtdlMessage" at some point
+ so that we can install server-side handler hooks.
+
+Revision 1.363 1999/09/07 00:04:13 ajc
+* netproc.c: put outgoing messages into the use table, too -- this prevents
+ locally originated messages from showing up again if a remote system is
+ misconfigured and spools them back to us.
+
+Revision 1.362 1999/09/06 03:39:15 ajc
+* citadel.c: run strproc() on new passwords
+
+Revision 1.361 1999/09/03 17:50:26 playcow
+For URL view, don't prompt user to select url if there is only one. Display
+<U>RL View prompt if message contains url(s). -Ben
+
+Revision 1.360 1999/09/02 02:09:59 ajc
+* msgbase.c: new function serialize_message() for future use
+
+Revision 1.359 1999/09/01 21:09:25 ajc
+* database.c: display the GDBM version string on startup
+
+Revision 1.358 1999/09/01 02:36:34 ajc
+* Actually _enforce_ the max msg len limit
+
+Revision 1.357 1999/09/01 01:51:48 ajc
+* Added the ability to handle embedded URL's from the text client
+
+Revision 1.356 1999/09/01 01:02:47 ajc
+* Implemented "maximum message length" in global system config
+
+Revision 1.355 1999/08/31 00:57:17 ajc
+* Handle multipart/alternative properly during legacy message outputs.
+ Basically it just prints the first alternative and skips the rest.
+
+Revision 1.354 1999/08/29 21:12:24 ajc
+* Made some changes to the output of MIME (especially multipart) messages.
+
+Revision 1.353 1999/08/29 19:56:43 ajc
+* HTML updates
+
+Revision 1.352 1999/08/24 02:01:03 ajc
+* html.c: added. This is an overly simplistic HTML-to-text converter.
+
+Revision 1.351 1999/08/21 18:37:29 ajc
+* Minor cosmetic cleanup. No code changes.
+
+Revision 1.350 1999/08/21 05:15:34 ajc
+* mailinglist.c, netmailer.c: fixed to allow list submissions from all posters
+ on a Citadel network rather than only on the local system.
+
+Revision 1.349 1999/08/08 00:25:45 ajc
+* Made one more byte available in locate_host() and in all the structs which
+ its output gets written to (client can display 24 positions but we were only
+ saving 23).
+
+Revision 1.348 1999/08/07 16:34:38 nbryant
+* serv_icq.c: warning fixes
+
+Revision 1.347 1999/08/06 02:57:26 ajc
+* locate_host.c: use strdoop() and phree() instead of strdup() and free()
+* serv_icq.c: run learned IP's through Citadel's locate_host() & put in Wholist
+
+Revision 1.346 1999/08/05 17:58:59 ajc
+* RWHO command now returns express message code in postion 3
+
+Revision 1.345 1999/08/04 02:21:45 ajc
+* Fixed some bugs in the ICQ metaclient, and documented the new protocol cmds
+
+Revision 1.344 1999/08/03 11:34:35 ajc
+* Added client_icq.c and client_icq.h
+
+Revision 1.343 1999/08/03 03:14:51 ajc
+* Wrote the client side of the ICQ gateway. Now on to other projects. :)
+
+Revision 1.342 1999/08/03 01:52:06 ajc
+* Redesigned the client protocol commands for dealing with ICQ
+* Implemented page function priority ordering to prevent pages from being
+ simultaneously delivered over multiple IM systems
+* Migrated serv_icq.* into the Makefile
+
Revision 1.341 1999/08/01 21:36:30 ajc
* EXTREME coolness. The server side of the ICQ metaclient is now working.
It is set up using ICQL and ICQA commands, it automatically logs the user
Fri Jul 10 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
* Initial CVS import
+