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 );