anchor.diff:  %%           OrigURI     = sipurl record()
   %%           Parameters  = string()
   %%           Proto       = ???
  -%%           SrvTHandler = ???
  +%%           SrvTHandler = term(), server transaction handler
   %% Descrip.: Generate a Via header for this proxy and add it to Header
   %% Returns : NewHeader, keylist record()
   %%--------------------------------------------------------------------
  
positive.code:     FromTag = sipheader:get_tag(keylist:fetch("From", Header)),
      ToTag = sipheader:get_tag(keylist:fetch("To", Header)),
      CallId = keylist:fetch("Call-Id", Header),
      {CSeqNum, _} = sipheader:cseq(keylist:fetch("CSeq", Header)),
      ProxyReq = keylist:fetch("Proxy-Require", Header),
      %% We must remove the response part from Proxy-Authorization because it changes with the method
      %% and thus CANCEL does not match INVITE. Contradictingly but implicitly from RFC3261 16.6 #8.
  
negative.code:     {TopViaHost, TopViaPort} = case sipheader:topvia(Header) of
  				   TopVia when is_record(TopVia, via) ->
  				       P = sipsocket:viaproto2proto(TopVia#via.proto),
  				       {TopVia#via.host, list_to_integer(default_port(P, TopVia#via.port))};
  				   _ ->
  				       {myhostname(), sipserver:get_listenport(Proto)}
  			       end,
  