public boolean rmNode(final Node n) {
		synchronized (nodes) {

			if (nodes.containsKey(n.getRemoteAddress())) {
				nodes.remove(n.getRemoteAddress());
				addresses.remove(n.getRemoteAddress());

				if (nodes.size() == 0 && closeIfEmpty) {
					close();
				}

				return true;
			} else {
				return false;
			}
		}
	}