private List<long[]> parseRangeRequest(String rangeDefStr) throws HTTPException
	{
		final int descriptorIndex = rangeDefStr.indexOf('=');
		if(descriptorIndex>0)
		{
			final String desc = rangeDefStr.substring(0,descriptorIndex).trim();
			if(!desc.equalsIgnoreCase("bytes"))
				throw HTTPException.standardException(HTTPStatus.S416_REQUEST_RANGE_NOT_SATISFIED);
			rangeDefStr=rangeDefStr.substring(descriptorIndex+1).trim();
		}
		final String[] allRangeDefs = rangeDefStr.split(",");
		final List<long[]> ranges = new LinkedList<long[]>();
		for(final String rangeDef : allRangeDefs)
		{
			final String[] rangeAZSetStrs = rangeDef.split("-");
			try
			{
				long[] rangeSetAZ;
				if(rangeAZSetStrs.length==1)
				{
					rangeSetAZ= new long[1];
				}
				else
				{
					rangeSetAZ= new long[2];
					rangeSetAZ[1] = Long.parseLong(rangeAZSetStrs[1]);
				}
				rangeSetAZ[0] = Long.parseLong(rangeAZSetStrs[0]);
				ranges.add(rangeSetAZ);
			}
			catch(final NumberFormatException e)
			{
				throw HTTPException.standardException(HTTPStatus.S416_REQUEST_RANGE_NOT_SATISFIED);
			}
		}
		if(ranges.size() > 0)
			return ranges;
		return null;
	}