From: Gerald Carter Date: Sun, 6 May 2007 21:31:19 +0000 (+0000) Subject: r22724: Call an nss_info backend's init() function if the X-Git-Tag: samba-misc-tags/initial-v3-0-unstable~524 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c3a8dc5d136e33b66849c38bfa910cd044cd521f;p=thirdparty%2Fsamba.git r22724: Call an nss_info backend's init() function if the previous call was unsuccessful. needed for offline logons. --- diff --git a/source/nsswitch/nss_info.c b/source/nsswitch/nss_info.c index d2516296629..3fab9db8391 100644 --- a/source/nsswitch/nss_info.c +++ b/source/nsswitch/nss_info.c @@ -190,10 +190,11 @@ static BOOL parse_nss_parm( const char *config, char **backend, char **domain ) nss_domain->backend = nss_backend; nss_domain->domain = talloc_strdup( nss_domain, domain ); - status = nss_domain->backend->methods->init( nss_domain ); - if ( NT_STATUS_IS_OK( status ) ) { + /* Try to init and ave the result */ + + nss_domain->init_status = nss_domain->backend->methods->init( nss_domain ); DLIST_ADD( nss_domain_list, nss_domain ); - } else { + if ( !NT_STATUS_IS_OK(nss_domain->init_status) ) { DEBUG(0,("nss_init: Failed to init backend for %s domain!\n", nss_domain->domain)); } @@ -248,6 +249,10 @@ static struct nss_domain_entry *find_nss_domain( const char *domain ) p = nss_domain_list; } + if ( !NT_STATUS_IS_OK( p->init_status ) ) { + p->init_status = p->backend->methods->init( p ); + } + return p; }