anchor.diff:  %%           to send to our parent immediately. Such responses are
   %%           provisional responses (1xx) except 100, and 2xx responses
   %%           to INVITE.
  -%% Returns : {true, NewState} | {false, NewState}
  +%% Returns : {true, NewState} | false
   %%           NewState = state record()
   %%--------------------------------------------------------------------
  -%% A 100 Trying is considered an illegal response here since it is hop-by-hop and should
  -%% be 'filtered' at the transaction layer.
   forward_immediately(Method, Status, State) when is_record(State, state), Status =< 100 ->
  +    %% A 100 Trying is considered an illegal response here since it is hop-by-hop and should
  +    %% be 'filtered' at the transaction layer.
       logger:log(error, "sipproxy: Invalid response ~p to ~s", [Status, Method]),
  -    {false, State};
  +    false;
   forward_immediately(_Method, Status, State) when is_record(State, state), Status =< 199 ->
  +    %% Provisional responses (except 100) are always forwarded immediately,
  +    %% regardless of Method
       {true, State};
  -%% 2xx responses to INVITE are always forwarded immediately, regardless of final_response_sent
   forward_immediately("INVITE", Status, State) when is_record(State, state), Status =< 299 ->
  +    %% 2xx responses to INVITE are always forwarded immediately, regardless of final_response_sent
       NewState = State#state{mystate=completed, final_response_sent=true},
       {true, NewState};
   forward_immediately(_Method, Status, State) when is_record(State, state), State#state.final_response_sent /= true, Status =< 299 ->
  +    %% 2xx responses to non-INVITE are forwarded immediately unless we have already
  +    %% forwarded some other final response already (implicitly another 2xx).
       NewState = State#state{mystate=completed, final_response_sent=true},
       {true, NewState};
   forward_immediately(_Method, _Status, State) when is_record(State, state) ->
  -    {false, State}.
  +    false.
   
   %%--------------------------------------------------------------------
   %% Function: cancel_pending_if_invite_2xx_or_6xx(Method, Status,
  
positive.code: 		  %% for example Max-Forwards is 1. Pass this on to Parent and then return.
  		  logger:log(debug, "sipproxy: caught siperror throw() from check_proxy_request : ~p ~s",
  			     [Status, Reason]),
  		  util:safe_signal("sipproxy :", Parent, {sipproxy_all_terminated, self(), {Status, Reason}}),
  		  E = io_lib:format("Request could not be forked (~p ~s)", [Status, Reason]),
  		  {error, lists:flatten(E)};
  	      Unknown ->
  		  logger:log(debug, "sipproxy: check_proxy_request returned unknown result :~n~p", [Unknown]),
  		  InternalError = {500, "Server Internal Error"},
  		  util:safe_signal("sipproxy :", Parent, {sipproxy_all_terminated, self(), InternalError}),
  		  {error, "Request could not be forked"}
  	  end,
      %% Always signal Parent that we are terminating
      util:safe_signal("sipproxy :", Parent, {sipproxy_terminating, self()}),
      Res.
  
  
  
negative.code: %%
  %% AllTerminated == true, final_response_sent == false, mystate == calling or cancelled
  %%
  report_upstreams(true, #state{final_response_sent=false, mystate=MyState}=State)
    when MyState == calling; MyState == cancelled ->
      Responses = targetlist:get_responses(State#state.targets),
      logger:log(debug, "sipproxy: All targets are terminated, evaluating responses :~n~p",
  