Alexandre Julliard : server: A named pipe wait can be satisfied by an idle pipe server too.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 23 08:36:28 CDT 2007


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Mar 23 14:03:23 2007 +0100

server: A named pipe wait can be satisfied by an idle pipe server too.

---

 server/named_pipe.c |   20 ++++----------------
 1 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/server/named_pipe.c b/server/named_pipe.c
index d28915a..49d319a 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -666,25 +666,13 @@ static struct pipe_client *create_pipe_client( unsigned int flags )
     return client;
 }
 
-static inline struct pipe_server *find_server( struct named_pipe *pipe, enum pipe_state state )
+static struct pipe_server *find_available_server( struct named_pipe *pipe )
 {
     struct pipe_server *server;
 
     LIST_FOR_EACH_ENTRY( server, &pipe->servers, struct pipe_server, entry )
     {
-        if (server->state == state) return (struct pipe_server *)grab_object( server );
-    }
-    return NULL;
-}
-
-static inline struct pipe_server *find_server2( struct named_pipe *pipe,
-                                                enum pipe_state state1, enum pipe_state state2 )
-{
-    struct pipe_server *server;
-
-    LIST_FOR_EACH_ENTRY( server, &pipe->servers, struct pipe_server, entry )
-    {
-        if (server->state == state1 || server->state == state2)
+        if (server->state == ps_idle_server || server->state == ps_wait_open)
             return (struct pipe_server *)grab_object( server );
     }
     return NULL;
@@ -698,7 +686,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
     struct pipe_client *client;
     int fds[2];
 
-    if (!(server = find_server2( pipe, ps_idle_server, ps_wait_open )))
+    if (!(server = find_available_server( pipe )))
     {
         set_error( STATUS_PIPE_NOT_AVAILABLE );
         return NULL;
@@ -867,7 +855,7 @@ DECL_HANDLER(wait_named_pipe)
         set_error( STATUS_PIPE_NOT_AVAILABLE );
         return;
     }
-    server = find_server( pipe, ps_wait_open );
+    server = find_available_server( pipe );
     if (!server)
     {
         if (req->timeout == NMPWAIT_WAIT_FOREVER)




More information about the wine-cvs mailing list