Pass inherit handle flag properly for CreateNamedPipe.
diff --git a/dlls/kernel/sync.c b/dlls/kernel/sync.c
index 6a40c00..316e3d5 100644
--- a/dlls/kernel/sync.c
+++ b/dlls/kernel/sync.c
@@ -1062,6 +1062,7 @@
req->outsize = nOutBufferSize;
req->insize = nInBufferSize;
req->timeout = nDefaultTimeOut;
+ req->inherit = (attr && (attr->nLength>=sizeof(*attr)) && attr->bInheritHandle);
wine_server_add_data( req, name, len * sizeof(WCHAR) );
SetLastError(0);
if (!wine_server_call_err( req )) ret = reply->handle;
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index fa435a4..9c30d02 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -2414,6 +2414,7 @@
unsigned int outsize;
unsigned int insize;
unsigned int timeout;
+ int inherit;
/* VARARG(name,unicode_str); */
};
struct create_named_pipe_reply
@@ -3762,6 +3763,6 @@
struct set_global_windows_reply set_global_windows_reply;
};
-#define SERVER_PROTOCOL_VERSION 131
+#define SERVER_PROTOCOL_VERSION 132
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/named_pipe.c b/server/named_pipe.c
index b69eec6..0ea4e5c 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -629,7 +629,7 @@
{
server->state = ps_idle_server;
reply->handle = alloc_handle( current->process, server,
- GENERIC_READ|GENERIC_WRITE, 0 );
+ GENERIC_READ|GENERIC_WRITE, req->inherit );
server->pipe->instances++;
release_object( server );
}
diff --git a/server/protocol.def b/server/protocol.def
index f838478..ac8e0d8 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1705,6 +1705,7 @@
unsigned int outsize;
unsigned int insize;
unsigned int timeout;
+ int inherit; /* inherit flag */
VARARG(name,unicode_str); /* pipe name */
@REPLY
obj_handle_t handle; /* handle to the pipe */
diff --git a/server/trace.c b/server/trace.c
index 4319f6d..caea2d6 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -2005,6 +2005,7 @@
fprintf( stderr, " outsize=%08x,", req->outsize );
fprintf( stderr, " insize=%08x,", req->insize );
fprintf( stderr, " timeout=%08x,", req->timeout );
+ fprintf( stderr, " inherit=%d,", req->inherit );
fprintf( stderr, " name=" );
dump_varargs_unicode_str( cur_size );
}