Jacek Caban : server: Allow pipe server fd caching throughout its whole lifetime.

Alexandre Julliard julliard at winehq.org
Wed Aug 15 14:39:54 CDT 2018


Module: wine
Branch: master
Commit: 32169eafe23db1f8cbd65ec94d05c865bca0355e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=32169eafe23db1f8cbd65ec94d05c865bca0355e

Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;




More information about the wine-cvs mailing list