anchor.diff:      CancelHeader5 = keylist:delete('content-type', CancelHeader4),
       CancelHeader6 = keylist:delete('content-length', CancelHeader5),
       CancelHeader = keylist:set("Content-Length", ["0"], CancelHeader6),
  -    CancelRequest = #request{method="CANCEL", uri=URI, header=CancelHeader, body=""},
  +    CancelRequest = siprequest:set_request_body(#request{method="CANCEL", uri=URI, header=CancelHeader}, <<>>),
       T1 = sipserver:get_env(timerT1, 500),
       NewState = add_timer(64 * T1, "quit after CANCEL", {terminate_transaction}, State),
       Socket = State#state.socket,
  
positive.code: 
  %%--------------------------------------------------------------------
  %% External exports
  -export([start/6]).
  
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
  
negative.code: %%           State    = state record()
  %% Descrip.: Send an ACK.
  %% Returns : NewState = state record()
  %% Note    : We do not set up any timers for retransmission since if
  %%           this ACK is lost we will receive a retransmitted response
  %%           which will effectively cause us to end up here again.
  %% Note    : We will never get called to ACK a 2xx response to INVITE,
  %%           as per section 13.2.2.4 (2xx Responses) of RFC3261 that
  %%           is handled by the UAC core, NOT the transaction layer.
  %%--------------------------------------------------------------------
  %%
  %% Status >= 100, =< 199
  