Sync to Wine-0_9_5:

Robert Shearman <rob@codeweavers.com>
- rpcrt4: Fix race condition in RpcServerListen.
  The DontWait parameter is used for forcing the function not to wait
  for the server to finish.
- rpcrt4: Implement callback conformance.

svn path=/trunk/; revision=20624
This commit is contained in:
Gé van Geldorp 2006-01-06 20:24:26 +00:00
parent 5a108e0a20
commit 8f6437a0a0
2 changed files with 12 additions and 3 deletions

View file

@ -375,9 +375,17 @@ PFORMAT_STRING ComputeConformanceOrVariance(
ptr = *(LPVOID*)ptr;
break;
case RPC_FC_CALLBACK:
{
unsigned char *old_stack_top = pStubMsg->StackTop;
pStubMsg->StackTop = ptr;
/* ofs is index into StubDesc->apfnExprEval */
FIXME("handle callback\n");
TRACE("callback conformance into apfnExprEval[%d]\n", ofs);
pStubMsg->StubDesc->apfnExprEval[ofs](pStubMsg);
pStubMsg->StackTop = old_stack_top;
goto finish_conf;
}
default:
break;
}

View file

@ -989,6 +989,9 @@ RPC_STATUS WINAPI RpcServerListen( UINT MinimumCallThreads, UINT MaxCalls, UINT
status = RPCRT4_start_listen(FALSE);
if (status == RPC_S_OK)
RPCRT4_sync_with_server_thread();
if (DontWait || (status != RPC_S_OK)) return status;
return RpcMgmtWaitServerListen();
@ -1010,8 +1013,6 @@ RPC_STATUS WINAPI RpcMgmtWaitServerListen( void )
LeaveCriticalSection(&listen_cs);
RPCRT4_sync_with_server_thread();
return RPC_S_OK;
}