Commit Graph

381 Commits

Author SHA1 Message Date
Kurt Zeilenga
44725e7303 use BER_BVNULL 2004-04-07 04:11:43 +00:00
Kurt Zeilenga
2095a7bc51 Fix last commit 2004-04-05 23:49:06 +00:00
Kurt Zeilenga
9a64fdb991 use SLAP_DBFLAGS instead of be->be_flags 2004-04-05 23:42:59 +00:00
Kurt Zeilenga
4ef7e08afe updateref should be allowed with syncrepl (without updatedn) 2004-04-05 23:08:24 +00:00
Kurt Zeilenga
843400deb7 Add SLAP_SHADOW(be): true if be is a shadow database (via any mech) 2004-04-05 21:54:40 +00:00
Kurt Zeilenga
2fcaa15b90 First rounds of backend/database flag cleanup 2004-04-05 21:00:16 +00:00
Kurt Zeilenga
bd765b849d ITS#2768: configuring slurpd's interval between replog checks
based upon a patch submitted by Jason Townsend (Apple).
2004-03-23 01:12:11 +00:00
Kurt Zeilenga
e323437c6a cleanup for release engineering 2004-03-18 01:06:39 +00:00
Pierangelo Masarati
490e1e4aa9 move limits check and preparation in a helper function 2004-03-09 15:59:01 +00:00
Howard Chu
4504b48c6b default_passwd_hash now takes a list of schemes
passwordModify exop will generate all the configured hashes
2004-03-02 22:12:23 +00:00
Kurt Zeilenga
3c598e89fb Happy new year 2004-01-01 19:15:16 +00:00
Kurt Zeilenga
c7f1759e80 Misc cleanup 2003-12-30 01:26:38 +00:00
Luke Howard
0549d46adf Don't require slapi to be in the path - always include slapi/slapi.h 2003-12-28 04:17:48 +00:00
Luke Howard
b0416d1140 Cleanup SLAPI namespace 2003-12-28 04:14:19 +00:00
Kurt Zeilenga
271fff13de Sync with HEAD 2003-12-17 17:55:27 +00:00
Pierangelo Masarati
0176e02398 cleanup handling of unknown directives ... 2003-12-09 23:49:13 +00:00
Howard Chu
0690f79a5a Cleanup unknown config directive handling. 2003-12-07 07:07:00 +00:00
Pierangelo Masarati
71d488c28f fix uninitialized var 2003-11-29 17:24:34 +00:00
Kurt Zeilenga
4e15a84452 Updated notices 2003-11-27 01:17:14 +00:00
Jong Hyuk Choi
4ae382fd79 misc updates
- syncrepl : id -> rid
 - man page update
2003-11-26 21:37:44 +00:00
Jong Hyuk Choi
1fdda703e6 Support multiple sync replication at the consumer :
1) simultaneous operation of multiple active sync replication threads
2) cookie management for individual sync replication thread
   (include rid=%3d to the slapd cookie command line option (-c))
2003-11-26 19:49:47 +00:00
Jong Hyuk Choi
84a7381225 misc comment update 2003-11-24 17:45:44 +00:00
Jong Hyuk Choi
b6789f27b4 cleanup 2003-11-24 16:42:07 +00:00
Jong Hyuk Choi
40365af3f9 change default syncrepl base 2003-11-24 16:34:45 +00:00
Jong Hyuk Choi
f3586499d0 update ldapsync/syncrepl code according to the new version of
the protocol (draft-zeilenga-ldup-sync-04)
2003-11-11 20:25:19 +00:00
Jong Hyuk Choi
279760a467 1. Session history support
- memory based session history to minimize sync traffic
	- when client is covered by a session history, then
      [add+delete] mode is used
	- when client cookie is not covered by the history because
      the cookie is too outdated and/or the history is truncated,
	  [add+present] mode is used
2. Sync cookie syntax : comma separated name=value pairs
	- csn=yyyymmddhh:mm:ssZ#0xSSSS#r#ssssr,sid=nnn
