diff --git a/examples/EchoClient.hs b/examples/EchoClient.hs index 0b1c14d..d60ebba 100644 --- a/examples/EchoClient.hs +++ b/examples/EchoClient.hs @@ -48,7 +48,7 @@ main = do return () return () --- Pull message stanzas, verify that they originate from a `full' Xmpp +-- Pull message stanzas, verify that they originate from a `full' XMPP -- address, and, if so, `echo' the message back. echo :: Xmpp () echo = forever $ do diff --git a/source/Network/Xmpp.hs b/source/Network/Xmpp.hs index 2c61395..315059a 100644 --- a/source/Network/Xmpp.hs +++ b/source/Network/Xmpp.hs @@ -191,7 +191,7 @@ connect address hostname = do XmppStreamError StreamInvalidNamespace Nothing Nothing toError (StreamInvalidStreamPrefix _prefix) = XmppStreamError StreamBadNamespacePrefix Nothing Nothing - -- TO: Catch remaining xmppStartStream errors. + -- TODO: Catch remaining xmppStartStream errors. toError (StreamWrongVersion _ver) = XmppStreamError StreamUnsupportedVersion Nothing Nothing toError (StreamWrongLangTag _) = diff --git a/source/Network/Xmpp/Concurrent/Threads.hs b/source/Network/Xmpp/Concurrent/Threads.hs index 06559a4..686964e 100644 --- a/source/Network/Xmpp/Concurrent/Threads.hs +++ b/source/Network/Xmpp/Concurrent/Threads.hs @@ -200,7 +200,7 @@ startThreads = do { connectionClosedHandler = \_ -> return () } --- | Creates and initializes a new Xmpp session. +-- | Creates and initializes a new concurrent session. newSession :: IO Session newSession = do (mC, pC, sC, hand, outC, stopThreads', writeR, conS, rdr, eh) <- startThreads diff --git a/source/Network/Xmpp/Concurrent/Types.hs b/source/Network/Xmpp/Concurrent/Types.hs index 457dc33..c5be122 100644 --- a/source/Network/Xmpp/Concurrent/Types.hs +++ b/source/Network/Xmpp/Concurrent/Types.hs @@ -19,7 +19,7 @@ import Network.Xmpp.Types -- Map between the IQ request type and the "query" namespace pair, and the TChan -- for the IQ request and "sent" boolean pair. type IQHandlers = (Map.Map (IQRequestType, Text) (TChan IQRequestTicket) - , Map.Map StanzaId (TMVar (IQResponse)) + , Map.Map StanzaId (TMVar IQResponse) ) -- Handlers to be run when the Xmpp session ends and when the Xmpp connection is @@ -65,7 +65,9 @@ instance Show Interrupt where show _ = "" instance Ex.Exception Interrupt +-- | Contains whether or not a reply has been sent, and the IQ request body to +-- reply to. data IQRequestTicket = IQRequestTicket - { sentRef :: (TVar Bool) - , iqRequestBody :: IQRequest - } + { sentRef :: (TVar Bool) + , iqRequestBody :: IQRequest + } diff --git a/source/Network/Xmpp/Sasl/StringPrep.hs b/source/Network/Xmpp/Sasl/StringPrep.hs index 0f20298..07442aa 100644 --- a/source/Network/Xmpp/Sasl/StringPrep.hs +++ b/source/Network/Xmpp/Sasl/StringPrep.hs @@ -5,44 +5,24 @@ import Text.StringPrep import qualified Data.Set as Set import Data.Text(singleton) -nonAsciiSpaces = Set.fromList [ '\x00A0','\x1680','\x2000','\x2001','\x2002' - , '\x2003', '\x2004','\x2005','\x2006','\x2007' - , '\x2008','\x2009', '\x200A','\x200B' ,'\x202F' - , '\x205F','\x3000'] +nonAsciiSpaces = Set.fromList [ '\x00A0', '\x1680', '\x2000', '\x2001', '\x2002' + , '\x2003', '\x2004', '\x2005', '\x2006', '\x2007' + , '\x2008', '\x2009', '\x200A', '\x200B', '\x202F' + , '\x205F', '\x3000' + ] toSpace x = if x `Set.member` nonAsciiSpaces then " " else singleton x saslPrepQuery = Profile [b1, toSpace] True - [ c12 - , c21 - , c22 - , c3 - , c4 - , c5 - , c6 - , c7 - , c8 - , c9 - ] + [c12, c21, c22, c3, c4, c5, c6, c7, c8, c9] True saslPrepStore = Profile [b1, toSpace] True - [ a1 - , c12 - , c21 - , c22 - , c3 - , c4 - , c5 - , c6 - , c7 - , c8 - , c9 - ] + [a1, c12, c21, c22, c3, c4, c5, c6, c7, c8, c9] True normalizePassword = runStringPrep saslPrepStore diff --git a/source/Network/Xmpp/Stream.hs b/source/Network/Xmpp/Stream.hs index b91088e..2ead3b6 100644 --- a/source/Network/Xmpp/Stream.hs +++ b/source/Network/Xmpp/Stream.hs @@ -122,9 +122,8 @@ xmppStream expectedTo = do validateData (_, _, _, _, Nothing) = throwError $ StreamWrongLangTag Nothing validateData (ver, from, to, i, Just lang) | ver /= "1.0" = throwError $ StreamWrongVersion (Just ver) - | to /= expectedTo = throwError $ StreamWrongTo (Text.pack . show <$> to) --- | lang /= expectedLang = throwError $ StreamWrongLangTag lang - | otherwise = return (from, to, i, lang) + | isJust to && to /= expectedTo = throwError $ StreamWrongTo (Text.pack . show <$> to) + | otherwise = return (from, to, i, lang) xmppStreamFeatures :: StreamSink ServerFeatures xmppStreamFeatures = do e <- lift $ elements =$ CL.head