anchor.diff:  internal_error(Header, Socket, Code, Text, ExtraHeaders) ->
       siprequest:send_result(Header, Socket, "", Code, Text, ExtraHeaders).
   
  -do_process(Packet, Socket, IPlist, InPortNo, RequestFun, ResponseFun) ->
  +process(Packet, Socket, IPlist, InPortNo, RequestFun, ResponseFun) ->
       IP = siphost:makeip(IPlist),
       case parse_packet(Socket, Packet, IP, InPortNo) of
   	{{request, Method, URL, Header, Body}, LogStr} ->
  
positive.code: recvloop(Socket, RequestFun, ResponseFun) ->
      receive
  	{udp, Socket, IPlist, InPortNo, Packet} ->
  	    spawn(?MODULE, process, [Packet, Socket, IPlist, InPortNo, RequestFun, ResponseFun]),
  	    recvloop(Socket, RequestFun, ResponseFun)
      end.
  
  process(Packet, Socket, IPlist, InPortNo, RequestFun, ResponseFun) ->
      case catch do_process(Packet, Socket, IPlist, InPortNo,
  			  RequestFun, ResponseFun) of
  	{'EXIT', E} ->
  	    logger:log(error, "=ERROR REPORT==== from do_process()~n~p", [E]),
  	    IP = siphost:makeip(IPlist),
  	    logger:log(error, "CRASHED processing packet [client=~s]", [IP]),
  	    true;
  	_ ->
  	    true
  
negative.code: -module(sipserver).
  -export([start/5, process/6, get_env/1, get_env/2, make_logstr/2, safe_spawn/2, safe_spawn_child/2]).
  
  start(InitFun, RequestFun, ResponseFun, RemoteMnesiaTables, _LocalTablesP) ->
      mnesia:start(),
  