r16945: Sync trunk -> 3.0 for 3.0.24 code. Still need
[tprouty/samba.git] / source / auth / auth_domain.c
index bedd318c3c3e5deaf29b7122694fdb74ca57ad84..8ad6329da9818cb6eddec2437ed17605b5d9b054 100644 (file)
@@ -50,6 +50,8 @@ static NTSTATUS connect_to_domain_password_server(struct cli_state **cli,
         NTSTATUS result;
        struct rpc_pipe_client *netlogon_pipe = NULL;
 
+       *cli = NULL;
+
        *pipe_ret = NULL;
 
        /* TODO: Send a SAMLOGON request to determine whether this is a valid
@@ -81,6 +83,11 @@ static NTSTATUS connect_to_domain_password_server(struct cli_state **cli,
                        result = NT_STATUS_NO_LOGON_SERVERS;
                }
 
+               if (*cli) {
+                       cli_shutdown(*cli);
+                       *cli = NULL;
+               }
+
                release_server_mutex();
                return result;
        }
@@ -111,6 +118,7 @@ static NTSTATUS connect_to_domain_password_server(struct cli_state **cli,
                DEBUG(0,("connect_to_domain_password_server: unable to open the domain client session to \
 machine %s. Error was : %s.\n", dc_name, nt_errstr(result)));
                cli_shutdown(*cli);
+               *cli = NULL;
                release_server_mutex();
                return result;
        }
@@ -126,6 +134,7 @@ machine %s. Error was : %s.\n", dc_name, nt_errstr(result)));
                        "trust account password for domain '%s'\n",
                                domain));
                        cli_shutdown(*cli);
+                       *cli = NULL;
                        release_server_mutex();
                        return NT_STATUS_CANT_ACCESS_DOMAIN_INFO;
                }
@@ -141,6 +150,7 @@ machine %s. Error was : %s.\n", dc_name, nt_errstr(result)));
 
                if (!NT_STATUS_IS_OK(result)) {
                        cli_shutdown(*cli);
+                       *cli = NULL;
                        release_server_mutex();
                        return result;
                }
@@ -150,6 +160,7 @@ machine %s. Error was : %s.\n", dc_name, nt_errstr(result)));
                DEBUG(0,("connect_to_domain_password_server: unable to open the domain client session to \
 machine %s. Error was : %s.\n", dc_name, cli_errstr(*cli)));
                cli_shutdown(*cli);
+               *cli = NULL;
                release_server_mutex();
                return NT_STATUS_NO_LOGON_SERVERS;
        }