- (try to) implement RpcMgmtWaitServerListen

- remove duplicate RpcServerListen declaration in rpcdce.h
- some TRACEs
This commit is contained in:
Greg Turner 2002-10-18 03:56:56 +00:00 committed by Alexandre Julliard
parent 15b9ed9f61
commit 034e4df6e7
5 changed files with 63 additions and 7 deletions

View file

@ -41,7 +41,21 @@ WINE_DEFAULT_DEBUG_CHANNEL(ole);
LONG_PTR /* CLIENT_CALL_RETURN */ RPCRT4_NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pFormat, va_list args)
{
FIXME("(%p,%p,...)\n", pStubDesc, pFormat);
RPC_CLIENT_INTERFACE *rpc_cli_if = (RPC_CLIENT_INTERFACE *)(pStubDesc->RpcInterfaceInformation);
FIXME("(pStubDec == ^%p,pFormat = \"%s\",...): stub\n", pStubDesc, pFormat);
TRACE("rpc_cli_if == ^%p\n", rpc_cli_if);
if (rpc_cli_if) /* for objects this is NULL */
TRACE("rpc_cli_if: Length == %d; InterfaceID == <%s,<%d.%d>>; TransferSyntax == <%s,<%d.%d>>; DispatchTable == ^%p; RpcProtseqEndpointCount == %d; RpcProtseqEndpoint == ^%p; Flags == %d\n",
rpc_cli_if->Length,
debugstr_guid(&rpc_cli_if->InterfaceId.SyntaxGUID), rpc_cli_if->InterfaceId.SyntaxVersion.MajorVersion, rpc_cli_if->InterfaceId.SyntaxVersion.MinorVersion,
debugstr_guid(&rpc_cli_if->TransferSyntax.SyntaxGUID), rpc_cli_if->TransferSyntax.SyntaxVersion.MajorVersion, rpc_cli_if->TransferSyntax.SyntaxVersion.MinorVersion,
rpc_cli_if->DispatchTable,
rpc_cli_if->RpcProtseqEndpointCount,
rpc_cli_if->RpcProtseqEndpoint,
rpc_cli_if->Flags);
return 0;
}

View file

