anchor.diff:  %%====================================================================
   
   %%====================================================================
  +
  +%% @doc Start a request for a ConnId on Tracker.
  +%%   The given N is used as a retry-count
  +%% @end
   start_link(requestor, Tracker, N) ->
       gen_server:start_link(?MODULE, [{connid_gather, Tracker, N}], []).
   
  +%% @doc Start a normal announce-request
  +%%   We are given to whom we should reply back in From, what Tracker
  +%%   to call up, and a list of properties to send forth.
  +%% @end
   start_link(announce, From, Tracker, PL) ->
       gen_server:start_link(?MODULE, [{announce, From, Tracker, PL}], []).
   
  +%% This internal function is used to forward a working connid to an announcer
  +%% @private
   connid(Pid, ConnID) ->
       gen_server:cast(Pid, {connid, ConnID}).
   
  +%% @doc Cancel a request event process
  +%% @end
   cancel(Pid) ->
       gen_server:cast(Pid, cancel).
   
  +%% Sent when a connid expires (60 seconds per spec)
  +%% @private
   cancel_connid(Pid, ConnID) ->
       gen_server:cast(Pid, {cancel, ConnID}).
   
  +%% Used internally for the proto_decoder to inject a message to an
  +%% event handler process
  +%% @private
   msg(Pid, M) ->
       gen_server:cast(Pid, {msg, M}).
   
   %%====================================================================
  +
  +%% @private
   init([{announce, From, Tracker, PL}]) ->
       etorrent_udp_tracker_mgr:reg_announce(Tracker, PL),
       {ok, #state { tracker = Tracker, ty = announce, reply = From, properties = PL }};
  
positive.code:     etorrent_udp_tracker_mgr:reg_connid_gather(Tracker),
      {ok, #state { tracker = Tracker, ty = connid_gather, try_count = N}, 0}.
  
  %%--------------------------------------------------------------------
  %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
  %%                                      {reply, Reply, State, Timeout} |
  %%                                      {noreply, State} |
  %%                                      {noreply, State, Timeout} |
  %%                                      {stop, Reason, Reply, State} |
  %%                                      {stop, Reason, State}
  %% Description: Handling call messages
  %%--------------------------------------------------------------------
  handle_call(_Request, _From, State) ->
      Reply = ok,
      {reply, Reply, State}.
  
  %%--------------------------------------------------------------------
  %% Function: handle_cast(Msg, State) -> {noreply, State} |
  %%                                      {noreply, State, Timeout} |
  %%                                      {stop, Reason, State}
  %% Description: Handling cast messages
  %%--------------------------------------------------------------------
  handle_cast(cancel, S) ->
      {stop, normal, S};
  handle_cast({connid, ConnID}, #state { ty = announce,
  
negative.code:     ?WARN([unknown_msg, Msg]),
      {noreply, State}.
  
  %% @private
  handle_info(timeout, #state { tracker=Tracker,
  			      try_count=N,
  			      ty = announce,
  