anchor.diff:      % Handle errors returned during initial parsing of a request. These errors
       % occur before the transaction layer is notified of the requests, so there
       % are never any server transactions to handle the errors. Just send them.
  -    transportlayer:send_result(Header, Socket, "", Status, Reason, ExtraHeaders).
  +    {_, Method} = sipheader:cseq(keylist:fetch("CSeq", Header)),
  +    case Method of
  +	"ACK" ->
  +	    logger:log(normal, "Sipserver: Suppressing parsing error response ~p ~s because CSeq method is ACK",
  +			[Status, Reason]);
  +	_ ->
  +	    transportlayer:send_result(Header, Socket, "", Status, Reason, ExtraHeaders)
  +    end,
  +    ok.
   
   process_parsed_packet(Socket, {request, Method, URI, Header, Body}, Origin) ->
       NewHeader1 = fix_topvia_received(Header, Origin),
  
positive.code:     case via_indicates_loop(LoopCookie, {ViaHostname, ViaPort},
      			    sipheader:via(keylist:fetch("Via", Header))) of
  	true ->
  	    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.
  
negative.code: 	    true
      end;
  check_packet({response, Status, Reason, Header, Body}, Origin) ->
      sanity_check_contact("From", Header),
      sanity_check_contact("To", Header).
  
  check_for_loop(Header, URI, Method) ->
      LoopCookie = siprequest:get_loop_cookie(Header, URI),
  