From 66a3750b142cbf54bfb7318ac4e1831f3d491793 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Tue, 5 Apr 2005 19:53:07 +0000 Subject: r6219: This change allows us to fall back to authenticating without DCERPC_SCHANNEL_128 if we fail. Thus, it allows us to work with Windows NT DCs ... (This used to be commit 3034b226705c4736d57c9bf4e9470c4d44c72e8e) --- source4/librpc/rpc/dcerpc_schannel.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'source4/librpc/rpc') diff --git a/source4/librpc/rpc/dcerpc_schannel.c b/source4/librpc/rpc/dcerpc_schannel.c index 3ae2624ff9..a98ed50b9a 100644 --- a/source4/librpc/rpc/dcerpc_schannel.c +++ b/source4/librpc/rpc/dcerpc_schannel.c @@ -162,7 +162,21 @@ NTSTATUS dcerpc_bind_auth_schannel(TALLOC_CTX *tmp_ctx, DEBUG(1, ("Failed to setup credentials for account %s: %s\n", cli_credentials_get_username(credentials), nt_errstr(status))); - return status; + /* + * If we get back NT_STATUS_ACCESS_DENIED and we asked for + * DCERPC_SCHANNEL_128, then try again without + */ + if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED) && + p->conn->flags & DCERPC_SCHANNEL_128) { + DEBUG(1, ("Retrying to setup credentials without DCERPC_SCHANNEL_128\n")); + p->conn->flags &= ~DCERPC_SCHANNEL_128; + status = dcerpc_schannel_key(tmp_ctx, + p, credentials, + chan_type); + } + if (!NT_STATUS_IS_OK(status)) { + return status; + } } return dcerpc_bind_auth_password(p, uuid, version, -- cgit