anchor.diff:  -spec lookup_chunk_server(torrent_id()) -> pid().
   lookup_chunk_server(TorrentID) ->
       gproc:lookup_pid({n, l, chunk_server_key(TorrentID)}).
  +
  +-spec register_peer(torrent_id()) -> true.
  +register_peer(TorrentID) ->
  +    ChunkSrv = lookup_chunk_server(TorrentID),
  +    gen_server:call(ChunkSrv, {register_peer, self()}).
   
   chunk_server_key(TorrentID) ->
       {etorrent, TorrentID, chunk_server}.
  
positive.code:     {ok, State}.
  
  -ifdef(TEST).
  -include_lib("eunit/include/eunit.hrl").
  -define(chunk_server, ?MODULE).
  
  initial_chunk_server(ID) ->
      {ok, Pid} = ?chunk_server:start_link(ID, 1, [], [{0, 2}, {1, 2}, {2, 2}]),
      Pid.
  
  chunk_server_test_() ->
  
negative.code:         PieceIndex ->
              Chunkset    = array:get(PieceIndex, PieceChunks),
              {Offs, Len} = etorrent_chunkset:min(Chunkset),
              ?debugVal([Offs, Len, Chunkset]),
              NewChunkset = etorrent_chunkset:delete(Offs, Len, Chunkset),
              NewChunks   = array:set(PieceIndex, NewChunkset, PieceChunks),
              NewChunked  = etorrent_pieceset:insert(PieceIndex, PiecesChunked),
              %% Add the chunk to this peer's set of open requests
              OpenReqs = etorrent_monitorset:fetch(PeerPid, Peers),
              NewReqs  = gb_trees:insert({PieceIndex, Offs}, Len, OpenReqs),
              NewPeers = etorrent_monitorset:update(PeerPid, NewReqs, Peers),
  
              NewState = State#state{
                  pieces_chunked=NewChunked,
                  piece_chunks=NewChunks,
                  peer_monitors=NewPeers},
              {reply, {ok, [{PieceIndex, Offs, Len}]}, NewState}
      end;
  
  