s3-winbindd: Pass the whole winbindd_domain to invalidate_cm_connection()
authorAndrew Bartlett <abartlet@samba.org>
Tue, 23 Sep 2014 17:35:21 +0000 (10:35 -0700)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 7 Oct 2014 23:09:50 +0000 (01:09 +0200)
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/winbindd/winbindd_cache.c
source3/winbindd/winbindd_cm.c
source3/winbindd/winbindd_dual.c
source3/winbindd/winbindd_dual_srv.c
source3/winbindd/winbindd_msrpc.c
source3/winbindd/winbindd_pam.c
source3/winbindd/winbindd_proto.h

index 06b29de5dfe83c6d5169db4fdef9ca26a7e5a269..b303ae904ccc35ff71b19f03094787daa4269f77 100644 (file)
@@ -1521,7 +1521,7 @@ do_query:
                if (NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL)) {
                        DEBUG(3, ("query_user_list: flushing "
                                  "connection cache\n"));
-                       invalidate_cm_connection(&domain->conn);
+                       invalidate_cm_connection(domain);
                }
                if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT) ||
                    NT_STATUS_EQUAL(status, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND)) {
index fd414b8827e79de6872cbf19340c515ef73e078a..ef7c17ab5e7b527a549801d573ea74e997c54184 100644 (file)
@@ -1836,9 +1836,10 @@ static NTSTATUS cm_open_connection(struct winbindd_domain *domain,
 
 /* Close down all open pipes on a connection. */
 
-void invalidate_cm_connection(struct winbindd_cm_conn *conn)
+void invalidate_cm_connection(struct winbindd_domain *domain)
 {
        NTSTATUS result;
+       struct winbindd_cm_conn *conn = &domain->conn;
 
        /* We're closing down a possibly dead
           connection. Don't have impossibly long (10s) timeouts. */
@@ -1924,7 +1925,7 @@ void close_conns_after_fork(void)
                        smbXcli_conn_disconnect(domain->conn.cli->conn, NT_STATUS_OK);
                }
 
-               invalidate_cm_connection(&domain->conn);
+               invalidate_cm_connection(domain);
        }
 
        for (cli_state = winbindd_client_list();
@@ -1980,7 +1981,7 @@ static NTSTATUS init_dc_connection_network(struct winbindd_domain *domain, bool
                return NT_STATUS_OK;
        }
 
-       invalidate_cm_connection(&domain->conn);
+       invalidate_cm_connection(domain);
 
        if (!domain->primary && !domain->initialized) {
                /*
@@ -2715,7 +2716,7 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
                ZERO_STRUCT(conn->sam_domain_handle);
                return status;
        } else if (!NT_STATUS_IS_OK(status)) {
-               invalidate_cm_connection(conn);
+               invalidate_cm_connection(domain);
                return status;
        }
 
@@ -2908,7 +2909,7 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
                                        &conn->lsa_policy);
  done:
        if (!NT_STATUS_IS_OK(result)) {
-               invalidate_cm_connection(conn);
+               invalidate_cm_connection(domain);
                return result;
        }
 
@@ -2933,7 +2934,7 @@ NTSTATUS cm_connect_lsat(struct winbindd_domain *domain,
                if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED) ||
                    NT_STATUS_EQUAL(status, NT_STATUS_RPC_SEC_PKG_ERROR) ||
                    NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_ACCESS_DENIED)) {
-                       invalidate_cm_connection(&domain->conn);
+                       invalidate_cm_connection(domain);
                        status = cm_connect_lsa_tcp(domain, mem_ctx, cli);
                }
                if (NT_STATUS_IS_OK(status)) {
@@ -3060,14 +3061,14 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
                                  "must set 'winbind sealed pipes = false' and "
                                  "'require strong key = false' to proceed: %s\n",
                                  domain->name, nt_errstr(result)));
-                       invalidate_cm_connection(conn);
+                       invalidate_cm_connection(domain);
                        return result;
                }
                result = cli_rpc_pipe_open_noauth(conn->cli,
                                        &ndr_table_netlogon,
                                        &conn->netlogon_pipe);
                if (!NT_STATUS_IS_OK(result)) {
-                       invalidate_cm_connection(conn);
+                       invalidate_cm_connection(domain);
                        return result;
                }
 
@@ -3089,7 +3090,7 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
                DEBUG(3, ("Could not open schannel'ed NETLOGON pipe. Error "
                          "was %s\n", nt_errstr(result)));
 
-               invalidate_cm_connection(conn);
+               invalidate_cm_connection(domain);
                return result;
        }
 
index ed081d07b3847b61fe92adaff2406e15ff8e7d35..f71d111c7d0b86f8650353e91a3aed19c4ed0548 100644 (file)
@@ -1072,7 +1072,7 @@ static void machine_password_change_handler(struct tevent_context *ctx,
                         "password was changed and we didn't know it. "
                         "Killing connections to domain %s\n",
                         child->domain->name));
-               invalidate_cm_connection(&child->domain->conn);
+               invalidate_cm_connection(child->domain);
        }
 
        if (!calculate_next_machine_pwd_change(child->domain->name,
index 5e33787bd34b102cfe650e5ba33421a0fde14f11..108b201065ae8c880706cc118fcdf868e3c24a28 100644 (file)
@@ -40,7 +40,7 @@ static bool reset_cm_connection_on_error(struct winbindd_domain *domain,
                                        NTSTATUS status)
 {
        if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) {
-               invalidate_cm_connection(&domain->conn);
+               invalidate_cm_connection(domain);
                /* We invalidated the connection. */
                return true;
        }
@@ -580,7 +580,7 @@ NTSTATUS _wbint_CheckMachineAccount(struct pipes_struct *p,
        }
 
 again:
-       invalidate_cm_connection(&domain->conn);
+       invalidate_cm_connection(domain);
        domain->conn.netlogon_force_reauth = true;
 
        {
index 99021aef16ade5d20a339fccb1b275f0922c5010..8454f93c03f597780956349a724b893337eca8dc 100644 (file)
@@ -1138,7 +1138,7 @@ NTSTATUS winbindd_lookup_sids(TALLOC_CTX *mem_ctx,
                 * all connections to the dc and reestablish
                 * a netlogon connection first.
                 */
-               invalidate_cm_connection(&domain->conn);
+               invalidate_cm_connection(domain);
                domain->can_do_ncacn_ip_tcp = domain->active_directory;
                if (!retried) {
                        retried = true;
@@ -1218,7 +1218,7 @@ static NTSTATUS winbindd_lookup_names(TALLOC_CTX *mem_ctx,
                 * all connections to the dc and reestablish
                 * a netlogon connection first.
                 */
-               invalidate_cm_connection(&domain->conn);
+               invalidate_cm_connection(domain);
                if (!retried) {
                        retried = true;
                        goto connect;
index 51dc2ea4f6692b75da24a55c608b2843290010f8..53519375c7fa4a3d5069003bce9202d3599fe98d 100644 (file)
@@ -1326,7 +1326,7 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
                                DEBUG(3, ("This is again a problem for this "
                                          "particular call, forcing the close "
                                          "of this connection\n"));
-                               invalidate_cm_connection(&domain->conn);
+                               invalidate_cm_connection(domain);
                        }
 
                        /* After the second retry failover to the next DC */
@@ -1411,7 +1411,7 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
                                "password was changed and we didn't know it. "
                                 "Killing connections to domain %s\n",
                                domainname));
-                       invalidate_cm_connection(&domain->conn);
+                       invalidate_cm_connection(domain);
                        retry = true;
                }
 
@@ -1434,7 +1434,7 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
                         * In order to recover from this situation, we need to
                         * drop the connection.
                         */
-                       invalidate_cm_connection(&domain->conn);
+                       invalidate_cm_connection(domain);
                        result = NT_STATUS_LOGON_FAILURE;
                        break;
                }
@@ -1446,7 +1446,7 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain,
                                "returned NT_STATUS_IO_TIMEOUT after the retry."
                                "Killing connections to domain %s\n",
                        domainname));
-               invalidate_cm_connection(&domain->conn);
+               invalidate_cm_connection(domain);
        }
        return result;
 }
index 9ba379ead492cd8006d3937805f84dc429f1ab86..77e1dbefc40ddd8d3ef500bdeefb3621cc46be36 100644 (file)
@@ -167,7 +167,7 @@ struct ndr_interface_table;
 NTSTATUS wb_open_internal_pipe(TALLOC_CTX *mem_ctx,
                               const struct ndr_interface_table *table,
                               struct rpc_pipe_client **ret_pipe);
-void invalidate_cm_connection(struct winbindd_cm_conn *conn);
+void invalidate_cm_connection(struct winbindd_domain *domain);
 void close_conns_after_fork(void);
 NTSTATUS init_dc_connection(struct winbindd_domain *domain, bool need_rw_dc);
 NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,