@Override
	protected void read(InputBuffer b) throws IOException, ParsingException {
		VariableLengthIntegerMessage vLength = getMessageFactory().parseVariableLengthIntegerMessage(b);
		b = b.getSubBuffer(vLength.length());
		long length = vLength.getLong();

		if (length > Options.getInstance().getInt("protocol.maxAddrLength") || length < 0) {
			throw new ParsingException("Addr message too long: " + length + " addresses");
		}

		addresses = new ArrayList<NetworkAddressMessage>((int) length);

		for (int i = 0; i < length; i++) {
			NetworkAddressMessage nam = getMessageFactory().parseNetworkAddressMessage(b);
			addresses.add(nam);
			b = b.getSubBuffer(nam.length());
		}
	}