A few small things. Changelog: * dlls/rpcrt4: rpcrt4.spec, ndr_stubless.c, rpc_binding.c, rpc_server.c; include/rpcdce.h: Greg Turner <gmturner007@ameritech.net> - (try to) implement RpcMgmtWaitServerListen - remove duplicate RpcServerListen declaration in rpcdce.h - some TRACEs LICENSE: X11 -- gmt "It has been well said that really up-to-date liberals do not care what people do, as long as it is compulsory." -George F. Will
--- dlls/rpcrt4/rpcrt4.spec.D_PL0 2002-10-13 14:45:22.000000000 -0500 +++ dlls/rpcrt4/rpcrt4.spec 2002-10-13 14:46:05.000000000 -0500 @@ -89,7 +89,7 @@ @ stub RpcMgmtSetServerStackSize @ stub RpcMgmtStatsVectorFree @ stub RpcMgmtStopServerListening -@ stub RpcMgmtWaitServerListen +@ stdcall RpcMgmtWaitServerListen() RpcMgmtWaitServerListen @ stub RpcNetworkInqProtseqsA @ stub RpcNetworkInqProtseqsW @ stub RpcNetworkIsProtseqValidA Index: dlls/rpcrt4/ndr_stubless.c =================================================================== RCS file: /home/wine/wine/dlls/rpcrt4/ndr_stubless.c,v retrieving revision 1.1 diff -u -r1.1 ndr_stubless.c --- dlls/rpcrt4/ndr_stubless.c 10 Oct 2002 19:23:33 -0000 1.1 +++ dlls/rpcrt4/ndr_stubless.c 13 Oct 2002 19:53:29 -0000 @@ -41,7 +41,20 @@ LONG_PTR RPCRT4_NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pFormat, va_list args) { - FIXME("(%p,%p,...)\n", pStubDesc, pFormat); + + FIXME("(pStubDec == ^%p,pFormat = \"%s\",...): stub\n", pStubDesc, pFormat); + + PRPC_CLIENT_INTERFACE rpc_cli_if = (PRPC_CLIENT_INTERFACE) pStubDesc; + + 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; } Index: dlls/rpcrt4/rpc_binding.c =================================================================== RCS file: /home/wine/wine/dlls/rpcrt4/rpc_binding.c,v retrieving revision 1.1 diff -u -r1.1 rpc_binding.c --- dlls/rpcrt4/rpc_binding.c 7 Oct 2002 21:49:49 -0000 1.1 +++ dlls/rpcrt4/rpc_binding.c 13 Oct 2002 19:53:29 -0000 @@ -110,6 +110,12 @@ 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_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_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_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_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_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_CloseBinding(RpcBinding* Binding) { + TRACE(" (Binding == ^%p)\n", Binding); if (Binding->conn) { CancelIo(Binding->conn); CloseHandle(Binding->conn); Index: dlls/rpcrt4/rpc_server.c =================================================================== RCS file: /home/wine/wine/dlls/rpcrt4/rpc_server.c,v retrieving revision 1.1 diff -u -r1.1 rpc_server.c --- dlls/rpcrt4/rpc_server.c 11 Oct 2002 17:52:37 -0000 1.1 +++ dlls/rpcrt4/rpc_server.c 13 Oct 2002 19:53:30 -0000 @@ -272,6 +272,7 @@ 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 @@ 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 @@ 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; } Index: include/rpcdce.h =================================================================== RCS file: /home/wine/wine/include/rpcdce.h,v retrieving revision 1.9 diff -u -r1.9 rpcdce.h --- include/rpcdce.h 9 Aug 2002 01:11:39 -0000 1.9 +++ include/rpcdce.h 13 Oct 2002 19:53:30 -0000 @@ -170,6 +170,9 @@ 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 ); RPCRTAPI RPC_STATUS RPC_ENTRY @@ -201,9 +204,6 @@ RpcServerRegisterAuthInfoW( LPWSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, 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,