- 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...
* Modified rooms.c in the client so that it would allow inviting into
public rooms. This is important since there is now a V_LOCKOUT
flag which prevents users who have been kicked from rejoining
a room unless/until you invite them back in.
* Modified client rooms.c so that people can be invited to public rooms.
This is needed because the V_LOCKOUT flag is set when people are
kicked out of public rooms so they can't rejoin. The only way to
let them back in is to INVT them.
Brian [Tue, 13 Mar 2001 22:45:53 +0000 (22:45 +0000)]
* Changed the return interface for CxMiExpRecv(). It now returns a more
intelligible struct representing an atomic Express Message. UNfortunately,
this requires the user to free 2 things (object, object->message) as opposed
to one (object)... C'est la vie...