summaryrefslogtreecommitdiff
path: root/source4/libcli
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2017-05-16 00:16:14 +0200
committerStefan Metzmacher <metze@samba.org>2017-06-17 16:48:11 +0200
commit3420a5c39125adf4bdb2089c898382fd4c041c6c (patch)
tree05e43f3a2030dbfe7f4922f20c353bd94d0da256 /source4/libcli
parent048ed2926ffe6e3c17605721e45360da6764f924 (diff)
downloadsamba-3420a5c39125adf4bdb2089c898382fd4c041c6c.tar.gz
s4:libcli/smb_composite: move session_setup_spnego_restart() to the callers of session_setup_spnego()
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/libcli')
-rw-r--r--source4/libcli/smb_composite/sesssetup.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/source4/libcli/smb_composite/sesssetup.c b/source4/libcli/smb_composite/sesssetup.c
index 5e649e448ea..6d646291bd5 100644
--- a/source4/libcli/smb_composite/sesssetup.c
+++ b/source4/libcli/smb_composite/sesssetup.c
@@ -61,6 +61,9 @@ static NTSTATUS session_setup_nt1(struct composite_context *c,
struct smbcli_session *session,
struct smb_composite_sesssetup *io,
struct smbcli_request **req);
+static NTSTATUS session_setup_spnego_restart(struct composite_context *c,
+ struct smbcli_session *session,
+ struct smb_composite_sesssetup *io);
static NTSTATUS session_setup_spnego(struct composite_context *c,
struct smbcli_session *session,
struct smb_composite_sesssetup *io,
@@ -161,6 +164,15 @@ static void request_handler(struct smbcli_request *req)
}
if (cli_credentials_failed_kerberos_login(state->io->in.credentials, principal, &state->logon_retries) ||
cli_credentials_wrong_password(state->io->in.credentials)) {
+ nt_status = session_setup_spnego_restart(c, session, state->io);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ DEBUG(1, ("session_setup_spnego_restart() failed: %s\n",
+ nt_errstr(nt_status)));
+ c->status = nt_status;
+ composite_error(c, c->status);
+ return;
+ }
+
nt_status = session_setup_spnego(c, session,
state->io,
&state->req);
@@ -557,13 +569,6 @@ static NTSTATUS session_setup_spnego(struct composite_context *c,
struct sesssetup_state *state = talloc_get_type(c->private_data, struct sesssetup_state);
NTSTATUS status;
- status = session_setup_spnego_restart(c, session, io);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(1, ("session_setup_spnego_restart() failed: %s\n",
- nt_errstr(status)));
- return status;
- }
-
state->setup.spnego.level = RAW_SESSSETUP_SPNEGO;
state->setup.spnego.in.bufsize = session->transport->options.max_xmit;
state->setup.spnego.in.mpx_max = session->transport->options.max_mux;
@@ -644,6 +649,15 @@ struct composite_context *smb_composite_sesssetup_send(struct smbcli_session *se
!(io->in.capabilities & CAP_EXTENDED_SECURITY)) {
status = session_setup_nt1(c, session, io, &state->req);
} else {
+ status = session_setup_spnego_restart(c, session, io);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(1, ("session_setup_spnego_restart() failed: %s\n",
+ nt_errstr(status)));
+ c->status = status;
+ composite_error(c, c->status);
+ return c;
+ }
+
status = session_setup_spnego(c, session, io, &state->req);
}