- $Log$
+ Revision 647.20 2005/05/23 19:26:04 ajc
+ * Move the location of the "enable full text index" configuration item to
+ a new location. Reusing an old location was a stupid idea because old
+ clients can inadvertently switch it on.
+
+ Revision 647.19 2005/05/23 14:07:39 ajc
+ * serv_imap.c: improve SELECT time by fetching the msglist directly out of
+ the database instead of doing a CtdlForEachMessage() loop.
+
+ Revision 647.18 2005/05/22 16:12:25 ajc
+ * Full text indexer is now switchable on/off
+
+ Revision 647.17 2005/05/20 20:02:50 ajc
+ * The IGnet map is now rewritten to disk only when it changes.
+ * When processing inbound network spool, ignore "." and ".." instead of
+ failing on them.
+
+ Revision 647.16 2005/05/20 16:22:33 ajc
+ Fixed some errors in the ChangeLog
+
+ Revision 647.15 2005/05/20 16:14:43 ajc
+ * Dramatically improved the time it takes to goto (or select) a room which
+ contains a very long and complex seen/unseen list. Our test folder,
+ containing 359 new of 3162 messages, formerly took 22 seconds to select;
+ now it takes 1 to 2 seconds.
+
+ Revision 647.14 2005/05/20 02:37:17 ajc
+ * Performance-optimized the full text indexer.
+
+ Revision 647.13 2005/05/20 01:20:24 ajc
+ * Cull logs immediately after a successful db checkpoint instead of only
+ once every 24 hours. During big db write operations (such as building
+ the full text index) they were just piling up too much.
+
+ Revision 647.12 2005/05/19 21:10:03 ajc
+ * Altered the full text indexer to output messages as text before running
+ through the wordbreaker. This prevents the inclusion of encoded base64
+ strings in the index, and also allows legitimate text encoded inside
+ base64 to be decoded and then indexed.
+
+ Revision 647.11 2005/05/19 03:42:29 ajc
+ * Bound the full text index to IMAP search
+
+ Revision 647.10 2005/05/18 22:09:01 ajc
+ * Finished the indexer *and* deindexer! The search API is now working
+ flawlessly too. Now all we have to do is glue it to IMAP and other
+ user-facing functionality. (The SRCH command is for testing only.)
+
+ Revision 647.9 2005/05/18 04:02:54 ajc
+ * Completed the "search for all of these words" functionality. All we need
+ to do now is generalize its calling syntax so it can be called from the
+ IMAP service.
+
+ Revision 647.8 2005/05/18 03:22:27 ajc
+ * Finished the indexer and the first part of the search function...
+
+ Revision 647.7 2005/05/17 20:36:48 ajc
+ * Indexer is completed; also began work on the search function itself.
+ Still need to add de-indexing so deleted messages are removed from index.
+
+ Revision 647.6 2005/05/17 16:25:23 ajc
+ * Completed the wordbreaker for the full text indexer.
+
+ Revision 647.5 2005/05/17 04:04:46 ajc
+ * Began some glue code for the full text indexer.
+
+ Revision 647.4 2005/05/16 20:03:33 ajc
+ * definition of struct CitControl moved from citadel.h to server.h
+
+ Revision 647.3 2005/05/16 18:48:45 ajc
+ * Don't prompt the user for screen dimensions anymore. Nobody is using
+ dialup terminals with arbitrary screen sizes anymore; nearly everyone (or
+ more likely, *absolutely* everyone) is now using networked displays which
+ can be automatically queried for their screen dimensions. For now, we'll
+ keep the screen size properties in the database and in the protocol, but
+ the prompts have been commented out.
+
+ Revision 647.2 2005/05/16 18:25:56 ajc
+ * Avoid re-creating the default-named baseroom (Lobby) upon subsequent
+ startups after it's been renamed to something else.
+
+ Revision 647.1 2005/05/16 16:59:39 ajc
+ * Default expire policy is now 'manual' (no automatic expiry of messages
+ under any circumstances). Implemented as per David Given's suggestion
+ that we should operate using the element of least surprise.
+
+ Revision 647.0 2005/05/12 16:54:10 ajc
+ * THIS IS 6.47
+
+ Revision 646.1 2005/05/12 16:53:18 ajc
+ * Fixed a minor bug discovered in SMTP at one site
+
+ Revision 646.0 2005/05/11 17:06:04 ajc
+ * THIS IS 6.46
+
+ Revision 645.20 2005/05/09 22:17:30 ajc
+ * Interactive room deletions are now deferred. The server reconfigures the
+ room to be a mailbox owned by a nonexistent user and immediately returns
+ control back to the client. Later, THE DREADED AUTO-PURGER will see the
+ dangling room and erase its contents.
+
+ Revision 645.19 2005/05/08 03:43:22 ajc
+ * Set the internal version number to 6.46 in preparation for a release
+
+ Revision 645.18 2005/05/02 20:52:42 ajc
+ * More IMAP optimizations, including the application of our latest "don't
+ fetch the message body" trick to ENVELOPE and INTERNALDATE fetches, to
+ make MS-Outbreak spread email viruses faster.
+
+ Revision 645.17 2005/05/02 16:09:52 ajc
+ * serv_imap.c: implemented the RFC 3501 suggestion that the initial
+ greeting, and the response to the LOGIN command, include an output
+ of the server's CAPABILITY string. I find this to be gratuitous but
+ the UW IMAP server does it, so we are also doing it in order to better
+ interoperate with clients which make assumptions...
+
+ Revision 645.16 2005/04/29 22:02:20 ajc
+ * More IMAP tuning
+
+ Revision 645.15 2005/04/29 20:47:45 ajc
+ * More complex cache handling for IMAP fetch operations -- now we can
+ fetch/cache "just the headers" and remember whether we did so, so we can
+ burn the cache if the client then comes around and requests something
+ that requires the body. Still needs some testing and tuning.
+
+ Revision 645.14 2005/04/29 16:50:03 ajc
+ * Significantly reduced the memory footprint of struct CitContext.
+
+ Revision 645.13 2005/04/29 16:26:00 ajc
+ * Removed the CtdlRedirectOutput() API, as we are no longer using it.
+ (Oh happy day; no more temp files!)
+
+ Revision 645.12 2005/04/27 19:22:57 ajc
+ * .ASG command: made better use of memory to avoid crashes
+
+ Revision 645.11 2005/04/23 04:38:26 ajc
+ * Substantially improved the appearance of mailing list digests.
+ Superfluous RFC822 headers no longer appear, and all messages are
+ converted to plain text using the preferred_formats framework.
+ * CtdlOutputPreLoadedMsg() -- fixed bug that caused Citadel protocol
+ headers to appear for MIME prefix, suffix, etc. even when do_proto is 0.
+
+ Revision 645.10 2005/04/23 02:04:11 ajc
+ * serv_imap.c: don't respond "OK DELETE completed" until after the room
+ delete operation actually completes.
+
+ Revision 645.9 2005/04/23 01:59:58 ajc
+ * Big performance optimization on CtdlSetSeen()
+
+ Revision 645.8 2005/04/22 04:26:34 ajc
+ * is_msg_is_mset() has been renamed to is_msg_in_sequence_set() because
+ "sequence set" is now the official terminology as of RFC3501.
+ * imap_set_seen_flags() no longer calls is_msg_in_sequence_set() for each
+ message and for each flag. It's just too expensive. We now parse each
+ flag's sequence set manually, marking the relevant messages as we go.
+
+ Revision 645.7 2005/04/22 00:52:03 ajc
+ * small fix to previous commit
+
+ Revision 645.6 2005/04/21 17:28:51 ajc
+ * msgbase.c: when committing a new message to the store, save its RFC822
+ length to the metadata record immediately. This will eliminate the need
+ to calculate it later during a fetch operation.
+
+ Revision 645.5 2005/04/14 15:53:55 ajc
+ * Variable names, comments, documentation, etc... removed the acronym 'BBS'
+ in places where functionality is not specific to the use of Citadel as
+ a BBS platform.
+
+ Revision 645.4 2005/04/13 20:42:44 ajc
+ * citmail.c: changes to citmail to make it usable as a /usr/sbin/sendmail
+ replacement; i.e. /bin/mail calls /usr/sbin/sendmail which sends mail
+ through Citadel.
+
+ Revision 645.3 2005/04/13 17:03:07 ajc
+ * Reverted database changes because the cull_logs function wasn't working
+ with the separate log directory.
+ * citmail.c: started some fixes to make it able to work from
+
+ Revision 645.2 2005/04/12 21:19:52 ajc
+ * 'make install' now installs citadel-openldap.schema
+
+ Revision 645.1 2005/04/11 16:31:57 ajc
+ * Database logs are now kept in the "data_logs" directory instead of in
+ the "data" directory. If no "data_logs" directory is found, a symlink
+ to "data" will be created, in order to preserve access to any existing
+ log files -- a savvy sysadmin (or a storage management wizard script)
+ will know what to do if a different location is desirable.
+
+ Revision 645.0 2005/04/01 03:02:44 ajc
+ * THIS IS 6.45
+
+ Revision 641.34 2005/03/31 04:31:42 ajc
+ * Bumped the internal version number to 6.45 in preparation for
+ an upcoming release.
+
+ Revision 641.33 2005/03/24 22:52:40 ajc
+ * More extermination of the dreaded SIZ moby-buffers.
+
+ Revision 641.32 2005/03/24 22:13:56 ajc
+ * extract_token() now expects to be supplied with the size of the
+ destination string buffer. This, along with the elimination of other
+ unbounded functions like strcpy(), will allow the removal of the
+ "all string buffers are of size SIZ" assumption (a process which I have
+ already begun), which will hopefully reduce stack consumption.
+
+ Revision 641.31 2005/03/22 21:53:48 ajc
+ * Oops, forgot to initialize some data structures...
+
+ Revision 641.30 2005/03/22 16:49:29 ajc
+ * Fixed a couple of memory allocation bugs
+
+ Revision 641.29 2005/03/20 22:55:58 ajc
+ * Logging to stderr no longer uses syslog()
+ * Reworked the way dead sessions are purged. More efficient and more
+ reliable now.
+
+ Revision 641.28 2005/03/18 21:40:36 ajc
+ * Minor bugfix to previous checkin
+
+ Revision 641.27 2005/03/18 21:25:06 ajc
+ * Finished removing all the "dynamic session data" stuff in order to
+ boost reliability, improve performance, and reduce complexity.
+
+ Revision 641.26 2005/03/12 05:42:35 ajc
+ * Trying to fix a memory bug somewhere.
+ * While working on the above, noticed that the way we did the per-session
+ dynamic symbols loses badly in terms of performance. Began moving to
+ a less modular but better performing way of doing the same.
+
+ Revision 641.25 2005/03/10 03:36:25 ajc
+ * Silenced a compiler warning
+ * Our graceful cleanup handler no longer gracefully cleans up after
+ receiving SIGSEGV or its friends. Unfortunately we need the core dump.
+
+ Revision 641.24 2005/03/10 03:11:07 ajc
+ * Altered the algorithm by which the doubly-linked session list is
+ amended and culled. Decided that performance is better than cute
+ session numbers (which we don't display to the users anymore anyway)
+ and we now assign a session number (CC->cs_pid) starting with 1 when the
+ server starts and incrementing indefinitely. Need to test this more.
+
+ Revision 641.23 2005/03/07 04:08:07 ajc
+ * vcard.c: realloc fix
+
+ Revision 641.22 2005/03/05 22:31:01 ajc
+ * Allow the use of chained certificates for crypto
+
+ Revision 641.21 2005/03/04 20:04:00 ajc
+ * IMAP FETCH RFC822.SIZE now honors the cached rfc822 size in each
+ message's metadata, using it if present and storing it for next time
+ otherwise.
+ * Fixed bug in POP3 server that was causing it to fail to store the
+ correct RFC822 size in metadata. Fortunately it was failing in a way
+ that merely affected performance rather than corrupting the data on
+ existing installations.
+
+ Revision 641.20 2005/03/04 02:24:31 ajc
+ * SMTP: only offer TLS on the MSA port (587), not on the MTA port (25).
+ There seem to be some other MTA's out there that make things go haywire
+ when TLS is offered.
+
+ Revision 641.19 2005/03/04 02:18:46 ajc
+ * config.c: default setting for "maxmsglen" is now 10 megabytes, not INT_MAX
+
+ Revision 641.18 2005/03/03 18:10:27 ajc
+ * sysdep.c: change the algorithm for dynamically expanding the redirect
+ buffer's size. Large writes were overflowing it.
+
+ Revision 641.17 2005/03/03 17:56:53 ajc
+ * Finished removing the use of temp files in IMAP.
+ WARNING: DON'T USE THIS ON A PRODUCTION SYSTEM, IT HAS NOT BEEN
+ FULLY TESTED WITH VARIOUS IMAP CLIENTS YET!
+
+ Revision 641.16 2005/03/03 05:14:06 ajc
+ * Realized that memreadline() does NOT return a NULL pointer when it hits
+ a null character, and adjusted all the code I wrote yesterday under that
+ assumption.
+ * Removed the use of a temp file for IMAP FETCH BODYSTRUCTURE on a
+ non-RFC822 message.
+
+ Revision 641.15 2005/03/02 17:33:03 ajc
+ * msgbase.c: fixed a buffer overflow error
+ * imap_fetch.c, serv_imap.c, serv_imap.h: migrated imap_fetch_rfc822() to
+ use the new in-memory message buffering. BODY comes next...
+
+ Revision 641.14 2005/03/02 03:35:18 ajc
+ * serv_smtp.c: removed use of temporary file for SMTP transmission
+
+ Revision 641.13 2005/03/02 03:01:18 ajc
+ * serv_spam.c: use redirect_buffer instead of redirect_sock
+ * Removed redirect_sock from the API. redirect_fp is next!
+
+ Revision 641.12 2005/03/02 02:42:06 ajc
+ * Finished moving the POP3 server to the new redirect_buffer semantics
+
Revision 641.11 2005/03/02 02:16:10 ajc
* Toned down some of the hostility in the code's comments :)
Revision 626.9 2004/10/12 02:17:49 ajc
* Cleaned up some things that generated compiler warnings
* crypto keys directory is now relative to the server's working directory,
- not to the compiled-in BBSDIR
+ not to the compiled-in CTDLDIR
* Re-ordered the security checks in CtdlAccessCheck()
Revision 626.8 2004/10/06 21:23:21 error
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> )
+ (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
Revision 607.10 2003/06/28 05:12:56 ajc
* Bump internal version number to 6.08
- * Use (-1) instead of BBSUID as the uid of user records which exist only
+ * Use (-1) instead of CTDLUID as the uid of user records which exist only
in Citadel and not in the system password database. serv_upgrade also
changes this setting for ALL such users, the first time the server is run
after upgrading to 6.08
Revision 605.45 2003/05/02 04:02:47 ajc
* setup.c: allow specification of the Citadel system account by either
- username or uid
+ username or uid
* setup.c: tell init to re-read /etc/inittab by sending a SIGHUP to pid 1
- instead of hunting around for the correct init or telinit command
+ instead of hunting around for the correct init or telinit command
* docs/citadel.html: documented the above change, and also rewrote some
- other stuff to be less BBS-specific
+ other stuff to be less BBS-specific
Revision 605.44 2003/04/30 16:16:13 ajc
* Minor fix to ESMTP greeting (missing '-' screwed up pipelining)
Revision 601.115 2003/01/17 04:36:04 ajc
* whobbs.c: fix bad call to CtdlGetServInfo() so we can get our session ID
- and the name of the BBS
+ and the name of the Citadel site
Revision 601.114 2003/01/16 21:16:23 error
* CtdlIPCGetMessages(): Fix message read failing on first attempt to read
null string)
Revision 573.4 2000/09/28 10:27:38 error
- * commands.c: changed sttybbs() to support HP/UX termios VMIN and VTIME
+ * commands.c: changed stty_ctdl() to support HP/UX termios VMIN and VTIME
Revision 573.3 2000/09/24 22:01:45 ajc
- * ipc_c_tcp.c: don't hardcode BBSDIR path for unix domain sockets
+ * ipc_c_tcp.c: don't hardcode CTDLDIR path for unix domain sockets
Revision 573.2 2000/09/21 04:16:44 ajc
* Fixed logged_in_response() so it only displays responses during Citadel
* Fixed oopseth in control.c that might call fileno(NULL)
Revision 572.36 2000/09/01 13:37:16 ajc
- * control.c: chown citadel.control to bbsuid when opening/creating as root
+ * control.c: chown citadel.control to ctdluid when opening/creating as root
Revision 572.35 2000/09/01 03:55:44 ajc
* Fixed a few more references to the deprecated uncnsrd.mt-kisco.ny.us name
Revision 572.23 2000/08/09 17:14:34 ajc
msgbase.c: fixed a bug in
- remove_any_whitespace_to_the_left_or_right_of_at_symbol() that was
- causing the <R>eply function to fail on names with whitespace in
- certain parts of the string. This closes Bug #56.
+ remove_any_whitespace_to_the_left_or_right_of_at_symbol() that was
+ causing the <R>eply function to fail on names with whitespace in
+ certain parts of the string. This closes Bug #56.
Revision 572.22 2000/08/05 04:24:00 ajc
* Added [idle] to client wholist display for sessions idle >15 minutes
Revision 1.489 2000/03/16 17:58:54 smw
Created a docs directory.
Moved install.txt to docs.
- Added inetmailsetup.txt (BBS server side e-mail)
- Added inetmailsetupmx.txt (local mail AND bbs e-mail
+ Added inetmailsetup.txt (Citadel server side e-mail)
+ Added inetmailsetupmx.txt (local mail AND Citadel e-mail
Added inetsiteconfig.txt (describes the .asi command)
Added siteconfig.txt (describes .asg)
Added chat.txt (describes changes and new chat functionality)
Revision 1.484 2000/03/11 19:22:19 nbryant
* commands.c: improved timing of background keepalives if connection is
- lagged
+ lagged
Revision 1.483 2000/03/11 05:08:48 nbryant
* commands.c: oops, that mutex stuff wasn't necessary
Revision 1.445 2000/01/17 05:38:14 ajc
* citserver.c: cleanup hook functions are now run under the proper context,
- even when initiated by the housekeeper thread
+ even when initiated by the housekeeper thread
* serv_pop3.c: establish a place to hold the message list
Revision 1.444 2000/01/17 04:26:39 ajc
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
+ to exist, nor is it guaranteed to be writable by CTDLUID
(Resolves bug #11 from the Bugzilla repository)
Revision 1.414 1999/11/15 03:07:24 ajc
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.
+ 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)
1999-05-11 Nathan Bryant <bryant@cs.usm.maine.edu>
* chkpwd.c: fixed excessive paranoia; it used to refuse to run when
- invoked by root and BBSUID != 0
+ invoked by root and CTDLUID != 0
* Makefile.in: ignore errors while installing /etc/pam.d/citadel
1999-04-27 Art Cancro <ajc@uncensored.citadel.org>
1999-03-04 Nathan Bryant <bryant@cs.usm.maine.edu>
* config.c: error checking in put_config()
- * setup.c: chgrp files to the login group associated with BBSUID
+ * setup.c: chgrp files to the login group associated with CTDLUID
* sysdep.c: copyright 1987-1999; drop root perms; load modules and call
master_startup() after dropping perms
Wed Jan 20 19:21:51 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
* Added some more code to the unfinished MIME parser
* Changed module loading path to simply "modules" because after calling
- get_config(), the cwd is guaranteed to be the correct BBS directory.
+ get_config(), the cwd is guaranteed to be the correct Citadel directory.
Tue Jan 19 21:28:29 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
* Fixed a bug in the user editing command (client side)
- Defined format type 4 for MIME
- msgbase.c: *temporary* hacks in output_message() for Type 4
- citmail.c: added more robust header parsing, and support
- for Type 4. Also eliminated the crappy built-in
- SMTP server.
+ for Type 4. Also eliminated the crappy built-in
+ SMTP server.
- Updated some of the technical documentation
Sun Jan 10 13:34:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
Fri Nov 6 20:22:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
* citadel.h (and related files): removed defunct parameters,
- c_defent and c_msgbase (erase your test bbs)
+ c_defent and c_msgbase (erase your test system)
* Implemented CONF server command for site-global configs
* Shuffled yesno() and yesno_d() from routines.c to commands.c
* commands.c: implemented boolprompt()
Mon Nov 2 12:59:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
* setup.c: looks for 'citadel', 'bbs', or 'guest' in /etc/passwd to
- try to get a default for bbsuid if it's currently set to 0
+ try to get a default for ctdluid if it's currently set to 0
* citmail.c: changed usersupp.eternal to usersupp.usernum (why didn't
it complain about this before?)
* serv_upgrade.c: began writing an "export" command to do sidegrades
* citadelapi.c: Added CtdlForEachRoom() function
Mon Aug 24 20:04:04 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
- * Makefile.in: new target `cleaner' does the same as `realclean'
- without removing sysdep.h
+ * Makefile.in: new target `cleaner' does the same as `realclean'
+ without removing sysdep.h
* proto.h: is bad. eliminate. I've moved the prototypes into several
header files, one per .c file
Sun Aug 2 18:52:05 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
* config_defs.h: new file, contains external declarations from config.c
* config.c: moved defs to config_defs.h, use PATH_MAX from <limits.h>
- for bbs_home_directory
+ for ctdl_home_directory
* mailinglist.c, support.c: include <string.h>
* sysoputil.c: include <string.h>, <limits.h>, "config_defs.h", remove
duplicated defs, replace gets() call with fgets()
* .cvsignore: added userlist
Sun Jul 12 20:58:59 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
- * Finished migrating everything to the new data store.
- * Replaced the binary "calllog" with the ASCII "citadel.log"
- * Began converting broken utilities that depend on the old data store
+ * Finished migrating everything to the new data store.
+ * Replaced the binary "calllog" with the ASCII "citadel.log"
+ * Began converting broken utilities that depend on the old data store
Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
* Makefile.in: removed msgstats
Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
* Initial CVS import
+