Author: fireball Date: Fri Jan 11 18:28:28 2008 New Revision: 31721
URL: http://svn.reactos.org/svn/reactos?rev=31721&view=rev Log: - Merge leftovers.
Modified: trunk/reactos/dll/win32/rpcrt4/rpc_server.c trunk/reactos/dll/win32/rpcrt4/rpc_transport.c trunk/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff
Modified: trunk/reactos/dll/win32/rpcrt4/rpc_server.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/rpc_server... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/rpc_server.c (original) +++ trunk/reactos/dll/win32/rpcrt4/rpc_server.c Fri Jan 11 18:28:28 2008 @@ -1019,7 +1019,7 @@ */ RPC_STATUS WINAPI RpcMgmtWaitServerListen( void ) { - TRACE("()\n"); + RpcServerProtseq *cps;
EnterCriticalSection(&listen_cs);
@@ -1027,10 +1027,18 @@ 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); + LeaveCriticalSection(&listen_cs); - - FIXME("not waiting for server calls to finish\n");
return RPC_S_OK; }
Modified: trunk/reactos/dll/win32/rpcrt4/rpc_transport.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/rpc_transp... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/rpc_transport.c (original) +++ trunk/reactos/dll/win32/rpcrt4/rpc_transport.c Fri Jan 11 18:28:28 2008 @@ -375,7 +375,7 @@ break;
ret = GetOverlappedResult(npc->pipe, &npc->ovl[0], &bytes_read, TRUE); - if (!ret /*&& GetLastError() != ERROR_MORE_DATA*/) + if (!ret && GetLastError() != ERROR_MORE_DATA) break;
bytes_left -= bytes_read; @@ -400,7 +400,7 @@ break;
ret = GetOverlappedResult(npc->pipe, &npc->ovl[1], &bytes_written, TRUE); - if (!ret /*&& GetLastError() != ERROR_MORE_DATA*/) + if (!ret && GetLastError() != ERROR_MORE_DATA) break;
bytes_left -= bytes_written;
Modified: trunk/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/rpcrt4_ros... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff (original) +++ trunk/reactos/dll/win32/rpcrt4/rpcrt4_ros.diff Fri Jan 11 18:28:28 2008 @@ -1,5 +1,40 @@ ---- H:\Working Copies\wine\dlls\rpcrt4\rpc_transport.c Sun Jan 06 19:27:38 2008 -+++ H:\Working Copies\ReactOS\trunk\reactos\dll\win32\rpcrt4\rpc_transport.c Mon Jan 07 16:02:15 2008 +--- rpc_server.c Tue Jan 01 13:09:34 2008 ++++ rpc_server.c Fri Jan 11 15:58:57 2008 +@@ -1017,22 +1017,30 @@ + /*********************************************************************** + * RpcMgmtServerWaitListen (RPCRT4.@) + */ + RPC_STATUS WINAPI RpcMgmtWaitServerListen( void ) + { +- TRACE("()\n"); ++ RpcServerProtseq *cps; + + EnterCriticalSection(&listen_cs); + + if (!std_listen) { + LeaveCriticalSection(&listen_cs); + return RPC_S_NOT_LISTENING; + } + ++ do ++ { + LeaveCriticalSection(&listen_cs); + +- FIXME("not waiting for server calls to finish\n"); ++ LIST_FOR_EACH_ENTRY(cps, &protseqs, RpcServerProtseq, entry) ++ WaitForSingleObject(cps->server_ready_event, INFINITE); ++ ++ EnterCriticalSection(&listen_cs); ++ } while (!std_listen); ++ ++ LeaveCriticalSection(&listen_cs); + + return RPC_S_OK; + } + + /*********************************************************************** +--- rpc_transport.c Sun Jan 06 19:27:38 2008 ++++ rpc_transport.c Fri Jan 11 15:59:32 2008 @@ -54,10 +54,13 @@ #endif #ifdef HAVE_SYS_POLL_H @@ -127,7 +162,7 @@ break; + + ret = GetOverlappedResult(npc->pipe, &npc->ovl[0], &bytes_read, TRUE); -+ if (!ret /*&& GetLastError() != ERROR_MORE_DATA*/) ++ if (!ret && GetLastError() != ERROR_MORE_DATA) + break; + bytes_left -= bytes_read; @@ -148,7 +183,7 @@ break; + + ret = GetOverlappedResult(npc->pipe, &npc->ovl[1], &bytes_written, TRUE); -+ if (!ret /*&& GetLastError() != ERROR_MORE_DATA*/) ++ if (!ret && GetLastError() != ERROR_MORE_DATA) + break; + bytes_left -= bytes_written;