--000325575576f2e15a04bc2a31c8 Content-Type: text/plain; charset=ISO-8859-1
hmmm... I have to say I can replay it every time.
just set the following two lines in the beginning of the slapd.conf,
index_substr_if_maxlen 100 index_substr_if_minlen 5
slapd starts without a warning and can serve requests.
T
On Mon, Mar 26, 2012 at 2:43 AM, Howard Chu hyc@symas.com wrote:
tixu@cs.ucsd.edu wrote:
Full_Name: Tianyin Xu Version: 2.4.30 OS: Ubuntu Linux 10.04 URL: ftp://ftp.openldap.org/**incoming/ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (128.54.167.68)
- Symptom:
In the main configuration file of OpenLDAP (slapd.conf), set the following configuration:
index_substr_if_minlen 100 index_substr_if_maxlen 5
Then, everything is fine. The system behaves as expectation. However, if reverse the order of the two configuration line as follows:
index_substr_if_maxlen 5 index_substr_if_minlen 100
Then, the system refused to start, with the following misleading message:
Mar 25 21:29:18 tianyin-desktop slapd[12700]: /home/tianyin/openldap-2.4.30/**etc/openldap/slapd.conf: line 1: <index_substr_if_minlen> invalid value (5)
Unable to reproduce this symptom. In both cases I get
testrun/slapd.1.conf: line 31: <index_substr_if_minlen> invalid value (100)
Closing this ITS.
------------------------------**---------------------------
- Root cause in terms of code snippet
(1) servers/slapd/slap.h
#define SLAP_INDEX_SUBSTR_IF_MINLEN_**DEFAULT 2 #define SLAP_INDEX_SUBSTR_IF_MAXLEN_**DEFAULT 4
(2) servers/slapd/schema_init.c
unsigned int index_substr_if_minlen = SLAP_INDEX_SUBSTR_IF_MINLEN_** DEFAULT; unsigned int index_substr_if_maxlen = SLAP_INDEX_SUBSTR_IF_MAXLEN_** DEFAULT;
(3) servers/slapd/bconfig.c
case CFG_SSTR_IF_MAX: if (c->value_uint< index_substr_if_minlen) { snprintf(c->cr_msg, sizeof(c->cr_msg), "<%s> invalid value", c->argv[0]); Debug(LDAP_DEBUG_ANY, "%s: %s (%d)\n", c->log, c->cr_msg, c->value_int); return(1); } index_substr_if_maxlen = c->value_uint; break;
case CFG_SSTR_IF_MIN: if (c->value_uint> index_substr_if_maxlen) { snprintf(c->cr_msg, sizeof( c->cr_msg ), "<%s> invalid value", c->argv[0]); Debug(LDAP_DEBUG_ANY, "%s: %s (%d)\n", c->log, c->cr_msg, c->value_int ); return(1); } index_substr_if_minlen = c->value_uint; break;
(4) backtrace
#0 config_generic (c=0x915760) at bconfig.c:1996 #1 0x0000000000433a00 in config_set_vals (Conf=0x8146c0, c=0x915760) at config.c:345 #2 0x0000000000433f5f in config_add_vals (Conf=0x8146c0, c=0x915760) at config.c:418 #3 0x00000000004351b3 in read_config_file (fname=0x5a0a98 "/home/tianyin/openldap-2.4.**30/etc/openldap/slapd.conf", depth=0, cf=0x0, cft=0x8140c0) at config.c:783 #4 0x000000000042846b in read_config (fname=0x0, dir=0x0) at bconfig.c:4213 #5 0x000000000041c217 in main (argc=1, argv=0x7fffffffe2f8) at main.c:792
------------------------------**---------------------------
It's quite clear that the order matters, and this should be a bug related to configuration.
Thanks, Tianyin
-- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/**project/http://www.openldap.org/project/