Correct connection releases on error path in RPC binding open

Mike Hearn mike at navi.cx
Tue Jun 15 17:34:14 CDT 2004


Mike Hearn <mike at navi.cx>
Correct connection releases on error path in RPCRT4_OpenBinding

Index: dlls/rpcrt4/rpc_binding.c
===================================================================
RCS file: /home/wine/wine/dlls/rpcrt4/rpc_binding.c,v
retrieving revision 1.25
diff -u -p -r1.25 rpc_binding.c
--- dlls/rpcrt4/rpc_binding.c	17 May 2004 21:08:31 -0000	1.25
+++ dlls/rpcrt4/rpc_binding.c	15 Jun 2004 22:33:59 -0000
@@ -514,6 +514,8 @@ RPC_STATUS RPCRT4_OpenBinding(RpcBinding
   if (!Binding->server && Binding->FromConn &&
       memcmp(&Binding->FromConn->ActiveInterface, InterfaceId,
              sizeof(RPC_SYNTAX_IDENTIFIER))) {
+
+    TRACE("releasing pre-existing connection\n");
     RPCRT4_ReleaseConnection(Binding->FromConn);
     Binding->FromConn = NULL;
   } else {
@@ -577,13 +579,13 @@ RPC_STATUS RPCRT4_OpenBinding(RpcBinding
         response_hdr->common.rpc_ver_minor != RPC_VER_MINOR ||
         response_hdr->common.ptype != PKT_BIND_ACK) {
       WARN("invalid protocol version or rejection packet\n");
-      RPCRT4_ReleaseConnection(Binding->FromConn);
+      RPCRT4_ReleaseConnection(*Connection);
       return RPC_S_PROTOCOL_ERROR;
     }
 
     if (response_hdr->bind_ack.max_tsize < RPC_MIN_PACKET_SIZE) {
       WARN("server doesn't allow large enough packets\n");
-      RPCRT4_ReleaseConnection(Binding->FromConn);
+      RPCRT4_ReleaseConnection(*Connection);
       return RPC_S_PROTOCOL_ERROR;
     }
 



More information about the wine-patches mailing list