anchor.diff:  	    try_to_queue_up_pieces(NS)
       end;
   handle_message(Unknown, S) ->
  -    {stop, {unknown_message, Unknown}, S}.
  -
  +    error_logger:info_report([{unknown_message, Unknown}]),
  +    {stop, normal, S}.
   
   %%--------------------------------------------------------------------
   %% Func: handle_endgame_got_chunk(Index, Offset, S) -> State
  
positive.code:        pieces_left = T#torrent.pieces,
         parent = Parent,
         local_peer_id = LocalPeerId,
         piece_set = gb_sets:new(),
         remote_request_set = gb_trees:empty(),
         info_hash = InfoHash,
         torrent_id = Id,
  
negative.code:     {ok, S};
  handle_message({have, PieceNum}, S) ->
      peer_have(PieceNum, S);
  handle_message(have_none, S) when S#state.piece_set =/= unknown ->
      {stop, normal, S};
  handle_message(have_none, S) when S#state.fast_extension =:= true ->
      Size = etorrent_torrent:num_pieces(S#state.torrent_id),
      {ok, S#state { piece_set = gb_sets:new(),
  		   pieces_left = Size,
  		   seeder = false}};
  handle_message(have_all, S) when S#state.piece_set =/= unknown ->
      {stop, normal, S};
  handle_message(have_all, S) when S#state.fast_extension =:= true ->
      Size = etorrent_torrent:num_pieces(S#state.torrent_id),
      FullSet = gb_sets:from_list(lists:seq(0, Size - 1)),
      {ok, S#state { piece_set = FullSet,
  		   pieces_left = 0,
  		   seeder = true }};
  handle_message({bitfield, _BF}, S) when S#state.piece_set =/= unknown ->
      {ok, {IP, Port}} = inet:peername(S#state.tcp_socket),
      etorrent_peer_mgr:enter_bad_peer(IP, Port, S#state.remote_peer_id),
      {stop, normal, S};
  handle_message({bitfield, BitField}, S) ->
      Size = etorrent_torrent:num_pieces(S#state.torrent_id),
      {ok, PieceSet} =
  	etorrent_peer_communication:destruct_bitfield(Size, BitField),
      Left = S#state.pieces_left - gb_sets:size(PieceSet),
      case Left of
  	0  -> ok = etorrent_peer:statechange(self(), seeder);
  	_N -> ok
      end,
      case etorrent_piece_mgr:check_interest(S#state.torrent_id, PieceSet) of
  	interested ->
  	    {ok, statechange_interested(S#state {piece_set = PieceSet,
  						 pieces_left = Left,
  						 seeder = Left == 0},
  					true)};
  	not_interested ->
  	    {ok, S#state{piece_set = PieceSet, pieces_left = Left,
  			 seeder = Left == 0}};
  	invalid_piece ->
  	    {stop, {invalid_piece_2, S#state.remote_peer_id}, S}
      end;
  handle_message({piece, Index, Offset, Data}, S) ->
      case handle_got_chunk(Index, Offset, Data, size(Data), S) of
  