hyc@symas.com wrote:
jclarke@linagora.com wrote:
Full_Name: Jonathan Clarke Version: RE24 OS: irrelevant URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (213.41.243.192)
Hi,
When adding a syncrepl config, the function add_syncrepl performs a "check if URL points to current server". This check is based on an exact match between the provider parameter from the syncrepl config line, and the URIs given to slapd on startup.
If this doesn't match when it should, the database is marked as a shadow, and all following updates fail with "shadow context; no update refs". This is quite a pain when it happens on cn=config :)
There are multiple cases when this happens:
- If no specific URI was specified on launch (no -h option)
- Port numbers are explicitly specified or not (":389")
- Trailing slash (for example "ldap://1.2.3.4" != "ldap://1.2.3.4/")
- IP is specified rather than DNS name ("ldap://localhost" !=
"ldap://127.0.0.1")
I saw the comment in the code that clarifies this behaviour. However, it's a surprising behaviour, and I think there is code to parse this kind of thing in the serverID detection now. Maybe it could be reused?
Oops, never mind. I was thinking of the serverID code, and you're talking about the syncrepl code.
I'll have to think a bit about why the two aren't behaving identically; probably they should both use the same code.