server: Make the create_async function take an absolute timeout.
diff --git a/server/mailslot.c b/server/mailslot.c
index 3ff6b5c..57a15b5 100644
--- a/server/mailslot.c
+++ b/server/mailslot.c
@@ -249,7 +249,6 @@
                                   void *iosb, int type, int count )
 {
     struct mailslot *mailslot = get_fd_user( fd );
-    int *timeout = NULL;
 
     assert(mailslot->obj.ops == &mailslot_ops);
 
@@ -266,9 +265,14 @@
         return;
     }
 
-    if (mailslot->read_timeout != -1) timeout = &mailslot->read_timeout;
-
-    fd_queue_async_timeout( fd, apc, user, iosb, type, count, timeout );
+    if (mailslot->read_timeout != -1)
+    {
+        struct timeval when;
+        gettimeofday( &when, NULL );
+        add_timeout( &when, mailslot->read_timeout );
+        fd_queue_async_timeout( fd, apc, user, iosb, type, count, &when );
+    }
+    else fd_queue_async_timeout( fd, apc, user, iosb, type, count, NULL );
 }
 
 static void mailslot_device_dump( struct object *obj, int verbose )