Brian [Thu, 23 Aug 2001 13:14:53 +0000 (13:14 +0000)]
* Changed type on CxMsLoad() from (const char *) to (long unsigned int) to
make things more intuitive (and less apt for failure)
* Vastly improved library interface, removed plenty of memory leaks.
* Library _should_ be thread-safe, but I haven't tested it. If anyone's
brave, they're welcome to.
* Library is almost completely stable now. At this point, I am blaming
most of its faults on Infusion. ;)
Art Cancro [Wed, 22 Aug 2001 16:38:06 +0000 (16:38 +0000)]
* Added the "-c" command line option to generate optional cookies indicating
the host name of the server. This makes it easy to put a cluster of WebCit
servers behind (for example) an Arrowpoint load balancer.
Art Cancro [Wed, 22 Aug 2001 04:18:18 +0000 (04:18 +0000)]
* Realized that there was lots of similarly broken code in
process_rfc822_addr(). Wrote two new utility functions in tools.c
stripout() and stripallbut() and used them where appropriate. This should
take care of all possible infinite loops.
Art Cancro [Wed, 22 Aug 2001 03:43:12 +0000 (03:43 +0000)]
* internet_addressing.c: fixed a bug in process_rfc822_addr() that caused the
server to jump into an endless loop when an e-mail address contained
unbalanced angle brackets.
Art Cancro [Sat, 11 Aug 2001 19:18:43 +0000 (19:18 +0000)]
* Realized that I am stupid and started implementing server commands to load
and save network configurations, when I had already lovingly implemented the
CONF GETSYS and CONF PUTSYS commands to store arbitrary configuration sets
in the Local System Configuration> room. Ripped the newer crap out.
* Implemented a skeleton of <.A>ide <S>ysconfig <N>etwork on the client side.
Art Cancro [Fri, 3 Aug 2001 16:43:54 +0000 (16:43 +0000)]
* database_sleepycat.c: when running txn_checkpoint(), handle DB_INCOMPLETE
return code as a warning instead of an error worthy of aborting the server.
See http://www.sleepycat.com/docs/api_c/txn_checkpoint.html for explanation.
made ForEachUser use a read-only cursor, too. there is now only one piece of
code in Citadel proper (not the database driver) that needs transactions.
that's check_ref_counts; in other words it's the only thing standing in the way
of a clean implementation of retryable transactions.
- added a new function to the database interface, cdb_close_cursor(). always
call this when you're finished with a traversal but didn't bother reading all
the way to the end.
- removed several cdb_begin_transaction()/cdb_end_transaction() calls that are
no longer needed because of the read-only cursor support.
implemented read-only cursors. one of the advantages to these is that
transactions can be avoided; a cursor operation that occurs within a
transaction will often acquire a read lock on every single database page. in
general, the Sleepycat documentation recommends avoiding transaction-protected
read-only operations where practical. read/modify/write operations can still
be transaction protected, of course.
to use a read-only cursor, call cdb_rewind without a previous call to
cdb_begin_transaction. the DB driver will notice this and prevent the current
thread from modifying data or starting a transaction until the cursor is
closed.
libtool has matured a lot since the last time i looked at it (years ago)
so we now use it to handle the details of building shared libraries and
the linker flags for the main executable.
in theory this should bring a lot more portability to the dynloader
subsystem and enable us to do things like transparently detect GNU vs Sun
linkers on solaris, for example
Art Cancro [Fri, 22 Jun 2001 17:58:20 +0000 (17:58 +0000)]
* A few performance and tuning cleanups. Increased the size of the socket
queue length to 100 for use on big systems. Also, during startup, the
initial startup thread now exits after creating the worker threads, instead
of becoming a worker thread itself. For some reason Solaris had problems
with the latter method.
Art Cancro [Tue, 19 Jun 2001 03:33:19 +0000 (03:33 +0000)]
* imap_fetch.c: download MIME parts without decoding first. We like that.
* database_sleepycat.c: added automatic culling of log files which have not
been written to in five days.
Brian [Tue, 12 Jun 2001 11:48:54 +0000 (11:48 +0000)]
* Working on cleaning up code. There were LOTS of missing free() calls.
Boy, was I lazy... :)
This library is MUCH more stable than it was at 0.59-RELEASE checkpoint,
but it still has a few leaky issues. I'm still working on fixing it.
Art Cancro [Wed, 6 Jun 2001 04:22:25 +0000 (04:22 +0000)]
* Moved memreadline() to tools.c
* internet_addressing.c: fixed conversion of fields to (hopefully) never get
into an active loop when encountering badly formed headers
Art Cancro [Fri, 18 May 2001 20:12:09 +0000 (20:12 +0000)]
* Fixed bug in mime_parser.c that caused parts to be dropped when the last
boundary was the very last line of the message.
* serv_smtp.c: toned down some of the command response verbage.
Brian [Mon, 14 May 2001 14:01:23 +0000 (14:01 +0000)]
* Added multi-connection support. libCxClient can now handle
multiple concurrent connections to different Citadel servers.
This, unfortunately, required a change in the development API.
Please examine the source in src/newtest.c for an example
of how to use the new API.
* Fixed some bugs in the transport layer.
* No new features that I can think of, but there may be some...