anchor.diff:  %% URL port specified
   %%
   url_to_dstlist_not_ip(URL, ApproxMsgSize, ReqURI)
  -  when is_record(URL, sipurl), is_integer(ApproxMsgSize), URL#sipurl.port /= none ->
  +  when is_record(URL, sipurl), is_integer(ApproxMsgSize), URL#sipurl.port /= none, is_record(ReqURI, sipurl) ->
       case (URL#sipurl.proto == tls) or (URL#sipurl.proto == tls6) of
   	true ->
   	    TLS = host_port_to_dstlist(tcp, URL#sipurl.host, sipurl:get_port(URL), ReqURI),
  
positive.code: %% Descrip.: Argument is the top Via header in a response, this
  %%           function extracts the destination and protocol we
  %%           should use.
  %% Returns : {Address, Proto} | error
  %%           Address = string() that might be IPv4 address (from
  %%                     received=), IPv6 address (from received=), or
  %%                     whatever was in the host part of the Via.
  %%           Proto = atom(), tcp | udp | tcp6 | udp6 | tls | tls6
  %%--------------------------------------------------------------------
  get_response_host_proto(TopVia) when record(TopVia, via) ->
      {Protocol, Host, Parameters} = {TopVia#via.proto, TopVia#via.host, TopVia#via.param},
      ParamDict = sipheader:param_to_dict(Parameters),
      Proto = sipsocket:viaproto2proto(Protocol),
  
negative.code: %%           Proto   = atom(), tcp | udp | tcp6 | udp6 | tls | tls6
  %%           Reason  = string()
  %%--------------------------------------------------------------------
  address_to_address_and_proto(Addr, DefaultProto) when DefaultProto == tcp; DefaultProto == udp; DefaultProto == tls ->
      case inet_parse:ipv4_address(Addr) of
  	{ok, _} ->
  	    {Addr, DefaultProto};
  	_ ->
  	    case sipserver:get_env(enable_v6, false) of
  