diff --git a/modules/cpr/src/main/java/org/atmosphere/interceptor/JavaScriptProtocol.java b/modules/cpr/src/main/java/org/atmosphere/interceptor/JavaScriptProtocol.java index a3bca701508..d58bbc22318 100644 --- a/modules/cpr/src/main/java/org/atmosphere/interceptor/JavaScriptProtocol.java +++ b/modules/cpr/src/main/java/org/atmosphere/interceptor/JavaScriptProtocol.java @@ -88,7 +88,7 @@ public Action inspect(final AtmosphereResource ar) { if (enforceAtmosphereVersion) { String javascriptVersion = request.getHeader(HeaderConfig.X_ATMOSPHERE_FRAMEWORK); - int version = Integer.valueOf(javascriptVersion.split("-")[0].replace(".", "")); + int version = parseVersion(javascriptVersion.split("-")[0]); if (version < 221) { logger.error("Invalid Atmosphere Version {}", javascriptVersion); response.setStatus(501); @@ -170,6 +170,12 @@ public void onSuspend(AtmosphereResourceEvent event) { return Action.CONTINUE; } + private static int parseVersion(String version) { + // Remove any qualifier if the version is 1.2.3.qualifier + String[] parts = version.split("\\."); + return Integer.valueOf(parts[0] + parts[1] + parts[2]); + } + public String wsDelimiter() { return wsDelimiter; } @@ -192,4 +198,4 @@ public JavaScriptProtocol enforceAtmosphereVersion(boolean enforceAtmosphereVers public String toString() { return "Atmosphere JavaScript Protocol"; } -} \ No newline at end of file +}