[ros-diffs] [jgardou] 53268: [RPCRT4] - reduce difference with WINE : use their implementation of RpcMgmtStopServerListening

jgardou at svn.reactos.org jgardou at svn.reactos.org
Mon Aug 15 21:45:12 UTC 2011


Author: jgardou
Date: Mon Aug 15 21:45:12 2011
New Revision: 53268

URL: http://svn.reactos.org/svn/reactos?rev=53268&view=rev
Log:
[RPCRT4]
- reduce difference with WINE : use their implementation of RpcMgmtStopServerListening

Modified:
    trunk/reactos/dll/win32/rpcrt4/rpc_server.c

Modified: trunk/reactos/dll/win32/rpcrt4/rpc_server.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/rpc_server.c?rev=53268&r1=53267&r2=53268&view=diff
==============================================================================
--- trunk/reactos/dll/win32/rpcrt4/rpc_server.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/rpcrt4/rpc_server.c [iso-8859-1] Mon Aug 15 21:45:12 2011
@@ -1475,7 +1475,7 @@
  */
 RPC_STATUS WINAPI RpcMgmtWaitServerListen( void )
 {
-  RpcServerProtseq *cps;
+  HANDLE event;
 
   TRACE("()\n");
 
@@ -1485,15 +1485,20 @@
     LeaveCriticalSection(&listen_cs);
     return RPC_S_NOT_LISTENING;
   }
-  do {
-   LeaveCriticalSection(&listen_cs);
-    LIST_FOR_EACH_ENTRY(cps, &protseqs, RpcServerProtseq, entry)
-      WaitForSingleObject(cps->server_ready_event, INFINITE);
- 
-    EnterCriticalSection(&listen_cs);
-  } while (!std_listen);
+  if (listen_done_event) {
+    LeaveCriticalSection(&listen_cs);
+    return RPC_S_ALREADY_LISTENING;
+  }
+  event = CreateEventW( NULL, TRUE, FALSE, NULL );
+  listen_done_event = event;
 
   LeaveCriticalSection(&listen_cs);
+
+  TRACE( "waiting for server calls to finish\n" );
+  WaitForSingleObject( event, INFINITE );
+  TRACE( "done waiting\n" );
+
+  CloseHandle( event );
   return RPC_S_OK;
 }
 




More information about the Ros-diffs mailing list