anchor.diff:  %%           NewRequestURI = sipurl record(), this is what you should
   %%                                            use as request URI
   %%--------------------------------------------------------------------
  -process_route_header(Header, URI) when record(URI, sipurl) ->
  +process_route_header(Header, URI) when is_record(URI, sipurl) ->
       Route = sipheader:contact(keylist:fetch("Route", Header)),
       case Route of
           [{_, FirstRoute} | NewRoute1] ->
  
positive.code: %%           {senderror, Reason}
  %%           Reason = string()
  %%--------------------------------------------------------------------
  send_response_to(DefaultSocket, Response, TopVia) when record(Response, response), record(TopVia, via) ->
      {Status, Reason, HeaderIn, Body} = {Response#response.status, Response#response.reason,
  					Response#response.header, Response#response.body},
      Line1 = "SIP/2.0 " ++ integer_to_list(Status) ++ " " ++ Reason,
      Header = fix_content_length(HeaderIn, Body),
      Message = lists:flatten(Line1 ++ "\r\n" ++ sipheader:build_header(Header) ++ "\r\n" ++ Body),
      case sipdst:get_response_destination(TopVia) of
  	Dst when record(Dst, sipdst) ->
  	    case get_response_socket(DefaultSocket, Dst#sipdst.proto, Dst#sipdst.addr, Dst#sipdst.port) of
  		SendSocket when record(SendSocket, sipsocket) ->
  		    CPid = SendSocket#sipsocket.pid,
  		    logger:log(debug, "send response(top Via: ~s, send to=~s (using ~p)) :~n~s~n",
  			       [sipheader:via_print([TopVia]), sipdst:dst2str(Dst), CPid, Message]),
  
negative.code: %%
  %% Dst is URI - turn it into a list of sipdst records. First check Route header though.
  %%
  send_proxy_request(SrvTHandler, Request, URI, ViaParameters) when is_record(URI, sipurl) ->
      {ok, _, ApproxMsgSize} = check_proxy_request(Request),
      case process_route_header(Request#request.header, URI) of
  	nomatch ->
  	    case sipdst:url_to_dstlist(URI, ApproxMsgSize, URI) of
  		DstList when is_list(DstList) ->
  		    send_proxy_request(SrvTHandler, Request, DstList, ViaParameters);
  		Unknown ->
  		    logger:log(error, "Siprequest (transport layer) : Failed resolving URI ~s : ~p", [sipurl:print(URI), Unknown]),
  		    {error, "Failed resolving destination"}
  	    end;
  	{ok, _NewHeader, DstURI, ReqURI} when is_record(DstURI, sipurl), is_record(ReqURI, sipurl) ->
  	    %% XXX is it correct to just ditch NewHeader or should we stuff it into the Request
  	    %% we send to send_proxy_request()?
  	    logger:log(debug, "Siprequest (transport layer) : Routing request as per the Route header, Destination ~p, Request-URI ~p",
  		       [sipurl:print(DstURI), sipurl:print(ReqURI)]),
  	    case sipdst:url_to_dstlist(DstURI, ApproxMsgSize, ReqURI) of
  		DstList when is_list(DstList) ->
  		    send_proxy_request(SrvTHandler, Request, DstList, ViaParameters);
  		Unknown ->
  		    logger:log(error, "Siprequest (transport layer) : Failed resolving URI (from Route header) ~s : ~p", [sipurl:print(URI), Unknown]),
  