r22724: Call an nss_info backend's init() function if the
authorGerald Carter <jerry@samba.org>
Sun, 6 May 2007 21:31:19 +0000 (21:31 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:21:50 +0000 (12:21 -0500)
previous call was unsuccessful.  needed for offline
logons.

source/nsswitch/nss_info.c

index d251629662903d74f1ba20ac20db0b34415027ff..3fab9db83916e026d46b213c2d3c39f4e128678a 100644 (file)
@@ -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;
 }