rpcrt4: Reduce the timeout of waiting on the stop event in the server test to one...
authorRob Shearman <robertshearman@gmail.com>
Sat, 14 Jun 2008 15:42:32 +0000 (16:42 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 18 Jun 2008 11:50:01 +0000 (13:50 +0200)
The stop event should already be signaled by the time we get to that
point since we wait until the child processes terminate in the server
process and the stop event is signaled in the context of one of the
child processes.

Don't call RpcMgmtWaitServerListening if the call to
WaitForSingleObject failed since it is likely that s_stop() hasn't
been called and therefore the call to RpcMgmtWaitServerListening won't
ever return.

dlls/rpcrt4/tests/server.c

index 5f6da37711c5bb4ff3332f68598579563b15c3fa..6c0527ff0ce133bf91bd46e216fe0aa33947a399 100644 (file)
@@ -1242,6 +1242,7 @@ server(void)
   RPC_STATUS status, iptcp_status, np_status;
   RPC_STATUS (RPC_ENTRY *pRpcServerRegisterIfEx)(RPC_IF_HANDLE,UUID*,
     RPC_MGR_EPV*, unsigned int,unsigned int,RPC_IF_CALLBACK_FN*);
+  DWORD ret;
 
   iptcp_status = RpcServerUseProtseqEp(iptcp, 20, port, NULL);
   ok(iptcp_status == RPC_S_OK, "RpcServerUseProtseqEp(ncacn_ip_tcp) failed with status %ld\n", iptcp_status);
@@ -1278,10 +1279,16 @@ server(void)
     return;
   }
 
-  ok(WAIT_OBJECT_0 == WaitForSingleObject(stop_event, 60000), "WaitForSingleObject\n");
-  status = RpcMgmtWaitServerListen();
-  todo_wine {
-    ok(status == RPC_S_OK, "RpcMgmtWaitServerListening failed with status %ld\n", status);
+  ret = WaitForSingleObject(stop_event, 1000);
+  ok(WAIT_OBJECT_0 == ret, "WaitForSingleObject\n");
+  /* if the stop event didn't fire then RpcMgmtWaitServerListen will wait
+   * forever, so don't bother calling it in this case */
+  if (ret == WAIT_OBJECT_0)
+  {
+    status = RpcMgmtWaitServerListen();
+    todo_wine {
+      ok(status == RPC_S_OK, "RpcMgmtWaitServerListening failed with status %ld\n", status);
+    }
   }
 }