anchor.diff:  %% Function: rechoke(State) -> ok
   %% Description: Recalculate the choke/unchoke state of peers
   %%--------------------------------------------------------------------
  -rechoke(S) ->
  -    Peers = build_rechoke_info(S#state.opt_unchoke_chain),
  +rechoke(Chain) ->
  +    Peers = build_rechoke_info(Chain),
       {PreferredDown, PreferredSeed} = split_preferred(Peers),
       PreferredSet = prune_preferred_peers(PreferredDown, PreferredSeed),
       ToChoke = rechoke_unchoke(Peers, PreferredSet),
  
positive.code:     %  other peers. Eventually the tracker will re-add him to the peer list
  
      % XXX: We might have to do something else
      rechoke(S),
  
      NewChain = lists:delete(Pid, S#state.opt_unchoke_chain),
      {noreply, S#state { opt_unchoke_chain = NewChain }};
  
negative.code:     % The peer shut down unexpectedly re-add him to the queue in the *back*
      case etorrent_table:get_peer_info(Pid) of
  	not_found -> ok;
  	_ -> ok = rechoke(S#state.opt_unchoke_chain)
      end,
  
      NewChain = lists:delete(Pid, S#state.opt_unchoke_chain),
  