anchor.diff:      {_, ToURI} = sipheader:to(keylist:fetch("To", Header)),
       sanity_check_uri("To:", ToURI, Header).
   
  -check_for_loop(Header, URI) ->
  +check_for_loop(Header, URI, Method) ->
       LoopCookie = siprequest:get_loop_cookie(Header, URI),
       ViaHostname = siprequest:myhostname(),
       ViaPort = siprequest:default_port(sipserver:get_env(listenport, none)),
       case via_indicates_loop(LoopCookie, {ViaHostname, ViaPort},
       			    sipheader:via(keylist:fetch("Via", Header))) of
   	true ->
  -	    throw({sipparseerror, Header, 482, "Loop Detected"});	
  +	    case Method of
  +		"ACK" ->
  +		    logger:log(debug, "Loop detected for ACK ~s, dropping packet", [sipurl:print(URI)]),
  +		    throw({error, drop});
  +		_ ->
  +		    throw({sipparseerror, Header, 482, "Loop Detected"})
  +	    end;
   	_ ->
   	    true
       end.
  
positive.code:     end,
      case sipserver:get_env(detect_loops, true) of
  	true ->
  	    check_for_loop(Header, URI);	
  	_ ->
  	    true
      end;
  
negative.code:     case catch apply(Function, Arguments) of
  	{'EXIT', E} ->
  	    logger:log(error, "=ERROR REPORT==== from ~p :~n~p", [Function, E]),
  	    error;
  	{siperror, Status, Reason} ->
  	    logger:log(error, "Spawned function ~p generated a SIP-error (ignoring) : ~p ~s",
  			[Function, Status, Reason]),
  	    error;
  	{siperror, Status, Reason, _} ->
  	    logger:log(error, "Spawned function ~p generated a SIP-error (ignoring) : ~p ~s",
  			[Function, Status, Reason]),
  	    error;
  	_ ->
  	    true
      end.
  