Jacek Caban : server: Get rid of no longer used support for creating socket-based named pipes.

Alexandre Julliard julliard at winehq.org
Wed Oct 4 15:37:15 CDT 2017


Module: wine
Branch: master
Commit: 4dbb2cbfc4b28edce22df104a4e414f7e7f318de
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4dbb2cbfc4b28edce22df104a4e414f7e7f318de

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Oct  4 15:18:40 2017 +0200

server: Get rid of no longer used support for creating socket-based named pipes.

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

---

 server/named_pipe.c | 88 ++++++++++++++---------------------------------------
 1 file changed, 22 insertions(+), 66 deletions(-)

diff --git a/server/named_pipe.c b/server/named_pipe.c
index 3566663..9c11e2e 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -1091,7 +1091,8 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned
     return server;
 }
 
-static struct pipe_client *create_pipe_client( unsigned int flags, unsigned int pipe_flags, data_size_t buffer_size )
+static struct pipe_client *create_pipe_client( unsigned int flags, unsigned int pipe_flags,
+                                               data_size_t buffer_size, unsigned int options )
 {
     struct pipe_client *client;
 
@@ -1103,6 +1104,15 @@ static struct pipe_client *create_pipe_client( unsigned int flags, unsigned int
     client->flags = flags;
     init_pipe_end( &client->pipe_end, pipe_flags, buffer_size );
 
+    client->pipe_end.fd = alloc_pseudo_fd( &pipe_client_fd_ops, &client->pipe_end.obj, options );
+    if (!client->pipe_end.fd)
+    {
+        release_object( client );
+        return NULL;
+    }
+    allow_fd_caching( client->pipe_end.fd );
+    set_fd_signaled( client->pipe_end.fd, 1 );
+
     return client;
 }
 
@@ -1148,7 +1158,6 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
     struct pipe_server *server;
     struct pipe_client *client;
     unsigned int pipe_sharing;
-    int fds[2];
 
     if (!(server = find_available_server( pipe )))
     {
@@ -1165,71 +1174,18 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
         return NULL;
     }
 
-    if ((client = create_pipe_client( options, pipe->flags, pipe->outsize )))
+    if ((client = create_pipe_client( options, pipe->flags, pipe->outsize, options )))
     {
-        if (use_server_io( &server->pipe_end ))
-        {
-            client->pipe_end.fd = alloc_pseudo_fd( &pipe_client_fd_ops, &client->pipe_end.obj, options );
-            if (client->pipe_end.fd)
-            {
-                set_fd_signaled( client->pipe_end.fd, 1 );
-                server->pipe_end.fd = (struct fd *)grab_object( server->ioctl_fd );
-                set_no_fd_status( server->ioctl_fd, STATUS_BAD_DEVICE_TYPE );
-            }
-            else
-            {
-                release_object( client );
-                client = NULL;
-            }
-        }
-        else if (!socketpair( PF_UNIX, SOCK_STREAM, 0, fds ))
-        {
-            assert( !server->pipe_end.fd );
-
-            fcntl( fds[0], F_SETFL, O_NONBLOCK );
-            fcntl( fds[1], F_SETFL, O_NONBLOCK );
-
-            if (pipe->insize)
-            {
-                setsockopt( fds[0], SOL_SOCKET, SO_RCVBUF, &pipe->insize, sizeof(pipe->insize) );
-                setsockopt( fds[1], SOL_SOCKET, SO_RCVBUF, &pipe->insize, sizeof(pipe->insize) );
-            }
-            if (pipe->outsize)
-            {
-                setsockopt( fds[0], SOL_SOCKET, SO_SNDBUF, &pipe->outsize, sizeof(pipe->outsize) );
-                setsockopt( fds[1], SOL_SOCKET, SO_SNDBUF, &pipe->outsize, sizeof(pipe->outsize) );
-            }
-
-            client->pipe_end.fd = create_anonymous_fd( &pipe_client_fd_ops, fds[1], &client->pipe_end.obj, options );
-            server->pipe_end.fd = create_anonymous_fd( &pipe_server_fd_ops, fds[0], &server->pipe_end.obj, server->options );
-            if (client->pipe_end.fd && server->pipe_end.fd)
-            {
-                fd_copy_completion( server->ioctl_fd, server->pipe_end.fd );
-            }
-            else
-            {
-                release_object( client );
-                client = NULL;
-            }
-        }
-        else
-        {
-            file_set_error();
-            release_object( client );
-            client = NULL;
-        }
-        if (client)
-        {
-            allow_fd_caching( client->pipe_end.fd );
-            allow_fd_caching( server->pipe_end.fd );
-            if (server->state == ps_wait_open)
-                fd_async_wake_up( server->ioctl_fd, ASYNC_TYPE_WAIT, STATUS_SUCCESS );
-            set_server_state( server, ps_connected_server );
-            server->client = client;
-            client->server = server;
-            server->pipe_end.connection = &client->pipe_end;
-            client->pipe_end.connection = &server->pipe_end;
-        }
+        server->pipe_end.fd = (struct fd *)grab_object( server->ioctl_fd );
+        set_no_fd_status( server->ioctl_fd, STATUS_BAD_DEVICE_TYPE );
+        allow_fd_caching( server->pipe_end.fd );
+        if (server->state == ps_wait_open)
+            fd_async_wake_up( server->ioctl_fd, ASYNC_TYPE_WAIT, STATUS_SUCCESS );
+        set_server_state( server, ps_connected_server );
+        server->client = client;
+        client->server = server;
+        server->pipe_end.connection = &client->pipe_end;
+        client->pipe_end.connection = &server->pipe_end;
     }
     release_object( server );
     return &client->pipe_end.obj;




More information about the wine-cvs mailing list