Jacek Caban : server: Use pipe_end state in FSCTL_PIPE_DISCONNECT implementation.

Alexandre Julliard julliard at winehq.org
Fri Aug 17 12:33:09 CDT 2018


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Aug 17 17:40:55 2018 +0200

server: Use pipe_end state in FSCTL_PIPE_DISCONNECT implementation.

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

---

 server/named_pipe.c | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/server/named_pipe.c b/server/named_pipe.c
index bb4ea3b..80a56ae 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -1011,31 +1011,26 @@ static int pipe_server_ioctl( struct fd *fd, ioctl_code_t code, struct async *as
         return 1;
 
     case FSCTL_PIPE_DISCONNECT:
-        switch(server->state)
+        switch(server->pipe_end.state)
         {
-        case ps_connected_server:
-            assert( server->pipe_end.connection );
-
+        case FILE_PIPE_CONNECTED_STATE:
             /* dump the client connection - all data is lost */
+            assert( server->pipe_end.connection );
             release_object( server->pipe_end.connection->pipe );
             server->pipe_end.connection->pipe = NULL;
-
-            pipe_end_disconnect( &server->pipe_end, STATUS_PIPE_DISCONNECTED );
-            set_server_state( server, ps_wait_connect );
             break;
-        case ps_wait_disconnect:
-            assert( !server->pipe_end.connection );
-            pipe_end_disconnect( &server->pipe_end, STATUS_PIPE_DISCONNECTED );
-            set_server_state( server, ps_wait_connect );
+        case FILE_PIPE_CLOSING_STATE:
             break;
-        case ps_idle_server:
-        case ps_wait_open:
+        case FILE_PIPE_LISTENING_STATE:
             set_error( STATUS_PIPE_LISTENING );
             return 0;
-        case ps_wait_connect:
+        case FILE_PIPE_DISCONNECTED_STATE:
             set_error( STATUS_PIPE_DISCONNECTED );
             return 0;
         }
+
+        pipe_end_disconnect( &server->pipe_end, STATUS_PIPE_DISCONNECTED );
+        set_server_state( server, ps_wait_connect );
         return 1;
 
     default:




More information about the wine-cvs mailing list