On 16/08/17 13:02, Ian Kent wrote: > On 11/08/17 05:15, Oscar Salvador wrote: >> Right now we are just checking and parsing the ldap's configuration >> in lookup_init() function, and if everything goes well we return a zero >> value indicating that everything worked fine. >> >> This has a problem, because in the case we set ldap method in >> /etc/nsswitch.conf, configuration parsing goes fine but ldap is not working, >> we will return a zero value in lookup_init() function, so autofs will move on, >> but then we will return NSS_STATUS_UNAVAIL in lookup_read_master() function >> once do_reconnect() fails, and because of this autofs will not be able to >> reread the maps. > > Umm ... I can't see a check in the current upstream NIS code? I also don't understand the problem in the upstream code your trying to resolve. Can you try and describe it again please? > >> >> NIS already handles this by testing for server connectivity during initialization. >> This patch does the same thing for LDAP. >> >> Signed-off-by: Oscar Salvador <osalvador@xxxxxxxx> >> Signed-off-by: Jeff Mahoney <jeffm@xxxxxxxx> >> --- >> modules/lookup_ldap.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c >> index 98701e5..29a67a5 100644 >> --- a/modules/lookup_ldap.c >> +++ b/modules/lookup_ldap.c >> @@ -1681,6 +1681,7 @@ static int do_init(const char *mapfmt, >> int argc, const char *const *argv, >> struct lookup_context *ctxt, unsigned int reinit) >> { >> + struct ldap_conn conn; >> unsigned int is_amd_format; >> int ret; >> >> @@ -1810,6 +1811,12 @@ static int do_init(const char *mapfmt, >> } >> } >> >> + memset(&conn, 0, sizeof(struct ldap_conn)); >> + ret = do_reconnect (LOGOPT_ANY, &conn, ctxt); >> + if (ret != NSS_STATUS_SUCCESS) >> + return 1; >> + >> + unbind_ldap_connection(LOGOPT_ANY, &conn, ctxt); >> return ret; >> } >> >> > > -- > To unsubscribe from this list: send the line "unsubscribe autofs" in > -- To unsubscribe from this list: send the line "unsubscribe autofs" in