Jacek Caban : server: Use pipe stored in pipe_end in set_named_pipe_info.

Alexandre Julliard julliard at winehq.org
Thu Aug 16 13:42:50 CDT 2018


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Aug 16 15:11:32 2018 +0200

server: Use pipe stored in pipe_end in set_named_pipe_info.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 server/named_pipe.c | 40 ++++++++++------------------------------
 1 file changed, 10 insertions(+), 30 deletions(-)

diff --git a/server/named_pipe.c b/server/named_pipe.c
index e6e497b..7883a1d 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -1075,14 +1075,6 @@ static int pipe_client_ioctl( struct fd *fd, ioctl_code_t code, struct async *as
     }
 }
 
-static struct pipe_server *get_pipe_server_obj( struct process *process,
-                                obj_handle_t handle, unsigned int access )
-{
-    struct object *obj;
-    obj = get_handle_obj( process, handle, access, &pipe_server_ops );
-    return (struct pipe_server *) obj;
-}
-
 static void init_pipe_end( struct pipe_end *pipe_end, struct named_pipe *pipe,
                            unsigned int pipe_flags, data_size_t buffer_size )
 {
@@ -1387,42 +1379,30 @@ DECL_HANDLER(get_named_pipe_info)
 
 DECL_HANDLER(set_named_pipe_info)
 {
-    struct pipe_server *server;
-    struct pipe_client *client = NULL;
+    struct pipe_end *pipe_end;
 
-    server = get_pipe_server_obj( current->process, req->handle, FILE_WRITE_ATTRIBUTES );
-    if (!server)
+    pipe_end = (struct pipe_end *)get_handle_obj( current->process, req->handle,
+                                                  FILE_WRITE_ATTRIBUTES, &pipe_server_ops );
+    if (!pipe_end)
     {
         if (get_error() != STATUS_OBJECT_TYPE_MISMATCH)
             return;
 
         clear_error();
-        client = (struct pipe_client *)get_handle_obj( current->process, req->handle,
-                                                       0, &pipe_client_ops );
-        if (!client) return;
-        if (!(server = client->server))
-        {
-            release_object( client );
-            return;
-        }
+        pipe_end = (struct pipe_end *)get_handle_obj( current->process, req->handle,
+                                                      0, &pipe_client_ops );
+        if (!pipe_end) return;
     }
 
     if ((req->flags & ~(NAMED_PIPE_MESSAGE_STREAM_READ | NAMED_PIPE_NONBLOCKING_MODE)) ||
-            ((req->flags & NAMED_PIPE_MESSAGE_STREAM_READ) && !(server->pipe->flags & NAMED_PIPE_MESSAGE_STREAM_WRITE)))
+            ((req->flags & NAMED_PIPE_MESSAGE_STREAM_READ) && !(pipe_end->pipe->flags & NAMED_PIPE_MESSAGE_STREAM_WRITE)))
     {
         set_error( STATUS_INVALID_PARAMETER );
     }
-    else if (client)
-    {
-        client->pipe_end.flags = server->pipe->flags | req->flags;
-    }
     else
     {
-        server->pipe_end.flags = server->pipe->flags | req->flags;
+        pipe_end->flags = pipe_end->pipe->flags | req->flags;
     }
 
-    if (client)
-        release_object(client);
-    else
-        release_object(server);
+    release_object( pipe_end );
 }




More information about the wine-cvs mailing list