anchor.diff:  	    replace_top_via(NewVia, Header)
       end.
   
  -% XXX this RFC3581 implementation is not 100% finished. RFC3581 Section 4 says we MUST
  -% send the responses to this request back from the same IP and port we received the
  -% request to. We should be able to solve this when sending responses if we keep a list
  -% of requests and sockets even for requests received over UDP too. XXX make it so.
  +%% XXX this RFC3581 implementation is not 100% finished. RFC3581 Section 4 says we MUST
  +%% send the responses to this request back from the same IP and port we received the
  +%% request to. We should be able to solve this when sending responses if we keep a list
  +%% of requests and sockets even for requests received over UDP too. XXX make it so.
   fix_topvia_rport(Header, Origin) ->
       {_, IP, Port, _} = Origin,
       {ViaProtocol, {ViaHost, ViaPort}, ViaParameters} = sipheader:topvia(Header),
  
positive.code: 	    end
      end;
  via_indicates_loop(LoopCookie, ViaSentBy, [_ | Rest]) ->
      % Via doesn't match me, check next.
      via_indicates_loop(LoopCookie, ViaSentBy, Rest).
  
  make_logstr({request, Method, URI, Header, Body}, Origin) ->
  
negative.code: 
  safe_spawn(Module, Function, Arguments) ->
      spawn(?MODULE, safe_spawn_child, [Module, Function, Arguments]).
  
  safe_spawn_child(Function, Arguments) ->
      case catch apply(Function, Arguments) of
  	{'EXIT', E} ->
  