@ -110,6 +110,12 @@ RPC_STATUS RPCRT4_CreateBindingA(RpcBinding** Binding, BOOL server, LPSTR Protse
RPC_STATUS RPCRT4_CreateBindingW(RpcBinding** Binding, BOOL server, LPWSTR Protseq)
{
RpcBinding* NewBinding;
if (Binding)
TRACE(" (*Binding == ^%p, server == %s, Protseq == \"%s\")\n", *Binding, server ? "Yes" : "No", debugstr_w(Protseq));
else {
ERR("!RpcBinding?\n");
*((char *)0) = 0; /* we will crash below anyhow... */
}
NewBinding = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RpcBinding));
NewBinding->refs = 1;
@ -124,6 +130,9 @@ RPC_STATUS RPCRT4_CreateBindingW(RpcBinding** Binding, BOOL server, LPWSTR Prots
RPC_STATUS RPCRT4_CompleteBindingA(RpcBinding* Binding, LPSTR NetworkAddr, LPSTR Endpoint, LPSTR NetworkOptions)
{
TRACE(" (RpcBinding == ^%p, NetworkAddr == \"%s\", EndPoint == \"%s\", NetworkOptions == \"%s\")\n", Binding, NetworkAddr, Endpoint, NetworkOptions);
RPCRT4_strfree(Binding->NetworkAddr);
Binding->NetworkAddr = RPCRT4_strdupA(NetworkAddr);
RPCRT4_strfree(Binding->Endpoint);
@ -134,6 +143,10 @@ RPC_STATUS RPCRT4_CompleteBindingA(RpcBinding* Binding, LPSTR NetworkAddr, LPST
RPC_STATUS RPCRT4_CompleteBindingW(RpcBinding* Binding, LPWSTR NetworkAddr, LPWSTR Endpoint, LPWSTR NetworkOptions)
{
TRACE(" (RpcBinding == ^%p, NetworkAddr == \"%s\", EndPoint == \"%s\", NetworkOptions == \"%s\")\n", Binding,
debugstr_w(NetworkAddr), debugstr_w(Endpoint), debugstr_w(NetworkOptions));
RPCRT4_strfree(Binding->NetworkAddr);
Binding->NetworkAddr = RPCRT4_strdupWtoA(NetworkAddr);
RPCRT4_strfree(Binding->Endpoint);
@ -152,6 +165,7 @@ RPC_STATUS RPCRT4_ResolveBinding(RpcBinding* Binding, LPSTR Endpoint)
RPC_STATUS RPCRT4_SetBindingObject(RpcBinding* Binding, UUID* ObjectUuid)
{
TRACE(" (*RpcBinding == ^%p, UUID == %s)\n", Binding, debugstr_guid(ObjectUuid));
if (ObjectUuid) memcpy(&Binding->ObjectUuid, ObjectUuid, sizeof(UUID));
else UuidCreateNil(&Binding->ObjectUuid);
return RPC_S_OK;
@ -160,6 +174,13 @@ RPC_STATUS RPCRT4_SetBindingObject(RpcBinding* Binding, UUID* ObjectUuid)
RPC_STATUS RPCRT4_SpawnBinding(RpcBinding** Binding, RpcBinding* OldBinding)
{
RpcBinding* NewBinding;
if (Binding)
TRACE(" (*RpcBinding == ^%p, OldBinding == ^%p)\n", *Binding, OldBinding);
else {
ERR("!RpcBinding?");
/* we will crash below anyhow... */
*((char *)0) = 0;
}
NewBinding = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(RpcBinding));
NewBinding->refs = 1;
@ -202,6 +223,7 @@ RPC_STATUS RPCRT4_DestroyBinding(RpcBinding* Binding)
RPC_STATUS RPCRT4_OpenBinding(RpcBinding* Binding)
{
TRACE(" (Binding == ^%p)\n", Binding);
if (!Binding->conn) {
if (Binding->server) { /* server */
/* protseq=ncalrpc: supposed to use NT LPC ports,
@ -327,6 +349,7 @@ RPC_STATUS RPCRT4_OpenBinding(RpcBinding* Binding)
RPC_STATUS RPCRT4_CloseBinding(RpcBinding* Binding)
{
TRACE(" (Binding == ^%p)\n", Binding);
if (Binding->conn) {
CancelIo(Binding->conn);
CloseHandle(Binding->conn);

View file

@ -272,6 +272,7 @@ static DWORD CALLBACK RPCRT4_server_thread(LPVOID the_arg)
static void RPCRT4_start_listen(void)
{
TRACE("\n");
if (!InterlockedIncrement(&listen_count)) {
mgr_event = CreateEventA(NULL, FALSE, FALSE, NULL);
server_thread = CreateThread(NULL, 0, RPCRT4_server_thread, NULL, 0, NULL);
@ -315,6 +316,11 @@ RPC_STATUS WINAPI RpcServerInqBindings( RPC_BINDING_VECTOR** BindingVector )
RpcServerProtseq* ps;
RpcBinding* bind;
if (BindingVector)
TRACE("(*BindingVector == ^%p)\n", *BindingVector);
else
ERR("(BindingVector == ^null!!?)\n");
EnterCriticalSection(&server_cs);
/* count bindings */
count = 0;
@ -544,8 +550,21 @@ RPC_STATUS WINAPI RpcServerListen( UINT MinimumCallThreads, UINT MaxCalls, UINT
if (DontWait) return RPC_S_OK;
/* RpcMgmtWaitServerListen(); */
FIXME("can't wait yet\n");
return RpcMgmtWaitServerListen();
}
/***********************************************************************
* RpcMgmtServerWaitListen (RPCRT4.@)
*/
RPC_STATUS WINAPI RpcMgmtWaitServerListen( void )
{
TRACE("\n");
RPCRT4_start_listen();
while (listen_count > -1) {
WaitForSingleObject(mgr_event, 1000);
}
return RPC_S_OK;
}

View file

@ -89,7 +89,7 @@ init RPCRT4_LibMain
@ stub RpcMgmtSetServerStackSize
@ stub RpcMgmtStatsVectorFree
@ stub RpcMgmtStopServerListening
@ stub RpcMgmtWaitServerListen
@ stdcall RpcMgmtWaitServerListen() RpcMgmtWaitServerListen
@ stub RpcNetworkInqProtseqsA
@ stub RpcNetworkInqProtseqsW
@ stub RpcNetworkIsProtseqValidA

View file

@ -169,6 +169,9 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
RPCRTAPI RPC_STATUS RPC_ENTRY
RpcServerListen( UINT MinimumCallThreads, UINT MaxCalls, UINT DontWait );
RPCRTAPI RPC_STATUS RPC_ENTRY
RpcMgmtWaitServerListen( void );
RPCRTAPI RPC_STATUS RPC_ENTRY
RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv );
@ -202,9 +205,6 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
LPVOID Arg );
#define RpcServerRegisterAuthInfo WINELIB_NAME_AW(RpcServerRegisterAuthInfo)
RPCRTAPI RPC_STATUS RPC_ENTRY
RpcServerListen( UINT MinimumCallThreads, UINT MaxCalls, UINT DontWait );
RPCRTAPI RPC_STATUS RPC_ENTRY
RpcStringBindingComposeA( LPSTR ObjUuid, LPSTR Protseq, LPSTR NetworkAddr, LPSTR Endpoint,
LPSTR Options, LPSTR* StringBinding );