anchor.diff:      Contact = {'contact', ContactValue},
   
       % configure pre-existing route set
  -    Routes = [{'route', sip_headers:route(Route, [])} || Route <- sip_config:routes()],
  +    Routes = [{'route', sip_headers:address(<<>>, sip_uri:parse(RouteBin), [])} || RouteBin <- sip_config:routes()],
   
       #sip_message{kind = #sip_request{method = Method, uri = RequestURI},
                    headers = [Via, MaxForwards, From, To, CSeq, CallId, Contact] ++ Routes}.
  
positive.code:     send_to_next(no_more_destinations, ReqInfo2, State#sip_ua_state{requests = Transactions2}).
  
  count_via(Msg) ->
      sip_message:foldl_headers('via', fun (_Value, Acc) -> Acc + 1 end, Msg).
  
  error_to_status({timeout, _Timer}) -> 408;
  error_to_status({econnrefused, _}) -> 503;
  
negative.code: -export([handle_info/2, handle_call/3, handle_cast/2]).
  
  %% UAC/UAS callbacks
  -export([handle_request/3, handle_response/3]).
  
  %% Include files
  -include("../sip_common.hrl").
  -include("sip.hrl").
  
  -record(req_info, {request :: #sip_message{},                 % SIP request message
                     destinations = [] :: [#sip_destination{}], % list of IP addresses to try next
                     target_set2 = sip_priority_set:new(),      % URI to visit next (redirects)
                     user_data}).                               % Custom user data associated with request
  
  -spec behaviour_info(callbacks | term()) -> [{Function :: atom(), Arity :: integer()}].
  behaviour_info(callbacks) ->
      [{handle_request, 3}, {handle_response, 3} | gen_server:behaviour_info(callbacks)];
  behaviour_info(_) -> undefined.
  
  %% @doc Create request outside of the dialog according to the 8.1.1 Generating the Request
  