r19212: Make sure domains marked internal don't do
authorJeremy Allison <jra@samba.org>
Tue, 10 Oct 2006 04:00:42 +0000 (04:00 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:15:22 +0000 (12:15 -0500)
network queries.
Jeremy.
(This used to be commit e4d5e1d90b40fee1edc5cf0134b276645eea63bf)

source3/nsswitch/winbindd_cm.c
source3/nsswitch/winbindd_util.c

index 45fce21450a137a4bd6f4b77b7ad1a9fd19f524d..f2d264b2b458914eb83280ee2980558b302f5026 100644 (file)
@@ -122,6 +122,12 @@ void set_domain_offline(struct winbindd_domain *domain)
                TALLOC_FREE(domain->check_online_event);
        }
 
+       if (domain->internal) {
+               DEBUG(3,("set_domain_offline: domain %s is internal - logic error.\n",
+                       domain->name ));
+               return;
+       }
+
        domain->online = False;
 
        /* We only add the timeout handler that checks and
@@ -166,6 +172,12 @@ static void set_domain_online(struct winbindd_domain *domain)
        DEBUG(10,("set_domain_online: called for domain %s\n",
                domain->name ));
 
+       if (domain->internal) {
+               DEBUG(3,("set_domain_offline: domain %s is internal - logic error.\n",
+                       domain->name ));
+               return;
+       }
+
        if (get_global_winbindd_state_offline()) {
                DEBUG(10,("set_domain_online: domain %s remaining globally offline\n",
                        domain->name ));
@@ -1197,6 +1209,12 @@ NTSTATUS init_dc_connection(struct winbindd_domain *domain)
 {
        NTSTATUS result;
 
+       /* Internal connections never use the network. */
+       if (domain->internal) {
+               domain->initialized = True;
+               return NT_STATUS_OK;
+       }
+
        if (connection_ok(domain)) {
                if (!domain->initialized) {
                        set_dc_type_and_flags(domain);
@@ -1237,11 +1255,6 @@ static void set_dc_type_and_flags( struct winbindd_domain *domain )
 
        ZERO_STRUCT( ctr );
        
-       if (domain->internal) {
-               domain->initialized = True;
-               return;
-       }
-
        if (!connection_ok(domain)) {
                return;
        }
index 53fa3da536b952ad2b773393756b5347b48ebcae..b28d66e8bc602f9939e445e5c03ccff12f29b917 100644 (file)
@@ -462,16 +462,18 @@ enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domai
                fstrcpy(domain->dcname, state->request.data.init_conn.dcname);
        }
 
-       if (strlen(domain->dcname) > 0) {
-               if (!resolve_name(domain->dcname, &ipaddr, 0x20)) {
-                       DEBUG(2, ("Could not resolve DC name %s for domain %s\n",
-                                 domain->dcname, domain->name));
-                       return WINBINDD_ERROR;
-               }
+       if (!domain->internal) {
+               if (strlen(domain->dcname) > 0) {
+                       if (!resolve_name(domain->dcname, &ipaddr, 0x20)) {
+                               DEBUG(2, ("Could not resolve DC name %s for domain %s\n",
+                                         domain->dcname, domain->name));
+                               return WINBINDD_ERROR;
+                       }
 
-               domain->dcaddr.sin_family = PF_INET;
-               putip((char *)&(domain->dcaddr.sin_addr), (char *)&ipaddr);
-               domain->dcaddr.sin_port = 0;
+                       domain->dcaddr.sin_family = PF_INET;
+                       putip((char *)&(domain->dcaddr.sin_addr), (char *)&ipaddr);
+                       domain->dcaddr.sin_port = 0;
+               }
        }
 
        init_dc_connection(domain);