From 5098b131772c6bbe4e513ac4409e34debb882042 Mon Sep 17 00:00:00 2001 From: Bernhard Loos Date: Mon, 26 Sep 2011 13:57:29 +0200 Subject: [PATCH] server: Only the sharing parameter of two instances of the same pipe have to match. --- dlls/kernel32/tests/pipe.c | 22 ++++++++++++++++++++-- server/named_pipe.c | 4 +--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c index a86baed39b8..890a50e57ef 100644 --- a/dlls/kernel32/tests/pipe.c +++ b/dlls/kernel32/tests/pipe.c @@ -374,7 +374,7 @@ static void test_CreateNamedPipe_instances_must_match(void) ok(hnp != INVALID_HANDLE_VALUE, "CreateNamedPipe failed\n"); hnp2 = CreateNamedPipe(PIPENAME, PIPE_ACCESS_INBOUND, PIPE_TYPE_BYTE | PIPE_WAIT, - /* nMaxInstances */ 1, + /* nMaxInstances */ 2, /* nOutBufSize */ 1024, /* nInBufSize */ 1024, /* nDefaultWait */ NMPWAIT_USE_DEFAULT_WAIT, @@ -384,7 +384,25 @@ static void test_CreateNamedPipe_instances_must_match(void) ok(CloseHandle(hnp), "CloseHandle\n"); - /* etc, etc */ + /* check everything else */ + hnp = CreateNamedPipe(PIPENAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_WAIT, + /* nMaxInstances */ 4, + /* nOutBufSize */ 1024, + /* nInBufSize */ 1024, + /* nDefaultWait */ NMPWAIT_USE_DEFAULT_WAIT, + /* lpSecurityAttrib */ NULL); + ok(hnp != INVALID_HANDLE_VALUE, "CreateNamedPipe failed\n"); + + hnp2 = CreateNamedPipe(PIPENAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, + /* nMaxInstances */ 3, + /* nOutBufSize */ 102, + /* nInBufSize */ 24, + /* nDefaultWait */ 1234, + /* lpSecurityAttrib */ NULL); + ok(hnp2 != INVALID_HANDLE_VALUE, "CreateNamedPipe failed\n"); + + ok(CloseHandle(hnp), "CloseHandle\n"); + ok(CloseHandle(hnp2), "CloseHandle\n"); } /** implementation of alarm() */ diff --git a/server/named_pipe.c b/server/named_pipe.c index 9a37acbeb90..0f89f5ba445 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -971,9 +971,7 @@ DECL_HANDLER(create_named_pipe) release_object( pipe ); return; } - if ((pipe->maxinstances != req->maxinstances) || - (pipe->timeout != req->timeout) || - (pipe->flags != req->flags)) + if (pipe->sharing != req->sharing) { set_error( STATUS_ACCESS_DENIED ); release_object( pipe );