@Override
	public void handleNewPeerConnection(Socket s, byte[] peerId) {
		SharingPeer peer = this.getOrCreatePeer(peerId,
				s.getInetAddress().getHostAddress(), s.getPort());

		try {
			synchronized (peer) {
				peer.register(this);
				peer.bind(s);
			}

			this.connected.put(peer.getHexPeerId(), peer);
			peer.register(this.torrent);
			logger.info("New peer connection with " + peer +
					" [" + this.connected.size() + "/" +
					this.peers.size() + "].");
		} catch (SocketException se) {
			this.connected.remove(peer.getHexPeerId());
			logger.warn("Could not handle new peer connection " +
					"with " + peer + ": " + se.getMessage());
		}
	}