anchor.diff:      URI = Request#request.uri,
       logger:log(debug, "~s: Request INVITE ~s timeout after ~s seconds",
   	       [LogTag, sipurl:print(URI), siptimer:timeout2str(Timeout)]),
  -    end_invite(State);
  +    NewState1 = State#state{response = {408, "Request Timeout"}},
  +    NewState2 = perform_branchaction(tell_parent, NewState1),
  +    end_invite(NewState2);
   
   %%--------------------------------------------------------------------
   %% Function: process_timer2({invite_expire}, Timer, State)
   %%           Timer = siptimer record()
   %%           State = state record()
   %% Descrip.: The extra timeout for INVITE (Timer C) has fired. End
  -%%           this INVITE transaction.
  +%%           this INVITE transaction. This is unlikely to happen,
  +%%           because the invite_timeout timeout will most likely be
  +%%           shorter than Timer C, but RFC3261 stipulates Timer C.
   %% Returns : NewState = state record()
   %%--------------------------------------------------------------------
   process_timer2({invite_expire}, _Timer, State) when is_record(State, state) ->
  +    %% XXX generate a '408 Request Timeout' for our parent (transaction user) in the same
  +    %% way as we do when we receive a 'invite_timeout'?
       end_invite(State);
   
   process_timer2(Signal, Timer, State) when is_record(State, state) ->
  
positive.code: 
      TimerList = State#state.timerlist,
      NewTimerList1 = siptimer:cancel_timers_with_appsignal({resendrequest_timeout}, TimerList),
      NewState1 = State#state{timerlist=NewTimerList1},
      %% Install TimerD with a minimum value of 32 seconds (RFC 3261 17.1.1.2)
      %% or TimerK (T4, default 5 seconds) in case of non-INVITE request (17.1.2.2)
      %% to stay alive for a few seconds collecting resends
  
negative.code: perform_branchaction(tell_parent, State) when is_record(State, state) ->
      LogTag = State#state.logtag,
      Response = State#state.response,
      {Status, Reason} = case Response of
  			   _ when is_record(Response, response) ->
  			       {Response#response.status, Response#response.reason};
  			   {Status1, Reason1} when is_integer(Status1), is_list(Reason1) ->
  			       Response
  		       end,
      Request = State#state.request,
      ReportTo = State#state.report_to,
      case util:safe_is_process_alive(ReportTo) of
  	{true, ReportTo} when is_pid(ReportTo) ->
  	    IsFinalResponse = (Status >= 200),
  	    case (IsFinalResponse == true) and (State#state.final_r_sent == true) of
  		true ->
  		    logger:log(debug, "~s: Not telling parent ~p about response '~p ~s' since we "
  			       "have already sent a final response to our parent",
  			       [LogTag, ReportTo, Status, Reason]),
  		    State;
  		false ->
  		    logger:log(debug, "~s: Client transaction telling parent ~p about response '~p ~s'",
  			       [LogTag, ReportTo, Status, Reason]),
  		    Branch = State#state.branch,
  		    SipState = State#state.sipstate,
  		    ReportTo ! {branch_result, self(), Branch, SipState, Response},
  		    if
  			IsFinalResponse ->
  			    %% Make event out of final response
  			    {Method, URI} = {Request#request.method, Request#request.uri},
  			    L = [{dst, sipdst:dst2str(State#state.dst)}],
  			    event_handler:uac_result(Branch, Method, URI, Status, Reason, L),
  			    State#state{final_r_sent = true};
  			true -> State
  		    end
  	    end;
  	{false, undefined} ->
  	    %% ReportTo == undefined, we never had a parent (typically this was a
  	    %% fire-and-forget CANCEL transaction)
  	    logger:log(debug, "~s: Independent client transaction terminating, final response : '~p ~s'",
  		       [LogTag, Status, Reason]),
  	    State;
  	{false, _} ->
  	    logger:log(error, "~s: Client transaction orphaned ('~p' not alive) - not sending "
  		       "response '~p ~s' to anyone", [LogTag, ReportTo, Status, Reason]),
  	    State
      end.
  
  %%--------------------------------------------------------------------
  %% Function: received_response_state_machine(Method, Status, State)
  