anchor.diff:  unchoke(Pid) ->
       gen_server:cast(Pid, unchoke).
   
  -%% Check if we choke the peer
  -check_choke(Pid) -> gen_server:cast(Pid, check_choke).
  +%% This call is used whenever we want to check the choke state of the peer.
  +%% If it is true, we perform a rechoke request. It is probably the wrong
  +%% place to issue the rechoke request. Rather, it would be better if a
  +%% control process does this.
  +check_choke(Pid) ->
  +    gen_server:cast(Pid, check_choke).
   
   %%--------------------------------------------------------------------
   %% Func: not_interested(Pid)
  
positive.code:     end.
  
  
  perform_choke(S = #state { fast_extension = FX, choke = C}) ->
      case {FX, C} of
          {false, true} -> {noreply, S, 0};
          {false, false} ->
              ok = local_choke(S),
              send_message(choke, S#state{choke = true, requests = queue:new(),
                                          piece_cache = none});
          {true, true} -> {noreply, S, 0};
          {true, false} ->
              local_choke(S),
              {ok, NS} = send(choke, S),
              FS = empty_requests(NS),
              {noreply, FS, 0}
      end.
  
  empty_requests(S) ->
      empty_requests(queue:out(S#state.requests), S).
  
negative.code:             NQ = queue:in({Index, Offset, Len}, S#state.requests),
              {noreply, S#state{requests = NQ}, 0}
      end;
  handle_cast(stop, S) ->
      {stop, normal, S}.
  
  
  terminate(_Reason, S) ->
      _ = timer:cancel(S#state.timer),
      _ = timer:cancel(S#state.rate_timer),
  