Commit 0debcf5b authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

rpcrt4: Handle security quality of service flags relevant to the ncacn_np protocol.

parent 4b79a025
......@@ -162,8 +162,33 @@ static RPC_STATUS rpcrt4_conn_open_pipe(RpcConnection *Connection, LPCSTR pname,
TRACE("connecting to %s\n", pname);
while (TRUE) {
DWORD dwFlags = 0;
if (Connection->QOS)
{
switch (Connection->QOS->qos->ImpersonationType)
{
dwFlags = SECURITY_SQOS_PRESENT;
case RPC_C_IMP_LEVEL_DEFAULT:
/* FIXME: what to do here? */
break;
case RPC_C_IMP_LEVEL_ANONYMOUS:
dwFlags |= SECURITY_ANONYMOUS;
break;
case RPC_C_IMP_LEVEL_IDENTIFY:
dwFlags |= SECURITY_IDENTIFICATION;
break;
case RPC_C_IMP_LEVEL_IMPERSONATE:
dwFlags |= SECURITY_IMPERSONATION;
break;
case RPC_C_IMP_LEVEL_DELEGATE:
dwFlags |= SECURITY_DELEGATION;
break;
}
if (Connection->QOS->qos->IdentityTracking == RPC_C_QOS_IDENTIFY_DYNAMIC)
dwFlags |= SECURITY_CONTEXT_TRACKING;
}
pipe = CreateFileA(pname, GENERIC_READ|GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, 0);
OPEN_EXISTING, dwFlags, 0);
if (pipe != INVALID_HANDLE_VALUE) break;
err = GetLastError();
if (err == ERROR_PIPE_BUSY) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment