From b9f36c3fa208e2b3a99ed4c5859a423a6aef89c0 Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Wed, 24 May 2006 23:00:34 +0100 Subject: [PATCH] rpcrt4: Implement RpcBindingCopy. --- dlls/rpcrt4/rpc_binding.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/dlls/rpcrt4/rpc_binding.c b/dlls/rpcrt4/rpc_binding.c index b1cd88e7b85..bb691f6a918 100644 --- a/dlls/rpcrt4/rpc_binding.c +++ b/dlls/rpcrt4/rpc_binding.c @@ -835,6 +835,37 @@ RPC_STATUS WINAPI I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING return RPC_S_OK; } +/*********************************************************************** + * RpcBindingCopy (RPCRT4.@) + */ +RPC_STATUS RPC_ENTRY RpcBindingCopy( + RPC_BINDING_HANDLE SourceBinding, + RPC_BINDING_HANDLE* DestinationBinding) +{ + RpcBinding *DestBinding; + RpcBinding *SrcBinding = (RpcBinding*)SourceBinding; + RPC_STATUS status; + + TRACE("(%p, %p)\n", SourceBinding, DestinationBinding); + + status = RPCRT4_AllocBinding(&DestBinding, SrcBinding->server); + if (status != RPC_S_OK) return status; + + DestBinding->ObjectUuid = SrcBinding->ObjectUuid; + DestBinding->BlockingFn = SrcBinding->BlockingFn; + DestBinding->Protseq = RPCRT4_strndupA(SrcBinding->Protseq, -1); + DestBinding->NetworkAddr = RPCRT4_strndupA(SrcBinding->NetworkAddr, -1); + DestBinding->Endpoint = RPCRT4_strndupA(SrcBinding->Endpoint, -1); + + DestBinding->FromConn = SrcBinding->FromConn; + SrcBinding->FromConn = NULL; + if (SrcBinding->AuthInfo) RpcAuthInfo_AddRef(SrcBinding->AuthInfo); + DestBinding->AuthInfo = SrcBinding->AuthInfo; + + *DestinationBinding = DestBinding; + return RPC_S_OK; +} + /*********************************************************************** * RpcImpersonateClient (RPCRT4.@) *