- Merge leftovers.

svn path=/trunk/; revision=31721
This commit is contained in:
Aleksey Bragin 2008-01-11 15:28:28 +00:00
parent 139211de9f
commit 9d5c828c5a
3 changed files with 53 additions and 10 deletions

View file

@ -1019,7 +1019,7 @@ RPC_STATUS WINAPI RpcServerListen( UINT MinimumCallThreads, UINT MaxCalls, UINT
*/
RPC_STATUS WINAPI RpcMgmtWaitServerListen( void )
{
TRACE("()\n");
RpcServerProtseq *cps;
EnterCriticalSection(&listen_cs);
@ -1027,10 +1027,18 @@ RPC_STATUS WINAPI RpcMgmtWaitServerListen( void )
LeaveCriticalSection(&listen_cs);
return RPC_S_NOT_LISTENING;
}
LeaveCriticalSection(&listen_cs);
FIXME("not waiting for server calls to finish\n");
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);
return RPC_S_OK;
}

View file

@ -375,7 +375,7 @@ static int rpcrt4_conn_np_read(RpcConnection *Connection,
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 @@ static int rpcrt4_conn_np_write(RpcConnection *Connection,
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;

View file

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