2003-11-10 02:44:25 +00:00
Jong Hyuk Choi
cc5e417234 second level interval support, interval=dd:hh:mm:ss
changed the test scripts and test conf files accordingly
2003-11-05 16:10:43 +00:00
Kurt Zeilenga
802671cad7 fix compile error 2003-10-24 17:34:33 +00:00
Howard Chu
08676eb49d Add support for outbound connections in main listener.
Restructure syncrepl/persist to use outbound connection manager.
2003-10-24 12:57:24 +00:00
Howard Chu
01f7a7466b SLAPI fix - no-op when slapi_plugins_used == 0 2003-10-24 05:58:42 +00:00
Kurt Zeilenga
d0c05e814d Add a basic DIT content rule test.
Fix DIT rules to allow extensibleObject in AUX
unifdef -DSLAP_EXTENDED_SCHEMA
2003-10-24 04:40:32 +00:00
Howard Chu
ac7404eabd Fix error recovery, cleanup session handles. Always reschedule task
at end of do_syncrepl; this fixes the problem of syncrepl never starting
if the master isn't up. Set sync interval to 60 seconds in persist mode;
it will retry connecting to the master when the master isn't up. Fail on
SASL at config time instead of at runtime when SASL is not enabled.
2003-10-24 04:11:28 +00:00
Kurt Zeilenga
ce4b199485 Syncrepl code cleanup (namely prefix struct field names) 2003-10-22 05:19:30 +00:00
Howard Chu
b6835be962 ITS#2747, Reorganize syncrepl, fix some memleaks. More remain. 2003-10-18 14:13:37 +00:00
Jong Hyuk Choi
cdb7417765 misc syncrpel updates 2003-10-08 09:36:06 +00:00
Jong Hyuk Choi
a8574a450f slaptools update : replica promotion / demotion
new slapadd options
-p       : promote : If the ldif file contains syncConsumerSubentries, convert
                     them to a single syncProviderSubentry. Its contextCSN
                     attribute has the largest value of the syncreplCookie
                     attributes of the syncConsumerSubentries.
                     syncProviderSubentry in the ldif file is retained.
-p -w    : promote : Recalculate contextCSN based on entryCSN of each entry.
           create    Existing syncConsumerSubentries and syncProviderSubentry
                     are ignored and not added to the directory.
-r       : demote  : If the ldif file contains syncProviderSubentry, convert it
                     to a syncConsumerSubentry having the default syncrepl id
                     of 0. syncConsumerSubentries in the ldif file are retained.
-r -w    : demote  : Recalculate syncreplCookie based on entryCSN of each entry.
           create    Existing syncConsumerSubentries and syncProviderSubentry
                     are ignored and not added to the directory. The default
                     syncrepl id of 0 will be used for the new
                     syncConsumerSubentry.
-r -w -i %d[,%d]*  : Using the comma separated list followed by the -i option,
                     it is possible to create multiple syncConsumerSubentries
                     having the syncrepl ids specified in the list.
                     syncreplCookie values of these sycnConsumerSubentries
                     will have the same value, either from the maximum
                     entryCSN value or from the contextCSN value of the
                     syncProviderSubentry.
