Rob Shearman : server: Always try return a named pipe server that is listening from find_available_server .

Alexandre Julliard julliard at winehq.org
Tue Feb 5 06:34:21 CST 2008


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

Author: Rob Shearman <rob at codeweavers.com>
Date:   Mon Feb  4 20:18:34 2008 +0000

server: Always try return a named pipe server that is listening from find_available_server.

We still fallback to an idle server, but this prevents a client from
connecting to a named pipe server that isn't listening.

---

 server/named_pipe.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/server/named_pipe.c b/server/named_pipe.c
index 659d680..6db9a7a 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -772,11 +772,20 @@ static struct pipe_server *find_available_server( struct named_pipe *pipe )
 {
     struct pipe_server *server;
 
+    /* look for pipe servers that are listening */
     LIST_FOR_EACH_ENTRY( server, &pipe->servers, struct pipe_server, entry )
     {
-        if (server->state == ps_idle_server || server->state == ps_wait_open)
+        if (server->state == ps_wait_open)
             return (struct pipe_server *)grab_object( server );
     }
+
+    /* fall back to pipe servers that are idle */
+    LIST_FOR_EACH_ENTRY( server, &pipe->servers, struct pipe_server, entry )
+    {
+        if (server->state == ps_idle_server)
+            return (struct pipe_server *)grab_object( server );
+    }
+
     return NULL;
 }
 




More information about the wine-cvs mailing list