anchor.diff:  		    BranchTimeout = SecondsRemaining div length(NewDstList),
   		    logger:log(debug, "sippipe: Starting new branch ~p for next destination (~s) (timeout ~p seconds)",
   			       [NewBranch, sipdst:dst2str(FirstDst), BranchTimeout]),
  -		    case local:start_client_transaction(NewRequest, FirstDst, NewBranch, BranchTimeout) of
  -			BranchPid when is_pid(BranchPid) ->
  -			    State#state{clienttransaction_pid	= BranchPid,
  -					branch			= NewBranch,
  -					dstlist			= NewDstList
  -				       };
  -			{error, E} ->
  -			    logger:log(error, "sippipe: Failed starting client transaction : ~p", [E]),
  -			    erlang:exit(failed_starting_client_transaction)
  -		    end;
  +		    NewState =
  +			State#state{branch	= NewBranch,
  +				    dstlist	= NewDstList
  +				   },
  +		    {ok, NewRequest, FirstDst, BranchTimeout, NewState};
   		[] ->
   		    logger:log(debug, "sippipe: There are no more destinations to try for this target - " ++
   			       "telling server transaction to answer '500 No reachable destination'"),
  
positive.code:     ServerHandlerPid = transactionlayer:get_pid_from_handler(State#state.serverhandler),
  
      WarnOrEnd = lists:min([State#state.warntime, State#state.endtime]) - util:timestamp(),
      {Res, NewState} = receive
  			  {servertransaction_cancelled, ServerHandlerPid, ExtraHeaders} ->
  			      NewState1 = cancel_transaction(State, "server transaction cancelled", ExtraHeaders),
  			      {ok, NewState1};
  
  			  {branch_result, _ClientPid, _Branch, _BranchSipState, Response} ->
  			      NewState1 = process_received_response(Response, State),
  			      {ok, NewState1};
  
  			  {servertransaction_terminating, ServerHandlerPid} ->
  			      NewState1 = State#state{serverhandler=none},
  			      {quit, NewState1};
  
  			  {clienttransaction_terminating, ClientPid, _Branch} ->
  			      NewState1 = State#state{clienttransaction_pid=none},
  			      {quit, NewState1};
  
  			  {clienttransaction_terminating, _ClientPid, _Branch} ->
  			      %% An (at this time) unknown client transaction signals us that it
  			      %% has terminated. This is probably one of our previously started
  			      %% client transactions that is now finishing - just ignore the signal.
  			      {ok, State};
  
  			  Msg ->
  			      logger:log(error, "sippipe: Received unknown message ~p, ignoring", [Msg]),
  			      {error, State}
  		      after
  			  WarnOrEnd * 1000 ->
  			      warn_or_end(State, util:timestamp())
  		      end,
      case Res of
  	quit ->
  	    ok;
  
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} ->
  