anchor.diff:  	 get_via_branch/1,
   	 get_via_branch_full/1,
   	 remove_loop_cookie/1,
  -	 get_server_transaction_id_using_3261_response_header/1,
   	 via_is_equal/2,
   	 via_is_equal/3,
   
  
positive.code:     end.
  
  guarded_get_server_transaction_id(Request) when is_record(Request, request) ->
      R = case Request#request.method of
  	"ACK" ->
  	    % RFC3261 17.2.3, when looking for server transaction for ACK, the method of the transaction is INVITE
  	    Request#request{method="INVITE"};
  	_ ->
  	    Request
      end,
      TopVia = sipheader:topvia(R#request.header),
      Branch = get_via_branch(TopVia),
      case Branch of
  	"z9hG4bK" ++ _RestOfBranch ->
  	    guarded_get_server_transaction_id_3261(R#request.method, TopVia);
  	_ ->
  	    guarded_get_server_transaction_id_2543(R, TopVia)
      end.
  
  %%--------------------------------------------------------------------
  %% Function:
  %% Descrip.:
  %% Returns :
  %%--------------------------------------------------------------------
  get_client_transaction_id(Response) ->
      case catch guarded_get_client_transaction_id(Response) of
  	{'EXIT', E} ->
  	    logger:log(error, "=ERROR REPORT==== from get_client_transaction_id(~p) :~n~p", [Response, E]),
  
negative.code:     Header = Response#response.header,
      TopVia = sipheader:topvia(Header),
      Branch = get_via_branch(TopVia),
      {_, CSeqMethod} = sipheader:cseq(Header),
      {Branch, CSeqMethod}.
  
  %%--------------------------------------------------------------------
  %% Function: get_server_transaction_ack_id_2543(Request)
  %%           Request = request record()
  %% Descrip.: When we receive an ACK that has no RFC3261 Via branch
  %%           parameter, we use this function to get an Id that we then
  %%           look up in our transaction state database to try and find
  %%           an existing server transaction that this ACK should be
  %%           delivered to. This is specified in RFC3261 #17.2.3
  %%           (Matching Requests to Server Transactions).
  %% Returns : Id = term() | error
  %% Note    : When using this function, you have to make sure the
  %%           To-tag of this ACK matches the To-tag of the response you
  %%           think this might be the ACK for!
  %%
  %% Note    : RFC3261 #17.2.3 relevant text :
  %%           The ACK request matches a transaction if the Request-
  %%           URI, From tag, Call-ID, CSeq number (not the method),
  %%	     and top Via header field match those of the INVITE
  %%           request which created the transaction, and the To tag of
  %%           the ACK matches the To tag of the response sent by the
  %%           server transaction.
  %%
  %% Note    : We are supposed to do the comparison of for example, the
  %%           URI, according to the matching rules for URIs but that
  %%           would require us to do a full table scan for every ACK.
  %%           XXX perhaps we should divide the Id into two parts - one
  %%           that is byte-by-byte and used as table index, and another
  %%           part for elements that require more exhaustive matching.
  %%--------------------------------------------------------------------
  get_server_transaction_ack_id_2543(Request) ->
      case catch guarded_get_server_transaction_ack_id_2543(Request) of
  	{'EXIT', E} ->
  	    logger:log(error, "=ERROR REPORT==== from get_server_transaction_ack_id_2543(~p) :~n~p", [Request, E]),
  