Browse Source

send xml declaration

master
Jon Kristensen 14 years ago
parent
commit
f0e8e2d4eb
  1. 9
      source/Network/Xmpp/Monad.hs
  2. 6
      source/Network/Xmpp/Stream.hs

9
source/Network/Xmpp/Monad.hs

@ -40,6 +40,15 @@ pushElement x = do
pushStanza :: Stanza -> XmppConMonad Bool pushStanza :: Stanza -> XmppConMonad Bool
pushStanza = pushElement . pickleElem xpStanza pushStanza = pushElement . pickleElem xpStanza
-- XML documents and XMPP streams SHOULD be preceeded by an XML declaration.
-- UTF-8 is the only supported XMPP encoding. The standalone document
-- declaration (matching "SDDecl" in the XML standard) MUST NOT be included in
-- XMPP streams. RFC 6120 defines XMPP only in terms of XML 1.0.
pushXmlDecl :: XmppConMonad Bool
pushXmlDecl = do
sink <- gets sConPushBS
liftIO $ sink "<?xml version='1.0' encoding='UTF-8' ?>"
pushOpenElement :: Element -> XmppConMonad Bool pushOpenElement :: Element -> XmppConMonad Bool
pushOpenElement e = do pushOpenElement e = do
sink <- gets sConPushBS sink <- gets sConPushBS

6
source/Network/Xmpp/Stream.hs

@ -61,8 +61,10 @@ xmppStartStream = runErrorT $ do
hostname' <- gets sHostname hostname' <- gets sHostname
case hostname' of case hostname' of
Nothing -> throwError StreamConnectionError Nothing -> throwError StreamConnectionError
Just hostname -> lift . pushOpenElement $ Just hostname -> lift $ do
pickleElem pickleStream ("1.0", Nothing, Just hostname) pushXmlDecl
pushOpenElement $
pickleElem pickleStream ("1.0", Nothing, Just hostname)
features <- ErrorT . pullToSink $ runErrorT xmppStream features <- ErrorT . pullToSink $ runErrorT xmppStream
modify (\s -> s {sFeatures = features}) modify (\s -> s {sFeatures = features})
return () return ()

Loading…
Cancel
Save