anchor.diff:                  opt_unchoke_chain = []}).
   
   -record(rechoke_info, {pid :: pid(),
  -                       kind :: 'seeding' | 'leeching',
  -                       state :: 'seeding' | 'leeching' ,
  +                       peer_state :: 'seeding' | 'leeching', % Is the peer seeding or leeching
  +                       state :: 'seeding' | 'leeching' , % Are we seeding or leeching the torrent of the peer
                          snubbed :: boolean(),
                          r_interest_state :: 'interested' | 'not_interested',
                          r_choke_state :: 'choked' | 'unchoked' ,
  
positive.code:             end
      end.
  
  build_rechoke_info(_Seeding, []) -> [];
  build_rechoke_info(Seeding, [Pid | Next]) ->
      case etorrent_table:get_peer_info(Pid) of
          not_found -> build_rechoke_info(Seeding, Next);
          {peer_info, Kind, Id} ->
              {value, Snubbed, PeerState} = etorrent_rate_mgr:get_state(Id, Pid),
              case lookup_info(Seeding, Id, Pid) of
                  none -> build_rechoke_info(Seeding, Next);
                  {S, R} -> [#rechoke_info {
                                      pid = Pid,
                                      kind = Kind,
                                      state = S,
                                      rate = R,
                                      r_interest_state = proplists:get_value(interest_state, PeerState),
                                      r_choke_state    = proplists:get_value(choke_state, PeerState),
                                      l_choke          = proplists:get_value(local_choke, PeerState),
                                      snubbed = Snubbed } |
                              build_rechoke_info(Seeding, Next)]
              end
  
negative.code:     etorrent_peer_control:choke(P#rechoke_info.pid),
      rechoke_choke(Next, Count, Optimistics);
  rechoke_choke([P | Next], Count, Optimistics) ->
      case P#rechoke_info.peer_state =:= seeding of
          true ->
              etorrent_peer_control:choke(P#rechoke_info.pid),
              rechoke_choke(Next, Count, Optimistics);
  