Art Cancro [Wed, 1 Jun 2005 22:32:58 +0000 (22:32 +0000)]
* Implemented a workaround for the IMAP "expungebob bug." Specifically, since
we don't store the \Deleted flag persistently (and instead auto-expunge
folders when they are de-selected) we were not advertising \Deleted as
a PERMANENTFLAGS flag. This was causing some clients (particularly
Thunderbird) to misbehave -- they were simply electing not to transmit the
flag at all. As a workaround, \Deleted is now advertised as a
PERMANENTFLAGS flag, even though it technically isn't.
Art Cancro [Wed, 1 Jun 2005 05:23:26 +0000 (05:23 +0000)]
* The full text indexer now runs in its own dedicated thread instead of
in the housekeeping thread. The main indexer loop now also has the ability
to save its place and bail out early when it discovers that the server is
trying to shut down. The main server loop will pthread_join() the indexer
thread and patiently wait for it to complete before exiting. These changes
all put together mean that citserver will not hang when it is terminated
during an indexing operation.
Art Cancro [Thu, 26 May 2005 04:28:27 +0000 (04:28 +0000)]
* Applied GroupDAV patches sent in by Johannes Schneider which improve the
protocol accuracy of xmlns and etag responses.
* Fixed a MIME Content-Type bug which I had inadvertently introduced while
removing a temporary hack that was put in during KDE 3.4 beta
Art Cancro [Thu, 26 May 2005 04:25:29 +0000 (04:25 +0000)]
* Applied xmlns and etag patches sent in by Johannes Schneider that improve
GroupDAV support.
* Located and fixed a MIME Content-type bug that I accidentally created
while removing a temporary hack that was in place during the last KDE beta.
Art Cancro [Mon, 23 May 2005 19:33:57 +0000 (19:33 +0000)]
* database_sleepycat.c: cdb_truncate() no longer encapsulated in a
transaction. Truncating a database in Citadel is always synchronous,
and with big tables (such as when the full text indexer is switched off
or reinitialized) it was running out of memory.
Art Cancro [Mon, 23 May 2005 19:26:04 +0000 (19:26 +0000)]
* 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.
Art Cancro [Fri, 20 May 2005 20:02:51 +0000 (20:02 +0000)]
* The IGnet map is now rewritten to disk only when it changes.
* When processing inbound network spool, ignore "." and ".." instead of
failing on them.
Art Cancro [Fri, 20 May 2005 16:14:44 +0000 (16:14 +0000)]
* 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.
Art Cancro [Fri, 20 May 2005 01:20:25 +0000 (01:20 +0000)]
* 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.
Art Cancro [Thu, 19 May 2005 21:10:04 +0000 (21:10 +0000)]
* 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.
Art Cancro [Wed, 18 May 2005 22:09:01 +0000 (22:09 +0000)]
* 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.)
Art Cancro [Wed, 18 May 2005 04:02:54 +0000 (04:02 +0000)]
* Completed the "search for all of these words" functionality. All we need
to do now is genericize its calling syntax so it can be called from the
IMAP service.
Art Cancro [Mon, 16 May 2005 18:48:45 +0000 (18:48 +0000)]
* 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.
Art Cancro [Mon, 16 May 2005 16:59:39 +0000 (16:59 +0000)]
* 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.
Art Cancro [Wed, 11 May 2005 03:00:03 +0000 (03:00 +0000)]
* webcit.c: fixed a string bug that caused the whole system to not work
* messages.c: fullname only and brief date in summary view, so that it
doesn't wrap onto two lines quite as often
Art Cancro [Mon, 9 May 2005 22:17:30 +0000 (22:17 +0000)]
* 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.
Art Cancro [Mon, 2 May 2005 20:52:42 +0000 (20:52 +0000)]
* 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.
Art Cancro [Mon, 2 May 2005 16:09:52 +0000 (16:09 +0000)]
* 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...
Art Cancro [Fri, 29 Apr 2005 20:47:46 +0000 (20:47 +0000)]
* 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.
Art Cancro [Sat, 23 Apr 2005 04:38:26 +0000 (04:38 +0000)]
* 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.
Art Cancro [Fri, 22 Apr 2005 04:26:35 +0000 (04:26 +0000)]
* 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.
Art Cancro [Thu, 21 Apr 2005 17:28:51 +0000 (17:28 +0000)]
* 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.
Art Cancro [Thu, 14 Apr 2005 15:53:56 +0000 (15:53 +0000)]
* 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.
Art Cancro [Wed, 13 Apr 2005 20:42:45 +0000 (20:42 +0000)]
* 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.
Art Cancro [Wed, 13 Apr 2005 17:03:07 +0000 (17:03 +0000)]
* 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