Jacek Caban : server: Don' t release client fd in do_disconnect for pipes in server-side I/O mode.

Alexandre Julliard julliard at winehq.org
Fri Mar 24 16:24:25 CDT 2017


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Mar 23 15:42:13 2017 +0100

server: Don't release client fd in do_disconnect for pipes in server-side I/O mode.

If server closes without disconnect, it should be still possible to read
remaining buffered data.

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

---

 server/named_pipe.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/server/named_pipe.c b/server/named_pipe.c
index 1e6bb4e..0dfef01 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -452,8 +452,11 @@ static void do_disconnect( struct pipe_server *server )
     {
         assert( server->client->server == server );
         assert( server->client->pipe_end.fd );
-        release_object( server->client->pipe_end.fd );
-        server->client->pipe_end.fd = NULL;
+        if (!use_server_io( &server->pipe_end ))
+        {
+            release_object( server->client->pipe_end.fd );
+            server->client->pipe_end.fd = NULL;
+        }
     }
     assert( server->pipe_end.fd );
     if (!use_server_io( &server->pipe_end ))




More information about the wine-cvs mailing list