server: Make the create_async function take an absolute timeout.
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 5c4da77..202cf68 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -868,18 +868,18 @@
     }
     else
     {
-        int timeout;
-        if (req->timeout == NMPWAIT_USE_DEFAULT_WAIT)
-            timeout = pipe->timeout;
-        else
-            timeout = req->timeout;
-
         if (req->timeout == NMPWAIT_WAIT_FOREVER)
             create_async( current, NULL, &pipe->waiters,
                           req->func, req->event, NULL );
         else
-            create_async( current, &timeout, &pipe->waiters,
-                          req->func, req->event, NULL );
+        {
+            struct timeval when;
+
+            gettimeofday( &when, NULL );
+            if (req->timeout == NMPWAIT_USE_DEFAULT_WAIT) add_timeout( &when, pipe->timeout );
+            else add_timeout( &when, req->timeout );
+            create_async( current, &when, &pipe->waiters, req->func, req->event, NULL );
+        }
     }
 
     release_object( pipe );