Art Cancro [Fri, 16 Nov 2001 04:43:13 +0000 (04:43 +0000)]
* Eliminated the sock_puts_crlf() function and ensured that all SMTP client
commands are sent out using a single sock_write() call. There are broken
SMTP server implementations that can't handle SMTP commands split across
multiple writes. (Thanks to Andru Luvisi and Ben Mehlman for the idea.)
Art Cancro [Thu, 15 Nov 2001 04:11:31 +0000 (04:11 +0000)]
* hack.doc: updated to reflect Cit86Net compatibility fields removed from the
file format (since we dumbed down the gateway software)
* ipc_c_tcp.c: removed SOCKS4 support. Nobody uses it anymore.
* ipc_c_tcp.c: fixed a bug which caused the client to fall back to defaultPort
if a numeric port number was specified instead of a service name
Nathan Bryant [Tue, 16 Oct 2001 18:16:06 +0000 (18:16 +0000)]
In order to avoid version inconsistency problems between different
developers' libtool installations, I have removed aclocal.m4 from the CVS
repository and set the bootstrap script to build this file with aclocal.
This requires that automake is installed, but only during the bootstrap
phase, and it probably doesn't require any particular version of automake.
Nathan Bryant [Tue, 16 Oct 2001 17:43:53 +0000 (17:43 +0000)]
- further configure tweaks for FreeBSD and Tru64 Unix
- updated to latest libtool configure fragment
- there are two functions named make_message. (?) so declare them both
static.
Brian [Fri, 14 Sep 2001 19:56:08 +0000 (19:56 +0000)]
* Fixed handling of ASYN messages, I think.
- If no callback has been registered for a particular command, the _CxClRecv()
command will actively skip all of the ASYN message (not sure if this works
correctly for _all_ messages... will wait and see)
* Fixed delivery of express messages. Misunderstood protocol.
! Need to detect server capabilities and use old-style SEXP when necessary! At
present, libCxClient is incompatible with older servers. This, I assume, is a
bad thing.
Brian [Mon, 10 Sep 2001 22:40:39 +0000 (22:40 +0000)]
* MAJOR BUG: Memory leaks and protocol misimplementations in misc.c (related
to Express Messaging). UGH!
* GAMEPLAN: Fix the problems with the RC_901 handler. Try not to weep.
Then, re-package sources and push to web.
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