anchor.diff:      transactionlayer:cancel_client_transaction(State#state.clienttransaction_pid, Reason, ExtraHeaders),
       transactionlayer:send_response_handler(State#state.serverhandler, 487, "Request Cancelled"),
       State#state{cancelled = true};
  -cancel_transaction(#state{cancelled = true}=State, Reason, _ExtraHeaders) when is_list(Reason) ->
  +cancel_transaction(#state{cancelled = true} = State, Reason, _ExtraHeaders) when is_list(Reason) ->
       %% already cancelled
       State.
   
  
positive.code: 	    transactionlayer:send_response_handler(ServerHandler, 500, "Destination unreachable"),
  	    error;
  	[FirstDst | _] = DstList when is_record(FirstDst, sipdst) ->
  	    NewRequest = Request#request{uri=FirstDst#sipdst.uri},
  	    case local:start_client_transaction(NewRequest, FirstDst, Branch, Timeout) of
  		BranchPid when is_pid(BranchPid) ->
  		    final_start(Branch, ServerHandler, BranchPid, Request, DstList, Timeout, ApproxMsgSize);
  
negative.code:     %% call check_proxy_request to get sanity of proxying this request verified (Max-Forwards checked etc)
      try siprequest:check_proxy_request(RequestIn) of
  	{ok, NewHeader1, ApproxMsgSize} ->
  	    Request1 = RequestIn#request{header = NewHeader1},
  	    %% now make sure we know some destinations of this request
  	    case start_get_dstlist(ServerHandler, Request1, ApproxMsgSize, DstIn) of
  		{ok, DstList, Request} ->
  