anchor.diff:  		    NewState2 = stop_resendrequest_timer(NewState1),
   		    NewState3 = start_cancel_transaction(NewState2),
   		    NewState3;
  -		SipState ->
  +		SipState when SipState == completed; SipState == terminated ->
   		    logger:log(debug, "~s: NOT starting CANCEL transaction for request (INVITE ~s) "
   			       "since we are in state '~p'", [LogTag, sipurl:print(URI), SipState]),
   		    NewState1
  
positive.code:     LogTag = State#state.logtag,
      Request = State#state.request,
      URI = Request#request.uri,
      logger:log(debug, "~s: Request INVITE ~s timeout after ~s seconds",
  	       [LogTag, sipurl:print(URI), siptimer:timeout2str(Timeout)]),
      NewState1 = State#state{response = {408, "Request Timeout"}},
      NewState2 = perform_branchaction(tell_parent, NewState1),
      end_invite(NewState2);
  
  %%--------------------------------------------------------------------
  %% Function: process_timer2({invite_expire}, Timer, State)
  
negative.code: %% Returns : NewState = state record()
  %%--------------------------------------------------------------------
  process_timer2({invite_expire}, _Timer, State) when is_record(State, state) ->
      %% end_invite/1 will fake receiving an 408 Request Timeout if we are in sipstate 'calling',
      %% start a CANCEL transaction if we are in state 'proceeding' or don't do anything if we
      %% are in state 'completed' or 'terminated'
      end_invite(State);
  
  process_timer2(Signal, Timer, State) when is_record(State, state) ->
  