anchor.diff:  		  E = io_lib:format("Request could not be forked (~p ~s)", [Status, Reason]),
   		  {error, lists:flatten(E)};
   	      Unknown ->
  +		  logger:log(error, "sipproxy: siprequest:check_proxy_request/1 failed"),
   		  logger:log(debug, "sipproxy: check_proxy_request returned unknown result :~n~p", [Unknown]),
   		  InternalError = {500, "Server Internal Error"},
   		  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()}),
  +    Parent ! {sipproxy_terminating, self()},
       Res.
   
   
   %%====================================================================
   %% Internal functions
   %%====================================================================
  +
  +%%--------------------------------------------------------------------
  +%% Function: start_check_actions(Actions)
  +%% Descrip.: Check that the actions supplied to our start function
  +%%           makes sense.
  +%% Returns : ok              |
  +%%           {error, Reason}
  +%%           Reason = string()
  +%%--------------------------------------------------------------------
  +start_check_actions(Actions) when is_list(Actions) ->
  +    case start_check_actions2(Actions, 0, 0) of
  +	{ok, 0, _Waits} ->
  +	    {error, "no call action(s)"};
  +	{ok, _Calls, 0} ->
  +	    {error, "no wait action(s)"};
  +	{ok, _Calls, _Waits} ->
  +	    ok
  +    end.
  +
  +start_check_actions2([#sipproxy_action{action=call} | T], Calls, Waits) ->
  +    start_check_actions2(T, Calls + 1, Waits);
  +start_check_actions2([#sipproxy_action{action=wait} | T], Calls, Waits) ->
  +    start_check_actions2(T, Calls, Waits + 1);
  +start_check_actions2([], Calls, Waits) ->
  +    {ok, Calls, Waits}.
   
   %%--------------------------------------------------------------------
   %% Function: fork(State)
  
positive.code: 	Apref == Bpref ->
  	    %% A and B is either both in the preferred list, or both NOT in the preferred list.
  	    %% Pick using numerical sort of response codes.
  	    if
  		A#sp_response.status =< B#sp_response.status ->
  		    true;
  		true ->
  		    false
  	    end;
  	Apref == true ->
  	    true;
  	true ->
  
negative.code: 			targetlist:set_state(ThisTarget, terminated);
  		    {_, {siperror, Status, SipReason}} ->
  			logger:log(error, "sipproxy: Branch with pid ~p FAILED : ~p ~s",
  				   [Pid, Status, SipReason]),
  			SPR = #sp_response{status=Status, reason=SipReason, created=true},
  			targetlist:set_endresult(ThisTarget, SPR);
  		    {_, {siperror, Status, SipReason, ExtraHeaders}} ->
  