2003-10-07 20:01:37 +00:00
Jong Hyuk Choi
d336d7783b fix config file processing (ITS#2722) 2003-09-17 05:34:47 +00:00
Jong Hyuk Choi
7f882daf15 Schema checking option for LDAP Sync replication 2003-09-03 21:42:52 +00:00
Jong Hyuk Choi
fb7db00810 cleanup 2003-08-29 21:24:05 +00:00
Jong Hyuk Choi
5548a2dd0c Sync replication config option format change (interval) 2003-08-28 22:29:12 +00:00
Jong Hyuk Choi
090ac0a772 unifdef LDAP_SYNC and LDAP_SYNCREPL 2003-08-27 22:16:04 +00:00
Jong Hyuk Choi
286986c4e8 NO_SCHEMA_CHECK backend flag 2003-08-27 16:40:26 +00:00
Jong Hyuk Choi
6659cf3ea1 LDAP Sync protocol change : state mode (add+present) and log mode (add+delete) 2003-08-14 16:27:36 +00:00
Jong Hyuk Choi
cc6f31782d - partial attribute replication tested ok
- conf file processing udpate
- misc updates
2003-07-02 14:51:23 +00:00
Jong Hyuk Choi
7087a8f58d ITS#2618 fix 2003-06-27 20:29:32 +00:00
Jong Hyuk Choi
9df9b1377a reinitialize presentlist & nonpresentlist 2003-06-25 23:21:18 +00:00
Jong Hyuk Choi
30ccb6087f - syncrepl configuration uses URL only
- slimit, tlimit fix (ITS# 2592)
2003-06-23 14:14:47 +00:00
Howard Chu
44e32b3f7f ITS#2594 add URI support for replica config 2003-06-14 00:06:36 +00:00
Jong Hyuk Choi
f07179ca61 syncrepl changes
- can handle multiple syncinfo
- ldap_sync_search() added
2003-06-11 17:03:57 +00:00
Howard Chu
4c5de987cd Fix config, chaining 2003-06-11 06:32:24 +00:00
Howard Chu
62da6969dc Preliminary backend overlay support, based on backglue, not tested... 2003-06-11 02:27:51 +00:00
Kurt Zeilenga
544805dcec localize SYNCREPL config defines 2003-06-10 18:36:47 +00:00
Kurt Zeilenga
a908d75f0c s/tls/starttls/
s/master/provider/
2003-06-10 18:33:44 +00:00
Howard Chu
283471d84e Fix syncinfo reference after free 2003-05-24 06:50:48 +00:00
Hallvard Furuseth
05d7b891ec Move SLAPD_MONITOR_DN out of format strings.
Otherwise slapd would break if SLAPD_MONITOR_DN contained a '%'.
2003-05-20 18:16:45 +00:00
Jong Hyuk Choi
986bcd52a9 -syncUUID search in syncrepl
-test017-syncreplication
2003-05-09 06:50:44 +00:00
Jong Hyuk Choi
9543844d39 strdup cleanup 2003-05-02 18:00:33 +00:00
Hallvard Furuseth
3420d12bdc Fix printf/Debug format arguments. 2003-05-02 13:08:47 +00:00
Jong Hyuk Choi
e8cd5c2386 - LDAP_SYNCREPL defined in include/ldap.h
- add "updatedn" to the replication specification
- return referral to update to the slave server
2003-05-01 23:39:29 +00:00
Jong Hyuk Choi
e885605f21 cleanup 2003-04-29 23:32:58 +00:00
Kurt Zeilenga
5cd994ed21 remove dnNormalize2
replace calls to dnNormalize2 with calls to dnNormalize
2003-04-29 18:28:14 +00:00
Jong Hyuk Choi
77b58e69a5 tab cleanup 2003-04-29 17:55:26 +00:00
Howard Chu
1643145b03 Fix multi-line string literals. new GCC complains... 2003-04-22 16:06:29 +00:00
Jong Hyuk Choi
86a46c267a OpenLDAP synchronization based replication engine 2003-04-21 14:08:13 +00:00
Pierangelo Masarati
adf3744dd6 fix backsql new API; use berbuf instead of berval 2003-04-15 21:55:25 +00:00
Howard Chu
ece7452b05 More memory context tweaks 2003-04-11 01:29:28 +00:00
Howard Chu
3a71bddbc4 ITS#2389 - added conn_max_pending/auth config keywords to cap the number
of outstanding requests on a connection. Set rate limits for request
execution:
   no connection can have more than maxthreads/2 ops executing at once.
   a connection that is write-blocked will not execute any new ops.
   queued ops must drain before any new ops can execute.
If the queue exceeds the max_pending limit, the connection is closed.
...also fixed a bug where a connection was not marked active if it never
received a Bind.
2003-03-27 03:35:46 +00:00
Howard Chu
bbad1de8e1 Added lutil_passwd_init, _destroy, _add for dynamically adding passwd
schemes. Declarations in lutil.h require lutil.h never be included before
lber.h, always after.
2003-03-11 05:58:53 +00:00
Pierangelo Masarati
118bf1e9f9 apply a different fix for ITS#2342 2003-03-03 23:06:58 +00:00
Howard Chu
8f88bc1f8f Free default_passwd_hash on cleanup 2003-02-16 06:13:34 +00:00
Kurt Zeilenga
aaf253318b Move include <slapi.h> behind #ifdef 2003-02-10 02:09:00 +00:00
Kurt Zeilenga
8f82e9f772 ITS#2117: remove suffixalias support until someone fixes it 2003-02-09 07:20:03 +00:00
Kurt Zeilenga
698d73d5f3 Disable reverse lookups by default for security
(and performance) reasons.
2003-02-08 07:40:19 +00:00
Kurt Zeilenga
c315e28779 Move RDN checks to entry_schema_check() so that it is consistently
applied (and disabled via schemacheck off).  Removed add-rdn-values flag.
2003-02-07 20:12:26 +00:00
Pierangelo Masarati
7a97f37bd4 add 'add-rdn-values {on|off}' (default off) switch 2003-02-07 15:19:58 +00:00
Pierangelo Masarati
c3847a6136 slapi header cleanup 2003-01-27 21:53:23 +00:00
Luke Howard
7d5978b4aa Put #endif in correct place when commenting out backend directive check
for plugins (now that global plugins are nominally supported)
2003-01-21 15:14:07 +00:00
Luke Howard
17b761cf96 Allow global plugins. 2003-01-21 15:11:35 +00:00
Kurt Zeilenga
6939c53170 Happy new year 2003-01-03 20:20:47 +00:00
Pierangelo Masarati
df5d69df8f allow a custom error log file for plugins by means of a slapd.conf directive; add very bare-bone back-monitor info about installed plugins 2002-12-14 15:04:37 +00:00
Hallvard Furuseth
54728f367e Implement user-defined tagging attribute options and ranges 2002-12-12 13:56:05 +00:00
Pierangelo Masarati
1b70e16448 SLAPI - Netscape plugin API for slapd - based on patch contributed by Steve Omrani <somrani@us.ibm.com> as ITS#2073 2002-12-07 17:19:29 +00:00
Kurt Zeilenga
da76c1951e First-cut proxy authorization support. 2002-12-03 06:11:32 +00:00
Kurt Zeilenga
8754c8f2a3 #unifdef paged results, remove lint 2002-11-28 04:38:41 +00:00
Pierangelo Masarati
415a8d325f add limits to entries count for paged results 2002-11-21 20:49:02 +00:00
Julius Enarusai
2d98b19bf7 Converted ch_malloc, ch_calloc and ch_realloc calls to SLAP_MALLOC and
SLAP_CALLOC in add_value/add_value_one functions and propagated errors to
all functions that use these functions.
2002-11-01 18:59:52 +00:00
Pierangelo Masarati
53e1930fd0 use keyword "unlimited" instead of -1 for no limits 2002-10-31 09:57:24 +00:00
Kurt Zeilenga
36569048ff Add "allow update_anon"
Fix -USLAP_X_LISTENER_MOD builds
2002-10-25 18:47:24 +00:00
Kurt Zeilenga
acc32b9d9e Basic framework for DIT Content Rules (not yet enforced) 2002-10-09 07:11:50 +00:00
Kurt Zeilenga
023d0e2a5c Rework unprotected simple bind checks 2002-10-08 19:03:18 +00:00
Kurt Zeilenga
f5e6d1db41 #unifdef -DSCHEMA_DN 2002-09-29 04:30:38 +00:00
Kurt Zeilenga
1c75a7f25c Fix inverted bvmatch logic in modrdn 2002-08-12 08:45:20 +00:00
Howard Chu
07ebdca237 ITS#1893, use "schemadn" to configure subschemasubentry DN. (diff was
inaccessible, this is original code, not contributed.)
2002-08-10 03:10:52 +00:00
Howard Chu
554311a4c8 Fix cargv leak in recursive read_config() 2002-08-07 08:22:43 +00:00
Kurt Zeilenga
8a3d02bf6b misc cleanup 2002-07-23 18:35:12 +00:00
Julius Enarusai
6107ba67d2 Coverted LDAP_LOG macro to use subsystem ID int values instead of string values 2002-07-11 20:33:24 +00:00
Kurt Zeilenga
9a38d98d37 Add option to disallow unprotected simple authentication.
Add protected simple authentication as a "strong" mechanism.
2002-06-17 22:18:27 +00:00
Pierangelo Masarati
b9254b8ab4 should compile even without Cyrus SASL 2002-06-15 15:01:17 +00:00
Howard Chu
07a34489c6 Added saslAuthzTo and saslAuthzFrom to system schema.
Added sasl-authz-policy config keyword to control proxy authorization.
Moved sasl-related config processing to sasl.c:slap_sasl_config().
Moved other global defs used only in saslauthz.c into saslauthz.c.
2002-06-14 08:10:14 +00:00
Kurt Zeilenga
116e165a5c Be less forgiving (don't ignore so many configuration errors) 2002-06-08 18:38:52 +00:00
Kurt Zeilenga
a784e4d054 Add rootdn check when rootpw is set. 2002-06-08 18:04:43 +00:00
Kurt Zeilenga
19eca33ca3 Gentile HUP shutdown from Hallvard 2002-06-03 16:47:43 +00:00
Kurt Zeilenga
bdad40c696 Disallow addition of system schema via config files. 2002-05-30 05:23:37 +00:00
Pierangelo Masarati
2ca323d2b5 Fixes ITS#1786: dynamically growing number of tokens in config line
for both slapd and slurpd

Copyright 2002, John Morrissey (jwm at horde dot net), All rights reserved.
This is free software; you can redistribute and use it under the same terms
as OpenLDAP itself.

Applied with changes
2002-05-02 08:48:14 +00:00
Howard Chu
7fae7fe155 Changed be_[n]suffix, be_[n]suffixAlias to BerVarray. No more bvec's anywhere. 2002-05-01 18:50:14 +00:00
Julius Enarusai
ed8f299245 ITS#1730: Misc typos in NEW_LOGGING code from Hallvard 2002-04-25 22:12:44 +00:00
Kurt Zeilenga
0ca5d06f77 Re: PRIVATE: Patch: Passwords (ITS#1740)
================
Written by Hallvard B. Furuseth and placed into the public domain.
This software is not subject to any license of the University of Oslo.
2002-04-22 17:31:16 +00:00
Howard Chu
8a5423ea8d deleted sasl_external_x509dn_convert; X509 DNs are always converted to
normalized LDAP DNs now.

Changed dnDCEnormalize to dnX509normalize, added dnX509peerNormalize,
based on new ldap_X509dn2bv() etc.
2002-04-18 12:26:36 +00:00
Kurt Zeilenga
709ce4fa6c Re: Patch: ctype functions require 'unsigned char' args (ITS#1678)
================
Written by Hallvard B. Furuseth and placed into the public domain.
This software is not subject to any license of the University of Oslo.
			================

Here are fixes for more places where the argument to ctype.h functions
should be in the range of `unsigned char'.

Explanation of the last patch (to schema_init.c:bvcasechr()):
TOLOWER() and TOUPPER() return values in the range of `unsigned char',
but bvcasechr() then compares those values with a plain `char'.  So I
convert the return values from TOLOWER()/TOUPPER() to `char' first.

Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>, April 2002.
2002-04-15 20:42:42 +00:00
Howard Chu
bf6fccd7bb ITS#1740 2002-04-13 10:56:16 +00:00
Pierangelo Masarati
4a2b9b2195 ITS#1730 2002-04-08 18:39:23 +00:00
Pierangelo Masarati
f4dba925ff add a switch that enables/disables reverse lookups if configured with rlookups 2002-04-03 15:40:49 +00:00
Pierangelo Masarati
9bf3ccd0bf allow attribute exclusion list in selective replica 2002-03-30 08:52:20 +00:00
Howard Chu
a1063a041d Fix previous commit, lutil_passwd_scheme() returns boolean, not pointer. 2002-03-18 08:56:47 +00:00
Pierangelo Masarati
a1b65bcdfe detect unavailable hash algorithms at startup 2002-03-09 11:02:32 +00:00
Julius Enarusai
08d0a48ac5 The following file fails compile when NEW_LOGGING is enabled. 2002-03-07 17:50:56 +00:00
Kurt Zeilenga
32fb8b0bff Add ACL state recording to avoid multiple evaluation of
value-independent access controls.
2002-02-09 05:14:17 +00:00
Howard Chu
f50b75f0c2 Added replica attr=<attribute list> support to filter replog content 2002-02-08 06:44:33 +00:00
Howard Chu
c3c85b4062 Extended TLS_REQCERT/TLSVerifyClient syntax to 4 states: never,allow,try,
and hard/demand.
2002-01-27 02:56:18 +00:00
Pierangelo Masarati
cb8299d124 allow trailing '\' to continue a config line (ITS#1551) 2002-01-23 16:28:48 +00:00
Kurt Zeilenga
13af7fb073 Misc. cleanup, remove lint, remove unused deprecated functions, etc. 2002-01-15 07:29:15 +00:00
Kurt Zeilenga
504404725a Flip some bits in the backend flags mask 2002-01-11 02:31:47 +00:00
Kurt Zeilenga
55501e886f Rework backend (lastmod + glue + system schema) flags 2002-01-10 22:34:11 +00:00
Kurt Zeilenga
c80d93f2bb Start of new operational attribute framework 2002-01-10 00:17:21 +00:00
Pierangelo Masarati
a744ca2be3 fix logs 2002-01-05 16:53:08 +00:00
Pierangelo Masarati
ca60d05dd1 fix malformed test 2002-01-05 15:44:08 +00:00
Kurt Zeilenga
0e2af54a3f Update copyright statements 2002-01-04 21:17:25 +00:00
Howard Chu
f52cc9bab5 Change struct berval ** to BVarray 2002-01-02 11:00:36 +00:00
Howard Chu
975a5e9a24 Added dnPretty2/dnNormalize2 using preallocated destination berval 2001-12-29 04:48:00 +00:00
Howard Chu
0039cb2a37 More dnPrettyNormal 2001-12-28 07:58:54 +00:00
Kurt Zeilenga
b17572c7d3 cleanup 2001-12-27 23:01:09 +00:00
Kurt Zeilenga
ef7a99ff99 Additional struct berval DN changes... 2001-12-26 23:26:55 +00:00
Kurt Zeilenga
2dd27b0786 More struct berval DNs 2001-12-25 19:48:26 +00:00
Kurt Zeilenga
3336619c80 More "char *" to struct berval DN changes 2001-12-25 02:30:01 +00:00
Kurt Zeilenga
5ee89d6167 Use struct berval DNs for root DN and update DN 2001-12-25 00:05:26 +00:00
Kurt Zeilenga
0c28b66a75 use dnPretty instead of dn_pretty 2001-12-23 00:43:57 +00:00
Kurt Zeilenga
d23313a068 LDAPv2 disallow and other flag changes
Fix compile errors
2001-12-21 04:44:34 +00:00
Howard Chu
923cdcf3c5 fix from jon@symas.com - missing arguments to Debug/LDAP_LOG 2001-12-17 22:47:36 +00:00
Howard Chu
ff682be26e Added acl_destroy, acl_free. 2001-12-15 12:41:53 +00:00
Howard Chu
826056e75b More thorough backend_destroy. Added config_destroy. Destroy slap_listeners.
Plugged other small leaks.
2001-12-15 12:05:58 +00:00
Pierangelo Masarati
e754997da0 minor cleanup 2001-12-11 11:30:01 +00:00
Howard Chu
ef0b308bea Changed backglue configuration. Added noSubordinates arg to select_backend
to deal with glued subordinates.
2001-12-10 12:09:40 +00:00
Pierangelo Masarati
95f1740aa6 improvements to monitor backend: added a log entry that lists the current log level and can be modified via protocol at runtime, to change the log level; minor improvements; fixed a problem in dealing with dn normalization 2001-12-10 09:50:06 +00:00
Howard Chu
fd7e23c188 Converted suffixAlias to struct bervals. 2001-12-09 14:57:42 +00:00
Howard Chu
55a217d9ae Changed be_nsuffix from char ** to struct berval ** to eliminate strlen's 2001-12-08 05:15:58 +00:00
Pierangelo Masarati
379e0e9d50 another step towards schema aware normalization: ava sorting in rdns; now by defining USE_LDAP_DN_PARSING both the new dn parsing and the server side normalization is used. There might be, every now and then, a flaw mostly due to naive normalization of pseudo-dn (thinking about some acl/regex stuff and so) 2001-12-05 19:26:30 +00:00
Pierangelo Masarati
aee3600276 minor cleanup 2001-11-17 16:18:07 +00:00
Kurt Zeilenga
82fad7d0c8 First stable an implementing latest namedref specification.
Includes rewriting of URLs where the DN of the referral object
and the DN of the ref attribute attribute are not the same.
Also, always returns explicit DN and scope.
Currently, back-ldbm only.  Needs to be ported to back-bdb.
2001-10-26 02:05:14 +00:00
Pierangelo Masarati
271c323281 Fixes ITS#1385 2001-10-25 15:15:34 +00:00
Kurt Zeilenga
23bf2fb086 Fix error messages 2001-10-24 05:27:49 +00:00