From 2c68e00705b85174b25133c6544f65d8c0b18621 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sat, 1 Jan 2011 17:48:58 +0100 Subject: [PATCH] =?utf8?q?Parse=20protocol=20version=20from=20sone=20XML,?= =?utf8?q?=20don=E2=80=99t=20parse=20if=20unknown=20version.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../pterodactylus/sone/core/SoneDownloader.java | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java b/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java index fa0063e..4328f02 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneDownloader.java @@ -55,6 +55,9 @@ public class SoneDownloader extends AbstractService { /** The logger. */ private static final Logger logger = Logging.getLogger(SoneDownloader.class); + /** The maximum protocol version. */ + private static final int MAX_PROTOCOL_VERSION = 0; + /** The core. */ private final Core core; @@ -221,6 +224,27 @@ public class SoneDownloader extends AbstractService { return null; } + Integer protocolVersion = null; + String soneProtocolVersion = soneXml.getValue("protocol-version", null); + if (soneProtocolVersion != null) { + protocolVersion = Numbers.safeParseInteger(soneProtocolVersion); + } + if (protocolVersion == null) { + logger.log(Level.INFO, "No protocol version found, assuming 0."); + protocolVersion = 0; + } + + if (protocolVersion < 0) { + logger.log(Level.WARNING, "Invalid protocol version: " + protocolVersion + "! Not parsing Sone."); + return null; + } + + /* check for valid versions. */ + if (protocolVersion > MAX_PROTOCOL_VERSION) { + logger.log(Level.WARNING, "Unknown protocol version: " + protocolVersion + "! Not parsing Sone."); + return null; + } + String soneTime = soneXml.getValue("time", null); if (soneTime == null) { /* TODO - mark Sone as bad. */ -- 2.7.4