Module: wine Branch: master Commit: 32169eafe23db1f8cbd65ec94d05c865bca0355e URL: https://source.winehq.org/git/wine.git/?a=commit;h=32169eafe23db1f8cbd65ec94...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Aug 8 22:01:20 2018 +0200
server: Allow pipe server fd caching throughout its whole lifetime.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/file.c | 10 ---------- server/named_pipe.c | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index b39e931..932dc7e 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -1693,16 +1693,6 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc if (!status) status = DIR_unmount_device( handle ); return status;
- case FSCTL_PIPE_DISCONNECT: - status = server_ioctl_file( handle, event, apc, apc_context, io, code, - in_buffer, in_size, out_buffer, out_size ); - if (!status) - { - int fd = server_remove_fd_from_cache( handle ); - if (fd != -1) close( fd ); - } - return status; - case FSCTL_PIPE_IMPERSONATE: FIXME("FSCTL_PIPE_IMPERSONATE: impersonating self\n"); status = RtlImpersonateSelf( SecurityImpersonation ); diff --git a/server/named_pipe.c b/server/named_pipe.c index 66e3607..768567f 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -1126,6 +1126,7 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned release_object( server ); return NULL; } + allow_fd_caching( server->pipe_end.fd ); set_fd_signaled( server->pipe_end.fd, 1 ); set_server_state( server, ps_idle_server ); return server; @@ -1218,7 +1219,6 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
if ((client = create_pipe_client( options, pipe->flags, pipe->outsize, options ))) { - allow_fd_caching( server->pipe_end.fd ); if (server->state == ps_wait_open) fd_async_wake_up( server->pipe_end.fd, ASYNC_TYPE_WAIT, STATUS_SUCCESS ); server->pipe_end.state = FILE_PIPE_CONNECTED_STATE;