From 0afba3f39a83bb4b0b95925eb8d08f9e088012d2 Mon Sep 17 00:00:00 2001 From: Jon Kristensen Date: Tue, 3 Jun 2014 10:00:01 +0200 Subject: [PATCH] Parse version numbers properly; allow for >=1.1 and <2.0 versions Fixes #50. --- source/Network/Xmpp/Stream.hs | 9 ++++++--- source/Network/Xmpp/Types.hs | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/source/Network/Xmpp/Stream.hs b/source/Network/Xmpp/Stream.hs index 532699f..f23023f 100644 --- a/source/Network/Xmpp/Stream.hs +++ b/source/Network/Xmpp/Stream.hs @@ -134,10 +134,13 @@ startStream = runErrorT $ do response <- ErrorT $ runEventsSink $ streamS expectedTo case response of Right (ver, from, to, sid, lt, features) - | (Text.unpack ver) /= "1.0" -> + | versionFromText ver == Nothing -> closeStreamWithError + StreamUnsupportedVersion Nothing + "Unspecified version" + | let v = versionFromText ver + in isJust v && majorVersion (fromJust v) >= 2 -> closeStreamWithError StreamUnsupportedVersion Nothing - "Unknown version" - + "Non-1.x version" -- HACK: We ignore MUST-strength requirement (section 4.7.4. of RFC -- 6120) for the sake of compatibility with jabber.org -- | lt == Nothing -> diff --git a/source/Network/Xmpp/Types.hs b/source/Network/Xmpp/Types.hs index 2714b18..31d8174 100644 --- a/source/Network/Xmpp/Types.hs +++ b/source/Network/Xmpp/Types.hs @@ -74,6 +74,7 @@ module Network.Xmpp.Types , parseJid , TlsBehaviour(..) , AuthFailure(..) + , versionFromText ) where import Control.Applicative ((<$>), (<|>), many)