diff options
author | Stefan Metzmacher <metze@samba.org> | 2017-05-16 00:16:14 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2017-06-17 16:48:11 +0200 |
commit | 3420a5c39125adf4bdb2089c898382fd4c041c6c (patch) | |
tree | 05e43f3a2030dbfe7f4922f20c353bd94d0da256 /source4/libcli | |
parent | 048ed2926ffe6e3c17605721e45360da6764f924 (diff) | |
download | samba-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.c | 28 |
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); } |