anchor.diff:      % The peer shut down normally. Hence we just remove him and start up
       %  other peers. Eventually the tracker will re-add him to the peer list
       etorrent_mnesia_operations:delete_peer(Pid),
  -    {ok, NS} = start_new_peers(S),
  +    {ok, NS} = start_new_peers([], S),
       {noreply, NS};
   handle_info({'DOWN', _Ref, process, Pid, _Reason}, S) ->
       % The peer shut down unexpectedly re-add him to the queue in the *back*
  
positive.code: 		  end, Pids),
      ok.
  
  update_available_peers(IPList, S) ->
      NewList = lists:usort(IPList ++ S#state.available_peers),
      {ok, S#state{ available_peers = NewList}}.
  
  start_new_peers(S) ->
      PeersMissing = ?MAX_PEER_PROCESSES - dict:size(S#state.peer_process_dict),
      case PeersMissing > 0 of
  	true ->
  	    fill_peers(PeersMissing, S);
  	false ->
  	    {ok, S}
      end.
  
  %%% NOTE: fill_peers/2 and spawn_new_peer/5 tail calls each other.
  fill_peers(0, S) ->
  
negative.code: 	    already_enough_connections
      end.
  
  
  broadcast_have_message(Index, S) ->
      Pids = dict:fetch_keys(S#state.peer_process_dict),
      lists:foreach(fun(Pid) ->
  