Alexandre Julliard : rpcrt4: Assign a unique id to the connection instead of changing it for each message .

Alexandre Julliard julliard at winehq.org
Wed Aug 19 11:31:21 CDT 2009


Module: wine
Branch: master
Commit: e01420d72a11b11b8091d772711660586a061bbd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e01420d72a11b11b8091d772711660586a061bbd

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Aug 18 20:15:01 2009 +0200

rpcrt4: Assign a unique id to the connection instead of changing it for each message.

---

 dlls/rpcrt4/rpc_binding.h   |    1 +
 dlls/rpcrt4/rpc_message.c   |    3 +--
 dlls/rpcrt4/rpc_transport.c |    2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/rpcrt4/rpc_binding.h b/dlls/rpcrt4/rpc_binding.h
index c43b8f9..036b59a 100644
--- a/dlls/rpcrt4/rpc_binding.h
+++ b/dlls/rpcrt4/rpc_binding.h
@@ -67,6 +67,7 @@ typedef struct _RpcConnection
   TimeStamp exp;
   ULONG attr;
   RpcAuthInfo *AuthInfo;
+  ULONG auth_context_id;
   ULONG encryption_auth_len;
   ULONG signature_auth_len;
   RpcQualityOfService *QOS;
diff --git a/dlls/rpcrt4/rpc_message.c b/dlls/rpcrt4/rpc_message.c
index cddfbd5..5e7c857 100644
--- a/dlls/rpcrt4/rpc_message.c
+++ b/dlls/rpcrt4/rpc_message.c
@@ -813,14 +813,13 @@ static RPC_STATUS RPCRT4_SendWithAuth(RpcConnection *Connection, RpcPktHdr *Head
     if (Connection->AuthInfo && packet_has_auth_verifier(Header))
     {
       RpcAuthVerifier *auth_hdr = (RpcAuthVerifier *)&pkt[Header->common.frag_len - alen];
-      static LONG next_id;
 
       auth_hdr->auth_type = Connection->AuthInfo->AuthnSvc;
       auth_hdr->auth_level = Connection->AuthInfo->AuthnLevel;
       auth_hdr->auth_pad_length = auth_pad_len;
       auth_hdr->auth_reserved = 0;
       /* a unique number... */
-      auth_hdr->auth_context_id = InterlockedIncrement(&next_id);
+      auth_hdr->auth_context_id = Connection->auth_context_id;
 
       if (AuthLength)
         memcpy(auth_hdr + 1, Auth, AuthLength);
diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c
index 8e8ce16..cc43278 100644
--- a/dlls/rpcrt4/rpc_transport.c
+++ b/dlls/rpcrt4/rpc_transport.c
@@ -2800,6 +2800,7 @@ RPC_STATUS RPCRT4_CreateConnection(RpcConnection** Connection, BOOL server,
     LPCSTR Protseq, LPCSTR NetworkAddr, LPCSTR Endpoint,
     LPCWSTR NetworkOptions, RpcAuthInfo* AuthInfo, RpcQualityOfService *QOS)
 {
+  static LONG next_id;
   const struct connection_ops *ops;
   RpcConnection* NewConnection;
 
@@ -2827,6 +2828,7 @@ RPC_STATUS RPCRT4_CreateConnection(RpcConnection** Connection, BOOL server,
   NewConnection->attr = 0;
   if (AuthInfo) RpcAuthInfo_AddRef(AuthInfo);
   NewConnection->AuthInfo = AuthInfo;
+  NewConnection->auth_context_id = InterlockedIncrement( &next_id );
   NewConnection->encryption_auth_len = 0;
   NewConnection->signature_auth_len = 0;
   if (QOS) RpcQualityOfService_AddRef(QOS);




More information about the wine-cvs mailing list