]> code.citadel.org Git - citadel.git/blob - citadel/ChangeLog
* Removed excessive trace messages that were slowing the server down
[citadel.git] / citadel / ChangeLog
1  $Log$
2  Revision 641.2  2005/02/24 18:14:24  ajc
3  * Removed excessive trace messages that were slowing the server down
4  * Prepared for handling of setting flags in IMAP APPEND
5
6  Revision 641.1  2005/02/23 04:24:57  ajc
7  * When auto-creating Mail>, Sent Items>, etc... set view to VIEW_MAILBOX
8
9  Revision 641.0  2005/02/21 21:59:33  ajc
10  * THIS IS 6.41
11
12  Revision 640.14  2005/02/21 21:40:28  ajc
13  * Updated internal version number to 6.41
14
15  Revision 640.13  2005/02/20 21:10:59  ajc
16  * Repaired access control problem in IMAP SUBSCRIBE
17
18  Revision 640.12  2005/02/17 16:13:59  ajc
19  * Removed "Log Hooks."  This enabled the removal of a buf[SIZ] in lprintf,
20    where it can potentially blow lots of stacks.
21
22  Revision 640.11  2005/02/17 03:52:16  ajc
23  * setup.c: clarify some of the messages
24
25  Revision 640.10  2005/02/16 19:03:38  ajc
26  * master_cleanup() now passes along an exit code from its caller to the OS.
27
28  Revision 640.9  2005/02/16 18:48:39  ajc
29  * Try to reach our cleanup routine when SIGSEGV is caught.  Hopefully
30    we'll get there and we can close the databases cleanly.
31
32  Revision 640.8  2005/02/16 17:37:16  ajc
33  * Be more aggressive about shutting down when told to.  Getting the
34    databases closed is the highest priority.
35
36  Revision 640.7  2005/02/16 04:08:42  ajc
37  * newinstall.sh: put the checksum files server-side to avoid
38    unnecessary downloads
39
40  Revision 640.6  2005/02/16 03:02:28  ajc
41  * Applied patches submitted by Kevin Kilbride for TCP_CORK and for
42    turning CitContext into a doubly-linked list.
43
44  Revision 640.5  2005/02/13 04:55:18  ajc
45  * Did the server port hooks etc. for SSL listeners.  For some reason it
46    doesn't work.  :(
47
48  Revision 640.4  2005/02/13 04:23:59  ajc
49  * Added server and client configuration settings to specify port
50    numbers for IMAPS, POP3S, and SMTPS (SSL-encrypted services that start
51    SSL upon connect instead of using a STARTTLS command).  These services
52    are not yet implemented, only the port number settings are.
53
54  Revision 640.3  2005/02/13 03:39:21  ajc
55  * IMAP flag twiddling with STORE was broken because of the \Flag leading
56    backslash getting stripped out.  Located problem and worked around.  Said
57    many nasty things about that piece of crap Mark Crispin and his deranged,
58    stupid, moronic idea to put backslashes in a place where they were
59    completely unnecessary.
60
61  Revision 640.2  2005/02/12 16:58:36  ajc
62  * Changes to lprintf() and start_daemon() submitted by Kevin Kilbride
63    for more "true unix" approaches to each.
64
65  Revision 640.1  2005/02/11 03:51:51  ajc
66  * <.A>ide <U>ser-edit is now <.A>ide <U>ser <E>dit
67  * Added a new <.A>ide <U>ser <D>elete command, because it is unintuitive
68    to tell people "delete a user by setting their access level to 0"
69
70  Revision 640.0  2005/02/10 16:52:18  ajc
71  * THIS IS 6.40
72
73  Revision 630.16  2005/02/10 16:52:03  ajc
74  * Updated documentation etc. for 6.40 release (and for 2005 copyright)
75
76  Revision 630.15  2005/02/08 03:33:49  ajc
77  * client_gets(char *buf) has been replaced by
78    client_getln(char *buf, int maxbytes)
79
80  Revision 630.14  2005/02/05 22:56:31  ajc
81  * More reliable handling of conversion of vCard UID to Citadel Extended ID
82    (necessary for GroupDAV URL's to be generated properly in WebCit)
83
84  Revision 630.13  2005/02/05 04:13:34  ajc
85  * msgbase.c: replication checks for Exclusive-ID no longer cause a save
86    operation to fail when the existing message is newer.  This was causing
87    groupware clients to go haywire because of datestamps being set to
88    event start times, etc.
89
90  Revision 630.12  2005/02/03 04:36:56  ajc
91  * serv_calendar.c: beforesave hook now looks for the UID inside nested
92    VTODO components, in addition to VCALENDAR components.
93
94  Revision 630.11  2005/02/01 23:11:46  ajc
95  * new ENT0 syntax now also outputs EUID
96
97  Revision 630.10  2005/02/01 19:46:12  ajc
98  * Added an SMTP-like calling syntax to ENT0 to allow a confirmation message
99    to be sent back to the client after a message is transmitted.
100
101  Revision 630.9  2005/02/01 03:33:22  ajc
102  * Changed CtdlRoomAccess() calling syntax in order to return both
103    the access bits and the current view
104  * All "list rooms" commands now return the view for each room.
105
106  Revision 630.8  2005/01/27 22:05:21  ajc
107  * Renamed the "Extended message ID" field to "Exclusive message ID"
108    (nothing changes except documentation and internal variable names)
109
110  Revision 630.7  2005/01/27 21:59:22  ajc
111  * serv_vcard.c: changed the logic a bit.  When saving a vCard to a user's
112    "My Citadel Config" room, force-feed the vCard a site-compliant UID and
113    FBURL.  When saving a vCard to *any* address book room, set the Citadel
114    EUID to the vCard UID.
115
116  Revision 630.6  2005/01/27 17:33:52  ajc
117  * The before-save hook in serv_calendar.c now runs for any room with a
118    view of VIEW_CALENDAR or VIEW_TASKS, not just Calendar> and Tasks>.
119
120  Revision 630.5  2005/01/26 23:04:22  ajc
121  * When saving calendar items, if the vCalendar object does not contain
122    a UUID, generate one on the fly.  In order to support GroupDAV we need
123    persistent URL's, and I plan to base those on the UUID.
124
125  Revision 630.4  2005/01/25 20:58:07  ajc
126  * serv_pop3.c: minor change to logging output
127
128  Revision 630.3  2005/01/25 15:02:12  error
129  * Updated SSL/TLS code to actually use the TLS cipher suites
130
131  Revision 630.2  2005/01/22 04:15:32  ajc
132  * Increased per-thread stack size again, this time to 1MB
133
134  Revision 630.1  2005/01/22 03:14:20  ajc
135  * Each message's metadata now has the ability to cache the length of
136    the message when output in RFC822 format.  The POP3 service populates
137    this field the first time it sees each message, and fetches the length
138    from cache on subsequent visits.
139  * Because of this optimization, we no longer need to keep the entire POP3
140    mailbox stored in open temp files during a session.  Each message is
141    opened again when it is fetched.
142
143  Revision 630.0  2005/01/21 20:25:08  ajc
144  * THIS IS 6.30
145
146  Revision 629.10  2005/01/21 20:24:34  ajc
147  * Internal version number is now 6.30
148
149  Revision 629.9  2005/01/21 20:20:06  ajc
150  * Increase per-thread stack size from 128k to 256k.  This fixes the
151    crashing IMAP service on 64-bit Linux.
152
153  Revision 629.8  2005/01/19 20:49:46  ajc
154  * Minor fixenbugs after running with Valgrind
155
156  Revision 629.7  2005/01/19 03:03:36  ajc
157  * Minor and/or cosmetic changes made during x64 troubleshooting
158
159  Revision 629.6  2005/01/18 17:58:38  ajc
160  * Trying to fix IMAP brokenness on Linux-x64.  Committing changes even
161    though there are a lot of annoying trace messages in this tree, because
162    I did clean up a bunch of stuff here and there.
163
164  Revision 629.5  2005/01/14 17:08:30  ajc
165  * Applied a configure script fix sent in by David Given for more reliable
166    detection of the installed libical version.
167
168  Revision 629.4  2005/01/13 05:43:16  ajc
169  * Initial support for having a room participate in a remote mailing list
170
171  Revision 629.3  2005/01/09 03:20:41  ajc
172  * Applied a patch sent in by David Given for handling of the "&" character
173    plus Unicode characters in IMAP folder names.
174
175  Revision 629.2  2005/01/07 15:56:14  ajc
176  * msgbase.c: fixed an incorrect variable name in the bigmsg-handler
177
178  Revision 629.1  2005/01/07 03:05:04  ajc
179  * serv_imap.c: fail with a "BAD" error response if the LOGIN command is
180    called with the wrong number of parameters (otherwise it goes boom)
181  * user_ops.c: CtdlLoginExistingUser() was calling strproc() on the supplied
182    name, which killed the ability to log in with your email address (because
183    it stripped the @ symbol).  Changed it to striplt() instead.
184
185  Revision 629.0  2005/01/04 03:57:32  ajc
186  * THIS IS 6.29
187
188  Revision 628.2  2005/01/04 03:57:21  ajc
189  * newinstall.sh: save tarball checksums after successful install of each
190    component; skip subsequent installs for components which have not changed
191  * Bumped internal version number to 6.29
192
193  Revision 628.1  2005/01/04 02:06:28  ajc
194  * sysdep.c: if we have enough information to do so, adjust maximum file
195    descriptors to avoid exceeding FD_SETSIZE.  This is done to circumvent
196    a rare but specific vulnerability.
197
198  Revision 628.0  2004/12/14 03:16:19  ajc
199  * THIS IS 6.28
200
201  Revision 627.12  2004/12/12 17:33:24  error
202  * sysdep.c: lprintf(): Bug 124: Fix remote format string vulnerability
203    (thanks to coki@nosystem.com.ar)
204
205  Revision 627.11  2004/12/01 16:28:58  ajc
206  * tools.c: don't crash when striplt() is called with z zero length string
207
208  Revision 627.10  2004/11/26 22:44:08  ajc
209  * Added a sooper-seekrit way to spool network messages to a remote node
210    where the room has a different name
211  * Internal version number is now 6.28, so that WebCit doesn't b0rk the
212    netconfigs of older Citadel servers
213
214  Revision 627.9  2004/11/19 02:31:56  ajc
215  * Added developer ID # 177
216
217  Revision 627.8  2004/11/16 23:04:18  ajc
218  * setup.c: added "dovecot" to the list of "other email services" which
219    the setup program can helpfully disable for you.  :)
220
221  Revision 627.7  2004/11/12 03:51:42  ajc
222  * serv_expire.c: auto-purge any user whose user number is less than 1.
223
224  Revision 627.6  2004/11/11 16:21:12  nbryant
225  * database_sleepycat.c: make cdb_rewind enforce that cursors must be
226    closed before they can be opened again. (prevents cursors being held
227    open for longer than they should be and holding database locks.)
228
229  Revision 627.5  2004/11/11 14:56:16  ajc
230  * Further adjustments to ldap setup
231
232  Revision 627.4  2004/11/11 04:38:36  ajc
233  * setup.c: fix bug that kept creating new inittab entries for slapd
234
235  Revision 627.3  2004/11/10 21:33:47  ajc
236  * Go to Berkeley DB 4.3.21 in Easy Install
237
238  Revision 627.2  2004/11/10 19:59:23  nbryant
239   * configure.ac: detect /usr/local/BerkeleyDB.4.3
240
241  Revision 627.1  2004/11/10 03:03:14  ajc
242  * Added a few wonderful linebreaks to >80 column lines
243
244  Revision 627.0  2004/11/03 20:18:58  ajc
245  * THIS IS 6.27
246
247  Revision 626.18  2004/11/03 20:18:46  ajc
248  * Internal version number is now 6.27
249
250  Revision 626.17  2004/11/02 22:59:20  ajc
251  * setup.c: fixed an incorrect variable name that was causing inittab
252    twiddling to malfunction.
253
254  Revision 626.16  2004/11/02 02:47:10  ajc
255  * Easy Install: put the log directly in /tmp instead of in the build
256    directory so it doesn't get deleted on a failed install.
257
258  Revision 626.15  2004/10/23 14:33:44  ajc
259  * serv_notes.c: finished.  When saving a message in a room whose view
260    is set to "notes," look for an X-KOrg-Note-Id: header, and if one is
261    present, set both the Extended ID and the Subject to that.  This is for
262    Aethera compatibility.
263
264  Revision 626.14  2004/10/22 14:49:25  ajc
265  * newinstall.sh: Be more careful about locating make/gmake on the host
266    system.  Also now tries to use curl if wget is not available.
267
268  Revision 626.13  2004/10/22 02:53:25  ajc
269  * serv_notes.c: added skeleton module
270  * serv_newuser.c: corrected internal comment
271  * techdoc: renamed session.txt to protocol.txt because it really isn't
272    a session layer protocol, it's more of an application layer protocol.
273
274  Revision 626.12  2004/10/13 02:11:00  ajc
275  * Repaired a completely broken <;Z>ap floor command.
276
277  Revision 626.11  2004/10/12 11:24:42  ajc
278  * Tracing a problem with ;Z command
279
280  Revision 626.10  2004/10/12 02:48:11  ajc
281  * Reworked shutdown sequence to avoid thread deadlock
282
283  Revision 626.9  2004/10/12 02:17:49  ajc
284  * Cleaned up some things that generated compiler warnings
285  * crypto keys directory is now relative to the server's working directory,
286    not to the compiled-in BBSDIR
287  * Re-ordered the security checks in CtdlAccessCheck()
288
289  Revision 626.8  2004/10/06 21:23:21  error
290  * Fixup a few more compiler warnings from icc
291
292  Revision 626.7  2004/10/05 01:44:20  ajc
293  * Changed a bunch of localtime() calls to localtime_r(), for great justice.
294
295  Revision 626.6  2004/10/04 21:40:29  error
296  * configure.ac: Add CFLAGS for icc Intel Compiler
297
298  Revision 626.5  2004/10/04 21:39:35  error
299  * Fix a couple of minor compiler warnings
300
301  Revision 626.4  2004/10/03 04:25:23  ajc
302  * Removed some vestiges
303
304  Revision 626.3  2004/10/03 04:11:48  ajc
305  * sysdep.c: in the main server loop, when time_to_die is detected, return
306    immediately instead of falling through to the end of the function.
307
308  Revision 626.2  2004/10/03 03:57:32  ajc
309  * Added pthread_attr_destroy() in the appropriate location (thanks fleeb!)
310
311  Revision 626.1  2004/10/01 15:58:08  ajc
312  * Configure "notes" view and auto-create Notes> room
313
314  Revision 626.0  2004/09/28 16:11:16  ajc
315  * THIS IS 6.26
316
317  Revision 625.33  2004/09/28 16:09:58  ajc
318  * Update documentation and config files for 6.26 release
319
320  Revision 625.32  2004/09/28 02:18:12  ajc
321  * Improve output of RECENT flag in IMAP
322
323  Revision 625.31  2004/09/23 03:02:31  ajc
324  * MyContext() no longer declared INLINE
325
326  Revision 625.30  2004/09/23 02:54:46  ajc
327  * in MyContext(), reduced the number of calls to pthread_getspecific()
328    from two to one
329
330  Revision 625.29  2004/09/23 00:22:18  error
331  * rooms.c: create_floor(): Fix the check for whether a floor name was given
332
333  Revision 625.28  2004/09/21 02:09:30  ajc
334  * Tweaks to above
335
336  Revision 625.27  2004/09/21 01:43:23  ajc
337  * imap_search.c: when search criteria permit, do not fetch messages.
338
339  Revision 625.26  2004/09/17 16:54:13  ajc
340  * Updated documentation to include information about setting up MSA 587 port.
341
342  Revision 625.25  2004/09/17 04:14:18  ajc
343  * serv_network.c: added a missing \n in log output
344
345  Revision 625.24  2004/09/17 03:54:47  ajc
346  * citadel-openldap.schema: replaced.  Dunno why it was missing.
347  * serv_calendar.c: fixed a return with no value for a function returning
348    int; this was causing a before-save hook to abandon messages
349
350  Revision 625.23  2004/09/16 01:46:40  ajc
351  * CRE8 command: allow setting default view during room creation
352
353  Revision 625.22  2004/09/15 03:02:47  ajc
354  * Add an SMTP MSA listener (separate port, requires auth)
355
356  Revision 625.21  2004/09/13 15:51:59  ajc
357  * newinstall.sh: updated from the working version at easyinstall.citadel.org
358
359  Revision 625.20  2004/09/11 03:13:04  error
360  * Remove calls to the broken flush_output() while I try to figure out what's
361    wrong with it.  Replaced with unbuffer_output() which does work.
362
363  Revision 625.19  2004/09/10 02:54:26  ajc
364  * Added flush_output() calls to IMAP modules.  (Do we need them?  Are we
365    buffering IMAP output?  Should we?)
366
367  Revision 625.18  2004/09/09 02:26:45  ajc
368  * Completed (I think) the 'dialog' mode in setup
369
370  Revision 625.17  2004/09/08 04:16:07  ajc
371  * setup.c: initial changes to use a 'dialog' based setup (yes, it's back,
372    because the b0rken version is now long gone and it appears to be more
373    portable than newt)
374
375  Revision 625.16  2004/09/07 04:15:35  error
376  * msgbase.c: cmd_msgs(): Call unbuffer_output() when a message list is
377    requested using a search template.
378
379  Revision 625.15  2004/09/06 01:11:35  error
380  * msgbase.c: cmd_ent0(): Fix another unbuffer_output()
381
382  Revision 625.14  2004/09/06 00:59:01  error
383  * file_ops.c: cmd_writ(): Add an unbuffer_output() that I forgot.
384
385  Revision 625.13  2004/09/05 17:39:09  error
386  * Buffered output needs to be flushed in several places.  Added calls to
387    flush_output().  (basically anywhere where we send a response and then
388    wait for the client, except chat, where we turned it off entirely)
389
390  Revision 625.12  2004/09/05 15:41:45  error
391  * Network optimizations - buffer output server-side for better network
392    utilization; one client-side optimization
393
394  Revision 625.11  2004/09/05 15:20:41  error
395  * sysdep.c: unbuffer_output(): Split the writing part to a new function
396    flush_output() for more precise control
397
398  Revision 625.10  2004/09/03 04:34:30  ajc
399  * setup.c: when creating an inittab entry for slapd, use "-d 0" instead
400    of "-d 1" to avoid spewing messages to the console, while still remaining
401    in the foreground.
402
403  Revision 625.9  2004/09/03 04:19:17  ajc
404  * setup.c: Changes to inittab-twiddling to make it a bit more reliable
405  * ipc_c_tcp.c: don't send SIGHUP to children; it makes them very angry
406
407  Revision 625.8  2004/09/01 15:34:52  ajc
408  * serv_smtp.c: fix build error on hosts with no SSL support
409
410  Revision 625.7  2004/08/31 17:31:55  ajc
411  * Calendar: store UUID+comment instead of comment as Subject (this was done
412    at the request of Eugen Constantinescu for Aethera optimizations)
413
414  Revision 625.6  2004/08/30 02:45:33  ajc
415  * setup.c: when running in Newt mode, make the size of the dialogs dynamic
416    to the size of the text in them.
417
418  Revision 625.5  2004/08/29 15:18:41  error
419  * newinstall.sh: fix detection of gmake/make
420
421  Revision 625.4  2004/08/28 14:21:25  error
422  * Change the logging level of some messages and add a couple of new ones to
423    show when a network node is connecting.
424
425  Revision 625.3  2004/08/28 02:42:44  ajc
426  * setup.c: when run from the Easy Install script, auto-configure slapd
427    and put it into /etc/inittab
428
429  Revision 625.2  2004/08/28 01:56:38  ajc
430  * Generalize some of the inittab-tweaking stuff so that we can use it
431    for slapd, too.
432
433  Revision 625.1  2004/08/27 21:39:33  ajc
434  * Fleshed out contemplate_ldap() a bit
435
436  Revision 625.0  2004/08/27 21:06:30  ajc
437  * THIS IS 6.25
438
439  Revision 624.8  2004/08/27 20:16:51  ajc
440  * Update internal version number to 6.25
441
442  Revision 624.7  2004/08/26 04:13:55  ajc
443  * newinstall.sh: updated with some new goodies
444  * setup.c: when run from Easy Install, offer to set up LDAP.  (Not finished.)
445
446  Revision 624.6  2004/08/23 21:41:26  error
447  * html.c: Try to something sane with lists
448
449  Revision 624.5  2004/08/23 21:40:04  error
450  * No longer accept MD5 as a hash when encrypting
451
452  Revision 624.4  2004/08/23 21:34:28  error
453  * serv_network.c: Suppress Invalid node name for "." and ".."
454
455  Revision 624.3  2004/08/16 04:19:14  ajc
456  * newinstall.sh: more intelligent auto-run of setup programs
457  * setup.c: change inittab question to be more newbie-friendly
458
459  Revision 624.2  2004/08/15 05:04:36  ajc
460  * newinstall.sh: various tweaks to make it more reliable
461
462  Revision 624.1  2004/08/14 03:59:43  ajc
463  * newinstall.sh: shuffled around the environment variables to prevent
464    "C compiler cannot generate executables" error.
465
466  Revision 624.0  2004/08/12 13:47:47  ajc
467  * THIS IS 6.24
468
469  Revision 623.16  2004/08/11 04:09:14  ajc
470  * Replaced all "Citadel/UX" references with "Citadel"
471
472  Revision 623.15  2004/08/05 03:19:48  ajc
473  * html.c: handle the <BLOCKQUOTE> tag properly
474
475  Revision 623.14  2004/08/05 02:02:33  ajc
476  * CtdlHostAlias() now accepts "localhost" as a localhost address.
477  * working_ignetcfg is now loaded during incoming NETP commands, which
478  should theoretically take care of the missing config problem.
479
480  Revision 623.13  2004/08/02 02:51:03  ajc
481  * utilsmenu: removed.  Because most of the admin functions have been moved
482    into Citadel proper, what's left of this menu is now pathetic.
483  * techdoc/build.txt: removed verbage that referred to the old build system.
484
485  Revision 623.12  2004/07/30 03:18:21  ajc
486  * user_ops.c: limit the length of the name which can be supplied
487    to CtdlLoginExistingUser() to avoid crashing it.
488
489  Revision 623.11  2004/07/28 04:09:58  ajc
490  * serv_network.c: we had ignetcfg and working_ignetcfg, but it turns out we
491    no longer use the former anywhere, so it has been removed (along with the
492    aftersave hook that detected changes)
493
494  Revision 623.10  2004/07/25 16:20:04  error
495  * msgbase.c: CtdlCheckInternetMailPermission(): Do not allow twits to send
496    Internet mail (they shouldn't be sending ANYTHING at all)
497
498  Revision 623.9  2004/07/25 16:18:43  error
499  * citadel.spec: update version number
500
501  Revision 623.8  2004/07/25 16:17:37  error
502  * stress.c:  Slightly more verbose output
503
504  Revision 623.7  2004/07/25 16:16:19  error
505  * citadel_decls.h: fixed the new logoff() macro
506
507  Revision 623.6  2004/07/24 05:11:52  ajc
508  * citadel.c: temporarily commented out the signal() call for SIGHUP because
509    it is causing the client not to work at all on Linux 2.6 (or at least on
510    Fedora Core 2) when citadel is called as the login shell -- a SIGHUP is
511    mysteriously received at the username prompt and the program exits.
512
513  Revision 623.5  2004/07/15 02:54:49  ajc
514  * serv_network.c: grab and use a networker-local copy of the network
515    configuration, ensuring that it doesn't accidentally get clobbered while
516    the network is running.
517
518  Revision 623.4  2004/07/11 18:41:39  ajc
519  * Updated roadmap document slightly
520
521  Revision 623.3  2004/07/11 03:59:02  ajc
522  serv_network.c: small fix to above
523
524  Revision 623.2  2004/07/11 03:50:31  ajc
525  * serv_network.c: removed a stray end_critical_section()
526  * serv_network.c: purge invalid ignet_push_share entries during
527    netconfig load instead of during rewrite
528
529  Revision 623.1  2004/07/10 02:51:01  ajc
530  * Changed "policy set" message to "policy has been updated" to make it
531    clearer.
532
533  Revision 623.0  2004/07/06 18:15:04  ajc
534  * THIS IS 6.23
535
536  Revision 622.7  2004/07/06 18:09:13  ajc
537  * When writing a message body to the CDB_BIGMSGS table instead of the main
538    message base, increase data length by one byte in order to include the
539    NULL terminator.  (Doh!)
540
541  Revision 622.6  2004/07/03 04:09:37  ajc
542  * Check the "Permission to send Internet mail" access controls when
543    messages are submitted via Authenticated SMTP.
544
545  Revision 622.5  2004/06/28 17:09:20  ajc
546  * Properly re-terminate messages posted via IMAP APPEND.  The newline
547    conversion process was shortening the text but not adjusting string
548    termination, causing extra message snippets to appear.
549
550  Revision 622.4  2004/06/24 20:38:06  ajc
551  * updated serv_vandelay.c to include new "c_ip_addr" config
552
553  Revision 622.3  2004/06/24 20:33:37  ajc
554  * Bumped internal version number to 6.23
555  * Added "Server IP address" to config (server, client, docs)
556
557  Revision 622.2  2004/06/24 15:26:33  ajc
558  * Updated the ig_tcp_server() function to allow binding to a single IP
559    address.  This is not yet used by anything.
560
561  Revision 622.1  2004/06/24 02:34:39  ajc
562  * serv_imap.c: when an IMAP socket breaks while a folder is selected,
563    auto-expunge the folder before closing it.  Fixes the "mysteriously
564    reappearing deleted messages" for clients that just drop the session
565    without issuing a CLOSE when the user closes the window.
566
567  Revision 622.0  2004/06/19 03:20:22  ajc
568  * THIS IS 6.22
569
570  Revision 621.19  2004/06/19 03:13:26  ajc
571  * Updated internal version number to 6.22
572
573  Revision 621.18  2004/06/19 02:35:16  ajc
574  *** empty log message ***
575
576  Revision 621.17  2004/06/19 02:33:54  ajc
577  * Removed the configuration option "Allow Aides access to all mailboxes."
578    This functionality *must* always be enabled for administrative create/edit
579    of vCards, which live in the user's My Citadel Config> room.
580
581  Revision 621.16  2004/06/16 04:17:43  ajc
582  * More scheduler changes.  Removed the rescan pipe again, and also
583    removed the mutex wrapper around select().  In my initial testing I am
584    getting reliable, fast service, but further testing is needed.
585
586  Revision 621.15  2004/06/16 03:13:02  ajc
587  * Scheduler fix ... added the rescan pipe back in
588
589  Revision 621.14  2004/06/15 20:42:42  ajc
590  * Store the body of any large (>1K) message in a separate database.  This
591    will allow fast headers-only retrieval later.
592
593  Revision 621.13  2004/06/15 03:05:01  ajc
594  * Bumped internal version number to 6.22
595  * Added a new faster headers-only mode that excludes enumeration of
596    MIME parts.
597
598  Revision 621.12  2004/06/14 19:09:26  ajc
599  * serv_vandelay.c: re-inserted a missing line of code for setting tempfile
600    names, which was causing exports to crash.
601
602  Revision 621.11  2004/06/11 01:26:02  ajc
603  * Optimized the scheduler some more.  The S_I_WANNA_SELECT mutex now
604    wraps only the select() call itself.
605
606  Revision 621.10  2004/06/09 03:54:07  ajc
607  * The scheduler can now "wake up" a session to deliver async messages.
608  * Renumbered the "instant msgs waiting" message and changed its usage
609
610  Revision 621.9  2004/06/07 22:12:19  ajc
611  * Removed network/filterlist network/mailinglists network/rnews.xref
612    because none of these are used anymore.
613
614  Revision 621.8  2004/06/07 16:41:28  ajc
615  * Changed "express message" to "instant message" everywhere in the code
616    and documentation, to reflect the now industry-standard terminology for
617    this function.  (Obviously, the server command names have not changed,
618    because that would break everything.)
619
620  Revision 621.7  2004/06/06 22:30:10  ajc
621  * New session scheduler.  All sessions which select() marks for activity
622    are now handled before select() is called again.
623
624  Revision 621.6  2004/06/03 02:49:14  ajc
625  * html.c: allow parsing of tags even when they're qualified
626            (i.e. <TAG foo=bar> instead of just <TAG> )
627  * html.c: handle escaped decimal characters (such as &#39; for an apostrophe)
628
629  Revision 621.5  2004/06/03 02:28:16  ajc
630  * citadel_ipc.c: SETR command was missing defaultview and flags2.  Added.
631
632  Revision 621.4  2004/05/31 15:19:14  ajc
633  * Reworked the security checks for move/copy commands.  Theoretically it's
634    performing all the same checks, but the code is far more readable.
635
636  Revision 621.3  2004/05/26 18:13:15  nbryant
637  * stress.c: silence warning
638
639  Revision 621.2  2004/05/26 16:53:31  nbryant
640  * configure.ac: check for /usr/local/BerkeleyDB.4.2
641
642  Revision 621.1  2004/05/24 01:59:16  ajc
643  * serv_network.c: when processing incoming IGnet spool, give the <C> field
644    priority over the <R> field.  This allows messages emailed to a network
645    room to be shared properly instead of attempting to deliver via email a
646    second time.
647
648  Revision 621.0  2004/05/21 01:58:16  ajc
649  * THIS IS 6.21
650
651  Revision 620.35  2004/05/20 16:14:08  ajc
652  * Changed internal version number to 6.21
653  * Added missing VIEW_* defines in citadel.h (they're used only by WebCit
654    for now, which is why Citadel didn't need them, but they should be there
655    anyway for completeness)
656  * Removed the last vestiges of the built-in spam filter.  It had been
657    commented out, but it's definitely never coming back now, so away it goes.
658  * Updated some of the docs
659
660  Revision 620.34  2004/05/15 14:19:52  error
661  * Scheduler: when next_session is to be deleted, make it point to some
662    other session which isn't being deleted (or NULL if there aren't any).
663
664  Revision 620.33  2004/05/14 03:09:54  ajc
665  * When a session kills itself (for example, due to a broken socket),
666    force the dead_session_purge() to run immediately.  This avoids
667    thousands of error messages for up to the next five seconds while it
668    waits for the next purge.
669  * For the main select() loop, we can now recover from EBADF by jumping
670    back to the code that scans for valid descriptors.  (Yeah, I used a
671    goto.  It's more readable that way, so STFU if you have a problem with
672    it.)
673
674  Revision 620.32  2004/05/11 15:21:45  nbryant
675  * configure.ac: check for <sys/prctl.h>
676  * server_main.c: call prctl(PR_SET_DUMPABLE, 1) if we are dropping root
677    permissions.
678  * sysdep.c: no longer call setrlimit(RLIMIT_CORE, ...); this can be handled
679    from a shell script.
680
681  Revision 620.31  2004/05/10 01:47:11  error
682  * messages.c: Fix crash when trying to use m<Y> next
683
684  Revision 620.30  2004/05/07 20:27:46  ajc
685  # citadel-openldap.schema: updated to include RFC2739 objects & attributes
686
687  Revision 620.29  2004/05/07 19:31:40  ajc
688  * More RFC2739 compliance: when converting vCard to LDAP, include
689    the calFBURL attribute.
690
691  Revision 620.28  2004/05/07 19:09:07  ajc
692  * Implemented partial RFC2739 compliance (calendar free/busy URL in vCard).
693    Still need to add it to LDAP.
694
695  Revision 620.27  2004/05/07 18:17:26  ajc
696  * Scrawled some notes in roadmap.txt
697
698  Revision 620.26  2004/05/06 03:38:26  ajc
699  * Never reduce the size of the thread pool, only increase it (still
700    observing the max ceiling, of course)
701  * Don't explicitly call RemoveContext() when a session exits.  The
702    subsequent call to dead_session_purge() will handle it.
703
704  Revision 620.25  2004/05/03 00:12:27  ajc
705  * Found and removed a bug that caused network rooms to be un-shared with
706    all nodes instead of only with nodes that no longer exist.
707  * New target "make upgrade" (to be consistent with other projects)
708
709  Revision 620.24  2004/04/29 02:37:58  ajc
710  * Updated the roadmap
711
712  Revision 620.23  2004/04/26 15:11:17  ajc
713  * Enable core dumps regardless of system ulimit setting
714    (maybe temporary until we fix BOOM)
715
716  Revision 620.22  2004/04/23 17:27:50  ajc
717  * user_ops.c: do not attempt to save the loaded user record into the
718    supplied buffer, when the supplied buffer is NULL.  (This calling
719    syntax is used to check for the existence of a user without storing it.)
720
721  Revision 620.21  2004/04/21 03:44:50  ajc
722  * serv_crypto.c: small fix to make self-signed certs no longer invalid
723
724  Revision 620.20  2004/04/21 03:00:06  ajc
725  * Replace ctdl_install_certificate() with convenience functions found
726    in the OpenSSL library.
727
728  Revision 620.19  2004/04/20 02:42:54  ajc
729  * techdoc/binaries.txt : updated, now includes WebCit instructions
730  * setup.c: detect when setup is run from within the Citadel Ridiculously
731    Easy Installer and skip the directory prompt; the installer sets it.
732
733  Revision 620.18  2004/04/14 18:43:51  nbryant
734  * citadel.spec: BuildRequire redhat-rpm-config
735
736  Revision 620.17  2004/04/14 16:16:47  nbryant
737  * citadel.spec: don't BuildRequire newt-devel
738
739  Revision 620.16  2004/04/14 03:42:01  ajc
740  * ICAL FREEBUSY output now includes ORGANIZER, DTSTART, and DTEND fields.
741    (Required for Kolab compatibility.)
742
743  Revision 620.15  2004/04/13 23:53:00  nbryant
744  * citadel.spec: BuildRequire bison
745
746  Revision 620.14  2004/04/13 22:44:35  nbryant
747   * citadel.spec: commented out Icon line and the openldap-servers dependency.
748   * citadel.spec: added several BuildRequires. Some of these are, strictly
749     speaking, compile time options, but the goal is to document the runtime
750     dependencies and make sure our RPM's are always built consistently.
751
752  Revision 620.13  2004/04/13 21:09:20  error
753  * citadel.spec: Updated for 6.20p1
754
755  Revision 620.12  2004/04/13 18:31:40  ajc
756  * serv_calendar.c: ICAL FREEBUSY command now tries the supplied name not
757    only as a screen name, but as an email address, and then as an
758    unqualified email address in every hosted domain.  (For Kolab compat)
759
760  Revision 620.11  2004/04/13 02:45:07  ajc
761  * Don't display the "Ending SSL/TLS" log message unless TLS is actually present
762
763  Revision 620.10  2004/04/12 20:51:40  error
764  * citadel.lsm: Update LSM for 6.20p1; uploaded to ibiblio.org
765
766  Revision 620.9  2004/04/09 23:11:01  error
767  * serv_chat.c: Differentiate when a user does not exist when paging users.
768
769  Revision 620.8  2004/04/09 23:05:52  error
770  * user_ops.c: fix unused variable compiler warnings
771
772  Revision 620.7  2004/04/03 15:42:35  ajc
773  * stress.c: include <stdlib.h> in order to get RAND_MAX
774    (Submitted by Thomas.Lotterer@cw.com, Cable & Wireless / OpenPKG)
775
776  Revision 620.6  2004/04/01 04:41:55  ajc
777  * Put some blankety-blank values in the default generated vCard so it's
778    more acceptable to LDAP conversion
779
780  Revision 620.5  2004/03/31 02:19:09  ajc
781  * Change the IMAP folder delimiter from "|" to "/" because more than a few
782    client programs don't follow RFC2060 strictly enough to work with
783    non-"/" delimiters.  Actual slashes in room names appear as "|" in IMAP.
784
785  Revision 620.4  2004/03/30 03:11:07  ajc
786  * control.c: when config.c_maxsessions is unset or negative, set it to 0
787    instead of setting it to 1 when it is 0 or negative.  The default should
788    be unlimited sessions.
789
790  Revision 620.3  2004/03/29 16:05:02  ajc
791  * begin_critical_section() -- bypass transaction checking for S_FLOORCACHE
792    sections, to avoid crashing the db layer
793
794  Revision 620.2  2004/03/29 02:33:19  error
795  * citadel.spec: major modifications for 6.xx (hasn't been updated since 5.xx)
796
797  Revision 620.1  2004/03/27 23:04:59  error
798  * citadel.lsm: update version number, sending to ibiblio
799
800  Revision 620.0  2004/03/27 02:33:26  ajc
801  * THIS IS 6.20
802
803  Revision 614.105  2004/03/27 02:33:10  ajc
804  * Bumped the version number to 6.20
805  * Corrected session.txt writeup for CONF command (three of the five LDAP
806    related fields were missing)
807  * Updated the roadmap documentation slightly
808
809  Revision 614.104  2004/03/27 02:21:30  ajc
810  * Completed documenting the LDAP Connector
811
812  Revision 614.103  2004/03/26 05:41:25  ajc
813  * Began writing up the LDAP Connector for Citadel in the documentation
814
815  Revision 614.102  2004/03/26 05:40:47  ajc
816  *** empty log message ***
817
818  Revision 614.101  2004/03/26 05:13:15  ajc
819  * citadel-slapd.conf: comment out the reference to the Citadel schema
820    and add "schemacheck off" to make it easier to get started with the
821    Citadel LDAP connector.  Also made the backend in the sample conf
822    ldbm instead of bdb, because that's what RH9 ships with.
823
824  Revision 614.100  2004/03/24 21:23:50  ajc
825  * msgbase.c: repaired a memory leak
826
827  Revision 614.99  2004/03/24 17:07:11  ajc
828  * Put a new memory leak checker into the server because it turns out that
829    the third-party ones all suck.  :)  This one doesn't involve renaming
830    all of the malloc() related functions, though.
831
832  Revision 614.98  2004/03/24 15:04:06  ajc
833  * stress.c: fix "wrong password" race condition by giving the very
834    first worker thread time to finish creating the user account before the
835    other threads start using it.  (Ok, I fixed it by creating a different
836    race condition, but if your Citadel takes more than three seconds to
837    create an account, your problems can't be fixed with the stress tester.)
838
839  Revision 614.97  2004/03/24 03:46:40  ajc
840  * Reorg header stuff to make it more compatible with leak checkers
841
842  Revision 614.96  2004/03/24 03:25:19  ajc
843  * Removed the built-in memory leak checker.  It wasn't threadsafe and
844    there now exist third-party utilities that do this job better.
845
846  Revision 614.95  2004/03/24 02:59:19  ajc
847  * After initializing the database, chown and chmod all files in the data/
848    directory correctly to avoid EPERM errors later on when we drop root privs
849
850  Revision 614.94  2004/03/22 19:37:28  error
851  * sysdep.c: worker_thread(): Make scheduling a little more fair to higher
852    sessions
853  * sysdep.c: lprintf(): Enable microsecond display in trace file
854  * stress.c: worker(): Sleep for random amount of time as per specification
855
856  Revision 614.93  2004/03/21 22:51:54  error
857  * Fix a few remaining lprintf(9, ...) to lprintf(CTDL_DEBUG, ...)
858
859  Revision 614.92  2004/03/21 22:35:20  error
860  * stress.c: Wait before posting instead of after posting.
861
862  Revision 614.91  2004/03/21 22:34:41  error
863  * database_sleepycat.c: emit a panic message when Berkeley DB wants us to
864    run recovery; should provide a little more detail on the actual error
865
866  Revision 614.90  2004/03/21 22:32:24  ajc
867  * room_ops.c: increased the thread safety of cgetfloor()
868  * housekeeping.c: check floor reference counts in two passes instead of
869    trying to manipulate multiple tables in O^2
870
871  Revision 614.89  2004/03/21 17:14:46  error
872  * stress.c: Fixed.  Now properly spawns threads and stresses out your
873    favorite Citadel server by simulating large numbers of really active
874    users.  (It's configurable on the command line, too, to vary the stress
875    level.)  Don't use it against a production system!  You've been warned!
876
877  Revision 614.88  2004/03/21 17:13:15  error
878  * configure.ac: Fix for defines for pthreads not being included properly
879
880  Revision 614.87  2004/03/21 06:15:06  ajc
881  * docs/citadel.html: documented TLS support and administration procedures
882
883  Revision 614.86  2004/03/20 22:32:06  ajc
884  * citadel.rc: changed the comments around local_screen_dimensions= to
885    reflect its legacy type of situation
886
887  Revision 614.85  2004/03/16 22:44:15  ajc
888  * Better conversion of friendly name to fully qualified vcard name
889
890  Revision 614.84  2004/03/16 21:09:37  ajc
891  * Eliminate EVT_OUTPUTMSG server extensions (don't need them anymore)
892  * Add EVT_NEWUSER server extensions
893  * EVT_NEWUSER and EVT_PURGEUSER server extensions now specify a
894    struct ctdluser * instead of a username and usernum
895  * serv_vcard.c: automatically create and submit a skeleton vCard when
896    a new user is created.
897
898  Revision 614.83  2004/03/16 19:05:50  error
899  * Further changes to stress.c, Makefile.in to build it, .cvsignore
900    (but it's still broken)
901
902  Revision 614.82  2004/03/15 18:11:34  error
903  * stress.c: various fixed/improvements (but it still isn't working)
904
905  Revision 614.81  2004/03/15 17:22:14  error
906  * First draft of the stress tester.  Isn't quite ready (it needs to be
907    tested itself!).
908
909  Revision 614.80  2004/03/15 16:48:22  error
910  * Documentation update: update citadel.html for new syslog logging
911
912  Revision 614.79  2004/03/15 16:47:04  error
913  * msgbase.c: cmd_move(): Fix the security logic for non-aides trying to
914    move or copy messages.  The logic should do the following:
915    * Allow move/copy for Aides
916    * Allow regular users to:
917      * Move a message between two personal rooms
918      * Copy a message from a Personal room to a room the user is subscribed to
919      * Copy a message from a room the user is subscribed to, to a personal room
920    * Prohibit other moves/copies
921
922  Revision 614.78  2004/03/15 16:39:27  error
923  * Multiple files: Set permissions on existing Citadel directories to prevent
924    access to the database by local unix users to prevent direct database reads.
925
926  Revision 614.77  2004/03/15 16:36:50  error
927  * Multiple files:  Convert most remaining client code to use new Citadel IPC
928    functions.  A few bits remain and will be converted when the chat system
929    is rewritten.
930
931  Revision 614.76  2004/03/14 06:35:46  ajc
932  * Cache IMAP "BODY" fetches in an already-converted format.  This speeds
933    up clients like Mozilla and Thunderbird that request big messages in
934    chunks -- we don't have to load and convert the message every time
935    another chunk is requested.
936  * Fixed a potential memory leak in fetch
937
938  Revision 614.75  2004/03/13 23:26:10  ajc
939  * imap_fetch.c: don't fetch the message from disk at all for UID and FLAGS
940    fetch items.  (It's rare, but sometimes IMAP optimizations are actually
941    possible, despite Mark DIE DIE DIE Crispin's brain-dead design!)
942
943  Revision 614.74  2004/03/13 22:52:05  ajc
944  * Documented the GNET and SNET commands  :)
945
946  Revision 614.73  2004/03/12 19:35:13  error
947  * routines2.c: Fix two typos
948
949  Revision 614.72  2004/03/12 19:32:09  error
950  * routines2.c: Convert multiple functions to use new IPC code (almost done!)
951
952  Revision 614.71  2004/03/12 19:30:06  error
953  * citadel.c: main(): Fix error response for RCHG, HCHG and UCHG commands.
954
955  Revision 614.70  2004/03/12 19:28:04  error
956  * Implement GNET/SNET commands in IPC code; provide a CtdlIPC_delete();
957    emit warnings when client code uses CtdlIPC_getline() or CtdlIPC_putline()
958    (These are reserved and should not be used by client code.)
959
960  Revision 614.69  2004/03/10 04:50:04  ajc
961  * serv_expire.c: auto-purge any Citadel account that is associated with
962    a Unix account that no longer exists.
963
964  Revision 614.68  2004/03/09 20:46:33  error
965  * Add a Linux Software Map file
966
967  Revision 614.67  2004/03/08 05:26:49  ajc
968  * When the last argument of an IMAP APPEND command is a binary literal
969    (i.e. all the time), the client will still be sending a CRLF after the
970    literal.  Added an extra client_read() after the message input to absorb
971    that extra CRLF, to keep client and server from getting out of sync.
972
973  Revision 614.66  2004/03/06 05:09:04  ajc
974  * serv_smtp.c: don't offer the STARTTLS extension if TLS is already
975    active.  Done for to-the-letter compliance with RFC2487.
976
977  Revision 614.65  2004/03/06 02:03:39  ajc
978  * serv_smtp.c: do not offer the PIPELINING extension when TLS is
979    running.  Doing so causes sessions to hang unexpectedly.
980
981  Revision 614.64  2004/03/05 23:21:25  ajc
982  * Added some more debugging to serv_smtp.c to try to figure out the
983    problem with Postfix TLS hanging during send
984
985  Revision 614.63  2004/03/05 03:36:03  ajc
986  * Remove the automatic population of A and N fields we recently added
987    when found to be NULL.  It was confusing the output functions into
988    thinking that Internet messages were local.
989
990  Revision 614.62  2004/03/03 05:43:29  ajc
991  * Generate better output when a user is kicked out of chat
992
993  Revision 614.61  2004/03/01 22:36:14  ajc
994  * Implement the NAMESPACE extension of IMAP (RFC 2342)
995
996  Revision 614.60  2004/03/01 17:47:28  error
997  * Fix missing arg in m<Y> next rewrite.
998
999  Revision 614.59  2004/03/01 17:33:30  error
1000  * Rewrite m<Y> next function; now uses CtdlIPC code.
1001
1002  Revision 614.58  2004/03/01 04:08:34  ajc
1003  * Revoke access to room when /kicked
1004
1005  Revision 614.57  2004/02/29 23:26:48  ajc
1006  * Added /kick command to chat.  /ban coming soon.
1007
1008  Revision 614.56  2004/02/28 16:37:41  ajc
1009  * setup.c: removed an unused temp file name variable
1010
1011  Revision 614.55  2004/02/27 17:23:21  error
1012  * Use syslog-compatible logging levels in lprintf(); the loglevel chosen
1013    is passed directly to syslog().  The available levels are docuemnted in
1014    sysdep_decls.h.
1015
1016  Revision 614.54  2004/02/27 04:29:00  ajc
1017  * Fixed a bug in PLAIN authentication
1018
1019  Revision 614.53  2004/02/26 22:03:24  error
1020  * ;Goto floor now goes to first KNOWN room, or first room only if no known
1021    rooms on the floor
1022
1023  Revision 614.52  2004/02/26 20:30:36  error
1024  * Populate IPC into a few more places to avoid a nasty crash at MORE prompt
1025
1026  Revision 614.51  2004/02/26 20:17:29  error
1027  * Client stability and enhancements:
1028    * CtdlServInfo structure moved inside CtdlIPC; eliminates unnecessary
1029      global and makes IPC more self-contained
1030    * Removed redundant serv_ from variable names in CtdlServInfo struct
1031    * Send SIGHUP to process group when connection_died().  Kills self and
1032      children (e.g. external editor).
1033
1034  Revision 614.50  2004/02/25 01:35:34  error
1035  Missing parameter to a printf() function.  No idea where it went, but I
1036  put it back.
1037
1038  Revision 614.49  2004/02/24 05:09:06  ajc
1039  * Better validation of incoming network messages.
1040
1041  Revision 614.48  2004/02/23 16:10:47  nbryant
1042  --disable-pie by default.
1043
1044  Revision 614.47  2004/02/22 04:55:15  ajc
1045  * CSR code more or less in its final form for now.
1046
1047  Revision 614.46  2004/02/22 04:42:05  ajc
1048  * Initial version of function to automatically generate a Certificate
1049    Signing Request if one is not present
1050
1051  Revision 614.45  2004/02/20 19:29:05  error
1052  * Fix bug 112: .Goto allowed partial room match on forgotten rooms
1053
1054  Revision 614.44  2004/02/20 02:55:18  ajc
1055  * Fixed one of the prompts (bugzilla #118)
1056
1057  Revision 614.43  2004/02/19 04:12:56  ajc
1058  * Instead of doing the silly "Kolab reserved folder names" thing, instead
1059    implemented the Cyrus-compatible style of forcing all personal mailbox
1060    folders to be subfolders of INBOX.  But only for IMAP.
1061
1062  Revision 614.42  2004/02/18 14:46:05  ajc
1063  * smtp: EHLO response now includes both "AUTH " and "AUTH=" output, due to
1064    the requirement to interoperate with brain-dead Microsoft shitware that
1065    doesn't follow the RFC.
1066
1067  Revision 614.41  2004/02/17 16:56:51  ajc
1068  * During SSL initialization, create the "keys" directory if it does not
1069    exist ... generate a private key if that does not exist ... more code
1070    coming soon to generate CSR and self-signed cert.  Hard-coded pathnames
1071    have been moved to sysconfig.h.
1072
1073  Revision 614.40  2004/02/17 04:47:22  ajc
1074  * Support PLAIN auth method in SMTP
1075
1076  Revision 614.39  2004/02/17 03:53:11  ajc
1077  * New ICAL subcommand "sgi" to enable or disable automatic server
1078    generated invitations.  (WebCit wants sgi's but Kontaqt doesn't.)
1079
1080  Revision 614.38  2004/02/16 21:54:22  ajc
1081  * Support POP3 over TLS
1082
1083  Revision 614.37  2004/02/16 21:45:43  ajc
1084  * Implement RFC 2487 - SMTP Service Extension for Secure SMTP over TLS
1085
1086  Revision 614.36  2004/02/16 21:02:28  ajc
1087  * IMAP and Citadel protocols now use the same code path for TLS negotiation
1088
1089  Revision 614.35  2004/02/16 20:55:47  ajc
1090  * Genericized the Citadel API for TLS-enabling protocols
1091
1092  Revision 614.34  2004/02/16 18:16:39  error
1093  * Remove some unnecessary and possibly hazardous debugging code leftover
1094    from debugging IMAP STARTTLS
1095
1096  Revision 614.33  2004/02/16 18:14:00  error
1097  * Fixed IMAP STARTTLS; trouble was in client_read_ssl the whole time.
1098    It should now be possible to implement SSL/TLS for any protocol.
1099
1100  Revision 614.32  2004/02/16 18:13:10  error
1101  * Log session IDs in syslog as well as stderr
1102
1103  Revision 614.31  2004/02/16 15:06:44  error
1104  * Add specific error codes for every command on the wire protocol, so that
1105    clients can more easily determine what went wrong.  Partially updated
1106    session.txt (will finish it later).  This lets clients more easily
1107    determine what, if anything, went wrong with a particular command.
1108
1109  Revision 614.30  2004/02/15 06:06:49  ajc
1110  * More work on IMAP TLS.  Still not working correctly.  :(  Added in
1111    support for server-side certificates.  Now instead of failing it hangs.
1112
1113  Revision 614.29  2004/02/14 04:41:55  ajc
1114  * STARTTLS attempt #2.  Still disabled because it's broken.
1115
1116  Revision 614.28  2004/02/13 20:51:13  error
1117  * Reset screen attributes before fork() so that external programs do the
1118    right thing
1119
1120  Revision 614.27  2004/02/12 04:16:38  ajc
1121  * Support for PLAIN logins in IMAP (need to test!)
1122
1123  Revision 614.26  2004/02/11 03:50:49  ajc
1124  * The groupware folders "Calendar", "Contacts", "Notes", and "Tasks" are
1125    now presented as subfolders of INBOX when using IMAP.  This is for the
1126    purpose of Kolab compatibility.
1127
1128  Revision 614.25  2004/02/09 22:40:57  error
1129  * oops...also close the client on EOF/error on tty OUTPUT
1130
1131  Revision 614.24  2004/02/09 22:26:17  error
1132  * Exit the citadel client when EOF reached on input - should prevent
1133    a process from hanging around when a telnet connection dies unexpectedly
1134
1135  Revision 614.23  2004/02/08 05:29:34  ajc
1136  * Corrected various small syntax conversion problems that were keeping
1137    some vCards out of the LDAP directory.
1138
1139  Revision 614.22  2004/02/07 05:28:10  ajc
1140  * Automatically purge files from ./network/spoolout which were intended
1141    for nodes which no longer exist
1142
1143  Revision 614.21  2004/02/07 04:59:21  ajc
1144  * Cache the IGnet config in memory, avoiding a db fetch for every single
1145    operation which references it.  Invalidate the cache when a new config
1146    is uploaded.
1147  * When doing network spool for a room, automatically remove shares for
1148    Citadel nodes which no longer exist.
1149
1150  Revision 614.20  2004/02/07 04:22:12  ajc
1151  * serv_network.c: fixed a problem with an uninitialized data structure
1152
1153  Revision 614.19  2004/02/06 04:40:50  ajc
1154  * Suppress posting of messages to Aide> when the loopzapper catches dupes.
1155  * New command NSYN to sync the entire contents of a room to a specified
1156    network node.  This will be used to bring new nodes in sync with existing
1157    nodes.
1158
1159  Revision 614.18  2004/02/06 03:58:10  ajc
1160  * Added some comments to the sample citadel-slapd.conf
1161
1162  Revision 614.17  2004/02/06 03:52:46  ajc
1163  * Changed the domain name and password in the sample slapd.conf
1164
1165  Revision 614.16  2004/02/05 05:20:20  ajc
1166  * Delete a user's LDAP entry when deleting the vCard.  NOT TESTED.
1167
1168  Revision 614.15  2004/02/05 03:54:14  ajc
1169  * Completed the per-user initialization of LDAP entries.
1170
1171  Revision 614.14  2004/02/04 18:27:25  error
1172  * Don't delete temp file when composing message until after server writes
1173    it successfully (or an error occurs in the client itself).
1174
1175  Revision 614.13  2004/02/04 04:07:56  ajc
1176  * More work on LDAP connector
1177
1178  Revision 614.12  2004/02/01 06:19:22  ajc
1179  * policy.c: fix bug in GetExpirePolicy() that was causing the default
1180    mailbox purge policy to be misinterpreted if it was set to "use
1181    system default"
1182  * serv_vcard.c: always set the Global Address Book room's expire policy
1183    to "never expire" and its default view to "address book"
1184
1185  Revision 614.11  2004/01/31 05:44:29  ajc
1186  *** empty log message ***
1187
1188  Revision 614.10  2004/01/27 19:56:29  ajc
1189  * serv_smtp.c: HELO and EHLO responses now reply with the detected
1190    IP address and reverse DNS lookup of the connecting host
1191
1192  Revision 614.9  2004/01/24 05:47:50  ajc
1193  * Got Citadel talking to LDAP.  Still requires manual creation of schema
1194    and container entries, which I don't like; we'll have to fix that.  It
1195    also does not yet populate all fields.
1196
1197  Revision 614.8  2004/01/19 21:01:15  error
1198  * Clear out the autom4te.cache when bootstrapping to avoid autoheader problems
1199
1200  Revision 614.7  2004/01/19 04:44:11  ajc
1201  * Further work on creating LDAP entries.
1202
1203  Revision 614.6  2004/01/18 21:04:40  ajc
1204  * Reworked vCard etc. functions for addition of new vCard data to LDAP
1205
1206  Revision 614.5  2004/01/17 22:57:54  ajc
1207  * Added "Base DN" "Bind DN" and "Bind DN password" config options
1208  * serv_ldap.c: added.  (New module implementing the LDAP Connector)
1209  * Upon startup, connect to LDAP directory and bind to it.  Unbind at exit.
1210
1211  Revision 614.4  2004/01/17 04:23:28  ajc
1212  * Sysconfig commands for specifying where the LDAP server lives
1213
1214  Revision 614.3  2004/01/17 03:26:17  ajc
1215  * Changed a diagnostic in msgbase.c to a higher logging level so it doesn't
1216    make as much noise.
1217  * Setup now adds "-x3 -llocal4" to the default inittab line.
1218
1219  Revision 614.2  2004/01/17 03:17:34  ajc
1220  * New server command-line option "-l" to send log output to the host
1221    computer's syslog facility instead of to a trace file.
1222
1223  Revision 614.1  2004/01/02 22:13:59  ajc
1224  * Link to OpenLDAP client library (-lldap) and set HAVE_LDAP if present.
1225
1226  Revision 614.0  2003/12/30 04:13:40  ajc
1227  * THIS IS 6.14
1228
1229  Revision 613.12  2003/12/30 04:13:31  ajc
1230  * Commented out one of the supplied .RU commands in citadel.rc
1231
1232  Revision 613.11  2003/12/24 05:02:49  ajc
1233  * Allow a separate default message expire policy for mailbox rooms.  The
1234    floor default setting is now ignored for mailboxes.  Updated client and
1235    documentation to match.
1236
1237  Revision 613.10  2003/12/23 03:53:49  ajc
1238  * Expanded the size of all string fields in "struct CtdlIPCMessage" to
1239    the standard SIZ length, in order to accomodate "weird" messages
1240    without crashing.  Also converted many strcpy()'s to safestrncpy()'s
1241    while populating this data structure, to avoid overruns.
1242
1243  Revision 613.9  2003/12/22 16:49:36  error
1244  * Add Preview for Mac OS X as an image viewer option in citadel.rc
1245
1246  Revision 613.8  2003/12/22 15:30:53  error
1247  * Fork image viewer process in background (works now); suppress
1248    stdout/stderr from the image viewer
1249
1250  Revision 613.7  2003/12/21 20:02:28  error
1251  * When viewing images, append the image filename to the temp filename so
1252    that less-intelligent viewers can deal with the images
1253
1254  Revision 613.6  2003/12/21 19:07:28  error
1255  * Start a new thread and fork() for image viewer (broken/disabled; for
1256    refernce only)
1257
1258  Revision 613.5  2003/12/21 01:23:12  nbryant
1259  added some additional comments to citadel.rc concerning possible image viewers
1260
1261  Revision 613.4  2003/12/21 00:44:19  error
1262  * Fix for idle_threshold being ignored when reading citadel.rc
1263
1264  Revision 613.3  2003/12/21 00:37:54  error
1265  * Fix for crash when downloading multiple attachments
1266
1267  Revision 613.2  2003/12/21 00:19:41  error
1268  * Image viewer code for the text client.  Hit 'I' to view an image
1269    attached to a file.  Hey aahz, this code actually works!
1270
1271  Revision 613.1  2003/12/19 04:33:52  ajc
1272  * Changes to auto-expunge algorithm to support correct behavior in
1273    some IMAP clients while moving messages.
1274
1275  Revision 613.0  2003/12/15 16:37:01  ajc
1276  * THIS IS 6.13
1277
1278  Revision 612.14  2003/12/15 16:33:47  ajc
1279  * Added support for "Cc" and "Bcc" IMAP SEARCHes
1280  * Bumped the version number to 6.13
1281
1282  Revision 612.13  2003/12/11 04:21:23  ajc
1283  * Removed a "FIXME this needs blah blah" comment because blah blah has
1284    since been completed
1285
1286  Revision 612.12  2003/12/11 04:06:55  nbryant
1287  configure.ac: add support for position-independent executables. can be disabled
1288  with --disable-pie
1289
1290  Revision 612.11  2003/12/11 03:44:18  nbryant
1291  domain.c: include <arpa/nameser_compat.h> if present
1292  configure.ac: check for <arpa/nameser_compat.h>
1293
1294  Revision 612.10  2003/12/10 03:58:26  ajc
1295  * Completed a more accurate implementation of the ENVELOPE fetch in IMAP.
1296
1297  Revision 612.9  2003/12/09 06:39:19  nbryant
1298  did a minimal amount of ANSIfication without changing anything that would
1299  affect the compiler output in any way. I was just trying to get enough warnings
1300  enabled to be able to tell if there are any nested functions lurking about...
1301
1302  If we get rid of nested functions we can get some big security gains under
1303  Fedora.
1304
1305  Revision 612.8  2003/12/09 05:12:49  ajc
1306  * Don't give away anonymous poster information in IMAP or RFC822
1307
1308  Revision 612.7  2003/12/09 04:50:16  ajc
1309  * Painstakingly combed through IMAP headers and responses for two hours in
1310    an attempt to figure out why the horrendous pile of crap called Microsoft
1311    Outlook counts the correct number of messages but wasn't displaying any
1312    of them.  Eventually determined that it was ONE EXTRA SPACE after the
1313    closing paren of the ENVELOPE output that caused Outlook to totally ignore
1314    all the messages.  This only reinforces my belief that anything designed
1315    in the state of Washington is utter and complete CRAP.
1316  * Corrected the above glitch.  Outbreak works properly now.
1317
1318  Revision 612.6  2003/12/09 03:56:29  ajc
1319  * user_ops.c: missing string declaration or something?
1320
1321  Revision 612.5  2003/12/08 17:41:01  ajc
1322  * serv_smtp.c: validated and documented compliance with a big pile of RFC's
1323    which are in one way or another related to SMTP.
1324
1325  Revision 612.4  2003/12/07 19:59:13  error
1326  * Minor enhancements to a few of the trace file entries
1327
1328  Revision 612.3  2003/12/07 19:57:48  error
1329  * Added some useless comments to some of the techdocs/ files
1330
1331  Revision 612.2  2003/12/07 19:56:24  error
1332  * CREU command now allows specification of an initial password
1333
1334  Revision 612.1  2003/12/04 04:20:08  ajc
1335  * Incoming RFC822 messages get the To: field translated directly to
1336    a Citadel <R> field.
1337
1338  Revision 612.0  2003/12/01 04:11:48  ajc
1339  * THIS IS 6.12
1340
1341  Revision 611.10  2003/11/30 03:43:34  ajc
1342  * Support IMAP \Answered flag
1343
1344  Revision 611.9  2003/11/22 03:30:14  ajc
1345  * Commented out the call to the 'high speed download' function and
1346    uncommented the call to the original 'chatty' download function.  Some
1347    users were reporting lockups.
1348
1349  Revision 611.8  2003/11/14 20:15:44  ajc
1350  * Reversed the previous change because it made things b0rken
1351
1352  Revision 611.7  2003/11/14 20:04:28  ajc
1353  * IMAP FETCH ENVELOPE now outputs more fields correctly.
1354
1355  Revision 611.6  2003/11/14 03:49:54  ajc
1356  * MUCH faster implementation of rfc822_fetch_field()
1357
1358  Revision 611.5  2003/11/13 04:25:38  ajc
1359  * mime_parser.c: handle multipart *much* more efficiently now.  Instead
1360    of scanning line by line, we snag the boundaries using the Boyer-Moore
1361    algorithm.
1362
1363  Revision 611.4  2003/11/12 04:28:22  ajc
1364  * Replaced bmstrcasestr() with a more generic function, bmstrstr(), which
1365    can be supplied with *any* strncmp()-compatible compare function.
1366
1367  Revision 611.3  2003/11/08 06:46:08  ajc
1368  * IMAP FETCH BODY<xxx.yyy> was outputting the offset and length in the
1369    wrong order.  Fixed.
1370
1371  Revision 611.2  2003/11/08 06:29:47  ajc
1372  * IMAP FETCH FLAGS ... removed extra trailing space after last flag
1373
1374  Revision 611.1  2003/11/06 04:25:30  ajc
1375  * For certain IMAP outputs (such as BODYSTRUCTURE), buffer all output until
1376    we've got the whole thing, then spew it all at once to avoid lots of
1377    tiny TCP packets.
1378  * New API calls buffer_output() (to start buffering) and unbuffer_output()
1379    (to dump the buffer and stop buffering) are available to do this.
1380
1381  Revision 611.0  2003/10/21 04:20:41  ajc
1382  * THIS IS 6.11
1383
1384  Revision 610.22  2003/10/17 02:18:40  ajc
1385  * Replaced the DEFAULT_ENTRY definition in sysconfig.h with a new option
1386    "reply_with_external_editor" in citadel.rc.
1387
1388  Revision 610.21  2003/10/14 03:09:47  ajc
1389  * routines2.c: fixed an off-by-one error in filename sanitization for
1390    client file uploads
1391
1392  Revision 610.20  2003/10/10 05:43:57  ajc
1393  * citadel.c:  Reworded one of the prompts
1394
1395  Revision 610.19  2003/10/07 15:56:17  ajc
1396  * Better handling of incoming Internet addresses consisting of an address
1397    in angle brackets with no name outside the brackets.
1398
1399  Revision 610.18  2003/09/21 04:10:56  ajc
1400  * messages.c: don't crash when a message contains more than MAXURLS of
1401    embedded URL's.  Omit them instead.
1402  * citadel.rc: updated the sample browser remoting command for Macintosh
1403    based on a Mr.T suggestion
1404  * techdoc/session.txt: redid the writeup for the MOVE command (fixed a
1405    mistake and made the writeup clearer)
1406
1407  Revision 610.17  2003/09/17 21:40:13  ajc
1408  * html.c: don't truncate messages when wacky characters are
1409    encountered.  Substitute '?' characters instead.  Now the Citadel
1410    community can complain about b0rken MS ASCII.
1411
1412  Revision 610.16  2003/09/13 02:53:04  ajc
1413  * More intelligent selection of directory to save attachments
1414
1415  Revision 610.15  2003/09/12 15:48:55  ajc
1416  * serv_smtp.c: remember whether we're SMTP or LMTP across a RSET command.
1417
1418  Revision 610.14  2003/09/09 02:42:28  ajc
1419  * Documentation update for LMTP
1420
1421  Revision 610.13  2003/09/09 01:47:02  ajc
1422  * Suppress domain forgery check when using LMTP
1423
1424  Revision 610.12  2003/09/08 18:48:14  ajc
1425  * The unix domain socket used for citmail to talk to citserver now
1426    implements LMTP (RFC2033).  Other LMTP client implementations (such as
1427    Postfix) can also use the socket, eliminating the need for citmail.
1428
1429  Revision 610.11  2003/09/07 03:29:25  ajc
1430  * serv_network.c: aggressively poll any node for which we have data
1431
1432  Revision 610.10  2003/09/06 02:04:54  ajc
1433  * Don't reset "last poll" time when not doing the "full" net processing
1434
1435  Revision 610.9  2003/09/03 03:29:01  ajc
1436  * syslog messages now say session started/ended instead of ended/ended
1437
1438  Revision 610.8  2003/09/03 03:24:40  ajc
1439  * client: remove rooms from the march list when zapping them (or the floors
1440    they're on)
1441
1442  Revision 610.7  2003/09/02 15:05:34  ajc
1443  * Repaired an incorrect adjustment of floor reference counts when a room was
1444    moved to a different floor.  (Thanks to Winzlo for reporting this.)
1445
1446  Revision 610.6  2003/09/02 14:49:05  ajc
1447  * Improve client chat mode reliability and performance by assuming that all
1448    server output will be in complete lines.  (This is a safe assumption.)
1449
1450  Revision 610.5  2003/09/02 04:04:39  ajc
1451  * Don't try to directly spool to non-neighbor nodes
1452
1453  Revision 610.4  2003/08/29 08:21:57  ajc
1454  * Do network runs more proactively.  The inbound queue is now scanned
1455    every minute instead of every poll frequency.
1456
1457  Revision 610.3  2003/08/21 23:26:06  ajc
1458  * setup.c: offer to disable "exim" if found
1459
1460  Revision 610.2  2003/08/20 03:51:08  ajc
1461  * Bumped the internal version number to 6.11
1462
1463  Revision 610.1  2003/08/20 03:36:13  ajc
1464  * Create a "Contacts" room for personal address book use
1465
1466  Revision 610.0  2003/08/17 03:00:37  ajc
1467  * THIS IS 6.10
1468
1469  Revision 609.2  2003/08/17 02:58:46  ajc
1470  * Changed internal version number to 6.10
1471
1472  Revision 609.1  2003/08/17 02:46:37  ajc
1473  * Don't fail on "data files too old to be upgraded" for NEW installations
1474
1475  Revision 609.0  2003/08/14 03:40:55  ajc
1476  * THIS IS 6.09
1477
1478  Revision 608.21  2003/08/13 18:08:24  ajc
1479  * Removed the last vestiges of the now-obsolete global networking password
1480
1481  Revision 608.20  2003/08/13 14:36:04  ajc
1482  * "make install" now installs the contents of docs/ as well as README.txt
1483
1484  Revision 608.19  2003/08/13 14:30:47  ajc
1485  * Temporarily disabled IMAP TLS support due to the discovery of some
1486    compatibility problems.  It will be re-enabled when they are fixed.
1487
1488  Revision 608.18  2003/08/12 00:39:35  ajc
1489  * setup now knows about lots of other mail programs it can disable (various
1490    flavors of Cyrus and Courier, for example)
1491  * setup now ensures that it really did startup/shutdown the Citadel service,
1492    and displays an error message when that fails.
1493  * "make install" now instructs the user run "setup"
1494  * Removed an old GDBM reference from the documentation
1495
1496  Revision 608.17  2003/08/05 03:06:58  ajc
1497  * Added a README.txt file because some Joker kept bugging me about it
1498  * Reloaded the code that extracts embedded URL's to a place where it'll
1499    get picked up on *every* message, not just the old variformat stuff
1500
1501  Revision 608.16  2003/08/03 17:51:52  ajc
1502  * Clear out all masqueraded wholist fields when logging out, in case another
1503    user logs in without reconnecting.
1504
1505  Revision 608.15  2003/07/30 20:36:18  ajc
1506  * Allow users to authenticate with either their display name or any valid
1507    e-mail address which belongs to them.  Applies to all protocols.
1508
1509  Revision 608.14  2003/07/30 03:54:34  ajc
1510  * Fixed a small client bug in the purge hour setting
1511
1512  Revision 608.13  2003/07/30 03:47:53  ajc
1513  * Eliminated the EXPI command
1514  * Completed the configuration item of "purge hour"
1515  * Auto-purger now runs as a scheduled job
1516
1517  Revision 608.12  2003/07/30 00:26:50  ajc
1518  * Removed the "weekly" script and began installing a facility to allow
1519    database maintenance to happen automatically.  (One Step Install can't
1520    require the sysadmin to know cron)
1521
1522  Revision 608.11  2003/07/28 04:17:24  ajc
1523  * migratenet.c: removed.  Adjusted Makefile.in accordingly.
1524
1525  Revision 608.10  2003/07/27 21:15:23  ajc
1526  * Implemented all IMAP date-based search criteria.  Note that Citadel does
1527    not record an "internal date" of a message, so the "sent date" and "internal
1528    date" searches perform identically.
1529  * Date search comparisons available: "before," "on," or "on or after."  Yet
1530    another example of why Mark Crispin needs to be taken outside and shot.
1531
1532  Revision 608.9  2003/07/26 04:49:40  ajc
1533  * Implemented a bunch of the IMAP SEARCH keywords
1534
1535  Revision 608.8  2003/07/26 04:28:44  ajc
1536  * tools.c: added bmstrcasestr(), a Boyer-Moore, case-insensitive string search
1537  * imap_search.c: implement BODY criterion in search command
1538
1539  Revision 608.7  2003/07/24 04:57:53  ajc
1540  * Began implementation of the IMAP SEARCH command.  Basically just got the
1541    parser working and stubbed all the search criteria.  Next step is to
1542    implement the functionality of each criterion keyword.
1543  * Implemented the functionality for the ALL (wow!) and UID criteria.
1544  * Mark Crispin is an idiot.
1545
1546  Revision 608.6  2003/07/23 03:57:05  ajc
1547  * Optimized the updating of visit records in several places by checking to
1548    see if they've changed and aborting the db update if they haven't.
1549  * Functions which read/write user records are now slightly faster due to
1550    an improvement of the algorithm used to generate the database keys.
1551
1552  Revision 608.5  2003/07/22 03:07:50  nbryant
1553  fix build for Solaris
1554
1555  Revision 608.4  2003/07/20 20:46:06  ajc
1556  * build system: link Berkeley DB only to the server, not to the client & utils
1557
1558  Revision 608.3  2003/07/20 03:51:46  ajc
1559  * setup.c: offer to disable sendmail, postfix, and qmail if found (only if
1560    using the /etc/init.d type of startup scripts)
1561
1562  Revision 608.2  2003/07/20 03:08:22  ajc
1563  * setup.c: offer to hack /etc/xinetd.d/telnet
1564
1565  Revision 608.1  2003/07/15 14:54:09  ajc
1566  * Killed off CtdlGetDynamicSymbol() and just put all the symbols in server.h
1567
1568  Revision 608.0  2003/07/15 04:12:52  ajc
1569  * THIS IS 6.08
1570
1571  Revision 607.23  2003/07/14 17:26:42  ajc
1572  * strcpy() --> safestrncpy() in a few other random places
1573
1574  Revision 607.22  2003/07/14 17:12:28  ajc
1575  * Replaced strcpy() with safestrcpy() in cmd_setp()
1576
1577  Revision 607.21  2003/07/14 03:07:05  ajc
1578  * ipgm_secret is no longer set during setup.  Now it is set at server startup
1579    and automatically changes whenever an IPGM command is executed.
1580  * Upon an IPGM authentication failure, wait 5 seconds before displaying an
1581    error, then disconnect the session.
1582
1583  Revision 607.20  2003/07/13 04:58:35  ajc
1584  * Allow connect on unix domain sockets to Citadels in other directories
1585  * sendcommand now uses unix domain sockets instead of the network
1586  * Do not allow IPGM command to run on the network -- unix domain sockets only
1587
1588  Revision 607.19  2003/07/11 22:33:02  ajc
1589  * Ignore comments in public_clients file
1590
1591  Revision 607.18  2003/07/11 22:30:19  ajc
1592  * Automatically add 127.0.0.1 and config.c_fqdn to public_clients
1593
1594  Revision 607.17  2003/07/11 22:19:49  ajc
1595  * is_public_client() now caches the IP addresses of all hosts in
1596    the public_clients file, at server startup and whenever the file is
1597    modified.  This eliminates the need to make lots of calls to the
1598    resolver library every time.
1599
1600  Revision 607.16  2003/07/10 05:51:46  ajc
1601  * Added cs_addr field to struct CitContext -- holds a dotted quad string
1602    of the user's source IP (if applicable).  It's big enough to hold other
1603    types of address strings in the future (such as IPv6).
1604  * locate_host() populates cs_addr when on a network connection.
1605  * serv_smtp.c now saves the IP address in the proper place in
1606    the Received: header.
1607  * is_public_client() no longer accepts a hostname.  It just looks at
1608    CC->cs_host instead.
1609
1610  Revision 607.15  2003/06/29 19:54:39  ajc
1611  * Renamed "struct user" to "struct ctdluser"
1612  * Renamed "struct room" to "struct ctdlroom"
1613
1614  Revision 607.14  2003/06/29 04:13:32  ajc
1615  * Renamed:
1616    S_QUICKROOM to S_ROOMS
1617    S_USERSUPP to S_USERS
1618    CDB_QUICKROOM to CDB_ROOMS
1619    CDB_USERSUPP to CDB_USERS
1620
1621  Revision 607.13  2003/06/29 04:07:11  ajc
1622  * Globally renamed "struct quickroom" and "struct usersupp" to
1623    "struct room" and "struct user".
1624
1625  Revision 607.12  2003/06/29 04:06:41  ajc
1626  *** empty log message ***
1627
1628  Revision 607.11  2003/06/29 03:58:41  ajc
1629  * Renamed fields in 'struct config' which are no longer relevant (but kept
1630    them in place to avoid corrupting everyone's data files).  Removed them
1631    entirely from serv_vandelay.c.
1632
1633  Revision 607.10  2003/06/28 05:12:56  ajc
1634  * Bump internal version number to 6.08
1635  * Use (-1) instead of BBSUID as the uid of user records which exist only
1636    in Citadel and not in the system password database.  serv_upgrade also
1637    changes this setting for ALL such users, the first time the server is run
1638    after upgrading to 6.08
1639
1640  Revision 607.9  2003/06/27 22:19:31  error
1641  * routines2.c: Quick and dirty fix for Mail> becoming new after entering a
1642    mail message
1643
1644  Revision 607.8  2003/06/26 01:50:14  ajc
1645  * Compiler warning fix for building setup without newt
1646
1647  Revision 607.7  2003/06/25 15:40:57  ajc
1648  * setup now uses "newt" instead of "curses" to draw its pretty screens.
1649    Changes were made to setup.c as well as all the autoconf stuff.
1650
1651  Revision 607.6  2003/06/25 02:40:05  ajc
1652  * Per-user and global flags calling for validation need to be set in the
1653    vCard upload thingie, not in the wrapper function that emulates the
1654    deprecated REGI server command.  Moved it to the correct place.
1655
1656  Revision 607.5  2003/06/22 20:49:31  error
1657  * citadel.c: display idle times in wholist up to 999 days
1658
1659  Revision 607.4  2003/06/19 04:12:30  ajc
1660  * domain.c: use qsort() to sort MX records by preference.  Why have a
1661    custom function when the operating system provides one for free?
1662  * serv_smtp.c: accept mail from "<>" (empty sender).  RFC1123 5.2.9 demands it.
1663
1664  Revision 607.3  2003/06/19 03:55:22  ajc
1665  * Fixed a subtle but ugly bug in the SMTP sender that was causing it to
1666    ignore all successful connections except the last one.  Now when it gets
1667    a connection it uses it.
1668
1669  Revision 607.2  2003/06/17 22:05:11  ajc
1670  * New format for wholist.
1671
1672  Revision 607.1  2003/06/16 04:39:45  ajc
1673  * support.c: removed an unused variable
1674  * citadel.c: sort wholist by idle time (most recently active users first)
1675
1676  Revision 607.0  2003/06/10 04:15:39  ajc
1677  * THIS IS 6.07
1678
1679  Revision 606.10  2003/06/04 21:46:13  error
1680  * citadel.c: Added a missing #ifdef __CYGWIN__
1681
1682  Revision 606.9  2003/06/04 21:39:27  error
1683  * Numerous fixups needed for Windows port:
1684    * cmd_mesg() rewritten to use the stat() syscall to find files
1685    * really_do_keepalive() does not try to send if we are not connected
1686    * Misc. fixups; added Windows readme file
1687
1688  Revision 606.8  2003/06/04 21:30:39  error
1689  * messages.c: When file attachment has no name, use message subject as name
1690
1691  Revision 606.7  2003/06/02 23:11:00  error
1692  * Checkin installer script citadel.nsi for NSIS Windows installer
1693
1694  Revision 606.6  2003/06/02 03:01:22  ajc
1695  * citserver.c: added another trace message to is_public_client().  Uncensored
1696    has crashed twice in this function, for no apparent reason.
1697  * internet_addressing.c: don't attempt to look up the specified Internet
1698    address in a Citadel directory, if the supplied address has no hostname
1699    portion.  (Fixes a crash in the calendar service when alias() attempts to
1700    look up potentially nonexistent attendees during event validation)
1701
1702  Revision 606.5  2003/05/28 03:08:38  ajc
1703  * msgbase.c: validate_recipients() now rejects Internet addresses in
1704    domains belonging to the local system or an attached Citadel network,
1705    when it fails to translate to a Citadel address.
1706
1707  Revision 606.4  2003/05/26 05:36:25  ajc
1708  * citadel.h: changed internal version number to 6.07
1709  * file_ops.c: #include <ctype.h>
1710  * migratenet.c: #include <ctype.h>
1711
1712  Revision 606.3  2003/05/26 05:30:18  ajc
1713  * serv_calendar.c: fixed a bug in the "ICAL freebusy" subcommand which
1714    caused it to always fetch the logged in user's freebusy times instead
1715    of the user specified.
1716
1717  Revision 606.2  2003/05/22 13:34:30  ajc
1718  * database_sleepycat.c: added a couple of diagnostic messages to help
1719    troubleshoot problems with db-4.1.25 on Red Hat Linux 9
1720  * room_ops.c: call mkdir() instead of system() to create a directory
1721
1722  Revision 606.1  2003/05/20 01:28:50  error
1723  * citadel.c: don't truncate roomname when user is idle, in long who list;
1724    display idle time in short who list
1725
1726  Revision 606.0  2003/05/16 15:17:11  ajc
1727  * THIS IS 6.06
1728
1729  Revision 605.50  2003/05/16 14:59:08  ajc
1730  * Removed the old rec_log() facility because the utilities which read its
1731    data are crufty, disused, and produce incorrect output.
1732  * Updated the documentation for the forthcoming 6.06 release.
1733  * public_clients: removed hostnames which crept in from development servers
1734
1735  Revision 605.49  2003/05/16 04:07:37  nbryant
1736  make configure.ac automagically do the right thing on redhat 9
1737  remove crappy tolower() hack that was breaking the build on redhat 9
1738  (because the kerberized openssl includes ctype.h)
1739
1740  before anyone yells at me, i did a little cvs archaeology on the tolower
1741  thing, and it appears to have been in the Citadel source base since,
1742  roughly, the Epoch. I doubt that the hack is needed any longer, and using
1743  the OS's tolower() will handle extended charsets.
1744
1745  Anyone who is stupid enough to be using an OS with such a horribly broken
1746  tolower() can just scratch their head and figure things out for
1747  themselves. Citadel needs higher barriers to entry, there are too many
1748  weirdos on the IGnet lately. :-)
1749
1750  Revision 605.48  2003/05/13 03:22:04  ajc
1751  * Implemented the IMAP STARTTLS command as specified in RFC 2595.
1752
1753  Revision 605.47  2003/05/06 03:38:59  ajc
1754  * IMAP folder create and rename commands -- don't allow backslashes in
1755    folder names.
1756
1757  Revision 605.46  2003/05/03 16:50:52  ajc
1758  * Change folder delimiter in room names from / to \
1759
1760  Revision 605.45  2003/05/02 04:02:47  ajc
1761  * setup.c: allow specification of the Citadel system account by either
1762             username or uid
1763  * setup.c: tell init to re-read /etc/inittab by sending a SIGHUP to pid 1
1764             instead of hunting around for the correct init or telinit command
1765  * docs/citadel.html: documented the above change, and also rewrote some
1766                       other stuff to be less BBS-specific
1767
1768  Revision 605.44  2003/04/30 16:16:13  ajc
1769  * Minor fix to ESMTP greeting (missing '-' screwed up pipelining)
1770
1771  Revision 605.43  2003/04/30 15:46:27  ajc
1772  * Added the ENHANCEDSTATUSCODES extention to ESMTP.
1773
1774  Revision 605.42  2003/04/29 04:41:22  ajc
1775  * Fix an off-by-one error in the mime parser
1776
1777  Revision 605.41  2003/04/29 04:13:58  ajc
1778  * mime parser: look for the "name=" subfield tacked onto either
1779    Content-type or Content-disposition, wherever it finds it.
1780
1781  Revision 605.40  2003/04/28 16:56:51  ajc
1782  * Added a site-configurable setting to suppress the automatic correction of
1783    forged From: lines from authenticated SMTP users, for those who prefer
1784    strict RFC compliance instead of common sense.
1785
1786  Revision 605.39  2003/04/26 21:55:15  ajc
1787  * Anytime a socket connect() fails, CLOSE THE SOCKET before erroring out.
1788    Not doing so causes a file descriptor leak.
1789
1790  Revision 605.38  2003/04/26 04:22:51  ajc
1791  * Removal of individual "remote" lines from message delivery instruction sets
1792    was corrupting the end of the set, rendering the "bounceto" line unusable
1793    and preventing bounces from being delivered.  Fixed this by explicitly
1794    adding a trailing newline when remove_token() strips it.
1795
1796  Revision 605.37  2003/04/25 18:28:47  ajc
1797  * When rejecting spam, use SMTP error code 550, not 552
1798
1799  Revision 605.36  2003/04/23 03:18:44  ajc
1800  * Allow IMAP STORE of more than one flag at a time (Mail.app from MacOS
1801    does this).
1802
1803  Revision 605.35  2003/04/15 02:44:02  ajc
1804  * Do not allow incoming network polls while an outbound network processing
1805    session is in progress.
1806  * tools.c: removed collapsed_strcmp() as it is no longer used anywhere
1807
1808  Revision 605.34  2003/04/08 04:03:37  ajc
1809  * Implemented the ".SILENT" protocol option in IMAP STORE.  Certain apps seem
1810    to want to use it.
1811  * Optimized the IMAP operations which scan for expunged and added messages.
1812    These loops no longer make multiple traversals through the message list.
1813
1814  Revision 605.33  2003/04/07 05:02:23  ajc
1815  * Reworked all the "list rooms" operations so that they only require one
1816    pass through the database.
1817  * Repaired the "create floor" operation which was broken by the switch
1818    to the new IPC libray
1819
1820  Revision 605.32  2003/04/02 13:33:28  ajc
1821  * Fixed output of "-0500" vs. "+0500" type of timezone stamps in RFC822.
1822    (I think they were reversed.)
1823
1824  Revision 605.31  2003/04/01 05:01:08  ajc
1825  * sysdep.c: optimized MyContext() a bit, and inlined it.  A little profiling
1826    revealed that this function was getting used super heavily.
1827  * tools.c: removed the older, slower string tokenizer functions that
1828    weren't getting used anymore.
1829
1830  Revision 605.30  2003/03/31 04:55:58  ajc
1831  * Repaired the formatting of text/plain messages with blank lines.
1832
1833  Revision 605.29  2003/03/30 06:16:52  ajc
1834  * Optimized CtdlReadMessageBody() and also gave it an option to store
1835    messages with CRLF newlines instead of LF.  This option is used when
1836    reading SMTP in order to keep Pine from barfing on LF-terminated newlines
1837    while decoding quoted-printable.  Once again, Mark Crispin is an idiot.
1838
1839  Revision 605.28  2003/03/26 05:17:12  ajc
1840  * Downloading of attachments was completely broken by the change to the new
1841    protocol library.  Located and fixed bugs.
1842  * html.c: increased the conversion buffer size
1843
1844  Revision 605.27  2003/03/24 03:42:14  ajc
1845  * Add the ability to quit out while validating users.  Also added a help
1846    option listing available access levels.  This closes Bugzilla #37.
1847
1848  Revision 605.26  2003/03/22 05:38:23  ajc
1849  * During startup, display the version string from the Berkeley DB library.
1850  * When deleting a mailbox, don't reveal the namespace prefix to the user.
1851
1852  Revision 605.25  2003/03/20 08:37:04  error
1853  * connection_died(): Don't crash before printing message, crash afterward.
1854    (Bugzilla id 111)
1855
1856  Revision 605.24  2003/03/19 11:48:06  error
1857  * entmsg(): Don't corrupt the msg_arr[] when replying to a message in a room
1858
1859  Revision 605.23  2003/03/19 04:04:56  ajc
1860  * Dropped support for GDBM and for versions of Berkeley DB prior to 4.1
1861
1862  Revision 605.22  2003/03/18 05:15:05  ajc
1863  * Applied a patch sent in by Clint Adams <schizo@debian.org> to handle
1864    building on Debian's unstable with Berkeley DB 4.1, compiled with
1865    the --with-db-uniquename when errno is a macro (as in glibc 2.3.1).
1866
1867  Revision 605.21  2003/03/17 11:56:35  error
1868  * Fix <G>oto in alternate_semantics - it actually marks messages read now.
1869
1870  Revision 605.20  2003/03/17 04:03:14  ajc
1871  * Supply a NULL argument as the second argument to accept() instead of an
1872    empty buffer whose contents we never even look at.
1873
1874  Revision 605.19  2003/03/16 05:07:12  ajc
1875  * Fixed the bug that caused freebusy publishes to crash.
1876
1877  Revision 605.18  2003/03/15 23:05:08  ajc
1878  * Rewrite of calendar-to-freebusy conversion functions.  This one creates
1879    freebusy in the correct format, instead of what I mistakenly assumed it
1880    was supposed to look like.  :(
1881
1882  Revision 605.17  2003/03/15 22:31:06  ajc
1883  * When scanning a user's Calendar> room for calendar events, search for
1884    MIME parts of type text/calendar instead of assuming that the event will
1885    always appear as part "1"
1886
1887  Revision 605.16  2003/03/14 05:08:25  ajc
1888  * Clone calendar subcomponents before encapsulating in case they already
1889    happen to have a parent.
1890
1891  Revision 605.15  2003/03/13 05:48:33  ajc
1892  * Move towards storing calendar objects as fully encapsulated VCALENDAR
1893    components instead of just VEVENT subcomponents.
1894
1895  Revision 605.14  2003/03/12 03:33:54  ajc
1896  * More changes to the handling of RFC822 headers with regard to
1897    splitting up the headers and body.  (Blank lines and such.)
1898
1899  Revision 605.13  2003/03/11 06:23:50  ajc
1900  * More accurate handling of IMAP FETCH xx BODYSTRUCTURE command.  This should
1901    make Pine happier with multipart messages.
1902
1903  Revision 605.12  2003/03/10 05:38:21  ajc
1904  * Tweaks to msgbase.c and imap_fetch.c to fix slightly incorrect byte counts
1905    reported in the numerous variations of IMAP FETCH.  This silences a number of
1906    error messages reported by Pine.
1907
1908  Revision 605.11  2003/03/10 03:40:08  ajc
1909  * Fixed bug that caused segv when <R>eplying to certain messages
1910
1911  Revision 605.10  2003/03/07 17:39:45  ajc
1912  * Remove the "modules" directory
1913
1914  Revision 605.9  2003/03/06 04:58:11  ajc
1915  * When entering a message into Citadel with authenticated SMTP, stamp the
1916    room name as MAILROOM (Mail>) so it doesn't end up with an ugly moniker
1917    like "0000058008.Sent Items"
1918
1919  Revision 605.8  2003/03/05 04:55:32  ajc
1920  * serv_smtp.c: when authenticated, do not log out when a RSET command is
1921    issued.  This breaks clients which carelessly issue RSET before each
1922    message, such as Pine.
1923  * serv_smtp.c: when authenticated, ignore envelope FROM:<xxx> sender name
1924    and replace with address of user who authenticated.  Also fixes Pine.
1925  * serv_smtp.c: when authenticated, not only do we continue our glorious
1926    RFC-violating condition of replacing the From: header with the user who
1927    is logged in, but we also stamp it with their preferred Internet address
1928    for outbound mail (which is kept in CC->cs_inet_email).
1929
1930  Revision 605.7  2003/03/03 04:09:21  ajc
1931  * When creating a user, hide the "My Citadel Config>" room of the user being
1932    created, not the user currently logged in.
1933
1934  Revision 605.6  2003/03/01 18:18:03  ajc
1935  * commands.c: alternate_semantics might have been getting set where it
1936    should not.  Fixed.
1937
1938  Revision 605.5  2003/03/01 17:25:33  ajc
1939  * citadel.rc default for alternate_semantics = no
1940
1941  Revision 605.4  2003/02/23 05:34:45  ajc
1942  * When the <N>ew command is used to read new messages, the next "lazy"
1943    command (space bar) now always does <G>oto, regardless of the last one.
1944
1945  Revision 605.3  2003/02/21 04:24:51  ajc
1946  * Completed the "ICAL freebusy" subcommand, which fetches free/busy times
1947    for any requested user (output in stripped-down VCALENDAR format)
1948
1949  Revision 605.2  2003/02/20 04:51:17  ajc
1950  * Began framing up a command to view other users' free/busy times
1951
1952  Revision 605.1  2003/02/19 22:38:43  ajc
1953  * Changed socklen_t to int (to allow compile on Macintosh)
1954
1955  Revision 605.0  2003/02/19 03:46:01  ajc
1956  * THIS IS 6.05
1957
1958  Revision 601.134  2003/02/17 05:23:20  ajc
1959  * Fixed a small bug in the GDBM backend (deprecated, but the bug was very
1960    obvious and a kind user pointed it out)
1961  * Removed vestiges of setjmp/longjmp from the client
1962  * When doing .TS, don't get caught in a constant-logout loop
1963
1964  Revision 601.133  2003/02/14 16:12:04  ajc
1965  * Added support for any standard RBL
1966
1967  Revision 601.132  2003/02/13 22:33:41  ajc
1968  * Fixed algorithm for reporting "last login"
1969
1970  Revision 601.131  2003/02/13 21:52:13  ajc
1971  * IMAP service: fixed bug that was causing the wrong messages (usually *all*
1972    messages) to be flagged when a STORE or COPY operation was performed.
1973
1974  Revision 601.130  2003/02/13 20:13:51  ajc
1975  * Applied "multi editor" patch supplied by georbit
1976
1977  Revision 601.129  2003/02/12 04:51:44  ajc
1978  * More docs update
1979
1980  Revision 601.128  2003/02/10 04:50:33  ajc
1981  * More documentation updates
1982
1983  Revision 601.127  2003/02/09 03:38:28  ajc
1984  * Updated the documentation some more
1985
1986  Revision 601.126  2003/01/25 07:37:15  error
1987  * whobbs.c: Print error message if we can't connect to server
1988
1989  Revision 601.125  2003/01/23 05:50:59  ajc
1990  * citadel.c: hitting enter without entering a room name in the <.G>oto and
1991    <.S>kip commands now does nothing instead of exhibiting undefined behavior
1992
1993  Revision 601.124  2003/01/23 04:42:33  ajc
1994  * Began reviewing, updating, and HTML-izing the documentation
1995
1996  Revision 601.123  2003/01/22 03:53:24  ajc
1997  * More reliablility hacks for autologin mode, and better quarantine of
1998    autologin code when it's disabled.
1999
2000  Revision 601.122  2003/01/21 04:42:12  ajc
2001  * Moved login-to-screenname code ... no longer part of CtdlTryExistingUser(),
2002    it's now part of getuser() so it always gets called, even when looking up
2003    addresses for mail and stuff.
2004
2005  Revision 601.121  2003/01/19 08:59:02  error
2006  * Remove irrelevant file hpsux.h (was part of dynloader)
2007
2008  Revision 601.120  2003/01/19 05:55:59  ajc
2009  * serv_calendar.c: allocate dynamic symbol at module startup, not during
2010    each session startup.  This error was causing crashes (of course).
2011
2012  Revision 601.119  2003/01/18 06:18:20  ajc
2013  * whobbs.c: line up the columns better
2014  * routines2.c: when doing <.ASI> command, entering a blank hostname causes
2015    it to abort instead of adding a new host.  Also strip l/t whitespace.
2016
2017  Revision 601.118  2003/01/17 22:36:56  ajc
2018  * This commit is a figment of your imagination.
2019
2020  Revision 601.117  2003/01/17 21:50:27  ajc
2021  * Began making some build changes for Cygwin compatibility
2022
2023  Revision 601.116  2003/01/17 10:06:54  error
2024  * fmout():  Ignore \r (carriage return) characters in messages
2025
2026  Revision 601.115  2003/01/17 04:36:04  ajc
2027  * whobbs.c: fix bad call to CtdlGetServInfo() so we can get our session ID
2028    and the name of the BBS
2029
2030  Revision 601.114  2003/01/16 21:16:23  error
2031  * CtdlIPCGetMessages(): Fix message read failing on first attempt to read
2032    messages
2033
2034  Revision 601.113  2003/01/16 10:04:03  error
2035  * ENT0 command: changed post-as username from arg 4 to arg 5; 4 was already
2036    used as the message subject
2037  * Convert message entry and reading to new IPC code
2038  * Minor bugfixes throughout IPC code
2039
2040  Revision 601.112  2003/01/16 04:17:02  ajc
2041  * citadel_ipc.c: when issuing a SPEX command, send the string value for
2042    room/floor/site instead of the number.  citserver wants a string.
2043  * ipc_c_tcp.c: don't call SSL_shutdown() from connection_died().  This just
2044    causes it to segfault because there's no valid socket.
2045
2046  Revision 601.111  2003/01/16 03:41:45  ajc
2047  * Renamed "dynloader" to "serv_extensions" globally.  We don't want people
2048    to think we have a dynamic loader, do we?  :)
2049  * serv_*_init() is now declared in serv_extensions.h.  This is definitely the
2050    wrong place for it.  It's there temporarily until we decide on a new
2051    convention for server extensions.
2052  * bootstrap: more reliable detection of Red Hat Linux 7.3 -- more specifically,
2053    fewer fireworks when the host system is *not* Red Hat Linux.
2054
2055  Revision 601.110  2003/01/15 16:34:53  ajc
2056  * bootstrap: don't check /etc/redhat-release if it doesn't exist (which is
2057    the case on all non Red Hat Linux systems)
2058
2059  Revision 601.109  2003/01/15 05:57:09  ajc
2060  * First cut at static-linking the citserver.  Ripped out libtool and
2061    replaced the dynloader paradigm with "server extensions" paradigm (static
2062    linked, but still very loosely coupled by way of using the API's to
2063    register callbacks and commands etc.)   Needs more testing.
2064
2065  Revision 601.108  2003/01/14 04:12:26  ajc
2066  * Set default view for new user Calendar> rooms to 3 (calendar)
2067  * Set default view for new user Tasks> rooms to 4 (tasks)
2068
2069  Revision 601.107  2003/01/13 17:04:19  ajc
2070  * Add a sample URL view command for Macintosh in the included citadel.rc
2071
2072  Revision 601.106  2003/01/13 02:55:07  ajc
2073  * Do calendar support only if libical header *and* library are present
2074
2075  Revision 601.105  2003/01/12 23:07:40  ajc
2076  * configure.ac: Attempt to check for libical 0.24 or newer
2077
2078  Revision 601.104  2003/01/12 05:01:58  ajc
2079  * Start marking things for 6.05 release
2080
2081  Revision 601.103  2003/01/12 04:48:23  ajc
2082  * Display message subjects in magenta instead of white
2083
2084  Revision 601.102  2003/01/06 09:17:10  error
2085  * Remove non (yet) existent sstring.c dependency from Makefile.in
2086
2087  Revision 601.101  2003/01/05 07:35:03  error
2088  * Add an AllFloors parameter to the citadel IPC API
2089
2090  Revision 601.100  2003/01/01 08:07:46  error
2091  * commands.c: bugfix for reading from FILE pointers; affected quote, print
2092    and external editor.
2093
2094  Revision 601.99  2002/12/28 05:33:29  ajc
2095  * ical_dezonify: set is_utc=1 even if we didn't convert from some arbitrary
2096    timezone.  Presumably this means the time was already UTC, and we really
2097    need that "Z" to get slapped on it.
2098
2099  Revision 601.98  2002/12/28 05:12:06  ajc
2100  * Yet another attempt at making ical_dezonify() send outgoing calendar items
2101    in UTC format.  (This one will probably work -- the timestamps have the
2102    "Z" after them which signifies UTC instead of local time.)
2103
2104  Revision 601.97  2002/12/27 04:40:40  ajc
2105  * Another attempt at fixing timezones :(
2106
2107  Revision 601.96  2002/12/25 23:17:07  ajc
2108  * ical_dezonify.c: shuffle around #includes and #ifdef's
2109
2110  Revision 601.95  2002/12/25 21:46:19  ajc
2111  * Another shot at timezone handling (ugggghh)
2112
2113  Revision 601.94  2002/12/25 07:05:26  ajc
2114  * set up ical_dezonify() to be called at appropriate times
2115    (but it doesn't seem to work correctly yet)
2116
2117  Revision 601.93  2002/12/25 06:41:44  ajc
2118  * ical_dezonify.c: added (function to strip localized timestamps out of
2119    a component and replace them with UTC timestamps)
2120
2121  Revision 601.92  2002/12/19 04:51:49  ajc
2122  * database_cleanup.sh: added
2123
2124  Revision 601.91  2002/12/18 04:08:16  ajc
2125  * Don't attempt to send out invitations when there are no attendees.
2126
2127  Revision 601.90  2002/12/15 10:53:51  error
2128  * Final touches on the new message formatter.
2129
2130  Revision 601.89  2002/12/15 09:42:37  error
2131  * Converted more routines to new IPC code.
2132
2133  Revision 601.88  2002/12/14 23:21:29  ajc
2134  * When saving a calendar event, set the message Subject to the event
2135    summary string, and the message Date/time to the event start time.
2136
2137  Revision 601.87  2002/12/10 23:36:20  ajc
2138  * Fixed a bug in the allocation of per-session dynamic data for calendar module
2139
2140  Revision 601.86  2002/12/09 06:07:29  ajc
2141  * Finished the code to accept incoming calendar REPLY messages and
2142    merge/save the updated event in the user's calendar.
2143
2144  Revision 601.85  2002/12/08 06:01:48  ajc
2145  * More work on the reply handler.  Wrote functions to locate the message
2146    containing the invitation being replied to.  Just need to write the
2147    merge and resave functions now.
2148
2149  Revision 601.84  2002/12/08 00:23:08  ajc
2150  * Began adding a calendaring subcommand to accept a reply to a meeting
2151    invitation and update the event in the user's calendar.  (Not finished.)
2152
2153  Revision 601.83  2002/12/04 05:01:18  ajc
2154  * When sending out invitations, encapsulate the VEVENT component inside a
2155    VCALENDAR component, along with proper metadata such as product ID and
2156    vcalendar version.  Move the METHOD:REQUEST property to the encapsulating
2157    component rather than the event itself.  (Still need to add a VTIMEZONE).
2158
2159  Revision 601.82  2002/12/03 04:49:15  ajc
2160  * Send out meeting requests!  (Need to test with various clients.)
2161
2162  Revision 601.81  2002/12/02 08:09:00  error
2163  * Improvements to the new message formatter, including URL support and
2164    doing the Right Thing for text/plain messages.
2165
2166  Revision 601.80  2002/12/01 11:02:57  error
2167  * New experimental message formatter - try it, you'll like it!
2168
2169  Revision 601.79  2002/12/01 04:48:24  ajc
2170  * The code to check for sending invitations needs to happen *after* save
2171
2172  Revision 601.78  2002/12/01 00:59:54  ajc
2173  * Reliably detect when the user saving an event is listed as the meeting
2174    organizer.  (Currently calls a stub function.  Still need to write the
2175    function to generate and send invitations.)
2176
2177  Revision 601.77  2002/11/30 21:35:30  ajc
2178  * just some trace messages
2179
2180  Revision 601.76  2002/11/30 05:39:28  ajc
2181  * Started banging out some code to determine when a saved vEvent needs to
2182    send out meeting invites.
2183
2184  Revision 601.75  2002/11/29 16:24:59  ajc
2185  * When calling ical*_remove_*() routines, the caller then owns the object
2186    which is removed.  Added ical*_free() calls to free the memory.
2187
2188  Revision 601.74  2002/11/29 15:44:41  ajc
2189  * CC->cs_inet_email is now a string buffer, not a pointer
2190  * Initialize CC->cs_inet_email with a default address, so it always
2191    contains something even when the directory doesn't
2192  * Augment CHEK command to return the user's preferred Internet e-mail addr.
2193
2194  Revision 601.73  2002/11/27 21:05:31  nixo
2195  added dot ungoto functionality.
2196  It allows you to enter a room to ungoto, it will look
2197  through the ungoto list and goto there at the room position
2198  you last goto-ed it from.
2199  Don't blame me, this was Gary's idea.
2200
2201  Revision 601.72  2002/11/25 05:10:07  ajc
2202  * Post a notification to Aide> when a user is manually deleted
2203    (resolves Bugzilla enhancement request #73)
2204
2205  Revision 601.71  2002/11/25 04:57:43  ajc
2206  * Allow set/clear of per-user Internet mail privilege
2207  * Honor that flag
2208
2209  Revision 601.70  2002/11/23 13:35:47  error
2210  * Makefile.in: Alphabetized all the source files
2211
2212  Revision 601.69  2002/11/21 05:38:13  ajc
2213  * Added support for a "New User Greetings" room.  See docs/install.txt
2214
2215  Revision 601.68  2002/11/15 11:24:40  error
2216  * serv_rwho.c: cmd_rwho(): move logged_in from param 8 to param 11
2217    (see RWHO in techdoc/session.txt)
2218
2219  Revision 601.67  2002/11/13 17:20:57  ajc
2220  * When in curses mode, call beep() instead of putc(7, stdout) to make it beep.
2221
2222  Revision 601.66  2002/11/12 04:30:16  ajc
2223  * Completed the invitation accept/decline code.  It now sends back a
2224    correctly formated reply!  (Tested with Evolution)
2225
2226  Revision 601.65  2002/11/11 06:21:55  error
2227  * Fixed minor bugs with color handling; added explicit support for handling
2228    the background color e.g. for transparent terminals
2229
2230  Revision 601.64  2002/11/11 04:17:24  ajc
2231  * More work on reply to meeting invitation
2232
2233  Revision 601.63  2002/11/10 09:21:57  error
2234  * messages.c: fixed <H>eader command
2235
2236  Revision 601.62  2002/11/10 09:19:38  error
2237  * Convert some more routines to new IPC code
2238
2239  Revision 601.61  2002/11/10 09:14:16  error
2240  * citadel.spec: updated for post-6.01
2241
2242  Revision 601.60  2002/11/10 09:12:06  error
2243  * citadel.c: When terminating, don't mark messages new when using new
2244    message semantics
2245
2246  Revision 601.59  2002/11/08 05:28:54  ajc
2247  * Reply to VEVENT invitations: generate reply by cloning the request,
2248    stripping out non-me attendees, setting the partstat to accept/decline,
2249    and extracting the address of the organizer.   (Still not finished: right
2250    now it does everything except actually sending the reply.)
2251
2252  Revision 601.58  2002/11/07 04:40:07  ajc
2253  * Repaired the "remember username/password" functionality of the client
2254    (it was broken during the transition to the new client protocol library)
2255
2256  Revision 601.57  2002/11/06 05:03:01  ajc
2257  * No changes; just testing CVS permissions
2258
2259  Revision 601.56  2002/11/04 21:49:53  ajc
2260  * Don't run the wait indicator when in an external editor
2261
2262  Revision 601.55  2002/11/01 04:57:56  ajc
2263  * Fixed .AM and .AE commands
2264
2265  Revision 601.54  2002/10/29 20:14:56  error
2266  * rooms.c: don't allow a blank floor name when creating a floor (in client)
2267
2268  Revision 601.53  2002/10/26 06:15:09  ajc
2269  * cmd_cflr() - don't allow zero length floor names
2270
2271  Revision 601.52  2002/10/26 06:01:19  ajc
2272  * Increase size of temp file name buffer in struct CitContext
2273
2274  Revision 601.51  2002/10/25 09:38:38  error
2275  * Fixed broken .Goto by partial match
2276
2277  Revision 601.50  2002/10/25 09:26:26  error
2278  * Fix the status line not updating with the new wait indicator; rearrange
2279    the code so network_status_cb is a member function of ipc.
2280
2281  Revision 601.49  2002/10/25 04:39:38  ajc
2282  * When in fullscreen mode, display an "X" icon in the lower right corner of
2283    the screen while waiting for the server.
2284
2285  Revision 601.48  2002/10/24 09:04:53  error
2286  * acconfig.h: add DISABLE_CURSES template
2287
2288  Revision 601.47  2002/10/23 04:06:41  ajc
2289  * "conflicts" check now also tells the client whether a conflicting event
2290    is really just an older version of the same object.
2291
2292  Revision 601.46  2002/10/23 03:55:21  ajc
2293  * Finished: when saving an object of type text/calendar to the Calendar> room,
2294    set the Citadel "extended message ID" to the UID of the VEVENT object.  This
2295    causes the message base to automatically delete any existing instance(s) of
2296    that object: automatic replacement.
2297
2298  Revision 601.45  2002/10/23 03:07:43  ajc
2299  * First hack at UID-to-EMSGID mapping (for auto replacement)
2300
2301  Revision 601.44  2002/10/21 20:00:41  ajc
2302  * List UID and SUMMARY properties of conflicting events
2303
2304  Revision 601.43  2002/10/21 17:14:42  ajc
2305  * More work on conflict detects
2306
2307  Revision 601.42  2002/10/20 21:42:54  ajc
2308  * More conflict checking stuff
2309
2310  Revision 601.41  2002/10/20 20:21:27  ajc
2311  * Put in a skeleton "hunt for conflicts" code
2312
2313  Revision 601.40  2002/10/20 08:01:03  error
2314  * docs/install.txt: add Mac OS X build instructions
2315
2316  Revision 601.39  2002/10/19 21:35:34  ajc
2317  * Moved some of the calendar logic over from WebCit
2318
2319  Revision 601.38  2002/10/19 08:30:03  error
2320  * dynloader.c:  Darwin places underscores in front of symbol names, just
2321    like OpenBSD.
2322
2323  Revision 601.37  2002/10/19 08:18:06  error
2324  * Disable any use of curses on Darwin (this is temporary until I beat
2325    Apple's bizarre linker into submission)
2326
2327  Revision 601.36  2002/10/18 10:33:09  error
2328  * More signed/unsigned fixes (for the new progress gauge)
2329
2330  Revision 601.35  2002/10/18 07:56:30  error
2331  * fix self-service account creation at login prompt (accidentally called
2332    CREU instead of NEWU).
2333
2334  Revision 601.34  2002/10/18 03:44:13  ajc
2335  * Fixed a bug in CtdlRenameRoom() that caused the old room record not to be
2336    deleted when there was a mailbox namespace attached.
2337  * Reworked imap_rename() and imap_rename_backend() to not use nested functions
2338
2339  Revision 601.33  2002/10/17 12:56:44  error
2340  * Bug fixes:  Fix numerous char array size mismatches, signed/unsigned
2341    mismatches, and const correctness problems (though not nearly all)
2342
2343  Revision 601.32  2002/10/17 11:13:27  error
2344  * Convert room listings and some aide functions to new IPC code
2345
2346  Revision 601.31  2002/10/16 13:46:19  ajc
2347  * Remove some trace messages
2348
2349  Revision 601.30  2002/10/16 08:59:41  error
2350  * Don't assume pointer to time_t is compatible with pointer to
2351    struct timeval.tv_sec (it isn't on darwin)
2352
2353  Revision 601.29  2002/10/16 02:49:55  ajc
2354  * CtdlWriteObject() encode in memory instead of on disk (not tested)
2355
2356  Revision 601.28  2002/10/15 17:41:20  ajc
2357  * Numerous warning fixes and cleanups for compile on Linux for IBM S/390
2358  * Name temp files with source code location of who created them
2359
2360  Revision 601.27  2002/10/15 06:47:11  error
2361  * IPC support for resumable downloads
2362
2363  Revision 601.26  2002/10/15 06:44:55  error
2364  * configure.ac check for malloc.h header file (Mac OS X needs this)
2365
2366  Revision 601.25  2002/10/15 03:56:33  ajc
2367  * Run without crashing on Berkeley DB 4.1  :)
2368
2369  Revision 601.24  2002/10/15 03:30:52  ajc
2370  * Build ok on Berkeley DB 4.1
2371
2372  Revision 601.23  2002/10/14 08:27:40  error
2373  * Mac OS X build fixes (everything but serv_imap now builds)
2374
2375  Revision 601.22  2002/10/08 09:44:52  error
2376  * Build environment:  cvs ignore .diff/.patch files
2377
2378  Revision 601.21  2002/10/07 18:59:37  ajc
2379  * Build fixes for Solaris box without OpenSSL installed
2380
2381  Revision 601.20  2002/10/07 09:40:49  error
2382  * Don't try to compile non-existent client_crypto.c (oops!)
2383
2384  Revision 601.19  2002/10/06 18:46:30  error
2385  * Move (nearly) all IPC-related code to citadel_ipc.[ch].
2386
2387  Revision 601.18  2002/10/05 04:48:29  ajc
2388  * Change MAXSETUP from 4 to 3 (bug reported by mavherzog, fix suggested by IO)
2389
2390  Revision 601.17  2002/10/04 07:11:56  error
2391  * Fix bootstrap for Red Hat 7.3
2392
2393  Revision 601.16  2002/10/02 04:07:27  error
2394  * status_line() now shows "new mail" only when there is new mail
2395
2396  Revision 601.15  2002/10/01 04:00:13  ajc
2397  * html.c: speed improvement in html-to-ascii converter
2398  * messages.c: MASSIVE speed improvement in message output
2399
2400  Revision 601.14  2002/09/30 08:07:11  error
2401  * ipcdef.h: add extern "C" for linking to C++ programs
2402
2403  Revision 601.13  2002/09/30 07:32:09  error
2404  * ipcdef.h: remove prototype for connection_died(), it doesn't belong there
2405
2406  Revision 601.12  2002/09/30 07:20:35  error
2407  * Fix configure mis-detecting libical and zlib and a missing semicolon in
2408    tools.h
2409
2410  Revision 601.11  2002/09/29 04:55:13  error
2411  * File and attachment downloads now use the new IPC code.
2412  * Implemented high-speed pipelined file download in IPC code.
2413
2414  Revision 601.10  2002/09/29 04:41:43  error
2415  * file_ops.c: cmd_read() now returns a short read at end-of-file instead of
2416    4096, this prevents trailing garbage on the downloaded file; also it now
2417    succeeds if the requested number of bytes is > 4096; it simply returns
2418    only 4096 bytes.
2419
2420  Revision 601.9  2002/09/27 06:53:20  error
2421  * Allow multiple simultaneous IPC connections.  All changes necessary for
2422    the client to use the new code are necessarily included.
2423
2424  Revision 601.8  2002/09/22 02:48:04  ajc
2425  * axdefs.h: add "Notes" view
2426
2427  Revision 601.7  2002/09/17 03:18:15  ajc
2428  * Create the Calendar> and Tasks> rooms at login time, and set their default
2429    views to calendar and tasklist views.  Renamed "My Calendar>" to "Calendar>"
2430    to be in sync with the KDE groupware project.
2431
2432  Revision 601.6  2002/09/15 03:24:28  ajc
2433  * Renamed decode_base64() to CtdlDecodeBase64()
2434  * Renamed decode_quoted_printable() to CtdlDecodeQuotedPrintable()
2435  * These changes are to avoid namespace conflict with libical
2436
2437  Revision 601.5  2002/09/13 15:41:39  ajc
2438  * serv_calendar.c: #include "serv_calendar.h", not "serv_ical.h"
2439
2440  Revision 601.4  2002/09/11 03:17:18  ajc
2441  * [EXPERIMENTAL] Link in the "libical" calendar library if present
2442  * Rename serv_ical to serv_calendar (because the resulting module would be
2443    named "libical" which conflicts with the external library by that name)
2444
2445  Revision 601.3  2002/09/10 08:07:38  error
2446  * update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00
2447
2448  Revision 601.2  2002/09/09 03:03:18  ajc
2449  * When a user logs in, create the Mail> room if it doesn't exist.  (Should
2450    never happen, but one site had a situation where this patch came in handy.)
2451
2452  Revision 601.1  2002/09/08 04:15:28  ajc
2453  * Also fixed a bug in <.T>erminate <S>tay which caused the terminal to
2454    become wacky on second and subsequent sessions.
2455
2456  Revision 601.0  2002/09/08 03:51:30  ajc
2457  * Let's call this 6.01, shall we?
2458
2459  Revision 600.2  2002/09/08 03:48:48  ajc
2460  * Fixed a crashy crashy bug in the AGUP protocol function in the client
2461
2462  Revision 600.1  2002/09/07 03:24:23  ajc
2463  * When displaying messages using MSG4, enumerate the attachments on the
2464    client side, because the server won't add their descriptions to the
2465    message text.
2466
2467  Revision 600.0  2002/09/04 03:06:58  ajc
2468  * Committing the current code base as version 6.00
2469
2470  Revision 591.109  2002/09/03 14:09:04  ajc
2471  * setup.c: automatically stop/start services
2472
2473  Revision 591.108  2002/09/03 04:42:15  ajc
2474  * Added MSG4 support to client-side IPC
2475  * Moved HTML-to-text conversion to the client side
2476
2477  Revision 591.107  2002/09/02 20:40:34  ajc
2478  * Automation work for setup
2479
2480  Revision 591.106  2002/08/31 04:36:26  ajc
2481  * IMAP APPEND no longer forces messages to appear as from the logged-in user
2482    when appending to a mailbox room.  (Allows migration to Citadel from some
2483    other type of server without losing all the sender names.)
2484
2485  Revision 591.105  2002/08/31 04:12:39  ajc
2486  * Set version number to 6.00 in documentation and header files.
2487  * Convert RFC822 newlines (CRLF) to Unix/Citadel newlines (LF) when
2488    performing an IMAP APPEND command.
2489
2490  Revision 591.104  2002/08/28 03:18:06  ajc
2491  * Make reply_to and reply_subject global (otherwise they don't work!)
2492
2493  Revision 591.103  2002/08/27 04:01:03  ajc
2494  * Added the ability to run an external command from the client when new mail
2495    arrives.  (Ok, I admit it: I just discovered http://www.dailywav.com and I
2496    just *had* to have Bear in the Big Blue House tell me I've got mail)
2497
2498  Revision 591.102  2002/08/26 02:55:09  ajc
2499  * Small bugfix for memory bounds checking in the MIME parser
2500
2501  Revision 591.101  2002/08/25 21:23:49  ajc
2502  * Hide the SMTP queue and the sysconfig rooms.
2503
2504  Revision 591.100  2002/08/24 05:58:53  ajc
2505  * Bugfixes and cosmetic changes to listsub system
2506
2507  Revision 591.99  2002/08/23 03:36:52  ajc
2508  * Finished all of the subscribe/unsubscribe/confirm stuff!
2509
2510  Revision 591.98  2002/08/23 02:30:02  ajc
2511  * Delete unconfirmed pending subscribe/unsubscribe requests after three days
2512  * Don't allow multiple subscriptions of the same address to a list
2513
2514  Revision 591.97  2002/08/22 03:55:11  ajc
2515  * Fixed bug in above
2516
2517  Revision 591.96  2002/08/22 03:40:00  ajc
2518  * Add "unsubscribe" command (but not yet "confirm unsubscribe")
2519
2520  Revision 591.95  2002/08/21 21:58:00  ajc
2521  * Completed self-service list subscription via web.
2522    (Still need to implement unsubscribe.)
2523
2524  Revision 591.94  2002/08/16 21:04:56  ajc
2525  * Add LPRM command
2526
2527  Revision 591.93  2002/08/14 20:21:52  ajc
2528  * Extend GETR/SETR to allow twiddling of bits in the QRflags2 bucket
2529  * New flag and config options to allow/disallow self-service list subscription
2530    and unsubscription to a room
2531
2532  Revision 591.92  2002/08/14 02:36:05  ajc
2533  * WebCit list subscription integration
2534
2535  Revision 591.91  2002/08/13 18:48:46  ajc
2536  * Generate and send subscription confirmation requests.
2537    (Still need to finalize the URL format)
2538
2539  Revision 591.90  2002/08/13 17:19:11  ajc
2540  * Added email capability to quickie_message()
2541
2542  Revision 591.89  2002/08/13 04:02:06  ajc
2543  * <R>eplace string is now case sensitive
2544
2545  Revision 591.88  2002/08/13 03:46:31  ajc
2546  * More work on the self-service subscribe/unsubscribe infrastructure
2547
2548  Revision 591.87  2002/08/12 03:00:20  ajc
2549  * Fixed bug in <R>eplacestring which caused it to lock up in certain conditions
2550
2551  Revision 591.86  2002/08/12 00:09:05  ajc
2552  * Compress VISIT records using zlib if available.  This reduces the object
2553    size from over 4k to about 70 bytes.  Experimental.
2554  * Automatically uncompress database records found to be compressed (duh)
2555
2556  Revision 591.85  2002/08/08 22:01:35  ajc
2557  * autoconf to look for zlib (for an upcoming experiment)
2558
2559  Revision 591.84  2002/08/08 03:25:56  ajc
2560  * Bugfix for above
2561  * Started writing some infrastructure for sub/unsub
2562
2563  Revision 591.83  2002/08/08 02:49:12  ajc
2564  * serv_network.c: retain unknown commands in netconfigs and write them back
2565  * techdoc/netconfigs.txt: specify commands for subscribe/unsubscribe pending
2566  * serv_listsub.c: added (currently a stub)
2567
2568  Revision 591.82  2002/08/06 03:12:14  ajc
2569  * Fixed and clarified "new mail has arrived" messages.
2570
2571  Revision 591.81  2002/08/06 03:02:29  ajc
2572  * ;AE command -- Make it clearer which floor the user is editing
2573
2574  Revision 591.80  2002/08/06 02:58:01  ajc
2575  * Cleaned up the output of digest mode.  It's usable now, but the self-service
2576    subscribe/unsubscribe functions are not there yet.
2577
2578  Revision 591.79  2002/08/05 14:38:11  ajc
2579  * rooms.c: corrected a typo reported by Campagnolo (Mike Poulin)
2580
2581  Revision 591.78  2002/08/03 19:48:40  ajc
2582  * NULLify 'roomrec' before attempting partial match in <G>oto
2583    (fixes heap corruption when this command is executed)
2584
2585  Revision 591.77  2002/08/03 04:13:46  ajc
2586  * citadel_ipc.c: Attempted to clean up memory allocation
2587
2588  Revision 591.76  2002/08/01 05:41:53  ajc
2589  * Completion of (most of) digest mode.  Still needs some polish.
2590
2591  Revision 591.75  2002/07/31 04:01:57  ajc
2592  * Began implementing "digest mode" for listserving.  (Not complete)
2593
2594  Revision 591.74  2002/07/28 20:33:13  ajc
2595  * Augmented the "headers only" functionality of the message reading API (as
2596    well as the options of the server commands which expose it) to allow
2597    headers+body, headers only, or body only.
2598  * Adjusted message output of IMAP command FETCH BODY[1] when message is in
2599    legacy Citadel format.  This fixes a bug exposed by SquirrelMail.
2600
2601  Revision 591.73  2002/07/23 04:00:06  ajc
2602  * Completed the MSGP and MSG4 commands to set the client's preferred MIME
2603    content types, and fetch messages with MIME content types.
2604
2605  Revision 591.72  2002/07/21 22:29:46  ajc
2606  * Added in some infrastructure to switch the client's message reading from
2607    conventional MSG0 to a MIME-download type thing, like WebCit does.
2608
2609  Revision 591.71  2002/07/21 15:45:07  error
2610  * Remove duplicate call for server time in who_is_online(); IPC does this now
2611
2612  Revision 591.70  2002/07/21 15:43:57  error
2613  * citadel_ipc.c: Fix for segfault on empty messages
2614
2615  Revision 591.69  2002/07/20 04:05:10  ajc
2616  * Updated hack.txt with some fresh new information
2617
2618  Revision 591.68  2002/07/19 02:28:11  ajc
2619  * citadel_ipc.c: changed various buffer lengths from 256 to SIZ in order to
2620    accomodate long lines which often spew out (usually from spam unfortunately)
2621
2622  Revision 591.67  2002/07/18 21:29:37  nbryant
2623  added a note about GNU make to the configure script output
2624
2625  Revision 591.66  2002/07/18 20:21:18  ajc
2626  * Eliminated the 512-message limit in the client for reading messages.
2627
2628  Revision 591.65  2002/07/13 04:12:40  ajc
2629  * Don't lie about format types in MSG0 anymore.  We no longer need to.
2630
2631  Revision 591.64  2002/07/13 03:24:32  ajc
2632  * CtdlOutputMsg() caches the most recently fetched message in memory.  This
2633    eliminates the need to do multiple database fetches when we go back for
2634    additional MIME parts, etc.
2635
2636  Revision 591.63  2002/07/11 03:40:51  ajc
2637  * When outputting a multipart MIME message, supply the client with "pref="
2638    and "suff=" lines in addition to the "part=" lines.
2639
2640  Revision 591.62  2002/07/02 16:27:06  error
2641  * prototypes in citadel_ipc.h updated
2642
2643  Revision 591.61  2002/06/29 23:26:55  error
2644  * fixed some memory leaks
2645
2646  Revision 591.60  2002/06/29 18:36:31  error
2647  * tools.c: Massively faster versions of extract_token() and remove_token().
2648    These functions can now handle multi-kilobyte sized strings with hundreds
2649    of tokens (or more?).
2650
2651  Revision 591.59  2002/06/29 15:55:07  error
2652  * Convert whobbs, serv_info, misc. functions to new IPC code
2653
2654  Revision 591.58  2002/06/27 03:10:04  error
2655  * rooms.c: converted most functions to new IPC code
2656
2657  Revision 591.57  2002/06/25 15:38:52  error
2658  * fixed bug in dotgoto() causing free() to segfault
2659
2660  Revision 591.56  2002/06/25 15:13:27  error
2661  * gotonext() now uses new IPC code to retrieve room listing
2662
2663  Revision 591.55  2002/06/25 14:21:35  error
2664  * remove a debugging trap I accidentally left in the code
2665
2666  Revision 591.54  2002/06/24 20:17:43  error
2667  * Fixed code for client segfault at login
2668
2669  Revision 591.53  2002/06/24 20:11:00  error
2670  * Buffer overflow fixes and minor cleanup in IPC code
2671
2672  Revision 591.52  2002/06/24 16:07:42  error
2673  * Message reading and other functions which use the fmout() screen
2674    formatter now use the new IPC code.
2675
2676  Revision 591.51  2002/06/22 20:09:16  error
2677  * Use a new IPC API (in citadel_ipc.c).  Partially converted citadel.c to
2678    use the new API.
2679
2680  Revision 591.50  2002/06/21 12:32:48  ajc
2681  * Minor documentation update
2682
2683  Revision 591.49  2002/06/19 21:52:13  ajc
2684  * Support a transient room create as well
2685
2686  Revision 591.48  2002/06/19 21:42:57  ajc
2687  * Added support for "transient goto" which allows entry into a private and/or
2688    zapped room without putting the room [back] on your known rooms list.  This
2689    is useful for the new administrative functions in WebCit (updating a user's
2690    vCard without the Aide suddenly having that user's config room on their
2691    list).
2692
2693  Revision 591.47  2002/06/18 16:34:06  error
2694  * room_ops.c: Fix for old room record not being deleted when renaming
2695    baseroom or aideroom
2696
2697  Revision 591.46  2002/06/16 21:01:11  ajc
2698  * Allow Aides to create rooms in other users' namespaces (if global access
2699    controls allow)
2700
2701  Revision 591.45  2002/06/15 20:48:50  ajc
2702  * Fixed small bug in the e<X>pert mode toggle
2703
2704  Revision 591.44  2002/06/15 20:14:55  ajc
2705  * Fixed a memory allocation bug in the vCard parser
2706
2707  Revision 591.43  2002/06/15 17:53:59  error
2708  * citserver.c: MESG command can now send a different system message based
2709    on the developer and client ID of the connected client
2710
2711  Revision 591.42  2002/06/15 04:52:26  ajc
2712  * SpamAssassin connector is now configurable in <.A>ide <S>ysconfig <I>nternet.
2713  * Allow more than one SA server (it'll try 'em all)
2714  * Don't run SA for logged in users
2715
2716  Revision 591.41  2002/06/14 20:42:56  ajc
2717  * Discovered that spamd works even without the Content-length: command, so I
2718    was able to redo the spam checker to work without a temp file.
2719
2720  Revision 591.40  2002/06/14 20:37:03  ajc
2721  * Disabled the spam strings checker I wrote a few days ago.
2722  * When receiving SMTP, check to see if spamd (the SpamAssassin daemon) is
2723    running on the local machine.  If yes, run the message through it and
2724    reject if spam.
2725
2726  Revision 591.39  2002/06/12 03:42:21  ajc
2727  * "Suppress message prompts" has been changed to "Prompt after each message"
2728    and of course the effect has been reversed.
2729  * "Be unlisted in userlog" has been moved to the end of the list of
2730    configuration prompts, so it doesn't interrupt the flow of thought regarding
2731    the prompting questions.
2732
2733  Revision 591.38  2002/06/10 22:25:25  ajc
2734  * Configuration for spam filter
2735
2736  Revision 591.37  2002/06/09 23:59:38  ajc
2737  * Started working on the spam filter
2738
2739  Revision 591.36  2002/06/07 22:10:51  ajc
2740  * Added a new message function hook type EVT_SMTPSCAN which permits modules to
2741    register hooks that can scan incoming SMTP messages and elect to reject them
2742    (due to virus or spam content, for example).
2743
2744  Revision 591.35  2002/06/07 03:22:13  ajc
2745  * Added a module "serv_mrtg" which allows activity reporting to MRTG
2746    (http://www.mrtg.org) -- this will replace our stats program.
2747
2748  Revision 591.34  2002/06/02 16:42:17  error
2749  * Support for Ctrl-W to erase a word when editing or at a prompt
2750
2751  Revision 591.33  2002/05/31 18:34:04  nbryant
2752  better curses compatibility, and a couple makefile/configure tweaks
2753
2754  Revision 591.32  2002/05/28 13:59:02  ajc
2755  * Removed the 'netsetup' and 'dnetsetup' utilities (obsolete)
2756
2757  Revision 591.31  2002/05/24 19:58:13  ajc
2758  * Fixed the "idle timeout during paginator prompt" bug by reintroducting the
2759    concept of a "half keepalive" and sending them during paginator prompts.
2760
2761  Revision 591.30  2002/05/23 03:33:21  ajc
2762  * Added a GTSN (GeT list of SeeN messages) command
2763
2764  Revision 591.29  2002/05/20 14:29:59  ajc
2765  * commands.c: fixed bug in the scan for idle_threshold= which didn't include
2766    the = sign and ended up always setting this value to 0
2767
2768  Revision 591.28  2002/05/17 03:57:30  ajc
2769  * When doing fixed_output() of converted HTML, output the whole block of
2770    data at once instead of one character at a time
2771
2772  Revision 591.27  2002/05/16 04:44:58  ajc
2773  * Reduce the number of socket writes when doing fixed_output() to avoid
2774    getting killed by overhead.  (Thanks to IO for the insight)
2775
2776  Revision 591.26  2002/05/14 15:25:34  error
2777  * room_ops.c: clarified aide message when room aide is removed
2778
2779  Revision 591.25  2002/05/14 15:18:43  error
2780  * rooms.c: Print name of room aide if any when doing <i>nfo
2781
2782  Revision 591.24  2002/05/14 01:33:18  error
2783  * Fixed some incredibly silly typos
2784
2785  Revision 591.23  2002/05/14 01:27:18  error
2786  * Minor cosmetic changes, extraneous double spaces etc.
2787
2788  Revision 591.22  2002/05/14 01:15:54  error
2789  * Idle threshold on the who list is now customizable in the citadel.rc
2790
2791  Revision 591.21  2002/05/14 01:09:57  error
2792  * citadel.c: spacebar won't read New if there are no new messages
2793
2794  Revision 591.20  2002/05/12 23:00:11  ajc
2795  * Removed an unused variable
2796
2797  Revision 591.19  2002/05/12 22:57:04  ajc
2798  * Removed the unfinished moderation system.
2799  * CtdlForEachMessage() - only fetch metadata when hunting for messages with
2800    a specified Content-type.  Serious performance boost.
2801
2802  Revision 591.18  2002/05/05 17:33:09  error
2803  * screen.c: fix lack of beeps in curses mode
2804
2805  Revision 591.17  2002/05/04 02:58:16  ajc
2806  * Documented a small protocol change for the STEL command
2807
2808  Revision 591.16  2002/04/30 03:13:59  ajc
2809  * When sending a page that results in the receiver's Sent/Received Pages>
2810    room to be created, don't automatically grant the sender access to that room.
2811  * Added a parameter to create_room() to implement the above
2812
2813  Revision 591.15  2002/04/23 13:38:08  ajc
2814  * Minor docs update
2815
2816  Revision 591.14  2002/04/21 21:28:06  ajc
2817  * Create the My Citadel Config> room along with the user account
2818
2819  Revision 591.13  2002/04/20 03:00:01  ajc
2820  * One more fix for the RENAME command wrt namespaces.
2821
2822  Revision 591.12  2002/04/18 18:44:36  nbryant
2823  don't use libtool -avoid-version for libcitserver - this might help for
2824  OpenBSD
2825
2826  Revision 591.11  2002/04/17 04:35:06  ajc
2827  * Finished the IMAP RENAME command.  (I ended up using nested functions
2828    because it made the task much, much easier.  We can fix it later or convert
2829    it to C++ if we find this becomes a problem.)
2830
2831  Revision 591.10  2002/04/15 13:25:47  ajc
2832  * Add error responses to imap_rename() and set up subfolder framework
2833
2834  Revision 591.9  2002/04/14 22:42:49  ajc
2835  * Began implementing RENAME command in IMAP.
2836
2837  Revision 591.8  2002/04/14 22:27:05  ajc
2838  * Added access control checking to CtdlRenameRoom()
2839
2840  Revision 591.7  2002/04/14 22:11:22  ajc
2841  * New back end function CtdlRenameRoom() which is used to rename a room and/or
2842    move it to a different floor.
2843  * cmd_setr() now uses CtdlRenameRoom() to do part of its work
2844
2845  Revision 591.6  2002/04/10 03:58:40  ajc
2846  * Began work on IMAP RENAME
2847
2848  Revision 591.5  2002/04/09 14:26:43  ajc
2849  * Allow INBOX to have subfolders.  There's no longer any reason not to.
2850
2851  Revision 591.4  2002/04/05 22:31:59  error
2852  * Send time-of-day with pages sent via IMAP
2853
2854  Revision 591.3  2002/04/05 14:34:02  ajc
2855  * Minor tweak to nested folder algorithm to handle nesting in mail root
2856
2857  Revision 591.2  2002/04/05 04:25:56  ajc
2858  * Support nested folders in IMAP.  We might want to change the delimiter.
2859
2860  Revision 591.1  2002/04/04 23:25:30  ajc
2861  * Experimental hacking to handle subfolderization in IMAP.  Seems to work ok
2862    but it makes Mozilla mail hang.  Will investigate more later...
2863
2864  Revision 591.0  2002/04/01 05:13:20  ajc
2865  * Tagged everything for 5.91 release
2866
2867  Revision 590.168  2002/04/01 05:12:57  ajc
2868  * Prep for 5.91 release
2869
2870  Revision 590.167  2002/03/29 04:43:15  ajc
2871  * Removed the BMBX command.  Mailbox security update now runs automatically when the
2872    server starts and it sees data files version <5.91.
2873
2874  Revision 590.166  2002/03/26 05:58:35  nbryant
2875  don't check for a database driver until after the openssl check is
2876  complete. if the ld paths aren't set up for the db installation this
2877  can interfere with the openssl check because it tries to run a program
2878  linked against the libraries we've been finding.
2879
2880  Revision 590.165  2002/03/26 05:20:46  nbryant
2881  removed last vestiges of "#ifdef CIT_CLIENT" conditional compilation,
2882  which has been rendered unusable by the build system simplifications
2883
2884  Revision 590.164  2002/03/26 05:13:32  nbryant
2885  fix monstrous shell script syntax in configure.ac
2886
2887  Revision 590.163  2002/03/26 04:38:31  nbryant
2888   * support autoconf 2.53
2889   * make a note that people should be using libtool 1.4d
2890   * cut some of the more pointless bells and whistles out of the configure
2891     script in an effort to make it more maintainable
2892   * modularized ipc_c_tcp.c and client_crypto.o so that they're not tied
2893     to the curses stuff.
2894   * timezone/daylight and other FreeBSD fixes
2895   * more effort in the configure script to detect the common
2896     bastardizations (ahem, ports) of Berkeley DB without falling down
2897
2898  Revision 590.162  2002/03/25 03:09:39  nbryant
2899  fix warning on platforms where pthread_t may be a pointer
2900
2901  Revision 590.161  2002/03/25 00:01:50  nbryant
2902   * compatibility with Berkeley DB < 3.3
2903   * squished symbol clashes with the OK symbol from curses in certain *n[iu]x
2904  distributions. this is kind of a pain in the ass, but I had to rename our
2905  OK to CIT_OK :-(
2906
2907  Revision 590.160  2002/03/22 04:35:38  ajc
2908  * Handle vCard registration updates for users other than the one currently
2909    logged in.  (Allows administrative editing of contact information.)
2910
2911  Revision 590.159  2002/03/20 19:03:27  ajc
2912  * Don't re-declare timezone variables ('cuz FreeBSD chokes on that)
2913
2914  Revision 590.158  2002/03/19 04:34:42  ajc
2915  * mime_parser.c: minor changes for easier porting between Citadel and WebCit
2916
2917  Revision 590.157  2002/03/19 04:19:33  ajc
2918  * Saw what IO did with strchr() and did the same in a few more places
2919
2920  Revision 590.156  2002/03/17 00:08:02  error
2921  * mime_parser.c: more robust parsing of Content-Type header
2922
2923  Revision 590.155  2002/03/16 05:22:59  ajc
2924  * Post an error message to Aide> when unlink() is unable to delete old
2925    database log files.
2926
2927  Revision 590.154  2002/03/14 04:35:26  nbryant
2928  avoid symbol clash with curses' "timeout" function (which may be a macro
2929  in some versions)
2930
2931  Revision 590.153  2002/03/14 04:24:20  nbryant
2932  support window resizing in curses mode
2933
2934  Revision 590.152  2002/03/13 04:11:11  nbryant
2935  fix up minor gotcha introduced by fgets change
2936
2937  Revision 590.151  2002/03/13 03:58:29  ajc
2938  * Site-configurable option "Allow system Aides to gain access to mailboxes"
2939
2940  Revision 590.150  2002/03/13 03:34:38  nbryant
2941  /* when running in curses mode, the scroll bar in most
2942     xterm-style programs becomes useless, so it makes sense to
2943     pause after a screenful of pages if the user has been idle
2944     for a while. However, this is annoying to some of the users
2945     who aren't in curses mode and tend to leave their clients
2946     idle. keepalives become disabled, resulting in getting booted
2947     when coming back to the idle session. but they probably have
2948     a working scrollback in their terminal, so disable it in this
2949     case:
2950   */
2951  if (!is_curses_enabled())
2952         lines_printed = 0;
2953
2954  Revision 590.149  2002/03/12 23:34:37  nbryant
2955  use ncurses in preference to curses if it's installed; it handles
2956  background colors properly on dtterm, has a larger color pair palette,
2957  and has a bigger terminal database than solaris curses
2958
2959  Revision 590.148  2002/03/12 22:47:17  nbryant
2960  curses fix: map our normal color pairs into the 0-7 range instead of 1-8,
2961  in order to make our pairs fit on terminals such as dtterm where COLOR_PAIRS=8.
2962  map the white/blue color pair onto 8 instead of 9, but only if that slot
2963  is available; fall back on white/black otherwise.
2964
2965  it seems there may be an off-by-one error in the color pair manpages for
2966  the various curses packages (?) if not, our 0 entry is unusable, but that's
2967  the DIM_BLACK color and we don't use it anyway.
2968
2969  Revision 590.147  2002/03/12 22:17:20  ajc
2970  * Give mailbox owners access to "who knows room" command
2971
2972  Revision 590.146  2002/03/12 21:08:03  nbryant
2973  support color under Solaris curses
2974
2975  Revision 590.145  2002/03/12 19:59:40  ajc
2976  * Access control change: do not treat mailboxes as guessname rooms for Aides.
2977    Open up INVT/KICK commands to non-Aides for their mailboxes.
2978
2979  Revision 590.144  2002/03/12 04:30:52  nbryant
2980  if a filesystem node exists at /var/run/egd-pool, try to connect to it as
2981  the EGD (Entropy Gathering Daemon) or PRNGD (pseudorandom number
2982  generator daemon) socket and seed OpenSSL's RNG.
2983
2984  this is necessary on solaris and other systems which lack /dev/urandom.
2985
2986  Revision 590.143  2002/03/12 03:43:26  nbryant
2987  squished the last remaining calls to sprintf
2988
2989  Revision 590.142  2002/03/12 03:36:55  nbryant
2990  replace calls to gets with fgets
2991
2992  Revision 590.141  2002/03/12 03:19:09  nbryant
2993  more sprintf bashing. now the only ones left are in mime_parser
2994
2995  Revision 590.140  2002/03/12 01:33:42  nbryant
2996   - pass -Wcast-qual to gcc
2997   - more sprintf bashing
2998
2999  Revision 590.139  2002/03/12 00:03:43  nbryant
3000  more sprintf removals
3001
3002  Revision 590.138  2002/03/11 06:00:21  nbryant
3003  use <db.h> before <db3/db.h> or <db4/db.h>
3004  this is the only way i can think of to make it work everywhere; people on
3005  systems like FreeBSD where the ports work the other way around will have to
3006  specify an extra -I flag in their CPPFLAGS variable.
3007
3008  Revision 590.137  2002/03/11 05:42:46  nbryant
3009  removed all references to sprintf from several files (not all files yet)
3010  and replace with snprintf
3011
3012  Revision 590.136  2002/03/11 04:16:20  nbryant
3013  warning fixes on sparc-sun-solaris2.8 with gcc 3.0.4, mostly for *printf
3014  format strings
3015
3016  Revision 590.135  2002/03/11 03:55:24  nbryant
3017   - fixes for building without OpenSSL
3018   - setenv doesn't exist on all systems, use putenv instead
3019   - support Solaris' curses implementation
3020
3021  Revision 590.134  2002/03/09 22:52:04  ajc
3022  * Applied a patch submitted by <xperc@hotmail.com> to fix a potential buffer
3023    overflow problem in lprintf().  I also did the same fix to cprintf().
3024
3025  Revision 590.133  2002/03/09 16:47:57  ajc
3026  * Added BMBX to fix a problem
3027
3028  Revision 590.132  2002/03/09 06:18:37  ajc
3029  * one more tweak
3030
3031  Revision 590.131  2002/03/09 05:22:29  ajc
3032  * this should do it.
3033
3034  Revision 590.130  2002/03/09 05:02:20  ajc
3035  * Attempts to fix the access control crap
3036
3037  Revision 590.129  2002/03/08 05:42:02  ajc
3038  * Patch to allow invitations and admin access to mailbox rooms.  NEEDS TESTING!
3039
3040  Revision 590.128  2002/03/07 04:30:37  ajc
3041  * Force recipient only in Mail>, not in all mailbox rooms
3042
3043  Revision 590.127  2002/03/05 22:45:40  error
3044  * Autoconf fixes for DB4 support
3045
3046  Revision 590.126  2002/03/05 04:47:49  ajc
3047  * vcard.c: another API update
3048
3049  Revision 590.125  2002/03/04 05:29:39  ajc
3050  * Made a small API change to vcard.c for WebCit, brought the change over here too
3051    in order to keep vcard.c identical everywhere.
3052
3053  Revision 590.124  2002/03/03 06:48:25  ajc
3054  * Client and server options to disable self-service user account creation
3055
3056  Revision 590.123  2002/03/03 06:31:58  ajc
3057  * Added password starred-out entry to newprompt() and strprompt()
3058  * Applied the above setting to password set/change in <.A>ide <U>seredit
3059
3060  Revision 590.122  2002/03/03 06:18:45  ajc
3061  * Implemented the CREU server command to administratively create user accounts
3062  * Added the ability to create new user accounts to <.A>ide <U>seredit
3063
3064  Revision 590.121  2002/03/03 06:05:16  ajc
3065  * Split up some of the code in order to prepare for user accounts to be
3066    administratively created without logging in to them.
3067
3068  Revision 590.120  2002/03/02 05:56:48  ajc
3069  * Properly implemented the network filter list.  Finished the server module and
3070    did a client-side <.A>ide <S>ysconfig <F>ilterlist command.
3071
3072  Revision 590.119  2002/03/01 04:24:20  ajc
3073  * Cosmetic change to Received: line
3074
3075  Revision 590.118  2002/03/01 04:16:22  ajc
3076  * CtdlReadMessageBody() -- fixed bug that caused the prepend buffer to be
3077    discarded instead of prepended.  "Received:" lines now work.
3078
3079  Revision 590.117  2002/02/23 19:20:51  ajc
3080  * Do the use table purge in two phases to avoid crashy crashy
3081
3082  Revision 590.116  2002/02/20 22:42:19  ajc
3083  * Started adding better management of source IP addressses in SMTP service
3084
3085  Revision 590.115  2002/02/15 04:28:57  ajc
3086  * Wrote the expire/purge routine for the new use table
3087
3088  Revision 590.114  2002/02/15 04:05:08  ajc
3089  * Began implementation of a networker use table that doesn't chew up oodles
3090    of CPU time.  (It uses a cdb instead.)
3091
3092  Revision 590.113  2002/02/15 03:40:06  ajc
3093  * Stu's changes (which he checked in without making any ChangeLog comments,
3094    bad Stu!) didn't build properly without curses.  Added #ifdef's.
3095
3096  Revision 590.112  2002/02/13 22:15:10  ajc
3097  * That was stupid.
3098
3099  Revision 590.111  2002/02/13 22:04:11  ajc
3100  * added vcard_to_html() function
3101
3102  Revision 590.110  2002/02/13 15:48:55  ajc
3103  * Allow the READ command to return packets bigger than 1 byte.  (ooops!)
3104
3105  Revision 590.109  2002/02/12 20:15:25  ajc
3106  * Threw in a few more #ifdef's so the client build doesn't barf on
3107    non-curses systems
3108  * Added rc_prompt_control (<N>ext/<S>top active at paginator: on/off/user)
3109
3110  Revision 590.108  2002/02/11 15:52:10  ajc
3111  * Don't crash when deleting "purge this vCard" messages
3112
3113  Revision 590.107  2002/02/10 22:36:41  nbryant
3114   - replace cdb_trunc with a complete version of the code i had been
3115     working on; fallback code for db < 3.3.x needed
3116   - change 'can't connect to host.port' to 'can't connect to host:port'
3117
3118  Revision 590.106  2002/02/08 22:39:08  ajc
3119  * If there's already a Subject line in memory, display it below the usual
3120    headers when the user hits <E>
3121
3122  Revision 590.105  2002/02/08 22:36:23  ajc
3123  * Changed the logic for printing RFC822 addresses (again)
3124  * Implemented cdb_trunc() in database_sleepycat.c, using db_truncate()
3125    (We need to either provide an alternative implementation or require DB >=3.3)
3126  * Automatically Re: subject line in the client where appropriate
3127
3128  Revision 590.104  2002/02/08 19:02:25  ajc
3129  * Added client and server side support for entering Subject lines in
3130    messages when not using RFC822.
3131
3132  Revision 590.103  2002/02/08 18:10:07  ajc
3133  * When outputting a message in non-RFC822 format, don't display an Internet
3134    address if the user is local.
3135
3136  Revision 590.102  2002/02/07 04:42:49  ajc
3137  * Silently refuse to add directory entries for Internet addresses already
3138    belonging to other users.
3139  * cdb_trunc() for CtdlDirectoryInit: implemented for GDBM, stubbed for DB
3140
3141  Revision 590.101  2002/02/05 05:05:53  ajc
3142  * Don't crash when posting if the user doesn't have an Internet directory address
3143
3144  Revision 590.100  2002/02/03 15:29:03  error
3145  * fixed a silly oversight in serv_crypto.c when removing the ETLS command
3146
3147  Revision 590.99  2002/02/03 15:21:48  error
3148  * Remove the ETLS command, it is no longer needed
3149
3150  Revision 590.98  2002/02/02 21:44:04  ajc
3151  * If a user has at least one valid Internet directory address, stamp it onto
3152    any outgoing messages.
3153
3154  Revision 590.97  2002/02/01 05:11:26  ajc
3155  * Added a QDIR protocol command to do quick-and-dirty queries of the directory
3156  * In the client, check the directory for conflicts when selecting email addr.
3157
3158  Revision 590.96  2002/01/31 05:13:44  ajc
3159  * When deleting a vCard from the Global Address Book room, remove the
3160    corresponding address in the directory.  (Not tested.)
3161
3162  Revision 590.95  2002/01/30 19:03:41  ajc
3163  * Added a new DeleteFunctionHook type of thing.  These get called when a
3164    message is being deleted from a room.
3165  * When deleting messages from a room, do the AdjRefCount() calls (and now,
3166    the PerformDeleteHooks() calls) in a second pass.  This keeps that stuff
3167    outside of the S_QUICKROOM critical section.
3168
3169  Revision 590.94  2002/01/27 06:39:45  error
3170  * file_ops.c: fixed bug in cmd_read() which could cause server to report
3171    the wrong number of bytes for the client to download
3172
3173  Revision 590.93  2002/01/26 21:33:38  ajc
3174  * More internet addressing and global directory stuff.  I think it's all working now
3175    except for the purging of old entries.
3176
3177  Revision 590.92  2002/01/26 11:02:37  error
3178  * citadel.spec cleaned up
3179
3180  Revision 590.91  2002/01/26 09:23:40  error
3181  * setup now has a silent running mode (-q option) where it silently sets
3182    defaults for everything.  This is intended for use in scripts such as
3183    the RPM packages, eliminating a step from the installation process.
3184
3185  Revision 590.90  2002/01/26 09:19:16  error
3186  * citadel.spec has been completely overhauled, we can make RPMs now!
3187
3188  Revision 590.89  2002/01/26 04:59:57  ajc
3189  * smtp FROM command now validates sender using the validate_recipients() loop
3190    (yeah, it's good for that too) making it directory-aware
3191
3192  Revision 590.88  2002/01/26 04:01:10  error
3193  * Formatter now uses more of the available screen width
3194
3195  Revision 590.87  2002/01/26 03:57:30  error
3196  * Revised status_line() display, it's much more compact now
3197
3198  Revision 590.86  2002/01/26 03:50:26  error
3199  * Better error reporting in connection_died(), kills curses before printing
3200    error message, prints last errno.
3201
3202  Revision 590.85  2002/01/25 05:19:03  ajc
3203  * Greatly simplified the logic for validating recipient addresses for incoming
3204    SMTP.  This logic destroys the whitespace mangling for local names; I will
3205    fix this tomorrow.
3206
3207  Revision 590.84  2002/01/25 04:36:35  ajc
3208  * fixz to allow incoming vCards in the address book to actually get processed
3209
3210  Revision 590.83  2002/01/24 06:52:54  error
3211  * citadel_decls.h: fix unresolved extern errors
3212
3213  Revision 590.82  2002/01/23 05:04:05  ajc
3214  * Add vCards from incoming network messages in the GAB to the directory.
3215
3216  Revision 590.81  2002/01/23 03:39:32  ajc
3217  * Added a new hook type for handling incoming network messages
3218  * Wrote a skeleton module for net filtering
3219
3220  Revision 590.80  2002/01/22 10:46:25  error
3221  * read_message() and fmout() now accept a FILE to which to send their
3222    output; this fixes quoting in the fullscreen client
3223
3224  Revision 590.79  2002/01/20 08:03:43  error
3225  * curses client: use the status line as "input" line in chat mode
3226
3227  Revision 590.78  2002/01/20 07:43:07  error
3228  * serv_chat.c: Server no longer crashes when CHATLOG can't be opened
3229
3230  Revision 590.77  2002/01/20 05:22:07  error
3231  * curses client:  allow goodbye message to be seen on some terminals
3232
3233  Revision 590.76  2002/01/19 16:56:31  error
3234  * Fixed color support, now works when rc_ansi_color is on or auto
3235
3236  Revision 590.75  2002/01/19 15:10:25  error
3237  * Cosmetics for the client status line
3238
3239  Revision 590.74  2002/01/19 11:59:33  error
3240  * A real status line for the text client
3241
3242  Revision 590.73  2002/01/19 10:08:43  error
3243  * fix link for libcitserver.so to tools.o which I broke (oops!)
3244
3245  Revision 590.72  2002/01/19 09:59:08  error
3246  * Full-screen curses support for Citadel text client
3247
3248  Revision 590.71  2002/01/17 20:11:05  nbryant
3249  remove lock.c/lock.h; don't need them for what i was planning after all
3250
3251  Revision 590.70  2002/01/17 10:48:36  error
3252  * cosmetic fixes in the new trace file functionality
3253
3254  Revision 590.69  2002/01/17 10:32:14  error
3255  * lprintf() now logs the session ID for each log entry within a session.
3256    Also SMTP, IMAP, POP3 and Citadel protocol commands are differentiated.
3257
3258  Revision 590.68  2002/01/17 10:16:09  error
3259  * migratenet.c: cygwin fix: include limits.h
3260
3261  Revision 590.67  2002/01/17 10:13:31  error
3262  * serv_ical.c: set expire policy for My Calendar> to manual
3263
3264  Revision 590.66  2002/01/17 07:18:11  ajc
3265  * Changed all "free software" references to "open source" in order
3266    to piss off Richard Stallman
3267
3268  Revision 590.65  2002/01/17 00:22:35  nbryant
3269  added lock.[ch]: recursive read/write locking support. (not actually used yet)
3270
3271  Revision 590.64  2002/01/15 12:41:53  error
3272  * Implement alternate_semantics (see comments in citadel.rc file)
3273
3274  Revision 590.63  2002/01/15 11:07:51  ajc
3275  * vcard.c: updated vCard "object methods" to handle multiple instances of
3276    the same key name when necessary.
3277
3278  Revision 590.62  2002/01/15 06:38:39  error
3279  * Update citadelapi.txt with CtdlUnregister* calls, LogHook calls
3280
3281  Revision 590.61  2002/01/15 06:20:18  error
3282  * Modules can now unregister any of their hooks (though none yet take
3283    advantage of this).
3284
3285  Revision 590.60  2002/01/14 08:49:13  error
3286  * Fixed bug in cmd_cre8() causing protocol to get out of sync when creating
3287    a new room
3288
3289  Revision 590.59  2002/01/13 04:46:31  ajc
3290  * Allow incoming SMTP to relay to other Citadel nodes for whom we are
3291    providing directory service.
3292
3293  Revision 590.58  2002/01/13 04:06:33  ajc
3294  * Repaired the problems I created when moving the_mime_parser()'s variables
3295    from the stack to the heap.  (Hint: sizeof(char *) is 4, not 4096)
3296
3297  Revision 590.57  2002/01/11 15:46:57  error
3298  * Allow users to move/copy messages between personal rooms
3299
3300  Revision 590.56  2002/01/11 04:59:00  ajc
3301  * Finished most of the work for the Global Address Book.
3302
3303  Revision 590.55  2002/01/11 04:37:03  ajc
3304  * More code for the Global Address Book
3305
3306  Revision 590.54  2002/01/11 02:57:35  error
3307  * Don't print **** when sending a page or mail from an anonymous-only room
3308
3309  Revision 590.53  2002/01/10 21:22:37  ajc
3310  * Minor changes for global directory service
3311
3312  Revision 590.52  2002/01/10 04:29:28  ajc
3313  * Minor updates for directory service
3314
3315  Revision 590.51  2002/01/09 23:12:40  ajc
3316  * Allow users to zap mailbox rooms
3317
3318  Revision 590.50  2002/01/09 04:37:32  ajc
3319  * Finished the callback stuff for vCard address extraction
3320
3321  Revision 590.49  2002/01/09 04:05:53  ajc
3322  * Began writing code to harvest Internet e-mail addresses from vCards, and
3323    hacked together a temporary version (and writeup) of the IGAB command.
3324
3325  Revision 590.48  2002/01/08 16:34:22  ajc
3326  * serv_vcard.c: cosmetic cleanup
3327
3328  Revision 590.47  2002/01/06 22:44:21  error
3329  * Enable/disable encryption in client from command line and/or citadel.rc
3330
3331  Revision 590.46  2002/01/06 21:25:26  ajc
3332  * sysdep.c: in client_write(), handle redirect_fp and redirect_sock *before*
3333    handling redirect_ssl, because these need to be done the same way regardless
3334    of client session crypto
3335  * serv_crypto.c: pasted a bunch of Nathan's #ifdef blocks from sysdep.c in
3336    order to gain greater portability (or even to get it to compile on splorph)
3337
3338  Revision 590.45  2002/01/06 11:13:33  error
3339  * Enable SSL/TLS support in the client (again)
3340
3341  Revision 590.44  2002/01/06 11:11:31  error
3342  * Enable SSL/TLS in the client
3343
3344  Revision 590.43  2002/01/06 10:49:55  error
3345  * Add some #includes I apparently somehow missed
3346
3347  Revision 590.42  2002/01/06 10:33:10  error
3348  * SSL/TLS support for the Citadel wire protocol
3349
3350  Revision 590.41  2002/01/06 08:54:58  error
3351  * user_ops.c: fixed become_session() when calling EVT_LOGOUT session hooks
3352
3353  Revision 590.40  2002/01/05 22:31:22  ajc
3354  * Removed some protocol commands and writeups that are no longer necessary
3355  * Began some of the framework for the Global Address Book
3356
3357  Revision 590.39  2002/01/05 12:44:43  error
3358  * serv_chat.c: allow a session to be killed while in chat
3359
3360  Revision 590.38  2002/01/05 12:31:04  error
3361  * user_ops.c: become_session() when calling EVT_LOGOUT session hooks
3362
3363  Revision 590.37  2002/01/05 04:51:36  error
3364  * stats now sorts its top 20 lists properly
3365
3366  Revision 590.36  2002/01/04 20:57:36  nbryant
3367  cygwin fix
3368
3369  Revision 590.35  2002/01/04 20:46:26  nbryant
3370  Makefile fix for cygwin (fix migratenet linkage)
3371
3372  Revision 590.34  2002/01/04 20:43:26  nbryant
3373  configure/genstamp: check for struct tm.tm_gmtoff
3374
3375  Revision 590.33  2002/01/03 22:01:17  ajc
3376  * Fixed mail to "sysop"
3377
3378  Revision 590.32  2002/01/03 21:35:07  ajc
3379  * I think this is the last of the fixes for the new submit queue.
3380
3381  Revision 590.31  2002/01/03 12:27:35  error
3382  * Fixed my name in docs/copyright.txt, why didn't I notice that before?
3383
3384  Revision 590.30  2002/01/03 12:21:02  error
3385  * Autoconf support for recognizing OpenSSL
3386
3387  Revision 590.29  2002/01/03 04:52:28  ajc
3388  * serv_network.c: migrated deliveries and bounces to the new message
3389    submission subsystem.  NOT TESTED.
3390
3391  Revision 590.28  2002/01/01 21:32:10  ajc
3392  * Finished the updates to serv_smtp.c, although I think there may be a
3393    problem with one-too-many reference counts when a message is submitted
3394    via SMTP.
3395
3396  Revision 590.27  2001/12/31 20:15:13  ajc
3397  * Almost finished converting serv_smtp.c to the new message submission
3398    framework.  Still not done yet; don't use this.
3399
3400  Revision 590.26  2001/12/30 06:20:46  error
3401  * More keys while reading messages:  Q or S same as Ctrl-C, N same as Ctrl-O.
3402
3403  Revision 590.25  2001/12/30 05:50:46  error
3404  * Security:  Citadel now drops privileges when called from telnetd, also
3405    checks to make sure you didn't set the setuid/setgid bits.  No more
3406    loginwrapper.sh!
3407
3408  Revision 590.24  2001/12/29 05:19:32  ajc
3409  * Minor cosmetic hack
3410
3411  Revision 590.23  2001/12/29 04:21:22  nixo
3412  stupid me. I didn't realize that asking for the header did what I wanted
3413  so I changed my little 'y' hack to not bother reading the text of the
3414  message. a little saving on the bandwidth.
3415
3416  Revision 590.22  2001/12/28 22:32:38  nixo
3417  Added a "read m<y> next" function in read mode. It will skip to the next
3418  message by the user in the current message list (whatever mode you're in
3419  be it read forward, last 50, whatever.)
3420
3421  Revision 590.21  2001/12/28 11:06:53  error
3422  * More server support for hostnames up to 63 characters (oops I missed a spot)
3423
3424  Revision 590.20  2001/12/28 09:39:10  error
3425  * Client support for hostnames up to 63 characters: truncated at 24 in
3426    short who list, full display in long who list.
3427
3428  Revision 590.19  2001/12/28 09:28:04  error
3429  * Server support for hostnames up to 63 characters
3430
3431  Revision 590.18  2001/12/26 05:01:30  ajc
3432  * Added a new developer ID for Anticlimactic Teleservices
3433
3434  Revision 590.17  2001/12/23 10:00:43  error
3435  * Pages are once again formatted to the caller's screen width.
3436
3437  Revision 590.16  2001/12/23 09:57:47  error
3438  * tools.c: added parameter to fmt_date() to allow for printing the seconds
3439    along with the time, e.g. 12:34 pm or 12:34:56 pm
3440
3441  Revision 590.15  2001/12/20 04:54:26  ajc
3442  * If you paid for this software, someone is ripping you off.
3443
3444  Revision 590.14  2001/12/18 08:24:56  nbryant
3445  more lovely configure tweaks (include paths for db)
3446
3447  Revision 590.13  2001/12/18 06:04:08  ajc
3448  * Moved the buffers in the_mime_parser() from the stack to the heap, because
3449    it was crashing boxen with small stack sizes.
3450
3451  Revision 590.12  2001/12/18 05:54:16  ajc
3452  * Added more load_floorlist() commands to the beginning and end of functions
3453    in the client that manipulate the floor list.  This fixes a bug in which
3454    new floors don't show up right away after being created.
3455
3456  Revision 590.11  2001/12/17 08:14:26  nbryant
3457  restored the checks for /usr/include/db3 and /usr/local/include/db3
3458  in configure.  there are too many variations on db installation; this is
3459  getting messy :-(
3460
3461  Revision 590.10  2001/12/17 08:00:45  nbryant
3462  set the pthreads stack size to 128K because FreeBSD's default of 64K
3463  seems too small. fixes crashes under FreeBSD.
3464
3465  Revision 590.9  2001/12/16 00:50:14  error
3466  * Added usersupp.lastcall to the parameters returned from the PASS/PAS2
3467    commands in logged_in_response().
3468
3469  Revision 590.8  2001/12/14 21:33:18  nbryant
3470  finally changed configure to complain if there's no database driver ;)
3471
3472  Revision 590.7  2001/12/14 08:29:30  error
3473  * Security: trace file is now only readable by owner, since it contains
3474    plain text passwords.
3475
3476  Revision 590.6  2001/12/14 07:04:24  ajc
3477  * Now you can send mail to yourself.  Hi from Stu.
3478
3479  Revision 590.5  2001/12/14 06:58:12  ajc
3480  * Hi from Stu
3481
3482  Revision 590.4  2001/12/13 22:36:30  nbryant
3483  make configure search for /usr/local/BerkeleyDB.4.0
3484
3485  Revision 590.3  2001/12/13 22:29:57  nbryant
3486  make it compile with Berkeley DB 4.0.x
3487
3488  Revision 590.2  2001/12/11 21:31:07  nbryant
3489   - test for -ldb3 before -ldb
3490
3491  Revision 590.1  2001/12/11 20:04:41  nbryant
3492   - fix library flags, includes for portability
3493   - malloc.h is deprecated
3494   - fix genstamp, hopefully
3495   - fix size_t *printf handling for portability
3496
3497  Revision 590.0  2001/12/08 03:31:41  ajc
3498  * THIS IS 5.90
3499
3500  Revision 580.95  2001/12/08 03:30:37  ajc
3501  * Final changes to networking docs for 5.90
3502
3503  Revision 580.94  2001/12/06 05:13:34  ajc
3504  * Added the documentation for room sharing and listserv
3505
3506  Revision 580.93  2001/12/04 05:24:15  ajc
3507  * Added two more bytes to the possible length of shared secrets in networking
3508    due to some legacy support requirements.
3509
3510  Revision 580.92  2001/12/04 05:16:19  ajc
3511  * mime_parser.c: change to memory allocation algorithm ... some badly done
3512    messages were crashing the server
3513
3514  Revision 580.91  2001/12/03 22:48:16  ajc
3515  * ooops.  Look for the QR2_SYSTEM flag in QRflags2, not QRflags.
3516
3517  Revision 580.90  2001/12/03 17:02:50  ajc
3518  * dynloader.c: fixed improperly done declaration and mallok()
3519
3520  Revision 580.89  2001/12/03 04:28:02  ajc
3521  * mime_parser.c: now uses built-in functions to decode base64 and
3522    quoted-printable attachments, instead of piping data to outboard programs.
3523
3524  Revision 580.88  2001/12/03 02:45:46  ajc
3525  * Began implementing some code to handle multiple recipients (but #define'd
3526    it all out because we're approaching a release)
3527
3528  Revision 580.87  2001/12/03 01:50:17  ajc
3529  * When sending mail, copy to the sender's "Sent Items>" room instead of to
3530    the sender's "Mail>" room.
3531
3532  Revision 580.86  2001/12/02 23:36:24  ajc
3533  * On a new system, set the default new user level to 4 instead of 1.
3534
3535  Revision 580.85  2001/12/02 23:27:01  ajc
3536  * Removed references to the old networker from the documentation.  Did not
3537    write any new documentation, so what's there now is kind of sparse.
3538
3539  Revision 580.84  2001/12/02 02:42:55  ajc
3540  * Implemented new room flag QR2_SYSTEM which supresses the room from all
3541    room listings, even for Aides (but it's still gotoable).  This will be used
3542    for rooms which hold system configuration and message queues.
3543
3544  Revision 580.83  2001/12/01 19:23:26  ajc
3545  * clientsocket.c: implement socket timeouts for read operations
3546
3547  Revision 580.82  2001/12/01 17:00:23  ajc
3548  * serv_smtp.c: when multiple MX's are the same preference, randomize them
3549
3550  Revision 580.81  2001/12/01 07:18:28  ajc
3551  * Fixed an SMTP delivery problem that was causing certain classes of
3552    transient errors to cause a message to never be delivered.
3553
3554  Revision 580.80  2001/12/01 05:26:01  ajc
3555  * Added a command "SMTP" to the Citadel protocol, to do some unimportant
3556    utility/diagnostic functions.
3557
3558  Revision 580.79  2001/11/27 17:08:29  ajc
3559  * When calling an external editor, set the environment variable
3560    WINDOW_TITLE to an appropriate value.
3561
3562  Revision 580.78  2001/11/26 03:27:08  ajc
3563  * new algorithm to load the use table
3564
3565  Revision 580.77  2001/11/17 19:55:08  ajc
3566  * Updated some of the documentation
3567
3568  Revision 580.76  2001/11/16 04:43:12  ajc
3569  * Eliminated the sock_puts_crlf() function and ensured that all SMTP client
3570    commands are sent out using a single sock_write() call.  There are broken
3571    SMTP server implementations that can't handle SMTP commands split across
3572    multiple writes.  (Thanks to Andru Luvisi and Ben Mehlman for the idea.)
3573
3574  Revision 580.75  2001/11/15 04:11:30  ajc
3575  * hack.doc: updated to reflect Cit86Net compatibility fields removed from the
3576    file format (since we dumbed down the gateway software)
3577  * ipc_c_tcp.c: removed SOCKS4 support.  Nobody uses it anymore.
3578  * ipc_c_tcp.c: fixed a bug which caused the client to fall back to defaultPort
3579    if a numeric port number was specified instead of a service name
3580
3581  Revision 580.74  2001/11/14 02:59:01  ajc
3582  * Network run frequency is now a site-definable setting
3583
3584  Revision 580.73  2001/11/13 22:05:23  ajc
3585  * Re-introduced the ability to enter IGnet mail into the system.
3586
3587  Revision 580.72  2001/10/29 22:59:22  ajc
3588  * Renamed "SuppMsgInfo" to "MetaData" because that's what it is
3589
3590  Revision 580.71  2001/10/29 16:39:54  ajc
3591  * Finished the migratenet utility (finally).
3592
3593  Revision 580.70  2001/10/28 05:18:51  ajc
3594  * migratenet almost finished
3595
3596  Revision 580.69  2001/10/26 04:26:45  ajc
3597  * more work on the net migrator
3598
3599  Revision 580.68  2001/10/23 03:37:33  ajc
3600  * Threw a few more lines of code into migratenet.c
3601
3602  Revision 580.67  2001/10/20 18:10:50  ajc
3603  * migratenet.c: added (not even close to being finished)
3604
3605  Revision 580.66  2001/10/17 21:07:20  nbryant
3606  further format string cleanups (for i686-linux type sizes)
3607
3608  Revision 580.65  2001/10/17 20:41:07  nbryant
3609   - declare *printf format specifiers if gcc detected
3610   - format string fixes (compiles w/o warnings on alpha osf/1)
3611
3612  Revision 580.64  2001/10/17 19:40:38  nbryant
3613  warning fixes and cleanups for 64-bit machines
3614
3615  Revision 580.63  2001/10/16 20:47:37  nbryant
3616  - backed out -export-dynamic, it doesn't do anything and i've found the real
3617  problem
3618  - remove declaration for make_message
3619
3620  Revision 580.62  2001/10/16 19:18:49  nbryant
3621  backed out that compiler detection change for Tru64. it's not incredibly
3622  important and results in broken autoconf macro expansions.
3623
3624  Revision 580.61  2001/10/16 18:36:33  nbryant
3625  reinstate -export-dynamic for citserver in case libtool decides to build
3626  static libraries (why?)
3627
3628  Revision 580.60  2001/10/16 18:21:53  nbryant
3629  add some explanatory text to bootstrap
3630
3631  Revision 580.59  2001/10/16 17:43:53  nbryant
3632   - further configure tweaks for FreeBSD and Tru64 Unix
3633   - updated to latest libtool configure fragment
3634   - there are two functions named make_message. (?) so declare them both
3635     static.
3636
3637  Revision 580.58  2001/10/16 01:48:55  nbryant
3638  - configury tweaks for a /usr/include/db3 goof and Digital/Tru64 Unix
3639  - #ifdef out inline on non-GCC compilers
3640
3641  Revision 580.57  2001/10/15 19:50:50  ajc
3642  * Fixed a bug in the loopzapper that was corrupting the use table saved copy.
3643  * Post notification in Aide> when the loopzapper catches a message.
3644
3645  Revision 580.56  2001/10/12 22:41:11  ajc
3646  * Wrote the rest of the use table code.  Finished except for a bug.
3647
3648  Revision 580.55  2001/10/10 18:35:12  ajc
3649  * Comments & cosmetics for previous update
3650
3651  Revision 580.54  2001/10/10 17:12:54  ajc
3652  * Bugfix for MSG0 command to properly handle multipart/alternative
3653
3654  Revision 580.53  2001/10/06 21:32:29  ajc
3655  * Finished the concurrency check for network polling.  (Now works both for
3656    polling and being polled.  Severe UUCP deja vu.)
3657
3658  Revision 580.52  2001/10/06 20:28:06  ajc
3659  * Began implementing some concurrency stuff for the networker
3660
3661  Revision 580.51  2001/10/06 19:51:47  ajc
3662  * Stripped the build of obsolete parts of the old networker no longer in use.
3663
3664  Revision 580.50  2001/10/03 20:05:50  ajc
3665  * serv_smtp.c: implement RFC2920 ESMTP "pipelining" extension on the server
3666    side.  (No changes required other than advertising the extension.)
3667
3668  Revision 580.49  2001/10/03 03:15:16  ajc
3669  * Implemented BOUNCE BOUNCE BOUNCE
3670
3671  Revision 580.48  2001/10/02 03:04:30  ajc
3672  * Allow non-Aides to terminate sessions belonging to them
3673
3674  Revision 580.47  2001/09/24 18:55:13  ajc
3675  * Completed migrating the "netpoll" utility into the serv_network module.
3676    Removed this utility.
3677
3678  Revision 580.46  2001/09/21 20:58:25  nbryant
3679  support different log_archive prototype in DB versions prior to 3.3
3680
3681  Revision 580.45  2001/09/20 04:17:10  ajc
3682  * Inbound network authentication working.  Fixed a bug in the split-horizon
3683    algorithm.  Still need to move the 'netpoll' command into the server.
3684
3685  Revision 580.44  2001/09/18 04:05:04  ajc
3686  * Added host/IP and port to node config (client side only)
3687
3688  Revision 580.43  2001/09/17 23:55:45  ajc
3689  * Support for IGnet routing (not tested)
3690
3691  Revision 580.42  2001/09/16 05:44:51  ajc
3692  * serv_smtp.c: instead of doubling delivery retry times unbounded, set a
3693    maximum retry time of SMTP_RETRY_MAX (currently set to 12 hours)
3694
3695  Revision 580.41  2001/09/09 16:19:29  error
3696  * Updated PAM configuration file citadel.pam for Red Hat 7.x.
3697
3698  Revision 580.40  2001/09/09 03:19:38  ajc
3699  * cdb_cull_logs() now removes log files as soon as the log_archive() function
3700    says it's ok to do so.
3701
3702  Revision 580.39  2001/09/08 18:58:38  ajc
3703  * More changes to the new networker.  Added client command for room sharing.
3704
3705  Revision 580.38  2001/09/07 04:05:27  ajc
3706  * You guessed it: still more code for the new networker.
3707
3708  Revision 580.37  2001/09/06 05:47:29  nbryant
3709  check for /usr/include/db3 (for RedHat 6.2; others?)
3710
3711  Revision 580.36  2001/09/06 05:23:14  nbryant
3712  #include fix for glibc 2.1.3
3713
3714  Revision 580.35  2001/09/06 04:02:34  ajc
3715  * A few more updates to the networker
3716
3717  Revision 580.34  2001/09/06 03:32:41  nbryant
3718  build fix for sparc-sun-solaris2.8; i think the dependencies should be
3719  set up properly for all platforms now.
3720
3721  Revision 580.33  2001/09/06 02:55:27  nbryant
3722  build fix for Linux
3723
3724  Revision 580.32  2001/09/06 02:49:22  ajc
3725  * Fixed paste-post mode (<.E>nter <A>scii) to append instead of replace when
3726    the user hits <C>ontinue (bug reported by Stu Mark)
3727
3728  Revision 580.31  2001/09/06 01:26:39  nbryant
3729   - port to Cygwin (DLL support, etc.)
3730   - don't build SMTP module if there's no resolver library (eg on Windows)
3731
3732  Revision 580.30  2001/09/06 00:54:01  nbryant
3733  updated to libtool 1.4.1 and automake 1.5
3734
3735  Revision 580.29  2001/08/29 02:51:25  ajc
3736  * More work on the new networker.
3737
3738  Revision 580.28  2001/08/25 05:04:57  ajc
3739  * Worked a little more on the in-server replacement for netproc
3740
3741  Revision 580.27  2001/08/22 04:18:17  ajc
3742  * Realized that there was lots of similarly broken code in
3743    process_rfc822_addr().  Wrote two new utility functions in tools.c
3744    stripout() and stripallbut() and used them where appropriate.  This should
3745    take care of all possible infinite loops.
3746
3747  Revision 580.26  2001/08/22 03:43:11  ajc
3748  * internet_addressing.c: fixed a bug in process_rfc822_addr() that caused the
3749    server to jump into an endless loop when an e-mail address contained
3750    unbalanced angle brackets.
3751
3752  Revision 580.25  2001/08/15 04:26:02  ajc
3753  * Added split horizon and delete-after-spool to the new networker
3754
3755  Revision 580.24  2001/08/14 02:41:57  ajc
3756  * Began the migration of netproc into part of the serv_network.c module instead
3757    of a standalone program.
3758
3759  Revision 580.23  2001/08/11 22:35:40  nbryant
3760  updated citadel-with-berkeley-db.txt.
3761   - updated build instructions
3762   - improved backup procedures to be safer and more space-efficient.
3763
3764  Revision 580.22  2001/08/11 19:18:41  ajc
3765  * Realized that I am stupid and started implementing server commands to load
3766    and save network configurations, when I had already lovingly implemented the
3767    CONF GETSYS and CONF PUTSYS commands to store arbitrary configuration sets
3768    in the Local System Configuration> room.  Ripped the newer crap out.
3769  * Implemented a skeleton of <.A>ide <S>ysconfig <N>etwork on the client side.
3770
3771  Revision 580.21  2001/08/11 03:51:56  ajc
3772  * Removed the idle timer from the client.  Dialup is dead.
3773
3774  Revision 580.20  2001/08/06 21:33:29  nbryant
3775  made the client fall back on port 504 if there's no /etc/services entry
3776
3777  Revision 580.19  2001/08/05 23:54:14  ajc
3778  * prep for new network node infrastructure
3779
3780  Revision 580.18  2001/08/03 16:53:21  ajc
3781  * Added some more "break" statements to the main switch..case loop in
3782    citadel.c where they were needed.
3783
3784  Revision 580.17  2001/08/03 16:43:53  ajc
3785  * database_sleepycat.c: when running txn_checkpoint(), handle DB_INCOMPLETE
3786    return code as a warning instead of an error worthy of aborting the server.
3787    See http://www.sleepycat.com/docs/api_c/txn_checkpoint.html for explanation.
3788
3789  Revision 580.16  2001/07/30 03:46:14  nbryant
3790  made ForEachUser use a read-only cursor, too. there is now only one piece of
3791  code in Citadel proper (not the database driver) that needs transactions.
3792  that's check_ref_counts; in other words it's the only thing standing in the way
3793  of a clean implementation of retryable transactions.
3794
3795  Revision 580.15  2001/07/29 22:24:04  nbryant
3796   - added a new function to the database interface, cdb_close_cursor().  always
3797  call this when you're finished with a traversal but didn't bother reading all
3798  the way to the end.
3799
3800   - removed several cdb_begin_transaction()/cdb_end_transaction() calls that are
3801  no longer needed because of the read-only cursor support.
3802
3803  Revision 580.14  2001/07/29 20:56:09  nbryant
3804  change ForEachRoom to use read-only cursors by default. it can be overridden to
3805  still use read/write cursors by doing:
3806
3807   cdb_begin_transaction();
3808   ForEachRoom(...);
3809   cdb_end_transaction();
3810
3811  the only place I found where it appears necessary to do so is check_ref_counts,
3812  so this checkin affects that function too.
3813
3814  Revision 580.13  2001/07/29 20:06:33  nbryant
3815  generate symlinks to .libs in modules directory
3816
3817  Revision 580.12  2001/07/28 00:02:50  nbryant
3818  implemented read-only cursors. one of the advantages to these is that
3819  transactions can be avoided; a cursor operation that occurs within a
3820  transaction will often acquire a read lock on every single database page.  in
3821  general, the Sleepycat documentation recommends avoiding transaction-protected
3822  read-only operations where practical. read/modify/write operations can still
3823  be transaction protected, of course.
3824
3825  to use a read-only cursor, call cdb_rewind without a previous call to
3826  cdb_begin_transaction. the DB driver will notice this and prevent the current
3827  thread from modifying data or starting a transaction until the cursor is
3828  closed.
3829
3830  Revision 580.11  2001/07/27 20:45:44  nbryant
3831  libtool has matured a lot since the last time i looked at it (years ago)
3832  so we now use it to handle the details of building shared libraries and
3833  the linker flags for the main executable.
3834
3835  in theory this should bring a lot more portability to the dynloader
3836  subsystem and enable us to do things like transparently detect GNU vs Sun
3837  linkers on solaris, for example
3838
3839  Revision 580.10  2001/07/27 03:29:04  nbryant
3840  missed one thing in the autoconf move
3841
3842  Revision 580.9  2001/07/27 02:57:43  nbryant
3843  support one cursor per database rather than one global cursor
3844
3845  Revision 580.8  2001/07/27 01:32:07  nbryant
3846  remove the automatic transaction demarcation on singleton read operations
3847
3848  Revision 580.7  2001/07/26 21:43:46  nbryant
3849   - move to autoconf 2.52
3850   - random warning fix
3851   - check for db 3.3
3852
3853  Revision 580.6  2001/07/24 13:17:54  ajc
3854  * New UI for mailing list setup
3855  * rooms.c: code cleanup
3856  * docs update
3857
3858  Revision 580.5  2001/07/20 23:48:23  nbryant
3859  fix build on solaris, check default install location for db 3.2, and silence
3860  gcc 3.0
3861
3862  Revision 580.4  2001/07/16 14:24:30  ajc
3863  * Silly cosmetic change to keep the wholist ordered by ascending session number
3864
3865  Revision 580.3  2001/07/13 00:01:36  ajc
3866  * Shuffled around some of the housekeeping loop code
3867
3868  Revision 580.2  2001/07/11 17:01:10  ajc
3869  * database_sleepycat.c: small changes to log messages
3870
3871  Revision 580.1  2001/07/11 04:35:40  nbryant
3872  moved dret initialization in cdb_fetch, just in case
3873
3874  Revision 580.0  2001/07/03 03:07:06  ajc
3875  * THIS IS 5.80
3876
3877  Revision 573.143  2001/07/03 03:06:50  ajc
3878  * Last minute doco update for 5.80
3879
3880  Revision 573.142  2001/07/01 15:44:32  nbryant
3881  configure.in: check for Berkeley DB first.
3882
3883  Revision 573.141  2001/06/27 23:34:30  ajc
3884  * Added some verbage to messages/roomaccess to placate a user who keeps
3885    bitching about privacy policy.
3886
3887  Revision 573.140  2001/06/19 03:41:04  ajc
3888  * Ooops... last_cull needs to be declared static
3889
3890  Revision 573.139  2001/06/19 03:33:19  ajc
3891  * imap_fetch.c: download MIME parts without decoding first.  We like that.
3892  * database_sleepycat.c: added automatic culling of log files which have not
3893    been written to in five days.
3894
3895  Revision 573.138  2001/06/17 19:42:23  nbryant
3896  fix all the <time.h> vs. <sys/time.h> issues, hopefully
3897
3898  Revision 573.137  2001/06/07 03:28:37  ajc
3899  * More tweaks to the MIME parser
3900
3901  Revision 573.136  2001/06/06 15:44:37  ajc
3902  * msgbase.c: output extra newline at end of RFC822 message if necessary to
3903    ensure that 000 termination string appears on a line by itself.
3904
3905  Revision 573.135  2001/06/06 04:22:25  ajc
3906  * Moved memreadline() to tools.c
3907  * internet_addressing.c: fixed conversion of fields to (hopefully) never get
3908    into an active loop when encountering badly formed headers
3909
3910  Revision 573.134  2001/05/27 05:23:03  ajc
3911  * Added a "no new messages" response in the client, displayed when a read
3912    command turns up a zero message count.
3913
3914  Revision 573.133  2001/05/18 20:12:09  ajc
3915  * Fixed bug in mime_parser.c that caused parts to be dropped when the last
3916    boundary was the very last line of the message.
3917  * serv_smtp.c: toned down some of the command response verbage.
3918
3919  Revision 573.132  2001/04/28 04:42:55  ajc
3920  * Updated some of the docs.  Bumped version number to 5.80 in anticipation
3921    of going into a release cycle soon.
3922
3923  Revision 573.130  2001/04/26 03:31:00  ajc
3924  * Finished the implementation of per-message seen/unseen logic, both in the
3925    server proper and in IMAP.  Citadel protocol uses new "seen" command.
3926
3927  Revision 573.129  2001/04/21 04:55:51  ajc
3928  * Began implementation of per-message seen/unseen attribute
3929
3930  Revision 573.128  2001/04/20 03:39:54  ajc
3931  * IMAP LIST/LSUB: made it case insensitive.  Also minor IMAP code cleanup.
3932
3933  Revision 573.127  2001/04/17 00:35:19  cough
3934  * Modified rooms.c in the client so that it would allow inviting into
3935    public rooms.  This is important since there is now a V_LOCKOUT
3936    flag which prevents users who have been kicked from rejoining
3937    a room unless/until you invite them back in.
3938
3939  Revision 573.126  2001/04/16 19:21:14  cough
3940  * Fixed bug in room_ops.c that wasn't allowing aides to goto passworded
3941    rooms without knowing the password.
3942
3943  Revision 573.125  2001/04/14 04:26:44  ajc
3944  * Fixed an unterminated string bug in IMAP APPEND.  Storing messages should
3945    work now.
3946
3947  Revision 573.124  2001/04/10 01:04:10  ajc
3948  * Finished coding IMAP APPEND.  It works, but there's a bug in it somewhere
3949    that is corrupting the memory.
3950
3951  Revision 573.123  2001/04/03 00:47:23  ajc
3952  * Began implementing IMAP APPEND
3953
3954  Revision 573.122  2001/04/01 22:05:44  cough
3955  * *Actually* fixed a botched ChangeLog entry.
3956
3957  Revision 573.121  2001/04/01 22:04:28  cough
3958  * Fixed a botched ChangeLog entry.
3959
3960  Revision 573.120  2001/04/01 22:03:10  cough
3961  * Changed two fclose()s to pclose()s.
3962
3963  Revision 573.119  2001/03/25 11:52:36  error
3964  * serv_pop3.c: Fixed APOP. Now logs in properly. Also cleaned up some non-
3965    RFC-compliant error messages.
3966
3967  Revision 573.118  2001/03/21 05:47:49  ajc
3968  * Added the new IMAP mailbox string compare submitted by Daniel Malament.
3969
3970  Revision 573.117  2001/03/20 01:33:55  ajc
3971  * Added the (\NoInferiors) tag to all rooms listed in IMAP.  This made Mozilla
3972    behave very nicely.
3973
3974  Revision 573.116  2001/03/13 17:19:33  ajc
3975  * support (BODY[HEADER.FIELDS(BLAH BLAH BLAH)]) and HEADER.FIELDS.NOT
3976
3977  Revision 573.115  2001/03/12 01:27:42  ajc
3978  * Implemented SUBSCRIBE and UNSUBSCRIBE commands
3979
3980  Revision 573.114  2001/03/11 23:00:29  ajc
3981  * Mega sexy hack to deliver express messages THROUGH IMAP!  uber coolness!!
3982
3983  Revision 573.113  2001/03/11 22:09:20  ajc
3984  * Replaced the "citlogin" binary wrapper with the "loginwrapper.sh" script.
3985
3986  Revision 573.112  2001/03/11 20:06:53  ajc
3987  * Fixed bug that created incorrect roomnames when sending pages
3988
3989  Revision 573.111  2001/03/11 19:23:32  ajc
3990  * IMAP DELETE command ... also split up access control for room delete cmds
3991
3992  Revision 573.110  2001/03/10 17:29:07  ajc
3993  * Implement proper access control for deleting messages from IMAP
3994
3995  Revision 573.109  2001/03/07 04:02:27  ajc
3996  * Fixed some small IMAP bugs
3997
3998  Revision 573.108  2001/03/06 04:44:00  ajc
3999  * Probable completion of STATUS, COPY, STORE, and EXPUNGE commands in IMAP
4000
4001  Revision 573.107  2001/03/06 03:31:58  nbryant
4002  database-related cleanups and paranoia tests;
4003  fixed a transaction-leak/deadlock problem in cdb_delete;
4004  solved the SIGPIPE mystery (GDB stops on SIGPIPE is all it was)
4005
4006  Revision 573.106  2001/03/05 04:59:31  ajc
4007  * IMAP COPY
4008
4009  Revision 573.105  2001/03/04 23:49:41  ajc
4010  * IMAP EXPUNGE responses -should- be correct now
4011
4012  Revision 573.94  2001/02/20 00:02:56  ajc
4013  * IMAP: implemented the STATUS command (sort of).
4014
4015  Revision 573.93  2001/02/19 22:24:41  ajc
4016  * IMAP server: added untagged, unsolicited server messages for newly arrived
4017    messages, and messages expunged by another session.
4018
4019  Revision 573.92  2001/02/17 05:53:35  ajc
4020  * Repaired the creation of page log rooms in the wrong namespace when the
4021    recipient does not yet have his/her log room created.
4022  * Rewrite "EXPI messages" to run in two passes: one to gather messages to
4023    purge and the next to delete them.  Works better in transactionland.
4024
4025  Revision 573.91  2001/02/14 08:11:27  error
4026  * citadel.rc: added RCS ID (it's about time!)
4027
4028  Revision 573.90  2001/02/14 04:23:54  ajc
4029  * Fixed POP3 server responses ending in \n instead of \r\n as they should be.
4030    This was causing some clients (such as Pine) to lock up.
4031
4032  Revision 573.89  2001/02/13 04:06:14  ajc
4033  * Worked out the remaining bugs in IMAP FETCH for the BODYSTRUCTURE and
4034    BODY[n] data items.  I think.  So much protocol crud, so little time...
4035
4036  Revision 573.88  2001/02/13 01:18:44  ajc
4037  * imap fetch
4038
4039  Revision 573.87  2001/02/12 04:31:34  ajc
4040  * sysdep.c ig_tcp_server() - use IPPROTO_TCP instead of getprotobyname()
4041
4042  Revision 573.86  2001/02/08 04:45:58  ajc
4043  * Fixed namespace problems resulting from the automatic namespece prefixing
4044    added to create_room().  Also added the ability to specify "create a mailbox
4045    but I've already supplied the namespace prefix" for situations where the
4046    namespace isn't that of the logged in user.
4047  * Made the POP3 server response messages slightly less humorous
4048
4049  Revision 573.85  2001/02/06 04:44:12  ajc
4050  * Added a floor listing (complete with \NoSelect flag) to LIST and LSUB
4051
4052  Revision 573.84  2001/02/06 02:09:38  ajc
4053  * citadel.rc: changed the default for local_screen_dimensions to 1, since
4054    Internet users now outnumber dialup users 100 to 0.
4055  * room_ops.c: added a really_create option to create_room().  Also moved the
4056    generation of personal namespace into that function.  MODULE OWNERS PLEASE
4057    CHECK YOUR CALLS TO AVOID MULTIPLE NAMESPACING!!
4058  * room_ops.c: fixed a bug in cgetfloor() that left bad pointers around
4059  * serv_imap.c: finished the CREATE command (finally)
4060
4061  Revision 573.83  2001/02/05 05:20:22  ajc
4062  * Made some changes to functions which translate between Citadel room names
4063    and IMAP folder names.  They're still buggy.
4064
4065  Revision 573.82  2001/02/04 23:17:28  ajc
4066  * Implemented the IMAP CREATE command
4067
4068  Revision 573.81  2001/02/04 02:40:07  ajc
4069  * more imap.  imap sucks.  die crispin die.
4070
4071  Revision 573.80  2001/02/03 10:02:12  error
4072  * serv_ical.c: Verify that objects posted to My Calendar> are of type
4073    text/x-calendar or text/calendar; abort saving if not
4074
4075  Revision 573.79  2001/02/03 09:30:46  error
4076  * serv_ical.c: now creates a My Calendar> personal room, sets attributes
4077
4078  Revision 573.78  2001/02/03 08:21:00  error
4079  * serv_ical.c and serv_ical.h added; skeleton code for now
4080
4081  Revision 573.77  2001/02/02 20:18:18  ajc
4082  * Changed the error message in cdb_delete() to actually *say* cdb_delete
4083    instead of cdb_store.  Useful to know which function failed...
4084
4085  Revision 573.76  2001/02/01 04:08:03  ajc
4086  * IMAP minor change to mailbox name output
4087  * Increased size of buffer in lprintf()
4088
4089  Revision 573.75  2001/01/28 09:50:02  error
4090  * sysdep.c: lprintf() now generates timestamps
4091
4092  Revision 573.74  2001/01/28 07:35:04  error
4093   * serv_bio.c: RBIO now also returns stats about a user, see session.txt
4094
4095  Revision 573.73  2001/01/16 04:03:13  ajc
4096  * yeesh ... more on the IMAP BODYSTRUCTURE
4097
4098  Revision 573.72  2001/01/16 01:51:12  ajc
4099  * imap bodystructure
4100
4101  Revision 573.71  2001/01/16 00:46:40  ajc
4102  * Changed the MIME parser API *again* because we now need the ability to
4103    supply callback functions to be executed before and/or after parsing a
4104    multipart.  (Need this for IMAP BODYSTRUCTURE output.  Crispin sucks.)
4105
4106  Revision 573.70  2001/01/15 23:59:26  ajc
4107  * user_ops.c: reject NULL password in CtdlTryPassword() instead of crashing
4108
4109  Revision 573.68  2001/01/15 20:34:04  ajc
4110  * "Path:" removed for now because it confuses brain-dead Microsoft shitware
4111    into thinking that mail messages are newsgroup messages instead.  When we
4112    add NNTP support back into Citadel we'll have to add code to only output
4113    this field when appropriate.
4114
4115  Revision 573.67  2001/01/15 16:30:31  ajc
4116  * temporary implementation of 901 asynchronous express messages
4117
4118  Revision 573.66  2001/01/14 14:55:39  ajc
4119  * Changed the format of <.W>holist <L>ong
4120
4121  Revision 573.65  2001/01/13 06:40:26  nbryant
4122  merged remaining changes from TRANSACTIONS (using cvs update -j TRANSACTIONS)
4123  which should now be considered closed.
4124
4125  Revision 573.64  2001/01/13 06:12:15  ajc
4126  * Added the ASYN command
4127
4128  Revision 573.63  2001/01/12 22:05:46  ajc
4129  * Fixed a bug that caused bogus wholist lines to be displayed when a non-aide
4130    reads a list containing stealth mode sessions.
4131
4132  Revision 573.62  2001/01/09 05:39:45  ajc
4133  * Merged in code from the TRANSACTIONS branch for testing.
4134
4135  Revision 573.61  2000/12/30 06:17:17  ajc
4136  * Still more work on IMAP.  Damn this is tedious.
4137
4138  Revision 573.60  2000/12/30 04:55:05  ajc
4139  * more buffer size stuff
4140
4141  Revision 573.59  2000/12/27 20:19:51  ajc
4142  * The size constant "256" which shows up everywhere as a buffer size has now
4143    been changed to SIZ.  And, SIZ has been defined now as 1024, not 256, because
4144    we need 1024 byte buffers for most Internet protocols.
4145
4146  Revision 573.58  2000/12/27 05:09:58  ajc
4147  * Added a skeleton IMAP "SEARCH" command (based on the FETCH logic)
4148
4149  Revision 573.57  2000/12/26 03:46:50  ajc
4150  * More IMAP tweaks
4151
4152  Revision 573.56  2000/12/25 22:50:43  ajc
4153  * Added an API function to extract and unfold specific RFC822 fields.
4154  * imap-->fetch-->envelope-->in-reply-to now works
4155  * More robust checking and reporting of temp file errors in the client
4156
4157  Revision 573.55  2000/12/25 20:43:24  ajc
4158  * imap_fetch.c: added support for fetch-->envelope-->from
4159
4160  Revision 573.54  2000/12/20 04:09:24  ajc
4161  * A few memory handling fixes to netproc.
4162
4163  Revision 573.53  2000/12/20 01:57:37  ajc
4164  * netproc.c: added bounds check to fpgetfield()
4165
4166  Revision 573.52  2000/12/19 20:41:55  ajc
4167  * Fixed generation of unique file names for network uploads etc.
4168
4169  Revision 573.51.2.11  2000/12/26 05:30:55  nbryant
4170  remove extraneous transaction around dynamic module initializations. this will
4171  fix the crash on database creation.
4172
4173  Revision 573.51.2.10  2000/12/24 23:00:58  nbryant
4174  clean: also remove parsedate.c
4175
4176  Revision 573.51.2.9  2000/12/20 01:38:42  nbryant
4177  require transactional cursors
4178
4179  Revision 573.51.2.8  2000/12/20 00:30:01  nbryant
4180  release any stale db handles at the end of a server command
4181  (unfinished transactions will be aborted to annoy lazy programmers)
4182
4183  Revision 573.51.2.7  2000/12/19 06:18:27  nbryant
4184  set sched_yield as sleepycat's yield function. this should improve locking
4185  performance.
4186
4187  Revision 573.51.2.6  2000/12/19 02:22:29  nbryant
4188  added automatic transaction start/end on cdb_fetch, cdb_delete, and cdb_store
4189
4190  Revision 573.51.2.5  2000/12/18 03:51:13  nbryant
4191  ditto S_USER_TRANS, S_CALLLOG, and S_HOUSEKEEPING, which are no longer used at
4192  all
4193
4194  Revision 573.51.2.4  2000/12/18 02:49:17  nbryant
4195  removed all references to S_MSGMAIN critical section; it wasn't really needed.
4196  this should make things significantly more scaleable.
4197
4198  Revision 573.51.2.3  2000/12/17 22:12:48  nbryant
4199  reworked shutdown sequence to wait for worker threads to terminate before
4200  checkpointing and closing databases. it is no longer safe to call
4201  master_cleanup() directly to force a shutdown; instead, just set
4202  time_to_die to a nonzero value
4203
4204  Revision 573.51.2.2  2000/12/17 05:06:09  nbryant
4205  added deadlock detection and cleaned up messages
4206
4207  Revision 573.51.2.1  2000/12/16 21:06:59  nbryant
4208  created TRANSACTIONS branch
4209  track cursor and transaction id's in thread-specific data
4210
4211  Revision 573.51  2000/12/14 18:36:34  ajc
4212  * Fixed the "users not in chat" wholist display
4213
4214  Revision 573.50  2000/12/12 18:06:46  ajc
4215  * Removed the transaction stuff (but left the log in).  It wasn't working.
4216
4217  Revision 573.49  2000/12/12 06:19:55  ajc
4218  * Stabilize, dammit!!
4219
4220  Revision 573.48  2000/12/12 04:20:03  ajc
4221  * Made the transaction open/close a global thing, in a frantic attempt to get
4222    Uncensored to stop crashing.  More fixes on the way...
4223
4224  Revision 573.47  2000/12/11 06:08:41  ajc
4225  * Removed the housekeeper thread, moved terminate_idle_sessions() out to a
4226    timer event, and check_sched_shutdown() to the end of the worker thread
4227    loop.  Seems to have improved reliability (but why?)
4228
4229  Revision 573.46  2000/12/11 03:22:11  ajc
4230  * Added server-side REQT command to issue client termination requests
4231
4232  Revision 573.45  2000/12/11 02:19:26  ajc
4233  * Client now honors EM_GO_AWAY flag, used by the server to request that a
4234    client log off.  (The server doesn't support sending that flag yet, though)
4235
4236  Revision 573.44  2000/12/09 06:20:06  ajc
4237  * A few final touches to the Sleepycat DB back-end
4238
4239  Revision 573.43  2000/12/08 17:06:33  ajc
4240  * Wrap txn_begin and txn_end in S_DATABASE mutex
4241
4242  Revision 573.42  2000/12/07 20:21:39  ajc
4243  * begin/end transaction in master_startup()
4244
4245  Revision 573.41  2000/12/07 16:59:02  nbryant
4246  added --with-db and --with-gdbm options to configure
4247
4248  Revision 573.40  2000/12/07 04:50:33  ajc
4249  * Wrap housekeeper and timer events in transaction open/close functions
4250  * Checkpoint the DB as an EVT_TIMER event instead of after each session
4251    (runs each minute, but actually limited by the parameters of the function)
4252
4253  Revision 573.39  2000/12/06 04:44:36  ajc
4254  * Changed netproc to keep the use table in a flat file instead of a database
4255
4256  Revision 573.38  2000/12/05 05:32:58  ajc
4257  * Added support for non-USA country identities in vCard and registration
4258  * User edit now asks whether it should prompt to change the password
4259
4260  Revision 573.37  2000/12/03 04:12:21  ajc
4261  * Finished (mostly) the Sleepycat DB backend ... added transaction logging
4262
4263  Revision 573.36  2000/11/30 03:23:17  ajc
4264  * Got the Sleepycat DB back end working, by opening the databases in a non
4265    shared, non threaded mode, and using Citadel's locking to serialize access.
4266
4267  Revision 573.35  2000/11/29 05:00:02  ajc
4268  * I think the db stuff is ok, but my db library is fux0red...
4269
4270  Revision 573.34  2000/11/27 14:12:09  error
4271  * commands.c: fixups to print_express() to make external command not print
4272    extraneous stuff to the terminal and make the displayed message consistent
4273
4274  Revision 573.33  2000/11/27 10:41:14  error
4275  * print_express(): now uses GEXP instead of old PEXP; displays timestamps
4276
4277  Revision 573.32  2000/11/27 10:29:59  error
4278  * serv_chat.c: fix send_express_message() to include timestamps
4279
4280  Revision 573.31  2000/11/27 03:44:27  ajc
4281  * Initial checkin of database_sleepycat.c (doesn't work yet)
4282
4283  Revision 573.30  2000/11/26 05:24:22  ajc
4284  * msgbase.c: Added new API function CtdlOutputPreLoadedMsg(), and
4285    re-implemented the existing CtdlOutputMsg() as a wrapper around it.
4286  * imap_fetch.c: used the above function to do all output pre-loaded
4287
4288  Revision 573.29  2000/11/25 09:36:18  error
4289  * Added a bit of detail to syslog entries; now shows session id attached to
4290    client, hostname, and username, and time the session ended.
4291
4292  Revision 573.28  2000/11/25 06:17:06  ajc
4293  * Minor IMAP tweaks.  It still doesn't work.  :(
4294
4295  Revision 573.27  2000/11/23 07:22:21  error
4296  * citadel.spec: update version number
4297
4298  Revision 573.26  2000/11/21 11:12:56  error
4299   * domain.h: changed the HP/UX compatibility code to use defines from
4300     typesize.h for integers of specific bit widths (needed for Solaris, etc)
4301
4302  Revision 573.25  2000/11/12 04:20:49  ajc
4303  * Optimized server side input of message text
4304
4305  Revision 573.24  2000/11/10 03:55:06  ajc
4306  * Ford's Fix for Faster Functionality (save position during reply)
4307
4308  Revision 573.23  2000/11/09 04:48:50  ajc
4309  * tools.c: striplt() strips all whitespace, not just spaces
4310
4311  Revision 573.22  2000/11/07 20:47:21  ajc
4312  * imap_fetch.c: added a skeleton "ENVELOPE" fetch.  Currently sends NIL's.
4313
4314  Revision 573.21  2000/11/07 15:54:53  ajc
4315  * xx FETCH n:n BODY[pn.MIME] now works
4316
4317  Revision 573.20  2000/11/06 05:10:01  ajc
4318  * Changed the mime_parser() API (again) to allow "don't decode" mode
4319
4320  Revision 573.19  2000/10/29 18:11:07  ajc
4321  * Start numbering top-level MIME parts as 1, 2... not 1.1, 1.2...
4322
4323  Revision 573.18  2000/10/28 14:14:19  error
4324  * msgbase.c: eliminated most gotos; a single goto in alias() remains because
4325    it actually makes sense to do it that way...
4326
4327  Revision 573.17  2000/10/25 21:37:09  ajc
4328  * Implemented the AUTHENTICATE LOGIN command in IMAP
4329
4330  Revision 573.16  2000/10/25 19:20:37  ajc
4331  * FETCH now works for ranges *and* sets, and with sequence numbers *and* UID's
4332
4333  Revision 573.15  2000/10/24 20:39:59  ajc
4334  * Added RFC822, RFC822.HEADER, RFC822.SIZE, RFC822.TEXT fetch keys to IMAP
4335
4336  Revision 573.14  2000/10/23 20:26:51  error
4337  * War on goto:  rewrote a few easy functions to eliminate unnecessary gotos
4338
4339  Revision 573.13  2000/10/11 23:03:44  error
4340  * utilsmenu: obey $PAGER environment var, if any.  Default to more if neither
4341    $PAGER nor less is available.
4342
4343  Revision 573.12  2000/10/11 22:55:25  error
4344  * citadel.c: when ansi_color=user, enable color at login, so Lobby> posts
4345    displayed at login are in color
4346
4347  Revision 573.11  2000/10/11 22:47:51  error
4348  * domain.c: getmx() returns hostname as MX if no MX records found a la RFC 974
4349
4350  Revision 573.10  2000/10/10 19:18:12  ajc
4351  * Added support of macros ALL, BODY, FAST, and FULL to the IMAP FETCH command
4352
4353  Revision 573.9  2000/10/06 03:31:55  ajc
4354  * Mark Crispin is a fscking idiot.  IMAP is a convoluted mess.
4355
4356  Revision 573.8  2000/10/05 22:23:16  ajc
4357  * Slowly and painfully writing IMAP support
4358
4359  Revision 573.7  2000/10/04 22:39:06  ajc
4360  * Added skeleton versions of the LIST and LSUB commands to the imap server
4361
4362  Revision 573.6  2000/10/04 17:48:21  ajc
4363  * Allow Aides to zap rooms (site configurable setting)
4364
4365  Revision 573.5  2000/10/03 01:45:00  ajc
4366  * Changed the <.A>ide <S>ysconfig <G>eneral command to explicitly allow the
4367    global page log room to be disabled (answer "no" to set the log room to a
4368    null string)
4369
4370  Revision 573.4  2000/09/28 10:27:38  error
4371  * commands.c: changed sttybbs() to support HP/UX termios VMIN and VTIME
4372
4373  Revision 573.3  2000/09/24 22:01:45  ajc
4374  * ipc_c_tcp.c: don't hardcode BBSDIR path for unix domain sockets
4375
4376  Revision 573.2  2000/09/21 04:16:44  ajc
4377  * Fixed logged_in_response() so it only displays responses during Citadel
4378    protocol sessions.  (This was affecting POP etc.)
4379
4380  Revision 573.1  2000/09/11 22:05:04  ajc
4381  * citadel.c: accept -h <host> and -p arguments, so citadel can be called
4382    directly by telnetd, bypassing /bin/login.  It works, but not recommended at
4383    this time because it has to run as root.
4384
4385  Revision 573.0  2000/09/05 18:35:22  ajc
4386  * Tagged everything for version 5.73 release
4387
4388  Revision 572.39  2000/09/04 03:59:15  ajc
4389  IO's changes:
4390  ----------------------------
4391  revision 572.4
4392  date: 2000/09/03 06:36:01;  author: error;  state: Exp;  lines: +5 -1
4393  Added HP/UX linker flag for dynamic modules to work
4394  ----------------------------
4395  revision 572.3
4396  date: 2000/09/01 06:50:00;  author: error;  state: Exp;  lines: +8 -1
4397  Changed to use integer macros from typesize.h for specific bit widths
4398  ----------------------------
4399
4400  Revision 572.38  2000/09/01 20:17:08  ajc
4401  * msgbase.c: cmd_opna() - increase desired_section buffer from 64 to 256 bytes
4402
4403  Revision 572.37  2000/09/01 17:31:47  ajc
4404  * Fixed oopseth in control.c that might call fileno(NULL)
4405
4406  Revision 572.36  2000/09/01 13:37:16  ajc
4407  * control.c: chown citadel.control to bbsuid when opening/creating as root
4408
4409  Revision 572.35  2000/09/01 03:55:44  ajc
4410  * Fixed a few more references to the deprecated uncnsrd.mt-kisco.ny.us name
4411
4412  Revision 572.34  2000/09/01 03:43:09  ajc
4413  * Added 'author' command-line arg to aidepost.  Closes enhancement request
4414    #71 on bugzilla.
4415  * Put the default SMTP and POP3 ports back to 25 and 110.  Now that the
4416    unix domain socket bug is fixed, it's ok if these binds fail.
4417
4418  Revision 572.33  2000/08/31 23:02:15  ajc
4419  * ig_tcp_server() and ig_uds_server()  -  check to make sure queue length is
4420    always at least 5.  Zero-length queues can cause connection lockups.
4421
4422  Revision 572.32  2000/08/31 21:32:44  ajc
4423  * Still trying to fix a socket connect bug
4424
4425  Revision 572.31  2000/08/31 16:37:08  ajc
4426  * docs/import-export.txt: added.
4427
4428  Revision 572.30  2000/08/28 19:51:51  ajc
4429  * messages.c: cosmetic cleanup (coding convention and comments)
4430
4431  Revision 572.29  2000/08/26 20:23:18  ajc
4432  * Finished up the back end code for mailing list sends.  Sends now work!
4433
4434  Revision 572.28  2000/08/24 02:48:18  ajc
4435  * Merged in IO ERROR's diffs to make Citadel work with HP/UX
4436
4437  Revision 572.27  2000/08/22 02:31:47  ajc
4438  * nonce (for APOP-style auth) is now generated when a context is created
4439    instead of during protocol greeting functions.
4440  * Moved Citadel protocol nonce output from greeting to INFO
4441
4442  Revision 572.26  2000/08/18 21:09:36  ajc
4443  * Added a little more mailing list code to serv_network.c
4444
4445  Revision 572.25  2000/08/10 04:36:25  ajc
4446  * Fixed a bug in keyboard polling (in commands.c) which was causing the
4447    client protocol to get out of sync in certain conditions.
4448
4449  Revision 572.24  2000/08/10 02:42:13  ajc
4450  * Changed all the "200 ok" responses to more descriptive strings
4451  * Added a *temporary* protocol sync check.  Remove this!
4452
4453  Revision 572.23  2000/08/09 17:14:34  ajc
4454  msgbase.c: fixed a bug in
4455             remove_any_whitespace_to_the_left_or_right_of_at_symbol() that was
4456             causing the <R>eply function to fail on names with whitespace in
4457             certain parts of the string.  This closes Bug #56.
4458
4459  Revision 572.22  2000/08/05 04:24:00  ajc
4460  * Added [idle] to client wholist display for sessions idle >15 minutes
4461  * Added a generic "void *userdata" field to CtdlForEachMessage()
4462  * More prep for mailing list handling in the server
4463
4464  Revision 572.21  2000/07/30 04:36:12  ajc
4465  * Set up the SNET (Send NETwork config) and GNET (Get NETwork config) commands
4466    for the network overhaul.
4467
4468  Revision 572.20  2000/07/29 05:29:19  ajc
4469  * Changed the format of RWHO output to provide non-masqueraded user/room/host
4470    names (to Aides only) as additional fields rather than an extra line of
4471    output.
4472  * Changed the client to display new RWHO fields, in the "long" wholist only.
4473  * Default SMTP and POP ports are now -1, not 25/110.  These services must now
4474    be activated manually.
4475
4476  Revision 572.19  2000/07/24 00:39:13  ajc
4477  * Fixed a path problem when calling netmailer from mailinglist.c
4478
4479  Revision 572.18  2000/07/22 03:44:17  ajc
4480  * Prepared infrastructure for the networker rewrite
4481
4482  Revision 572.17  2000/07/17 02:38:08  ajc
4483  * Completed serv_vandelay.c (importer/exporter module)
4484  * sendcommand.c: fix behavior of SEND_LISTING mode
4485  * sysdep.c: client_gets() fill buffer with "000" terminator when returning -1
4486
4487  Revision 572.16  2000/07/14 03:06:55  ajc
4488  * Added .ATN (DOWN) and .ATS (SCDN 1) commands to the client
4489
4490  Revision 572.15  2000/07/10 23:36:08  ajc
4491  * Another attempt to fix the crashy crashy bug in serv_vcard
4492  * Did more work on the Art Vandelay module
4493  * Replaced all instances of sprintf(tempfile, tmpnam(NULL)) with strcpy()
4494
4495  Revision 572.14  2000/07/10 04:01:12  ajc
4496  * added an unfinished serv_vandelay.c (Art Vandelay module - importer/exporter)
4497
4498  Revision 572.13  2000/07/09 02:47:40  ajc
4499  * Overhauled the keepalive logic in the chat client.  Closes bug #20.
4500
4501  Revision 572.12  2000/07/09 02:27:02  ajc
4502  * Eliminated the whole SIGINT/SIGQUIT based handling of Ctrl-O and Ctrl-C
4503    keyboard interrupts.  Replaced with a non-blocking check for keyboard input
4504    which sets the global variable 'sigcaught' if either key was pressed.
4505    fmout() and pprintf() switch to 'drain mode' if sigcaught is set.
4506    This closes Bug #18.
4507
4508  Revision 572.11  2000/07/06 20:26:36  ajc
4509  * updated .Help SUMMARY
4510
4511  Revision 572.10  2000/07/04 20:02:46  ajc
4512  * Fixed potential crashy crashy bug in serv_vcard.c
4513
4514  Revision 572.9  2000/06/28 03:42:56  ajc
4515  * Changed the comments at the beginning of each file to a consistent format
4516  * Improved the parameterization of commands in the IMAP module
4517
4518  Revision 572.8  2000/06/27 01:27:13  ajc
4519  * Coupla very small changes to get on the road to IMAP support
4520
4521  Revision 572.7  2000/06/22 21:41:48  ajc
4522  * Made the ICQ stuff far more reliable ... by removing it!
4523
4524  Revision 572.6  2000/06/21 03:46:20  ajc
4525  * IMAP is now legal but useless, supporting NOOP, LOGIN, and LOGOUT.
4526
4527  Revision 572.5  2000/06/15 20:15:52  ajc
4528  * Inserted a skeleton IMAP module into the build.  IT DOES NOT WORK AT ALL.
4529
4530  Revision 572.4  2000/06/04 02:30:56  ajc
4531  * CtdlForEachMessage() now returns the number of messages processed.  It also
4532    accepts the MSGS_EQ mode, for targeting a specific message number (useful
4533    for determining whether the specified message actually exists in a room).
4534  * Completed the server side of the moderation system (serv_moderate.c module
4535    which implements the MMOD command)
4536
4537  Revision 572.3  2000/06/03 05:47:57  ajc
4538  * Replaced most of the very repetitive and very redundant access level checks
4539    in most commands with a single API call:  CtdlAccessCheck()
4540  * serv_moderate.c: added (not finished)
4541
4542  Revision 572.2  2000/06/02 03:38:50  ajc
4543  * Bind unix socket prior to TCP socket for citadel protocol
4544  * Fixed bug in sendcommand.c which was causing it to crash on attach
4545
4546  Revision 572.1  2000/05/26 19:27:51  ajc
4547  * Changed some of the rev-level sensitive stuff to look at the actual version
4548    of Citadel running, not the last version with which we ran setup
4549  * Added a moderation system.  Default filter level for new users is in the
4550    config file.  Per-user setting is in usersupp.  Moderation level of each
4551    message is in SuppMsgInfo.  Tweaked CONF, GETU, and SETU.  Read filter is
4552    working.  Moderate message up/down commands are not here yet.  See
4553    techdoc/moderation.txt for more info.
4554
4555  Revision 572.0  2000/05/23 02:09:30  ajc
4556  * Updated docs and tagged everything for the 5.72 release
4557
4558  Revision 571.7  2000/05/20 23:28:20  ajc
4559  * Fixed bug in client API that was causing netproc to crash
4560
4561  Revision 571.6  2000/05/15 00:05:19  ajc
4562  * Double the retry interval for SMTP deliveries after each failed attempt.
4563
4564  Revision 571.5  2000/05/11 03:08:47  ajc
4565  * serv_smtp.c: clear the relevant state buffers after an SMTP DATA command
4566    completes, allowing multiple messages in one session.  Closes bug #58.
4567
4568  Revision 571.4  2000/04/24 03:36:43  ajc
4569  * Removed references to strucmp() and struncmp(), replaced them with
4570    strcasecmp() and strncasecmp() as we did in the server a while ago, and
4571    set up the config script to figure out whether they need to be compiled
4572    in.  Also moved them to tools.h
4573  * Wrote a password manager for the client
4574
4575  Revision 571.3  2000/04/19 03:17:10  ajc
4576  * Don't ever expire the Local System Configuration> room
4577
4578  Revision 571.2  2000/04/16 19:03:47  ajc
4579  * Minor changes to avoid host lookup for local clients
4580
4581  Revision 571.1  2000/04/15 19:55:52  ajc
4582  * Fixed "Unvalidated users appear even with registration disabled" bug #36
4583
4584  Revision 571.0  2000/04/13 02:43:24  ajc
4585  * Fixed a problem that crashed the client during <G>oto commands if a room
4586    existed with a name more than 32 characters (thanks to Magus for reporting
4587    this one).
4588  * Tagged everything and updated docs for the 5.71 release
4589
4590  Revision 570.18  2000/04/10 01:47:22  ajc
4591  * More paginator changes.  Shuffled code around, added pagination to a bunch
4592    of other functions, and replaced the old, cumbersome pagination with the
4593    new, easy, API-based one in everything except message output.
4594
4595  Revision 570.17  2000/04/09 17:51:18  ajc
4596  * Added pprintf() (paginated version of printf) to the client-side API.  Now
4597    any client side function can be paginated simply by changing all of the
4598    printf's to pprintf's.  I've already done this for the user list and wholist
4599    (removing the old style pagination) and for "read directory."
4600
4601  Revision 570.16  2000/04/08 04:52:48  ajc
4602  * Another minor stoopid little time display fix
4603
4604  Revision 570.15  2000/04/08 03:58:12  nbryant
4605   * backed out the previous changes since they didn't look good on some
4606     xterms with a blue bold mode. just set the background color to black
4607     instead. this makes black-on-white terminals actually readable, if not
4608     particularly good looking.
4609
4610  Revision 570.14  2000/04/08 01:36:30  nbryant
4611   * citadel.c, commands.c: comment out cls() as this wasn't called if
4612     ansi_color=user anyway, and we have no way of knowing whether the user's
4613     terminal does background color erase, which was the reason for adding this
4614     in the first place. with the recent changes to color(), the display will get
4615     screwed up if they *do* have background color erase. perhaps this is a job
4616     for terminfo.
4617
4618  Revision 570.13  2000/04/08 00:37:42  nbryant
4619   * commands.c: fix color support for black-on-white color terminals such as
4620     CDE's dtterm. this just avoids white-on-white text; some color combinations
4621     such as yellow-on-white still aren't very legible due to contrast. There's
4622     not much I can think to do about that without affecting the look on the
4623     white-on-black terminals which probably account for most users.
4624
4625  Revision 570.12  2000/04/07 20:22:34  ajc
4626  * Fixed am/pm bug in time display
4627
4628  Revision 570.11  2000/04/07 19:22:45  ajc
4629  * For services disabled by setting port number to -1, administratively skip
4630    the bind instead of just allowing it to fail.
4631
4632  Revision 570.10  2000/03/31 04:31:02  ajc
4633  * Quick fix to 'stats' utility to purge records with bogus timestamps
4634
4635  Revision 570.9  2000/03/31 02:10:52  ajc
4636  * Caved in to pressure and enabled <R>eply in public rooms.
4637
4638  Revision 570.8  2000/03/28 03:55:53  ajc
4639  * Modified <.RU> to allow search for partial match
4640
4641  Revision 570.7  2000/03/27 03:08:19  ajc
4642  * Third parameter of CtdlDeleteMessages() now takes "" instead of NULL to
4643    specify 'any MIME type'.
4644
4645  Revision 570.6  2000/03/27 01:14:08  nbryant
4646   * Makefile.in: generate parsedate.c automatically
4647   * configure.in: check for bison/byacc/yacc. bison seems to build cleaner
4648     code.
4649   * parsedate.c: removed from CVS
4650   * parsedate.y: added #include <stdlib.h> so it builds with bison
4651
4652  Revision 570.5  2000/03/27 00:46:10  nbryant
4653   * First cut at Solaris fixes. There may still be some *printf("%s", NULL)
4654     type of issues lurking in the shadows.
4655
4656  Revision 570.4  2000/03/25 18:29:58  nbryant
4657  changed my email address
4658
4659  Revision 570.3  2000/03/23 02:41:50  ajc
4660  *** empty log message ***
4661
4662  Revision 570.2  2000/03/21 03:23:24  ajc
4663  * Experimental new linebreak mode
4664
4665  Revision 570.1  2000/03/20 14:43:19  ajc
4666  * "Brown paper bag" fix for SMTP bug (incoming long fields crash logger)
4667
4668  Revision 570.0  2000/03/19 23:42:34  ajc
4669  * This is the official 5.70 release.
4670
4671  Revision 1.494  2000/03/19 23:04:08  ajc
4672  * Small cosmetic change to date/time output
4673
4674  Revision 1.493  2000/03/19 05:02:39  ajc
4675  * SMTP hacks to deal with AOL braindamage
4676
4677  Revision 1.492  2000/03/18 18:18:04  ajc
4678  * Support multiline responses from SMTP servers when sending mail
4679
4680  Revision 1.491  2000/03/17 16:26:57  ajc
4681  * Set up a private "Sent/Received Pages" room for each user
4682
4683  Revision 1.490  2000/03/17 04:11:24  ajc
4684  * Moved bio-related commands out to a loadable module
4685
4686  Revision 1.489  2000/03/16 17:58:54  smw
4687  Created a docs directory.
4688  Moved install.txt to docs.
4689  Added inetmailsetup.txt (BBS server side e-mail)
4690  Added inetmailsetupmx.txt (local mail AND bbs e-mail
4691  Added inetsiteconfig.txt (describes the .asi command)
4692  Added siteconfig.txt (describes .asg)
4693  Added chat.txt (describes changes and new chat functionality)
4694  Made a couple of changes to install.txt (references to new documentation)
4695  Added Steve Williams to copyright.txt as the document writer.
4696
4697 Revision 1.488  2000/03/15 03:04:51  ajc
4698 * Added DEXP server command to disable incoming express messages.
4699 * <Q>uiet mode client side command to set/clear DEXP mode.
4700 * <K>nown rooms list displays through the paginator.
4701
4702 Revision 1.487  2000/03/12 00:21:35  ajc
4703 * Removed the semi-broken "chat room" functionality in the chat system, and
4704   replaced it with direct mapping to the actual Citadel room the user is in.
4705 * Display masqueraded roomname in chat, if applicable.  Fixes bug #19.
4706
4707 Revision 1.486  2000/03/11 21:29:37  ajc
4708 * SM_ flags for CtdlSaveMsgPointerInRoom() need to be a bit bucket, not an
4709   enum, since more than one can be passed.  Changed SM_DONT_BUMP_REF_COUNT
4710   from 3 to 4.  This also fixes bug #33.
4711
4712 Revision 1.485  2000/03/11 20:26:03  ajc
4713 * Reworked the <R>eply logic in messages.c - fixes bug #34
4714
4715 Revision 1.484  2000/03/11 19:22:19  nbryant
4716  * commands.c: improved timing of background keepalives if connection is
4717                lagged
4718
4719 Revision 1.483  2000/03/11 05:08:48  nbryant
4720  * commands.c: oops, that mutex stuff wasn't necessary
4721
4722 Revision 1.482  2000/03/11 04:09:03  nbryant
4723  * new threaded client code for background keepalives
4724
4725 Revision 1.481  2000/03/10 21:40:04  ajc
4726 * Changes to message base and networker to support Internet-style message
4727   ID's instead of the conventional Citadel style.
4728
4729 Revision 1.480  2000/03/08 03:36:37  ajc
4730 * Shut off hostname resolution when dealing with Unix domain sockets
4731 * Cleaned up the 'citmail' MDA tool
4732 * Added POP3 and SMTP port numbers to global system configuration
4733
4734 Revision 1.479  2000/03/07 21:54:58  ajc
4735 * Fixed the naming conventions and permissions for unix domain sockets.
4736
4737 Revision 1.478  2000/03/05 07:33:23  ajc
4738 * Added support for protocols over Unix domain sockets.
4739
4740 Revision 1.477  2000/03/04 22:36:23  ajc
4741 * Remove nulls appended to editor files during replace, edit, and print
4742   operations.  Truncate temp files during same operations.
4743   Closes bugs #6 and #7.
4744
4745 Revision 1.476  2000/03/04 05:29:18  ajc
4746 * Relax restrictions on editing of base rooms.  Renaming is not allowed but
4747   all other attributes can be edited.  Closes feature request #21.
4748 * Sending pages from the client now uses the same message editing functions
4749   as entering messages, allowing edit/abort.  Closes feature request #25.
4750
4751 Revision 1.475  2000/03/03 04:50:14  ajc
4752 * Moved all of the wholist masquerading commands into the serv_rwho module
4753
4754 Revision 1.474  2000/03/03 04:12:37  ajc
4755 * Finished the inbound side of gateway domain service
4756
4757 Revision 1.473  2000/02/27 04:55:51  ajc
4758 * Added "keymenu()" generic menu-maker to commands.c
4759 * Blocked non-numeric input to intprompt()  (fixes bug #16)
4760
4761 Revision 1.472  2000/02/27 03:57:35  ajc
4762 * Completed 'fsck'-like reference count verifier (server and client)
4763
4764 Revision 1.471  2000/02/26 18:30:40  ajc
4765 * Properly handle all aliases specified in network/mail.aliases for incoming
4766   SMTP mail (uses the alias() function, so if we replace that function with
4767   something that uses the same calling convention, it'll still work)
4768
4769 Revision 1.470  2000/02/26 05:15:38  ajc
4770 * Fortified the message base and SMTP code so that misdirected bounce messages
4771   end up in the Aide> room instead of getting dereferenced
4772 * Started writing a message reference count verifier ('fsck' for message base)
4773
4774 Revision 1.469  2000/02/25 06:14:05  ajc
4775 * Modularized the RWHO (Read WHO is online) command, basically as a pilot
4776   for modularizing all "non-API" functionality.
4777
4778 Revision 1.468  2000/02/24 03:44:00  ajc
4779 * Implemented holdoff time (15 minutes) for SMTP send retry.
4780 * Implemented "try for 3 days and then give up" on SMTP send.
4781
4782 Revision 1.467  2000/02/24 00:51:48  ajc
4783 * Client protocol synchronization check during exit from chat.
4784   This closes Bug #15.
4785
4786 Revision 1.466  2000/02/22 16:37:28  ajc
4787 * Minor tweaks to RFC822 output to keep brain-damanged MS Outlook from dying
4788
4789 Revision 1.465  2000/02/22 04:17:56  ajc
4790 * Got bounce messages working (mostly ... testers, please beat this up!)
4791 * Changed 'FIX' comments to 'FIXME' (less conflict, plus vim highlights it!)
4792
4793 Revision 1.464  2000/02/18 22:29:18  ajc
4794 * Coded up the "bounce" functions.  Still a coupla bugs.
4795
4796 Revision 1.463  2000/02/18 05:10:50  ajc
4797 * Made the <.ASI> command a bit friendlier.
4798 * SMTP sender now pays attention to "smarthost" entries in the system's
4799   Internet configuration, using them if one or more is present.
4800
4801 Revision 1.462  2000/02/17 05:27:39  ajc
4802 * Got the "MAIL From:" command sending the correct data.  (unnnhhhhnnhhhh...)
4803
4804 Revision 1.461  2000/02/16 22:06:26  ajc
4805 * Altered the display and conversion of RFC822 messages
4806
4807 Revision 1.460  2000/02/16 03:43:28  ajc
4808 * Added the resolver library to the configure script
4809
4810 Revision 1.459  2000/02/16 01:19:39  ajc
4811 * Vanquished the evil dn_expand() beast.  getmx() now seems to be working.
4812
4813 Revision 1.458  2000/02/14 04:36:14  ajc
4814 * sysdep.c: added new event hook type EVT_TIMER.  Timer event hooks are called
4815   once per minute by any worker thread.
4816 * msgbase.c: removed dependence on nested functions in CtdlOutputMsg() by
4817   replacing them with an API call CtdlRedirectOutput() in sysdep.c, which
4818   can temporarily redirect a session's output to an arbitrary file or socket.
4819 * serv_smtp.c: implemented the purging of messages in the queue for which all
4820   deliveries have been completed.
4821 * serv_smtp.c: removed temporary 'QQQQ' server command and replaced it with
4822   a timer event hook that runs the queue once per minute (this needs to be
4823   made more robust)
4824
4825 Revision 1.457  2000/02/08 21:00:47  ajc
4826 * Implemented the deprecated "LAST" command in POP3.  Some clients need it.
4827 * POP3 sessions now set the last-read pointer in Mail>.
4828
4829 Revision 1.456  2000/02/07 05:15:00  ajc
4830 * Renamed CtdlLocalHost() to CtdlHostAlias() and worked it a little deeper into
4831   the message routing logic.  Still needs some work on the gateway-domain
4832   stuff.
4833 * Twiddled CtdlOutputMsg() a bit for 'all Internet' situations.  Still needs
4834   some work to avoid printing dual headers when both Cit and RFC822 exist.
4835
4836 Revision 1.455  2000/02/03 03:57:35  ajc
4837 * Formalized the 'Internet Configuration' logistics.  Added new API call
4838   CtdlLocalHost() to detect aliases for the local host.  Used in SMTP listener.
4839
4840 Revision 1.454  2000/01/31 02:13:05  ajc
4841 * <.A>ide <S>ystem configuration <I>nternet  in the client (unfinished)
4842
4843 Revision 1.453  2000/01/26 02:41:27  ajc
4844 * SMTP delivery is working but still *very* rough.
4845
4846 Revision 1.452  2000/01/25 04:45:50  ajc
4847 * Wrote enough of the SMTP sender to get Patriot drooling over it, but not
4848   enough to complete the transmission of mail.
4849
4850 Revision 1.451  2000/01/23 21:25:45  ajc
4851 * Temporary hack to ig_tcp_server() to listen on an arbitrary port if the
4852   one specified is not bindable (for development only)
4853 * Added SM_DONT_BUMP_REF flag to CtdlSaveMsgPointerInRoom() to be used only
4854   in very specific and special situations
4855 * Generate delivery instructions when outbound SMTP mail is created from
4856   within Citadel (as opposed to being from the SMTP module)
4857
4858 Revision 1.450  2000/01/23 05:22:41  ajc
4859 * Coded up some more of the SMTP-sender (still not done)
4860
4861 Revision 1.449  2000/01/22 05:13:56  ajc
4862 * Added some more functionality to the string tokenizer
4863
4864 Revision 1.448  2000/01/17 20:57:43  ajc
4865 * CR to CRLF hacks (lose, lose, lose)
4866
4867 Revision 1.447  2000/01/17 18:30:27  ajc
4868 * Completed POP3 server.  All RFC1939 commands except APOP are implemented.
4869
4870 Revision 1.446  2000/01/17 17:09:23  ajc
4871 * Implemented LIST and STAT commands in the pop3 server
4872
4873 Revision 1.445  2000/01/17 05:38:14  ajc
4874 * citserver.c: cleanup hook functions are now run under the proper context,
4875                even when initiated by the housekeeper thread
4876 * serv_pop3.c: establish a place to hold the message list
4877
4878 Revision 1.444  2000/01/17 04:26:39  ajc
4879 * Modified CtdlOutputMsg() to handle output to arbitrary sockets or files.
4880   This uses nested functions and may not be portable beyond GCC...
4881
4882 Revision 1.443  2000/01/15 18:29:15  ajc
4883 * Added a generic (void *) parameter to the ForEachUser() and ForEachRoom()
4884   callback mechanisms, to allow callers and callbacks to pass arbitrary data
4885   between each other without requiring TSD variables.
4886 * room_ops.c: eliminated the need for 'FloorBeingSearched' TSD variable
4887 * internet_addressing.c: eliminated 'buffer1' and 'buffer2' TSD variables
4888
4889 Revision 1.442  2000/01/15 04:31:44  ajc
4890 * Removed UI_DIALOG mode in setup.  Can't count on 'dialog' to be consistent.
4891
4892 Revision 1.441  2000/01/15 04:07:17  ajc
4893 * Fixed the access rights on auto-created rooms (the same changes that were
4894   made to version 5.62 in the stable tree)
4895
4896 Revision 1.440  2000/01/13 03:32:36  ajc
4897 * techdoc/delivery-list.txt: added (syntax for delivery lists)
4898 * domain.*: added (will contain MX lookup code)
4899 * internet_addressing.c, logging.c: fixed some buffer overflow bugs
4900
4901 Revision 1.439  2000/01/12 03:56:27  ajc
4902 * sysdep.c: start the housekeeping thread *after* dropping root perms.
4903
4904 Revision 1.438  2000/01/09 19:03:16  ajc
4905 * Removed the fifo-based protocol downloads and replaced it with a less
4906   elegant "download temporary file to client, then sx/sb/sz" because
4907   downloading through a fifo was confusing some software.
4908
4909 Revision 1.437  2000/01/08 22:19:44  ajc
4910 * Completed spool to outbound delivery queue (still no queue sender implemented)
4911
4912 Revision 1.436  2000/01/08 05:00:09  ajc
4913 * Reworked some of the data structures to handle multiple recipients
4914 * Began implementation of the delivery queue
4915 * Added CtdlReallocUserData()
4916 * CtdlSaveMsg() now returns the local message ID in the database
4917
4918 Revision 1.435  2000/01/06 03:50:34  ajc
4919 * Replaced citmail.c with a new one that simply SMTP-forwards to Citadel
4920 * Started outbound SMTP queue work
4921
4922 Revision 1.434  1999/12/30 04:56:29  ajc
4923 * Got initial SMTP delivery working in a very specific situation (delivery
4924   to a single, local user)
4925
4926 Revision 1.433  1999/12/29 04:44:00  ajc
4927 * client_chat.c: display "No message sent" if a send page is aborted.
4928   Closes bug #2 in bugzilla.
4929
4930 Revision 1.432  1999/12/26 21:50:07  ajc
4931 * serv_vcard: don't run hooks when not logged in (such as in SMTP sessions)
4932 * serv_pop3: added.  This is the skeleton for a module implementing POP3.
4933
4934 Revision 1.431  1999/12/23 04:46:23  ajc
4935 * "Finished" initial hack of RFC822 import
4936
4937 Revision 1.430  1999/12/22 04:46:34  ajc
4938 * Fixed up the "Date:" headers to be RFC822-compliant
4939
4940 Revision 1.429  1999/12/13 05:30:57  ajc
4941 * Removed our naive 'conv_date()' RFC822-to-unixtime conversion function
4942   and replaced it with the public domain 'parsedate()' function from UseNet
4943
4944 Revision 1.428  1999/12/10 23:58:25  ajc
4945 * internet_addressing.c: added.  (Internet address to Citadel mapping)
4946
4947 Revision 1.427  1999/12/10 21:34:19  ajc
4948 * serv_smtp: implemented RFC821 "VRFY" and "EXPN" commands
4949
4950 Revision 1.426  1999/12/09 05:01:14  ajc
4951 * Split cmd_user() and cmd_pass() into frontend/backend functions
4952 * serv_smtp: implemented AUTH LOGIN for client authentication
4953
4954 Revision 1.425  1999/12/09 00:22:58  ajc
4955 * Finished the "arbitrary service" registration.
4956 * Eliminated "special" master socket for Citadel protocol - just register it
4957   like any other protocol.
4958 * Began initial implementation of native SMTP service.
4959
4960 Revision 1.424  1999/12/08 18:09:10  ajc
4961 * Added CtdlRegisterServiceHook() and its data type, for implementing arbitrary
4962   TCP-based services directly in the Citadel server.  Not finished yet.
4963
4964 Revision 1.423  1999/11/29 17:39:07  nbryant
4965 * citserver.c: Solaris lacks inet_aton; use inet_addr instead
4966
4967 Revision 1.422  1999/11/29 17:26:15  nbryant
4968 * citserver.c: include <sys/types.h>; may help portability to Solaris
4969
4970 Revision 1.421  1999/11/22 00:27:42  ajc
4971 * Added some temporary variables to OpenCmdResult().  Hopefully fixes
4972   bug #14 when running on FreeBSD.
4973
4974 Revision 1.420  1999/11/21 18:30:16  ajc
4975 * Protected cmd_move() from buffer overrun (no longer crashes the server)
4976 * cmd_chat() -- truncate input at 100 characters to prevent buffer overruns.
4977   Also handle broken client sockets properly.  (Thanks to DME for bug report)
4978
4979 Revision 1.419  1999/11/19 01:57:40  ajc
4980 * Fixed a *serious* memory leak in the database function wrappers.
4981 * Updated version number to 5.60 -- run setup when installing this version.
4982
4983 Revision 1.418  1999/11/18 03:29:20  ajc
4984 * Changed the order of parameters in <.A>ide <S>ystem config into a more
4985   logical grouping.
4986
4987 Revision 1.417  1999/11/18 02:31:50  ajc
4988 * Updated some of the documentation
4989 * Brought the internal version number up to 5.60
4990
4991 Revision 1.416  1999/11/17 04:15:05  ajc
4992 * Removed the session_count() function.  Instead, keep a reference count
4993   updated when sessions begin and end.
4994 * Replaced fixed number of worker threads with lower and upper limits; current
4995   code now tries to make thread count == session count, within these limits
4996
4997 Revision 1.415  1999/11/15 03:17:39  ajc
4998 * Put lockfile in /tmp instead of in /var/lock.   The latter is not guaranteed
4999   to exist, nor is it guaranteed to be writable by BBSUID
5000   (Resolves bug #11 from the Bugzilla repository)
5001
5002 Revision 1.414  1999/11/15 03:07:24  ajc
5003 * Fixed the network-wide vCard purge logic so that it (1) actually works,
5004   and (2) forces a netproc run immediately when a purge is entered
5005
5006 Revision 1.413  1999/11/09 21:20:44  nbryant
5007 * configure.in: include <sys/types.h> when doing checks which require <utmp.h>
5008   (should fix Bug #10 on FreeBSD)
5009
5010 Revision 1.412  1999/11/05 03:53:47  ajc
5011 * Issue 'cancel' messages for vCard when a user is deleted.
5012 * Try to delete 'cancel' messages locally after they've been distributed.
5013
5014 Revision 1.411  1999/11/03 04:01:20  ajc
5015 * Fixed buffer overrun problems in cmd_rchg(), cmd_hchg(), and cmd_uchg()
5016 * Removed my email address as the feedback content from the docs; replaced
5017   it with a reference to the Citadel web site.
5018
5019 Revision 1.410  1999/11/02 19:51:23  ajc
5020 * Fixed timeout problem for remote client sessions (all timeouts were set to
5021   1 second ... probably a temporary hack that was missed in the cleanup)
5022
5023 Revision 1.409  1999/11/02 03:03:27  ajc
5024 * Several fixes to msgbase.c and netproc.c to prevent corrupted incoming
5025   network traffic from crashing the server.  Reject bad messages.
5026
5027 Revision 1.408  1999/11/01 04:21:34  ajc
5028 * Fixed a concurrency bug which crashed the server when multiple sessions
5029   terminated simultaneously.
5030
5031 Revision 1.407  1999/11/01 00:54:02  ajc
5032 * CtdlFetchMessage() - generate a "<no text>" message body if there's none
5033   on disk.  Too much stuff goes haywire if there's no M field.
5034
5035 Revision 1.406  1999/10/31 18:17:17  ajc
5036 * Fixed buffer overrun in cmd_rchg()
5037 * Call master_cleanup() when time_to_die==1 for proper shutdown
5038
5039 Revision 1.405  1999/10/31 16:26:55  ajc
5040 * Fixed incorrect assignment of new session ID's
5041
5042 Revision 1.404  1999/10/31 04:17:17  ajc
5043 * Fixed a bug which was crashing the server during very long message entry.
5044
5045 Revision 1.403  1999/10/29 01:48:45  ajc
5046 * database.c: Removed arbitrary limit on maximum number of sessions
5047
5048 Revision 1.402  1999/10/29 01:03:03  ajc
5049 * Debugged all possible ways for a session to terminate; do them cleanly.
5050 * Assign session numbers in a more portable and less arbitrary way.
5051
5052 Revision 1.401  1999/10/28 19:50:55  ajc
5053 * Fixed a problem where the client protocol would spit out two responses
5054   and therefore get out of sync if ASUP command set the access level to
5055   0 and therefore deleted the user (thanks to Eric McDonald)
5056
5057 Revision 1.400  1999/10/28 05:08:49  ajc
5058 * Removed all of the thread cancellation cruft that is no longer necessary
5059 * Moved the now non-system-dependent RemoveContext() out of sysdep.c (now
5060   it's part of cleanup() in citserver.c)
5061 * Removed all references to pthread_* from all modules except sysdep.c
5062
5063 Revision 1.399  1999/10/28 03:20:17  ajc
5064 * Fixed the problem of worker threads waking up prematurely.
5065 * 'QUIT'-terminated sessions now exit properly.
5066
5067 Revision 1.398  1999/10/27 04:26:58  ajc
5068 * Initial hack of worker-thread rearchitecture.  Right now it is successfully
5069   dispatching worker threads to active client sockets (and to the master
5070   socket too, of course).  Removing sessions is currently broken.
5071
5072 Revision 1.397  1999/10/26 20:20:29  ajc
5073 * Removed the auto-reconnect stuff... it was locking the client in an active
5074   loop more often than it was reconnecting.
5075
5076 Revision 1.396  1999/10/26 13:59:11  ajc
5077 damn bugs
5078
5079 Revision 1.395  1999/10/26 03:48:39  ajc
5080 * Shuffled around the order of events when a thread is terminating.  All
5081   mutex operations now happen prior to the freeing of the CitContext structure,
5082   otherwise begin_critical_section() and end_critical_section() try to
5083   manipulate the context's mutex count when there isn't any context.
5084
5085 Revision 1.394  1999/10/26 03:21:16  ajc
5086 * Changed a lot of strncpy() calls to safestrncpy() and replaced most of their
5087   hardcoded size arguments with 'sizeof' based arguments.
5088
5089 Revision 1.393  1999/10/24 19:22:51  nbryant
5090         * Makefile.in, configure.in: added --enable-icq flag; made checks for
5091           authentication libraries more intelligent.
5092
5093 Revision 1.392  1999/10/23 03:39:12  ajc
5094 * Finished moving vCard functionality to the new message base functions.
5095
5096 Revision 1.391  1999/10/21 00:50:14  ajc
5097 * Finished up the flags and replication checks in CtdlSaveMsgPointerInRoom().
5098
5099 Revision 1.390  1999/10/20 16:46:27  ajc
5100 * More code shuffle.  Added some flags to CtdlSaveMessagePointerInRoom() and
5101   enabled the MOVE command to also do a "copy" operation (actually just
5102   creates a second link and bumps the ref count).  Implemented "<C>opy" in
5103   the client.
5104
5105 Revision 1.389  1999/10/20 16:07:48  ajc
5106 * Wholist fixes for users who are in chat mode
5107
5108 Revision 1.388  1999/10/20 03:42:29  ajc
5109 * In the wholist, only show <private room> if the user viewing the list
5110   doesn't know that room.  Otherwise show the name.
5111
5112 Revision 1.387  1999/10/20 02:59:22  ajc
5113 * Code reorganization.  Making it easier to move/copy messages without
5114   duplicating existing code.
5115
5116 Revision 1.386  1999/10/17 02:25:18  ajc
5117 * Discovered a huge design flaw in the replication algorithm.  Ripped it
5118   out and replaced it with something a bit more robust.
5119
5120 Revision 1.385  1999/10/16 05:30:17  ajc
5121 * Changes to message replication code.  Don't do server-side hooks during
5122   an ENT3 command.  Also fixed a bug in cmd_whok() that caused crashes
5123   after a file format change.
5124
5125 Revision 1.384  1999/10/14 03:04:16  ajc
5126 * Finished the netproc side of Z (zap/supersede) processing for replication
5127
5128 Revision 1.383  1999/10/13 04:24:18  ajc
5129 * Added search-by-header-fields to CtdlForEachMessage(), and then to the
5130   server MSGS command.  This will have lots of uses.
5131
5132 Revision 1.382  1999/10/13 01:36:39  ajc
5133 * Starting some work on network zap (supersede) mode for replication
5134
5135 Revision 1.381  1999/10/08 02:55:57  ajc
5136 * More vCard-related debugging
5137
5138 Revision 1.380  1999/10/07 02:58:46  ajc
5139 * Semi-broken vCard replacement implementation in place.
5140 * Added "Z" (Zap, supersede) field to message format
5141
5142 Revision 1.377  1999/10/04 03:19:52  ajc
5143 * We now have a housekeeping thread and a housekeeping queue.
5144
5145 Revision 1.376  1999/10/03 21:48:21  ajc
5146 * Added serv_upgrade.h to automagically convert pre-5.55 format user records
5147   to 5.55 format user records and generate vCards.
5148
5149 Revision 1.375  1999/09/29 21:13:17  ajc
5150 * CtdlWriteObject() can now store objects in personal rooms for any specified
5151   user -- rather than only the current user or non-personal rooms.
5152
5153 Revision 1.374  1999/09/29 17:26:56  ajc
5154 * serv_vcard.c: fixed crashola bug in cmd_greg()
5155 * tools.c: simplified and improved the string tokenizer.  Now it runs in a
5156            single pass with no intermediate buffer.
5157
5158 Revision 1.373  1999/09/28 03:27:37  ajc
5159 * Fully migrated cmd_greg() and cmd_regi() into serv_vcard (still has bugs)
5160
5161 Revision 1.372  1999/09/27 03:33:40  ajc
5162 * cmd_regi() is now in serv_vcard and writes to the vcard instead of to the
5163   usersupp file.  Still needs tweaking.
5164
5165 Revision 1.371  1999/09/24 03:32:19  ajc
5166 * "read my vCard" and "write my vCard" are written and tested.
5167
5168 Revision 1.370  1999/09/24 02:54:17  ajc
5169 * Worked a little more on the vCard stuff.  The serv_vcard module is now in
5170   place, and a "read my vcard" function is there; "write my" is next...
5171
5172 Revision 1.369  1999/09/23 03:07:56  ajc
5173 * The vCard 'class' is now linked into the server, though it's not really
5174   functional yet.  Its constructors/destructors are debugged, though.
5175
5176 Revision 1.368  1999/09/19 21:28:33  ajc
5177 * Finished off the message architecture stuff with a new class of hooks to
5178   enable future server-side handlers.
5179
5180 Revision 1.367  1999/09/19 15:57:06  ajc
5181 * migrated cmd_ent3() to CtdlSaveMessage()
5182
5183 Revision 1.366  1999/09/19 05:13:57  ajc
5184 * Debugged the new version of CtdlWriteObject()
5185
5186 Revision 1.365  1999/09/16 03:23:23  ajc
5187 * Did most of the migration from save_message() to CtdlSaveMsg().  The
5188   latter builds a "struct CtdlMessage" (so we can run server-side handlers
5189   against it later on), then serializes it and stores to disk.
5190 * BROKEN BUILD ALERT!!  cmd_ent3() and CtdlWriteObject() are still not
5191   migrated.  They are stubbed out and will MALFUNCTION if used right now!!
5192
5193 Revision 1.364  1999/09/07 01:42:42  ajc
5194 * cmd_msg3() now uses serialize_message() for its output.  All message
5195   commands will eventually exist as a "struct CtdlMessage" at some point
5196   so that we can install server-side handler hooks.
5197
5198 Revision 1.363  1999/09/07 00:04:13  ajc
5199 * netproc.c: put outgoing messages into the use table, too -- this prevents
5200   locally originated messages from showing up again if a remote system is
5201   misconfigured and spools them back to us.
5202
5203 Revision 1.362  1999/09/06 03:39:15  ajc
5204 * citadel.c: run strproc() on new passwords
5205
5206 Revision 1.361  1999/09/03 17:50:26  playcow
5207 For URL view, don't prompt user to select url if there is only one.  Display
5208 <U>RL View prompt if message contains url(s). -Ben
5209
5210 Revision 1.360  1999/09/02 02:09:59  ajc
5211 * msgbase.c: new function serialize_message() for future use
5212
5213 Revision 1.359  1999/09/01 21:09:25  ajc
5214 * database.c: display the GDBM version string on startup
5215
5216 Revision 1.358  1999/09/01 02:36:34  ajc
5217 * Actually _enforce_ the max msg len limit
5218
5219 Revision 1.357  1999/09/01 01:51:48  ajc
5220 * Added the ability to handle embedded URL's from the text client
5221
5222 Revision 1.356  1999/09/01 01:02:47  ajc
5223 * Implemented "maximum message length" in global system config
5224
5225 Revision 1.355  1999/08/31 00:57:17  ajc
5226 * Handle multipart/alternative properly during legacy message outputs.
5227   Basically it just prints the first alternative and skips the rest.
5228
5229 Revision 1.354  1999/08/29 21:12:24  ajc
5230 * Made some changes to the output of MIME (especially multipart) messages.
5231
5232 Revision 1.353  1999/08/29 19:56:43  ajc
5233 * HTML updates
5234
5235 Revision 1.352  1999/08/24 02:01:03  ajc
5236 * html.c: added.  This is an overly simplistic HTML-to-text converter.
5237
5238 Revision 1.351  1999/08/21 18:37:29  ajc
5239 * Minor cosmetic cleanup.  No code changes.
5240
5241 Revision 1.350  1999/08/21 05:15:34  ajc
5242 * mailinglist.c, netmailer.c: fixed to allow list submissions from all posters
5243   on a Citadel network rather than only on the local system.
5244
5245 Revision 1.349  1999/08/08 00:25:45  ajc
5246 * Made one more byte available in locate_host() and in all the structs which
5247   its output gets written to (client can display 24 positions but we were only
5248   saving 23).
5249
5250 Revision 1.348  1999/08/07 16:34:38  nbryant
5251 * serv_icq.c: warning fixes
5252
5253 Revision 1.347  1999/08/06 02:57:26  ajc
5254 * locate_host.c: use strdoop() and phree() instead of strdup() and free()
5255 * serv_icq.c: run learned IP's through Citadel's locate_host() & put in Wholist
5256
5257 Revision 1.346  1999/08/05 17:58:59  ajc
5258 * RWHO command now returns express message code in postion 3
5259
5260 Revision 1.345  1999/08/04 02:21:45  ajc
5261 * Fixed some bugs in the ICQ metaclient, and documented the new protocol cmds
5262
5263 Revision 1.344  1999/08/03 11:34:35  ajc
5264 * Added client_icq.c and client_icq.h
5265
5266 Revision 1.343  1999/08/03 03:14:51  ajc
5267 * Wrote the client side of the ICQ gateway.  Now on to other projects.  :)
5268
5269 Revision 1.342  1999/08/03 01:52:06  ajc
5270 * Redesigned the client protocol commands for dealing with ICQ
5271 * Implemented page function priority ordering to prevent pages from being
5272   simultaneously delivered over multiple IM systems
5273 * Migrated serv_icq.* into the Makefile
5274
5275 Revision 1.341  1999/08/01 21:36:30  ajc
5276 * EXTREME coolness.  The server side of the ICQ metaclient is now working.
5277   It is set up using ICQL and ICQA commands, it automatically logs the user
5278   onto ICQ along with Citadel, and displays all non-offline ICQ contacts
5279   in the Wholist.
5280
5281 Revision 1.340  1999/07/31 07:18:01  ajc
5282 * Restructured the express message infrastructure, adding a class of function
5283   hooks for the addition of multiple paging modules with message routing
5284
5285 Revision 1.339  1999/07/30 22:20:19  ajc
5286 * Applied bugfix patches contributed by Vaggelis Tsirkas:
5287   * rooms.c: buffer overrun fix
5288   * room_ops.c: cmd_rdir() now behaves better when directory doesn't exist
5289
5290 Revision 1.338  1999/07/30 03:32:24  ajc
5291 * Added strdoop(), a leak-checked version of strdup()
5292 * Small fixes to new API functions in msgbase.c
5293 * ICQ metaclient stores/reads config using the message base API functions
5294
5295 Revision 1.337  1999/07/29 03:36:37  ajc
5296 * msgbase.c: reorganized.  output_message() now uses CtdlFetchMessage(),
5297   cmd_msg3() now fetches directly from disk and spews to the client.
5298
5299 Revision 1.336  1999/07/28 04:02:37  ajc
5300 * Server modules are now labelled with their RCS ID instead of a complex and
5301   manually-updated data structure.
5302
5303 Revision 1.335  1999/07/28 03:50:24  ajc
5304 * serv_expire.c: expire-by-age now calls CtdlFetchMessage() instead of
5305   calling output_message() in MT_DATE mode.
5306 * msgbase.c: removed MT_DATE mode ('twas a sleazy hack)
5307
5308 Revision 1.334  1999/07/27 22:47:26  ajc
5309 * Implemented new data type "CtdlMessage" which will eventually be used as
5310   widely as possible to represent a message in memory.
5311 * Implemented CtdlFetchMessage() which is intended to become the back-end to
5312   output_message() as well as a bunch of other things.
5313
5314 Revision 1.333  1999/07/27 20:00:24  ajc
5315 Removed all references to CC->msglist and CC->num_msgs, and all utility
5316 functions which relied upon them.  Citadel Is Now Better.
5317
5318 Revision 1.332  1999/07/27 19:32:22  ajc
5319 Removed serv_upgrade.c and all references to it in Makefile.in
5320 Reworked new-mail-count to not use MessageFromList() etc.
5321
5322 Revision 1.331  1999/07/25 02:59:37  ajc
5323 Fixed reference count problem in cmd_move()
5324
5325 Revision 1.330  1999/07/24 22:50:38  ajc
5326 Continued replacing references to [get|put]_msglist() with better code.
5327 For some reason, cmd_msgs() still doesn't always work right.
5328
5329 Revision 1.329  1999/07/24 22:16:41  ajc
5330 Experimenting with automatic updating of ChangeLog by CVS.  Simply twiddle
5331 ChangeLog a bit (i.e. by adding or removing a newline from the end of the
5332 file) before issusing "cvs commit", and the comments recorded by CVS will
5333 automatically appear at the beginning of ChangeLog.
5334
5335 Revision 1.328  1999/07/24 22:14:21  ajc
5336 cmd_move() now uses CtdlDeleteMessages().
5337 WARNING: build is temporarily broken.  Currently removing all references
5338 to the "msglist" kept in CitContext.  It's ugly and must die.
5339
5340 Thu Jul 22 22:26:50 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5341         * Moved message deletion into new API function CtdlDeleteMessages()
5342         * Added CtdlWriteObject() to store generic data in the msgbase
5343         * Fixed really dumb error that prevented network msgs from posting
5344
5345 Tue Jul 20 22:14:54 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5346         * Moved the actual work done in cmd_msgs() into a new API function
5347           called CtdlForEachMessage() which is supplied a callback function.
5348
5349 Mon Jul 19 23:24:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5350         * Keep the (unqualified) content-type in the SuppMsgInfo record.  We'll
5351           be using this shortly to search rooms for specific object types.
5352
5353 Sun Jul 18 14:53:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org> 
5354         * Changes to dynloader et al to handle ICQ module being written
5355         * serv_icq.c, serv_icq.mk: added (separate makefile is temporary)
5356
5357 1999-07-17 Nathan Bryant <bryant@cs.usm.maine.edu>
5358         * chkpwd.c: DELETED CVS REVISION 1.3 (backed out Art's last change)
5359           use 'cvs update -r 1.2 chkpwd.c; cvs update -A chkpwd.c' NOW to
5360           avoid problems with working directories.
5361         * Makefile.in: don't install chkpwd setuid if make install isn't
5362           being run as root.
5363         * citadel.spec: chmod u+s chkpwd during %install stage
5364
5365 Fri Jul 16 18:39:04 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5366         * PEXP and GEXP no longer trip the idle time display
5367         * Fixed bug which duplicated incoming private mail to Trashcan
5368         * Improved auto-reconnect by NOT using SIGPIPE and longjmp(); also
5369           implemented a 15 second delay to wait for a crashed server to restart
5370         * Relaxed the security check in chkpwd.c a bit; it was just flat-out
5371           preventing logins on my system otherwise
5372
5373 Thu Jul 15 22:57:32 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5374         * eliminate redundant "name" parameter in [l]putuser(), now uses
5375           usbuf->fullname to guarantee the correct name for the index
5376
5377 1999-07-12 Nathan Bryant <bryant@cs.usm.maine.edu>
5378         * Makefile.in, configure.in: link netproc with gdbm
5379         * netproc.c: only include gdbm.h if HAVE_GDBM_H
5380         * user_ops.c: warning fix
5381
5382 Mon Jul 12 19:51:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5383         * Mail is now saved in both sender and recipient mailboxes.  This is
5384           structured in a way that will allow a separate "outbox" room and/or
5385           multiple recipients in the future.
5386
5387 Sun Jul 11 18:46:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5388         * netproc.c: msgfind() no longer uses the timestamp as a message-ID
5389           when no other message-ID is available (it screws up the loopzapper)
5390         * room_ops.c: eliminate room name parameter in putroom() and its ilk;
5391           get data from quickroom.QRname instead; prevents incorrect indexes
5392         * Tentative implementation of "personal rooms" (user-private namespace)
5393         * Added supplementary message info records for info that may change
5394           at some time later than when the message is saved (i.e. ref counts)
5395         * Implemented msg reference count increment/decrement; delete messages
5396           whose reference count reaches zero
5397
5398 Wed Jul  7 23:25:09 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5399         * control.c: create citadel.control if it doesn't exist (yikes!)
5400         * serv_expire.c: purge mailbox rooms belonging to non-existent users
5401         * user_ops.c: don't delete user's mailbox at user-delete time
5402
5403 Mon Jul  5 17:01:29 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5404         * utilsmenu: removed menu items for defunct utilities
5405
5406 Mon Jun 28 16:24:10 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5407         * Changed any remaining references to UUCP, to "Internet" instead.
5408
5409 Thu Jun 24 11:13:23 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5410         * added server command line option "-f" to defrag databases on startup
5411         * control.c: better performance and reliability in [get|put]_control()
5412         * netproc.c: Finished the loopzapper
5413
5414 Mon Jun 21 00:04:15 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5415         * netproc.c: started writing a vortex checker.  Not finished.
5416
5417 Wed Jun  9 23:34:25 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5418         * Replaced all code that generated temporary filenames with calls to
5419           tmpnam().  Rewrote using tmpfile() where possible.
5420
5421 Thu Jun  3 11:35:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5422         * base64.c: mapped fi and fo to stdin and stdout using
5423           actual code rather than assignment at declaration time
5424           (several users of Red Hat Linux 6.0 reported problems)
5425
5426 Fri May 21 20:05:00 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5427         * Added function CtdlGetDynamicSymbol() for dynamic symbol allocation
5428         * server.h: Changed discrete #define's to enum's where appropriate
5429         * sysdep.c: Changed the startup message to give credit to the whole
5430           development team :)  Also made the message more GNU-ish.
5431
5432 Thu May 20 20:01:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5433         * database.c: print log messages for file defragmentations
5434         * citserver.c: implemented CtdlAllocUserData() and CtdlGetUserData()
5435           for arbitrary per-session data storage (by modules etc.) without
5436           having to add fields to struct CitContext
5437         * msgbase.c: removed "desired_section" from struct CitContext and
5438           implemented it using CtdlGetUserData() as a test.
5439
5440 Wed May 19 19:30:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5441         * commands.c, commands.h, routines.c: began color scheme changes
5442
5443 1999-05-15 Nathan Bryant <bryant@cs.usm.maine.edu>
5444         * configure.in: Added untested support for BSDI 4.x.
5445
5446 1999-05-13 Nathan Bryant <bryant@cs.usm.maine.edu>
5447         * acconfig.h, configure.in, routines.c: fix for certain SYSV variants
5448           which lack utmp.ut_host
5449         * citadel.h, file_ops.c, msgbase.c, netproc.c, serv_chat.c: fix
5450           namespace collision with <sys/stream.h> on aforementioned SYSV
5451           variant
5452         * configure.in, getutline.c: check for paths.h
5453         * configure.in, Makefile.in: check for -lsocket and -lnsl
5454
5455 1999-05-11 Nathan Bryant <bryant@cs.usm.maine.edu>
5456         * chkpwd.c: fixed excessive paranoia; it used to refuse to run when
5457           invoked by root and BBSUID != 0
5458         * Makefile.in: ignore errors while installing /etc/pam.d/citadel
5459
5460 1999-04-27 Art Cancro <ajc@uncensored.citadel.org>
5461         * file_ops.c: fixed NDOP to not crash the server if it has trouble
5462           with a download file
5463         * netpoll.c: upped default packet size
5464
5465 Mon Apr 26 22:06:57 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5466         * Repaired IGnorant security hole blunder re. citmail
5467
5468 Sun Apr 25 12:44:08 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5469         * serv_chat.c: notify user of number of participants upon entering chat
5470         * Built the 5.53 distribution
5471
5472 Wed Apr 21 22:23:13 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5473         * aidepost.c: add -r flag to allow posting to rooms other than Aide>
5474         * serv_expire.c: now posts transcripts of all auto-purged rooms/users
5475
5476 Tue Apr 20 12:45:55 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5477         * messages.c: downloading more than MAX_MSGS messages now truncates
5478           (off the beginning of the list) rather than crashing.
5479
5480 Mon Apr 19 12:11:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5481         * whobbs.c: auto-detect when being called from a webserver, and act
5482           as a CGI (print HTTP headers and HTML output)
5483
5484 1999-04-18 Nathan Bryant <bryant@cs.usm.maine.edu>
5485         * serv_chat.c: fixed some potential buffer overruns (thanks dme)
5486
5487 Wed Apr 14 21:32:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5488         * Makefile.in: chmod 4755 citmail to prevent citmail from aborting
5489           when called from sendmail due to citadel.config security check
5490
5491 1999-04-13 Nathan Bryant <bryant@cs.usm.maine.edu>
5492         * dynloader.c: OpenBSD places underscores in front of symbol names
5493         * Makefile.in: fixed a few sillies
5494         * aidepost.c, citmail.c, file_ops.c, logging.c, msgbase.c, netmailer.c,
5495           netproc.c, rcit.c, routines.c, serv_upgrade.c: fixed time_t handling
5496           (have to cast it to long for printf/scanf)
5497
5498 Mon Apr 12 22:13:26 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5499         * aidepost.c: rewrote to unlink temp file before writing to it so that
5500           it will automatically go away if interrupted. Also ran indent -kr -i8
5501
5502 1999-04-12 Nathan Bryant <bryant@cs.usm.maine.edu>
5503         * configure.in, Makefile.in: taught it how to generate OpenBSD shared
5504           libraries
5505         * config.c, sysdep.c: fix -h option not setting proper modules dir
5506         * configure.in, citadel.spec: make --enable-chkpwd the default
5507         * setup.c: don't chown chkpwd
5508
5509 1999-04-11 Nathan Bryant <bryant@cs.usm.maine.edu>
5510         * configure.in: another OpenBSD fix, but we're still not quite there yet
5511         * serv_chat.c: warning fix
5512
5513 Thu Apr  8 22:51:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5514         * config.c: now requires a setup run for *any* rev level difference
5515         * Updated docs & confs for 5.53b1 release
5516         * setup.c: sets the 0600 permission bits on citadel.config that
5517           is checked for in config.c
5518
5519 1999-04-08 Nathan Bryant <bryant@cs.usm.maine.edu>
5520         * citserver.c: improved is_public_client(), also if a public_client
5521           only supplies a numeric address, attempt to resolve it
5522         * locate_host.c: verify that the forward DNS matches the reverse
5523         * locate_host.c, locate_host.h: more general interface
5524         * configure.in, acconfig.h: fixes for Digital UNIX
5525
5526 Wed Apr  7 21:36:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
5527         * Implemented "access level required to create rooms" (client & server)
5528
5529 1999-04-07 Nathan Bryant <bryant@cs.usm.maine.edu>
5530         * configure.in: updated help messages, OpenBSD support
5531         * setup.c: if /etc/inittab doesn't exist, don't ask to create an
5532           entry in it
5533         * server.h, sysdep.c: fix a potential deadlock/data corruption bug
5534         * room_ops.c: fixed the 'gdbm error: Illegal data' message when
5535           deleting a room which had never been posted to
5536         * user_ops.c: include errno.h
5537         * dynloader.c: fix for OpenBSD
5538
5539 1999-04-06 Nathan Bryant <bryant@cs.usm.maine.edu>
5540         * Makefile.in, configure.in, getutline.c, sysdep.c:
5541           fixes/bug workarounds for FreeBSD
5542
5543 1999-04-03 Nathan Bryant <bryant@cs.usm.maine.edu>
5544         * Makefile.in, configure.in, chkpwd.c, acconfig.h: support for
5545           `chkpwd', a setuid helper program for machines which use shadow
5546           passwords (configure --enable-chkpwd)
5547         * Makefile.in, configure.in, auth.c, citadel.pam, user_ops.c: support
5548           for PAM or shadow passwords (configure --with-pam)
5549         * Makefile.in: made some messages simpler
5550         * citadel.spec: updated for 5.53; correct name of tarball; build with
5551           --enable-chkpwd and --with-pam; add defattr tags so rpm's can be
5552           built by non-root user
5553         * commands.c: cosmetic cleanup
5554         * config.c: (security/paranoia) check permissions on citadel.config
5555         * configure.in: check for ncurses if we can't find curses
5556         * dynloader.c: warning fix
5557         * sysdep.c: don't complain if initgroups() fails
5558         * citadel.c: fix systems with SYSV-style signal handling (e.g. libc5)
5559         * Makefile.in: New! Improved! Cleaner! Shinier!
5560
5561 Sun Mar 21 14:21:47 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5562         * messages.c: cosmetic cleanups to message reading loop
5563
5564 Sat Mar 13 21:33:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5565         * commands.c: use bright colors by default in color mode
5566         * citserver.c: initialize wholist fields with (not logged in) etc.
5567
5568 1999-03-08 Nathan Bryant <bryant@cs.usm.maine.edu>
5569         * sysdep.c: call DLoader_Init() with an absolute path so that gdb can
5570           find module symbols
5571         * database.c: bail out if opening databases fails
5572
5573 Sat Mar  6 01:55:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5574         * serv_chat.c: use memfmout(), *not* cprintf() to transmit express
5575           messages.  Calling cprintf() on strings >256 bytes crashes the server
5576         * msgbase.c: minor logging fix in save_message()
5577
5578 1999-03-05 Nathan Bryant <bryant@cs.usm.maine.edu>
5579         * sysdep.c: add undocumented -r flag to citserver to prevent it from
5580           dropping root permissions.
5581         * sysdep.c: also drop supplementary groups
5582
5583 1999-03-04 Nathan Bryant <bryant@cs.usm.maine.edu>
5584         * config.c: error checking in put_config()
5585         * setup.c: chgrp files to the login group associated with BBSUID
5586         * sysdep.c: copyright 1987-1999; drop root perms; load modules and call
5587           master_startup() after dropping perms
5588
5589 Wed Mar  3 00:00:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5590         * Prevent buffer overruns in lowercase_name in [get|put]user()
5591         * client_chat.c: use citedit() for page composition
5592
5593 Sat Feb 27 07:47:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5594         * rooms.c: download_to_local_disk() prompts for a filename if a blank
5595           filename was supplied to it (for attachments without names)
5596         * mime_parser.c: strip leading whitespace in content_type & disposition
5597
5598 1999-02-24 Nathan Bryant <bryant@cs.usm.maine.edu>
5599         * configure.in: improved check for pthreads
5600         * configure.in, routines.c, acconfig.h: check for ut_type in struct utmp
5601         * configure.in, Makefile.in: support for building server modules as
5602           relocatable objects for BSDI (which still uses a.out *gag* *choke*)
5603         * configure.in: compiler choice & flags for BSDI; check for libtermcap
5604         * database.c: don't use a critical section in open_databases()
5605         * housekeeping.c: use getfloor()/putfloor() instead of
5606           lgetfloor()/lputfloor() in check_ref_counts()
5607         * mime_parser.c: include <errno.h>
5608         * msgbase.c: include <limits.h>
5609         * sysdep.c: hacks for BSDI. use signals to fake thread cancellation;
5610           don't call master_cleanup() directly from signal handler.
5611         * routines.c: prototype getutline() if necessary
5612         * getutline.c: stupid bugfix
5613         * acconfig.h, configure.in, locate_host.c, server.h: work around
5614           nonreentrant gethostbyaddr() on BSDI
5615
5616 Mon Feb 15 22:59:00 EST 1999 Vaggelis Tsirkas
5617         * citadel.c: increased hostname buffer size to handle very big names
5618
5619 1999-02-15 Nathan Bryant <bryant@cs.usm.maine.edu>
5620         * sysdep.c(main): initialize alen before call to accept()
5621
5622 1999-02-04 Nathan Bryant <bryant@cs.usm.maine.edu>
5623         * configure.in: improved check for cygwin
5624         * configure.in, routines.c: access utmp directly instead of calling
5625           `who' if getutline() is available.
5626         * configure.in, Makefile.in, getutline.c: replace getutline() on
5627           systems which don't have it
5628         * routines.c: now always access utmp directly unless we can't find
5629           utmp.h
5630
5631 1999-02-02 Nathan Bryant <bryant@cs.usm.maine.edu>
5632         * Fixes for Cygwin:
5633           - ifdef out file download methods that require named pipes (client)
5634           - include pthread.h and gdbm.h only if they are present (fixes
5635             auto dependency generation)
5636           - include snprintf.h where needed
5637           - handle .exe suffixes for "make install"
5638
5639 Tue Feb  2 22:15:08 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5640         * Overhauled the express messaging system (again)
5641
5642 Mon Feb  1 19:48:04 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5643         * messages.c: implemented client download of MIME attachments
5644
5645 Sun Jan 31 18:29:18 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5646         * Added qpdecode.c to the distribution (decodes quoted-printable)
5647         * Finished the MIME parser
5648         * Gave MSG0 a reasonable behaviour for MIME messages
5649         * Added the OPNA command for downloading attachments
5650
5651 Sat Jan 30 18:39:53 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5652         * Look for citadel.rc in current directory if not found elsewhere
5653         * More work on the MIME parser
5654         * Added base64.c to the distribution
5655
5656 1999-01-29 Nathan Bryant <bryant@cs.usm.maine.edu>
5657         * fixes for IRIX (thanks to wr and family for use of the Indy):
5658           - use memset()/memcpy() instead of bzero()/bcopy() in all cases
5659           - configure updates
5660           - handle `long' pid's
5661           - a few other little bits
5662
5663 Mon Jan 25 21:23:07 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5664         * Fixed bug in save_message() which crashed the server on mail to sysop
5665         * Rewrote pop_march() to be smarter about <G>oto heuristics
5666
5667 Sat Jan 23 14:32:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5668         * Changed internal storage of express messages from a linked list to
5669           a single, resizable buffer.
5670         * Added a "room order" key to the room record, to allow some control
5671           over room listing order.
5672         * Made the room list commands aware of the room order key.
5673         * Overhauled <G>oto heuristics to pay attention to floor & room order
5674
5675 Wed Jan 20 19:21:51 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5676         * Added some more code to the unfinished MIME parser
5677         * Changed module loading path to simply "modules" because after calling
5678           get_config(), the cwd is guaranteed to be the correct BBS directory.
5679
5680 Tue Jan 19 21:28:29 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5681         * Fixed a bug in the user editing command (client side)
5682         * Started a rewrite of the MIME parser
5683
5684 Thu Jan 14 21:21:15 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5685         * Brought over the mime_parser from WebCit and began preliminary work
5686           on supporting MIME format messages.
5687
5688 Tue Jan 12 22:30:00 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5689         * Various changes to begin work on support for MIME messages
5690                 - Defined format type 4 for MIME
5691                 - msgbase.c: *temporary* hacks in output_message() for Type 4
5692                 - citmail.c: added more robust header parsing, and support
5693                              for Type 4.  Also eliminated the crappy built-in
5694                              SMTP server.
5695                 - Updated some of the technical documentation
5696
5697 Sun Jan 10 13:34:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5698         * Fixed access to page log room
5699
5700 Fri Jan  8 12:35:09 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5701         * control.c: include <limits.h> to fix PATH_MAX undefined
5702         * serv_chat.c: made the following changes to cmd_sexp() --
5703                 * Send zero-length message to check only, don't send
5704                 * Send "-" message on the command line to invoke
5705                   the SEND_LISTING transfer mode for a multi-line message
5706         * Added facilities to log all pages to a room (site configurable)
5707
5708 Tue Jan  5 23:24:52 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5709         * Replaced all occurances of malloc(), realloc(), and free() in the
5710           server and server-modules with mallok(), reallok(), and phree().
5711           Wrote macros and a set of leak-tracking functions.
5712
5713 Sun Jan  3 20:38:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5714         * Documentation changes
5715
5716 Fri Jan  1 01:01:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
5717         * Fixed security problem relating to private rooms
5718
5719 Wed Dec 30 20:10:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5720         * sysdep.c: put a bigger string buffer into lprintf() to avoid overruns
5721
5722 Sat Dec 26 16:56:46 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5723         * internetmail.config: commented this file more clearly
5724
5725 Wed Dec 23 20:42:49 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5726         * citadel.c: added some experimental code to automatically reconnect
5727           to the server if the connection is broken.  For some reason, it only
5728           works once.
5729
5730 Wed Dec 23 18:47:12 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5731         * sysdep.c: ignore SIGPIPE.  This keeps broken connections from
5732           crashing the whole server.
5733         * Tagged everything for the official 5.50 release.
5734
5735 Mon Dec 21 07:54:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5736         * housekeeping.c: call kill_session() with session_to_kill,
5737           not ccptr->cs_pid (was crashing the server)
5738
5739 Sat Dec 19 13:57:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5740         * Added "-i" flag to netproc to make it skip the export phase.
5741           Updated other programs to call netproc in this way when appropriate.
5742         * Updated network.txt to reflect the usage for netproc (which has
5743           been wrong for several releases)
5744
5745 Thu Dec 17 00:17:04 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5746         * Started removing the word "beta" from the docs and code.
5747           Preparing for an actual release.
5748         * msgbase.c: generate an 'I' field when requested (i.e. on locally
5749           originating messages.  this was breaking parts of the network)
5750
5751 1998-12-15 Art Cancro <ajc@uncensored.citadel.org>
5752         * msgbase.c: remove extra call to alias() which was causing
5753           Citadel-to-Citadel mail to fall into the bit bucket.
5754         * msgbase.c: fixed tempfile naming problem that could cause a new
5755           outgoing netmail message to overwrite another if netproc had not been
5756           run in between
5757
5758 1998-12-14 Art Cancro <ajc@uncensored.citadel.org>
5759         * More session table stability nonsense
5760
5761 Sun Dec 13 17:40:08 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5762         * sysdep.c, citserver.c: (hopefully) fixed a session table concurrency
5763           bug which was causing the server to occasionally crash.
5764         * removed serv_test.so from the default build
5765
5766 Fri Dec 11 18:50:00 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5767         * setup.c: default value for maxsessions is now 0 (no limit)
5768         * room_ops.c: don't allow users to create a room called "Mail"
5769         * serv_expire.c: fixed "number of messages purged" display
5770         * commands.c: when using color, default to low-intensity colors
5771
5772 Tue Dec  8 07:58:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5773         * Beta 2
5774
5775 Sat Dec  5 01:24:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5776         * Added a new type of module hook for adding logging functions
5777         * Removed whitespace to left and right of '@' in netmail recipients
5778         * sysdep.c: read citadel.config _before_ initializing loadable modules
5779         * stats.c: fixed segfault resulting from extracting log lines
5780         * Ripped most of the "attachments" stuff out of both the client and
5781           server.  (Thought of a better way to handle it ... LATER.)
5782
5783 1998-12-03 Nathan Bryant <bryant@cs.usm.maine.edu>
5784         * setup.c: create citadel.config with mode 0600
5785         * Makefile.in: don't chmod sendcommand
5786         * serv_upgrade.c: don't create citadel.config if it doesn't already
5787           exist (paranoia)
5788         * setup.c: saner defaults for nodename and fqdn
5789
5790 Wed Dec  2 20:37:05 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5791         * msgbase.c: modified AddMessageToRoom() and all functions that call it
5792           to use a more reliable/accurate method to set quickroom.QRhighest
5793         * weekly.in: don't sort/purge filedir where filedir doesn't exist
5794
5795 1998-12-02 Nathan Bryant <bryant@cs.usm.maine.edu>
5796         * weekly is now generated by configure
5797
5798 Mon Nov 30 19:48:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5799         * room_ops.c: added sort_msglist() to move and save operations
5800         * sendcommand.c: added (also updated utils.txt, weekly, Makefile.in)
5801         * BETA 1
5802
5803 Sun Nov 29 23:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5804         * Fixed cmd_regi() to not display a second result code after xfer
5805         * Makefile.in: Removed "chmod 4755 citmail netmailer"
5806
5807 1998-11-23 Nathan Bryant <bryant@cs.usm.maine.edu>
5808         * citadel.spec: added
5809
5810 1998-11-22 Nathan Bryant <bryant@cs.usm.maine.edu>
5811         * Makefile.in: split install target into install-exec, install-data,
5812           and install-doc subtargets
5813
5814 Sat Nov 21 16:53:30 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5815         * Added a fourth color mode in the client: "user" which turns color
5816           on or off according to a per-user flag stored on the server.  Added
5817           server-side support for this too, of course.
5818         * import.c: removed
5819         * serv_expire.c: finished the code to purge stale visits
5820         * sysdep.c: strip trailing nonprintables in client_gets()
5821         * routines2.c: fixed <.AS> command; all configs now work properly
5822         * Moved num_parms() and all the extract() type functions into tools.c
5823           and removed them from all other files.  Linked in tools.[o|ro] there.
5824         * netproc.c: handled incoming file transfers to correct room directory
5825         * room_ops.c: fixed incorrect naming of files in info and images dirs
5826
5827 Fri Nov 20 20:29:07 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5828         * setup.c: removed all prompts that can be configured from within the
5829           client in order to simplify the setup procedure
5830
5831 Thu Nov 19 23:28:33 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5832         * Fixed serv_upgrade.c and export5.c (found elsewhere) to use a new
5833           export format which treats visits as a separate section
5834         * serv_expire.c: began writing functions to purge rooms and visits
5835           (neither work yet), and added a way to call defrag_databases()
5836
5837 Wed Nov 18 23:51:17 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5838         * Reimplemented 'visit' structs stored globally instead of as
5839           lists-per-user
5840
5841 Tue Nov 17 22:37:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5842         * Started implementing global room numbers.
5843
5844 Sun Nov 15 20:32:34 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5845         * room_ops.c: mailbox rooms always appear on the main floor
5846         * made QR_MAILBOX rooms non-editable
5847         * cmd_setr() delete old room record when room name changes
5848           (This causes a big mess that exposes a flaw in the whole design.)
5849         * room_ops.c: users can delete messages from their mailboxes
5850
5851 Thu Nov 12 23:59:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5852         * Rewrote cmd_rchg() and also increased the size of the "fakename"
5853           buffer.  Overruns are probably what was causing the crashes.
5854         * Changed the way cmd_ent3() handles mail messages; the previous code
5855           rerouted all private mail to the trash.
5856
5857 Wed Nov 11 17:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5858         * citserver.c: slight changes to cmd_rchg() and cmd_hchg() [crashes]
5859         * citserver.c, msgbase.c, user_ops.c: hide the owner-prefix of mail
5860           rooms in a couple more places: set_wtmpsupp() and make_message()
5861         * sysdep.c: added an fflush() to lprintf() for "tail -f"-able logs
5862         * serv_expire.c: purge ops are now a command instead of a cleanup
5863           function.  This is probably temporary as well.
5864         * citadel.c: fixed the way <.WL> parses the returned data from a
5865           TIME command.
5866
5867 1998-11-11 Nathan Bryant <bryant@cs.usm.maine.edu>
5868         * serv_upgrade.c: fix uninitialized variable
5869
5870 Wed Nov 11 00:47:32 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5871         * msgbase.c: fixed a bug that was misrouting incoming network msgs
5872         * server.h, database.c: wrapped all GDBM calls in critical sections
5873           to avoid making those calls re-entrantly (gdbm fatal: lseek error)
5874
5875 1998-11-10 Nathan Bryant <bryant@cs.usm.maine.edu>
5876         * Makefile.in: link in snprintf.o where needed
5877
5878 1998-11-09 Nathan Bryant <bryant@cs.usm.maine.edu>
5879         * client_chat.c: eliminate calls to sprintf()
5880         * commands.h, routines.c, routines2.c: warning fix
5881         * commands.c, control.c, cux2ascii.c, file_ops.c, import.c,
5882           ipc_c_tcp.c: eliminate sprintf() calls
5883
5884 Mon Nov  9 19:15:31 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5885         * serv_upgrade.c: added all missing fields to export/import
5886         * serv_expire.c: support per-user purge time when purging users
5887         * user_ops.c: added per-user purge time to AGUP and ASUP commands
5888         * routines.c: added more stuff to <.A>ide <E>dit user
5889
5890 Sun Nov  8 22:56:53 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5891         * serv_expire.c: created; moved message expiry from serv_test.c,
5892           moved user purge from userpurge.c
5893         * userpurge.c: deleted
5894         * routines2.c: finished <.AS> command
5895         * room_ops.c: fixed Aide room access (for some reason, the Aide
5896           room had the QR_MAILBOX flag set)
5897
5898 1998-11-08 Nathan Bryant <bryant@cs.usm.maine.edu>
5899         * useradmin.c: really removed (cvs remove)
5900         * aidepost.c, citadel.c: convert all sprintf() calls to snprintf()
5901         * sysdep.c: fix overrun in lprintf() described by dme/Dead Monkey
5902         * citmail.c, citserver.c: convert all sprintf() call to snprintf()
5903
5904 Sun Nov  8 13:19:36 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5905         * useradmin.c: removed
5906         * utils.doc: removed references to useradmin and sysoputil
5907
5908 Fri Nov  6 20:22:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5909         * citadel.h (and related files): removed defunct parameters,
5910           c_defent and c_msgbase (erase your test bbs)
5911         * Implemented CONF server command for site-global configs
5912         * Shuffled yesno() and yesno_d() from routines.c to commands.c
5913         * commands.c: implemented boolprompt()
5914         * routines2.c: started adding CONF questions to <.AS> command
5915         * room_ops.c: began a fix for the mysterious disappearing Aide room
5916
5917 1998-11-05 Nathan Bryant <bryant@cs.usm.maine.edu>
5918         * snprintf.c: warning fix propagated over from gcit
5919
5920 1998-11-04 Nathan Bryant <bryant@cs.usm.maine.edu>
5921         * added RCS Id keyword strings to sources
5922         * citmail.c: reverted to version 1.10
5923
5924 Wed Nov  4 10:53:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5925         * messages.c: temporarily set screenwidth to a fixed value of 80
5926           during <P>rint operations.
5927
5928 Mon Nov  2 12:59:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5929         * setup.c: looks for 'citadel', 'bbs', or 'guest' in /etc/passwd to
5930           try to get a default for bbsuid if it's currently set to 0
5931         * citmail.c: changed usersupp.eternal to usersupp.usernum (why didn't
5932           it complain about this before?)
5933         * serv_upgrade.c: began writing an "export" command to do sidegrades
5934
5935 Sun Nov  1 18:47:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5936         * serv_upgrade.c: cosmetic changes
5937         * Implemented message expiry by date (this really needs to be moved
5938           out of serv_test.c, but where does it belong?)
5939
5940 1998-11-01 Nathan Bryant <bryant@cs.usm.maine.edu>
5941         * serv_upgrade.c: warning fixes
5942         * acconfig.h: remove ANSI_COLOR
5943         * Configure, Makefile.tmpl: removed
5944
5945 Sat Oct 31 20:48:44 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5946         * More stoopid ANSI colour additions here and there.
5947         * ANSI colour selection is now in citadel.rc instead of an option in
5948           the configure script.  "on" "off" and "auto" are available.
5949         * added "build.txt" to the techdoc directory, with LS's build notes
5950
5951 1998-10-31 Nathan Bryant <bryant@cs.usm.maine.edu>
5952         * citadel.c, commands.c, commands.h: set background color to black
5953           before clearing screen, so that we can actually see text on
5954           black-on-white xterms.
5955
5956 1998-10-29 Nathan Bryant <bryant@cs.usm.maine.edu>
5957         * rooms.c: fix color of Mail>
5958         * citadel.c: send ANSI detect sequence after attach_to_server() so the
5959           terminal doesn't send the answerback sequence to the shell if we
5960           can't connect.
5961
5962 Wed Oct 28 20:20:14 EST 1998 Art Cancro <ajc@uncensored.citadel.org
5963         * citadel.c: Added a splash of colour to the Wholist
5964
5965 1998-10-28 Nathan Bryant <bryant@cs.usm.maine.edu>
5966         * configure.in: added comments
5967         * mkinstalldirs: new file to be used for `make install'
5968         * aclocal.m4, missing: new files, also swiped from automake
5969         * citadel.c: don't mung the terminal if we can't find citadel.rc
5970         * Makefile.in: added `install' target, `clean' removes
5971           *.mo, rebuild configure when configure.in changes.
5972         * configure.in: check for install and autoconf
5973         * configure.in, Makefile.in: only pass -fPIC to gcc
5974         * policy.c: warning fix for OSF/1 (use memset() instead of bzero())
5975
5976 Tue Oct 27 22:25:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5977         * Unified the "unpacked database" format for both upgrades and
5978           sidegrades (also see export5.c elsewhere)
5979         * citserver.c: clear out cmdbuf before reading a command; some server
5980           commands were accidentally extracting parameters from previous cmds
5981         * rooms.c: removed the warning about the ineffectiveness of kicking
5982           users out of public rooms, because the new server can do lockouts
5983
5984 1998-10-27 Nathan Bryant <bryant@cs.usm.maine.edu>
5985         * sysdep.c (client_gets), ipc_c_tcp.c (serv_gets): improved handling
5986           of long lines. 
5987         * Makefile.in: partial support for VPATH builds, autodependency fix
5988
5989 Tue Oct 27 00:08:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5990         * minor documentation changes
5991
5992 Sun Oct 25 14:57:40 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5993         * messages.c: fixed an oversight that was allowing attachments even
5994           when disabled in citadel.rc
5995
5996 1998-10-25 Nathan Bryant <bryant@cs.usm.maine.edu>
5997         * routines2.c: warning fix
5998
5999 Sat Oct 24 22:07:56 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6000         * Client: added message expiration policy questions to room edit
6001         * Client: added <.A>ide <S>ystem configuration command
6002
6003 1998-10-24 Nathan Bryant <bryant@cs.usm.maine.edu>
6004         * Makefile.in: Auto dependency generation (may require GNU make, but
6005           does at least function without this feature on OSF/1 make);
6006           Makefile is regenerated when Makefile.in changes (ditto);
6007           `realclean' is now known as `distclean';
6008           portability fixes for older Unix make utilities
6009         * citadel.c, citadel.h, commands.c: make client suspendable
6010
6011 Fri Oct 23 19:34:38 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6012         * setup.c: default node name is now obtained from uname()
6013         * config.c: added put_config()
6014         * policy.c: added, moved GetExpirePolicy() from room_ops.c
6015         * policy.c: implemented cmd_gpex() and cmd_spex()
6016
6017 Wed Oct 21 22:24:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6018         * Mail rooms now hide their owner-prefix from the client.
6019         * proxy.c: added configurability and primitive message expiry
6020
6021 1998-10-20 Nathan Bryant <bryant@cs.usm.maine.edu>
6022         * Makefile.tmpl: fix to build client with old Configure script
6023         * configure.in: autologin defaults to enabled if crypt() is available
6024         * room_ops.c: fix improper null-termination bug I introduced
6025
6026 Mon Oct 19 20:52:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6027         * Client ability to force display of prompts in Mail rooms, even when
6028           the user has prompting turned off (citadel.rc option)
6029
6030 1998-10-16 Nathan Bryant <bryant@cs.usm.maine.edu>
6031         * sysdep.c (cprintf): generate a newline on truncated buffer
6032         * room_ops.c: exploitable overrun fixes
6033
6034 Thu Oct 15 19:27:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6035         * msgbase.c: reimplemented cmd_move()
6036           room_ops.c: wrote AddMessageToRoom() which is used for both entering
6037           and moving messages.
6038         * setup.c: system-default message expire policy of "number of
6039           messages, 150" is now a default configuration instead of a temp hack
6040         * proxy.c: cache dir create now dies on any error except EEXIST
6041
6042 Wed Oct 14 22:41:16 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6043         * Misc code cleanup
6044
6045 1998-10-13 Nathan Bryant <bryant@cs.usm.maine.edu>
6046         * configure.in: don't check for -lcrypt unless autologin is enabled
6047         * file_ops.c: fix another overrun
6048
6049 Mon Oct 12 15:27:21 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6050         * Killed the "rooms" subdirectory (it isn't used anymore)
6051         * dynloader.c: Made dynamically added server commands case-insensitive
6052         * import.c is now serv_upgrade.c, a module
6053         * Removed most of the "level 9" trace messages no longer needed
6054
6055 1998-10-12 Nathan Bryant <bryant@cs.usm.maine.edu>
6056         * Makefile.in: simplified to use pattern rules; files compiled with
6057           -D_REENTRANT go to *.ro to allow the same files to be used with both
6058           client and server
6059         * tools.c, tools.h: new files; misc routines used by both client and
6060           server go here. contains safestrncpy() at the moment.
6061         * rooms.c: fix several exploitable buffer overruns
6062         * sysdep.c: fix infinite loop when long lines are received from the
6063           client; fix exploitable buffer overrun in cprintf()
6064         * ipc_c_tcp.c: fix infinite loop on long line from server
6065         * serv_upgrade.sh: remove uncnsrd-dependent absolute path
6066         * .cvsignore: add *.ro
6067
6068 Sun Oct 11 23:17:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6069         * Built some more of the message expiry infrastructure
6070
6071 1998-10-11 Nathan Bryant <bryant@cs.usm.maine.edu>
6072         * citserver.c: fix two more overruns, one of which was preventing
6073           the "From Host" from showing up in the <W>ho listing.
6074
6075 Sun Oct 11 02:51:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6076         * Moved "struct visit" and its associated defs from citadel.h to
6077           server.h where they belong
6078         * Set up data structures for room policies (expiry, etc.)
6079
6080 1998-10-10 Nathan Bryant <bryant@cs.usm.maine.edu>
6081         * citserver.c: fix overrun which caused segv's on servers with long
6082           hostnames.
6083
6084 Fri Oct  9 18:34:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6085         * user_ops.c: added PurgeStaleRelationships() to do processing at
6086           session logout time to remove visits for rooms which no longer exist
6087         * user_ops.c: implemented NewMailCount()
6088
6089 1998-10-09 Nathan Bryant <bryant@cs.usm.maine.edu>
6090         * serv_chat.c: fix buffer overrun that was resulting in segv's
6091         * serv_chat.c: fix another overrun that could cause sessions to hang,
6092           and cleaned up some other strncpy()-related stuff. DON'T FORGET TO
6093           NULL-TERMINATE DESTINATION BUFFERS AFTER STRNCPY CALLS.
6094
6095 Fri Oct  9 13:22:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6096         * Implemented "lazy mode" traversal - pressing the space bar will do
6097           <N>ext messsage, <G>oto next room, or read <N>ew as appropriate.
6098         * room_ops.c: modify CtdlRoomAccess() to allow access to mailbox rooms
6099           only to their owners.
6100
6101 Thu Oct  8 17:13:27 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6102         * messages.c, citadel.rc: added the ability to display message numbers
6103           in the header when reading messages.  I think this is butt ugly, but
6104           some of the DaveCode afficionados seem to like it...
6105
6106 Thu Oct  8 15:34:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6107         * room_ops.c: Added is_noneditable() function to replace all of the
6108           duplicated code present in all functions which edit room parameters.
6109
6110 1998-10-08 Nathan Bryant <bryant@cs.usm.maine.edu>
6111         * lots of warning fixes; builds with -std1 on dec unix
6112         * aidepost.c, citadel.h, citmail.c, file_ops.c, msgbase.c, netmailer.c,
6113           netproc.c, rcit.c, server.h, stats.c, userlist.c: use time_t where
6114           needed
6115         * control.c, room_ops.c, serv_chat.c, sysdep.c: use memset() instead of
6116           bzero()
6117         * dynloader.c, dynloader.h, messages.c, server.h, sysdep.c,
6118           sysdep_decls.h: function pointer/prototyping fixes
6119         * rooms.c: use mkfifo(3) instead of system("mkfifo")
6120
6121 1998-10-07 Nathan Bryant <bryant@cs.usm.maine.edu>
6122         * snprintf.c, snprintf.h: new files
6123         * Makefile.in, configure.in, dynloader.c, sysdep.c: support for the
6124           above; citserver now builds and runs on Digital Unix 4.0d with the
6125           GNU-style configure script. there is a bug with the hostname display
6126           in the wholist.
6127         * netproc.c: sillyness fix
6128         * room_ops.h: prototype delete_room()
6129         * client_chat.c, commands.c, serv_chat.c, sysdep.c:
6130           use HAVE_SYS_SELECT_H macro
6131
6132 Mon Oct  5 17:01:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6133         * Began fixing the stuff I broke
6134
6135 Sun Oct  4 23:35:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6136         * Did the big migration to the new data structures.  Lots of stuff is
6137           now broken.  Basic moving from room to room works, but Mail is
6138           broken, and some of the administrative commands are unimplemented.
6139
6140 1998-10-02 Nathan Bryant <bryant@cs.usm.maine.edu>
6141         * configure.in: autologin now defaults to disabled
6142
6143 Fri Oct  2 00:04:31 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6144         * Finally removed all three usersupp.foo[MAXROOMS] elements, and
6145           migrated all the code that used them to use "struct visit" instead.
6146
6147 Thu Oct  1 23:02:20 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6148         * Rewrote [l][get|put]room() functions to use room names rather than
6149           room index numbers.  Temporarily prepended a "n" to these four
6150           function names until they are put to use.
6151
6152 Thu Oct  1 16:27:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6153         * Removed a few more references to usersupp.lastseen[]
6154
6155 1998-10-01 Nathan Bryant <bryant@cs.usm.maine.edu>
6156         * .cvsignore: add so_locations (generated by osf1 ld with shared libs)
6157         * Makefile.in: restructured variables for greater consistency, use
6158           @echo to print out notices during the make process, add so_locations
6159           to `cleaner'
6160         * configure.in, Makefile.in: configure checks for -rdynamic
6161         * ipc_c_tcp.c: fix DEC compiler warning wrt unsigned char
6162         * stats.c: add semicolon to placate DREC compiler
6163         * user_ops.c: define _POSIX_C_SOURCE, include <limits.h>
6164         * configure.in: pass -pthread to DEC compiler, don't check for
6165           libpthread[s] on DEC Unix
6166
6167 1998-09-30 Nathan Bryant <bryant@cs.usm.maine.edu>
6168         * Makefile.in: new variable PTHREAD_DEFS for portability
6169         * aidepost.c, citadel.c, citmail.c, mailinglist.c, msgform.c,
6170           netmailer.c, netpoll.c, netproc.c, rcit.c, readlog.c, setup.c,
6171           stats.c, userlist.c, whobbs.c: return type of main() is int
6172         * citadel.c, commands.c, messages.c: use time_t properly
6173         * citserver.c: include <limits.h>
6174         * config.guess, config.sub, install-sh: new files
6175         * configure.in: don't use gcc on Digital Unix
6176
6177 Tue Sep 29 23:17:34 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6178         * room_ops.c: modified usergoto() to look at the new data structures
6179           for counting new messages and such.
6180
6181 1998-09-29 Nathan Bryant <bryant@cs.usm.maine.edu>
6182         * user_ops.c: fix compiler warning and potential memory leak,
6183           include sysdep.h
6184         * configure.in, Makefile.in: only build the server if we find pthreads
6185         * Makefile.in: realclean removes config.{cache,log,status}
6186
6187 Tue Sep 29 13:20:14 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6188         * Removed code from some of the utilities which was still attempting
6189           to access the old non-gdbm data store.
6190         * housekeeping.c: rewrote check_ref_counts() to do a ForEachRoom()
6191           traversal instead of a MAXROOMS loop.
6192         * sysdep.c: set up a dummy CitContext record to be used during server
6193           startup, during which time there is no real context.
6194
6195 Mon Sep 28 23:51:51 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6196         * Implemented the function ForEachRoom() to handle all-rooms traversal
6197           (this will work with both the old and new paradigms, because both
6198           use a GDBM database with one room per record).  Migrated all room
6199           list commands to use it.
6200
6201 Mon Sep 28 22:05:35 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6202         * Implemented the function CtdlRoomAccess() to handle *all* of the
6203           user-access-to-rooms functionality.  Migrated all room list commands
6204           to use it.  Still need to migrate gotos.
6205
6206 1998-09-28 Nathan Bryant <bryant@cs.usm.maine.edu>
6207         * configure.in, acconfig.h: new files; partially functional GNU
6208           autoconf configure script. Run autoheader; autoconf; ./configure
6209           --prefix=`pwd` to test.
6210         * Makefile.tmpl: new file; this is what Makefile.in used to be. Used by
6211           Configure.
6212         * Makefile.in: modified to work with autoconf-style configure script
6213         * Configure: modified to use Makefile.tmpl and generate autoconf-style
6214           macros. Removed procfs detection. Pass -O2 to gcc, -O to other
6215           compilers. Removed mknod/mkfifo detection; code should use mkfifo(3).
6216         * citmail.c, msgform.c, netproc.c, routines.c, support.c, userlist.c,
6217           whobbs.c: use HAVE_STRERROR macro rather than NO_STRERROR
6218         * commands.c: use HAVE_TERMIOS_H macro rather than POSIX_TERMIO
6219         * netproc.c: remove procfs stuff. simply attempt to kill the target
6220           process with signal zero instead; this checks whether the process
6221           exists.
6222         * setup.c, useradmin.c: use HAVE_CURSES_H macro
6223
6224 Sun Sep 27 23:41:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6225         * BOTH the old and new generation systems are being written to at
6226           this point.  Code that reads stuff is still using the old system.
6227
6228 Sun Sep 27 16:10:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6229         * Changed all "generation" variables from char to long, in preparation
6230           for removing MAXROOMS.  Generations for new rooms are now timestamps.
6231         * Defined "struct visit" to hold user/room relationships.
6232         * Removed some #define's from citadel.h that are no longer used.
6233
6234 Wed Sep 23 13:41:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6235         * More changes to support attachments.  They mostly work, but only
6236           in fixed-format messages.
6237
6238 Mon Sep 21 21:19:17 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6239         * msgbase.c: began laying the groundwork to support attachments.
6240           Purchased Rogaine(tm) in preparation for expected hair loss.
6241
6242 1998-09-21 Nathan Bryant <bryant@cs.usm.maine.edu>
6243         * msgbase.c: include dynloader.h
6244         * citadelapi.h: removed
6245         * dynloader.h: prototype CtdlRegisterUserHook()
6246
6247 Sun Sep 20 18:56:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6248         * Added a UserFunctionHook category to implement hooks which perform
6249           operations on various users or usernames
6250
6251 Fri Sep 18 21:14:41 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6252         * citserver.c: removed cmd_extn() and related code
6253
6254 1998-09-18 Nathan Bryant <bryant@cs.usm.maine.edu>
6255         * user_ops.c: include dynloader.h
6256         * roomstats.{c,mk}: removed
6257         * Configure, Makefile.in: autodependency-related fixes
6258
6259 Thu Sep 17 22:55:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6260         * Various changes to allow "new messages" to work correctly with Mail
6261
6262 Thu Sep 17 22:21:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6263         * server.h, dynloader.c, citserver.c, user_ops.c: reduced the number
6264           of hook types by inventing an EventType field to the Session hook.
6265         * proxy.c: added pre-fetching
6266
6267 1998-09-17 Nathan Bryant <bryant@cs.usm.maine.edu>
6268         * Makefile.in: add SERV_MODULES and PROXY_TARGETS to `cleaner'
6269         * dynloader.[ch], serv_{chat,test}.[ch], sysdep.c: cleaned
6270           up the dynamic loader interface as follows:
6271           - all the symbol table stuff is gone.
6272           - modules are loaded once at server startup and never unloaded.
6273           - Added a new function CtdlRegisterProtoHook() to handle the stuff
6274             that was being done with the symbol tables.
6275           - Dynamic_Module_Init() now returns a pointer to a static struct
6276             DLModule_Info; this structure itself has been modified to use char*
6277             fields instead of fixed char arrays.
6278         * roomstats.c: include <stdarg.h> not <stdargs.h> (is this file still
6279           in use?)
6280         * Configure, Makefile.in: added autodependency support
6281
6282 Wed Sep 16 22:25:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6283         * Implemented separate structs, lists, and functions for each type
6284           of server-side hook available.
6285
6286 1998-09-16 Nathan Bryant <bryant@cs.usm.maine.edu>
6287         * ipc_c_tcp.c: Fixed up some #include/prototyping stuff, call memcpy()
6288           instead of bcopy()
6289         * hooks.h: removed
6290         * sysdep.c, user_ops.c: removed reference to hooks.h
6291
6292 Wed Sep 16 11:42:42 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6293         * ipc_c_tcp.c: Reversed any changes that have been made to this file,
6294           because something was causing abominally slow response time.
6295         * proxy.c: added.  This will eventually become a caching, pre-fetching
6296           multiuser proxy server for the Citadel protocol.
6297
6298 1998-09-15 Nathan Bryant <bryant@cs.usm.maine.edu>
6299         * Makefile.in: remove support.o from serv_chat.so, add -fPIC to compile
6300           flags for serv_chat.o
6301         * dynloader.c: include "sysdep_decls.h", use RTLD_NOW not RTLD_LAZY
6302         * dynloader.h: prototype CtdlRegisterHook()
6303         * .cvsignore: added data
6304
6305 Mon Sep 14 20:49:08 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6306         * Tried my hand at adding the ability for server extensions to
6307           register various types of "hooks" in addition to just adding
6308           server commands.  This is probably not final.
6309
6310 Tue Sep  8 12:11:56 EDT 1998 Brian Costello <btx@calyx.net>
6311         * Added support for dynamic server modules.  Reworked serv_chat.c
6312           to be such a module.
6313
6314 Tue Sep  1 23:09:50 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6315         * userpurge.c: rewrote using functions from the server core, rather
6316           than the now-defunct external API.  This'll be ready once the module
6317           loading code is done.  (I just had to commit _something_ tonight.)
6318
6319 Mon Aug 31 22:47:58 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6320         * Yanked the citadelapi.c module.  This wasn't working out well.
6321         * techdocs/citadelapi.txt - began documenting the new API to be used
6322           by modules which will be dynamic linked into the server - most of
6323           this API is existing server functions.
6324         * Added a ForEachUser() function with callback mechanism, and reworked
6325           cmd_list() to use it.
6326
6327 Sun Aug 30 21:52:43 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6328         * Moved all of the gdbm databases to a separate "data" directory.
6329
6330 1998-08-26 Nathan Bryant <bryant@cs.usm.maine.edu>
6331         * Makefile.in: realclean removes Makefile, fixed `touch citadel.h'
6332           problem
6333
6334 1998-08-25 Nathan Bryant <bryant@cs.usm.maine.edu>
6335         * room_ops.c: include time.h
6336         * userlist.c, whobbs.c, serv_chat.c, user_ops.c, sysdep.c, stats.c,
6337           citadel_decls.h, commands.c, messages.h, routines.h, routines2.h:
6338           remove duplicated declarations
6339
6340 Mon Aug 24 23:45:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6341         * setup.c: Removed yesno_s()
6342         * citadel.h, room_ops.c: added QRmtime field to struct quickroom,
6343           modified whenever a room is modified or posted in.
6344         * citadelapi.c: Added CtdlForEachRoom() function
6345
6346 Mon Aug 24 20:04:04 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
6347         * Makefile.in: new target `cleaner' does the same as `realclean' 
6348           without removing sysdep.h
6349         * proto.h: is bad. eliminate. I've moved the prototypes into several
6350           header files, one per .c file
6351
6352 Mon Aug 24 00:45:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6353         * Added a CtdlGotoRoom() function to the CitadelAPI.
6354  
6355 Sun Aug 23 21:47:00 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6356         * sysoputil is finally dead!  Removed it from the build.
6357         * Added userpurge.c server extension (initial implementation)
6358
6359 Tue Aug 18 00:42:33 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
6360         * Makefile.in: `clean' target no longer rm's sysdep.h; new target
6361           `realclean' removes everything clean does, plus sysdep.h, plus
6362           target binaries.
6363         * Configure: add -Wstrict-prototypes to CFLAGS for gcc systems
6364         * *.[ch]: protoized. Added several new header files containing
6365           prototypes and other external declarations; many duplicated
6366           declarations still should be moved to header files. proto.h must die
6367           as well, IMHO.
6368
6369 Mon Aug 17 23:52:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6370         * Implemented a bunch of user account related functions in the
6371           CitadelAPI library.
6372
6373 Mon Aug 17 20:01:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6374         * Fixed the crash problem.  It wasn't AGUP/ASUP, but rather a buffer
6375           overrun in getuser() (thanks, Nathan).  Implemented overrun checks
6376           in getuser(), getroom(), and getfloor() to prevent future problems.
6377
6378 Mon Aug 17 00:06:52 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6379         * Updated citmail.c with the latest stuff from the production system.
6380         * Implemented AGUP and ASUP commands, but AGUP crashes the server
6381           after its first successful use (user-not-found's don't affect it).
6382
6383 Thu Aug  6 19:25:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6384         * Got the CitadelAPI library to the point where the server can start
6385           up an extension, and the extension will connect to the server, do
6386           some initialization, call a user-supplied CtdlMain(), and exit.  Also
6387           hacked together a _temporary_ form of the new EXTN server command.
6388  
6389 Wed Aug  5 23:02:22 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6390         * Second attempt at getting the server API started.  Now it runs
6391           outside of the server and builds a connection.
6392
6393 Tue Aug  4 18:33:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6394         * Modified the appearance of Internet addresses when they arrive on
6395           a Citadel system.
6396         * Removed the <E> field from the message format writeup in hack.txt.
6397         * Fixed-up citmail.c so that it doesn't try to do database lookups.
6398
6399 Mon Aug  3 23:01:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6400         * Started developing the server-side API.  This is in its very
6401           initial stages.  See serverapi.c and techdoc/api.txt
6402
6403 1998-08-02  Nathan Bryant  <bryant@cs.usm.maine.edu>
6404         * Makefile.in: added config_decls.h to dependencies
6405
6406 Sun Aug  2 21:09:09 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
6407         * config_defs.h: renamed to config_decls.h
6408         * config.c, sysoputil.c: updated to reflect the above
6409
6410 Sun Aug  2 18:52:05 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
6411         * config_defs.h: new file, contains external declarations from config.c
6412         * config.c: moved defs to config_defs.h, use PATH_MAX from <limits.h>
6413           for bbs_home_directory
6414         * mailinglist.c, support.c: include <string.h>
6415         * sysoputil.c: include <string.h>, <limits.h>, "config_defs.h", remove
6416           duplicated defs, replace gets() call with fgets()
6417         * user_ops.c: define _XOPEN_SOURCE_EXTENDED
6418
6419 Sat Aug  1 18:32:52 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
6420         * ipc_c_tcp.c: fixed order of memcpy parameters after gethostbyname
6421
6422 Sun Jul 19 17:26:12 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
6423         * ChangeLog: reordered; the GNU standard is to add new entries to the
6424           top.
6425         * .cvsignore: added userlist
6426
6427 Sun Jul 12 20:58:59 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
6428         * Finished migrating everything to the new data store.
6429         * Replaced the binary "calllog" with the ASCII "citadel.log"
6430         * Began converting broken utilities that depend on the old data store
6431
6432 Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
6433         * Makefile.in: removed msgstats
6434
6435 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
6436         * Initial CVS import
6437