anchor.diff:  -export([start_link/0, is_applicable/1, call/1, init/1]).
   
   %% UA callbacks
  --export([handle_call/3, handle_response/4, handle_info/2]).
  +-export([handle_call/3, handle_response/4, handle_info/2, 'BYE'/2]).
   
   %% Include files
   -include_lib("sip/include/sip.hrl").
   
   -define(SERVER, ?MODULE).
   
  --record(state, {}).
  +-record(state, {timers = []}).
   
   %%-----------------------------------------------------------------
   %% API
  
positive.code: to(Msg) ->
      #sip_hdr_address{uri = To} = sip_message:header_top_value(to, Msg),
      binary_to_list(sip_uri:format(To)).
  
  %% @doc Generate fake SDP
  %% Our UAC immediately sends BYE after 2xx response is received. Since UAC MUST
  
negative.code:     sip_ua:send_request(ACK4),
  
      % Hang up after 5 seconds
      TimerRef = erlang:send_after(5000, self(), {bye, to(Response), DialogId}),
      Timers = [{DialogId, TimerRef} | State#state.timers],
  
      {noreply, State#state{timers = Timers}};
  handle_response(#sip_request{method = 'INVITE'}, #sip_response{status = Status} = Response, RequestId, State) when Status >= 300 ->
      io:format("HANG: Got failure response ~s: ~w ~s~n",
                [to(Response), Status, binary_to_list(Response#sip_response.reason)]),
  