better xmpp debugging
This commit is contained in:
parent
aaec2cbf03
commit
060119fdc4
1 changed files with 20 additions and 6 deletions
|
@ -33,6 +33,10 @@ import qualified Data.Map as M
|
||||||
import qualified Git.Branch
|
import qualified Git.Branch
|
||||||
import Data.Time.Clock
|
import Data.Time.Clock
|
||||||
|
|
||||||
|
{- Whether to include verbose protocol dump in debug output. -}
|
||||||
|
protocolDebug :: Bool
|
||||||
|
protocolDebug = True
|
||||||
|
|
||||||
xmppClientThread :: UrlRenderer -> NamedThread
|
xmppClientThread :: UrlRenderer -> NamedThread
|
||||||
xmppClientThread urlrenderer = namedThread "XMPPClient" $
|
xmppClientThread urlrenderer = namedThread "XMPPClient" $
|
||||||
restartableClient . xmppClient urlrenderer =<< getAssistant id
|
restartableClient . xmppClient urlrenderer =<< getAssistant id
|
||||||
|
@ -89,10 +93,13 @@ xmppClient urlrenderer d creds =
|
||||||
|
|
||||||
receivenotifications selfjid = forever $ do
|
receivenotifications selfjid = forever $ do
|
||||||
l <- decodeStanza selfjid <$> getStanza
|
l <- decodeStanza selfjid <$> getStanza
|
||||||
-- inAssistant $ debug ["received:", show l]
|
when protocolDebug $
|
||||||
|
inAssistant $ debug ["received:", show l]
|
||||||
mapM_ (handle selfjid) l
|
mapM_ (handle selfjid) l
|
||||||
|
|
||||||
handle _ (PresenceMessage p) = void $ inAssistant $
|
handle _ (PresenceMessage p) = do
|
||||||
|
|
||||||
|
void $ inAssistant $
|
||||||
updateBuddyList (updateBuddies p) <<~ buddyList
|
updateBuddyList (updateBuddies p) <<~ buddyList
|
||||||
handle _ (GotNetMessage QueryPresence) = putStanza gitAnnexSignature
|
handle _ (GotNetMessage QueryPresence) = putStanza gitAnnexSignature
|
||||||
handle _ (GotNetMessage (NotifyPush us)) = void $ inAssistant $ pull us
|
handle _ (GotNetMessage (NotifyPush us)) = void $ inAssistant $ pull us
|
||||||
|
@ -147,7 +154,11 @@ decodeStanza _ s = [Unknown s]
|
||||||
- clients, but Pushing messages are sometimes not, and need to be exploded.
|
- clients, but Pushing messages are sometimes not, and need to be exploded.
|
||||||
-}
|
-}
|
||||||
relayNetMessage :: JID -> Assistant (XMPP ())
|
relayNetMessage :: JID -> Assistant (XMPP ())
|
||||||
relayNetMessage selfjid = convert =<< waitNetMessage
|
relayNetMessage selfjid = do
|
||||||
|
msg <- waitNetMessage
|
||||||
|
when protocolDebug $
|
||||||
|
debug ["sending:", show msg]
|
||||||
|
convert msg
|
||||||
where
|
where
|
||||||
convert (NotifyPush us) = return $ putStanza $ pushNotification us
|
convert (NotifyPush us) = return $ putStanza $ pushNotification us
|
||||||
convert QueryPresence = return $ putStanza presenceQuery
|
convert QueryPresence = return $ putStanza presenceQuery
|
||||||
|
@ -157,8 +168,11 @@ relayNetMessage selfjid = convert =<< waitNetMessage
|
||||||
convert (Pushing c pushstage) = withclient c $ \tojid -> do
|
convert (Pushing c pushstage) = withclient c $ \tojid -> do
|
||||||
if tojid == baseJID tojid
|
if tojid == baseJID tojid
|
||||||
then do
|
then do
|
||||||
bud <- getBuddy (genBuddyKey tojid) <<~ buddyList
|
clients <- maybe [] (S.toList . buddyAssistants)
|
||||||
return $ forM_ (maybe [] (S.toList . buddyAssistants) bud) $ \(Client jid) ->
|
<$> getBuddy (genBuddyKey tojid) <<~ buddyList
|
||||||
|
when protocolDebug $
|
||||||
|
debug ["exploded undirected message to clients", show clients]
|
||||||
|
return $ forM_ (clients) $ \(Client jid) ->
|
||||||
putStanza $ pushMessage pushstage jid selfjid
|
putStanza $ pushMessage pushstage jid selfjid
|
||||||
else return $ putStanza $ pushMessage pushstage tojid selfjid
|
else return $ putStanza $ pushMessage pushstage tojid selfjid
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue