From 81189982b4b83c2bab21f6de6e840487fa7ce1a1 Mon Sep 17 00:00:00 2001 From: joe Date: Fri, 21 Feb 2014 19:34:10 -0500 Subject: TODO comments --- Presence/XMPPServer.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Presence/XMPPServer.hs') diff --git a/Presence/XMPPServer.hs b/Presence/XMPPServer.hs index 60cfec74..c037eb63 100644 --- a/Presence/XMPPServer.hs +++ b/Presence/XMPPServer.hs @@ -1089,6 +1089,9 @@ forkConnection sv xmpp k laddr pingflag src snk stanzas = do let es' = mapMaybe metadata es metadata (Left s) = Just s metadata _ = Nothing + -- TODO: Issuing RecipientUnavailable for all errors is a presence leak + -- and protocol violation + -- TODO: IDMangler can be used for better targetted error delivery. let fail stanza = do wlog $ "failed delivery: " ++ show (stanzaId stanza) quitVar <- atomically newEmptyTMVar @@ -1097,10 +1100,10 @@ forkConnection sv xmpp k laddr pingflag src snk stanzas = do -- sendReply quitVar (Error RecipientUnavailable tag) reply replyto replystanza <- stanzaFromList (Error RecipientUnavailable tag) reply xmppDeliverMessage xmpp (wlog $ "discarded error delivery fail") replystanza - -- TODO: queue or save es' stanzas for re-connect? notError s = case stanzaType s of Error {} -> False _ -> True + -- TODO: Probably some stanzas should be queued or saved for re-connect. mapM_ fail $ filter notError (maybeToList last ++ es') wlog $ "end post-queue fork: " ++ show k output <- atomically newTChan @@ -1530,6 +1533,8 @@ monitor sv params xmpp = do _ -> return () _ -> return () let deliver replyto = do + -- TODO: Issuing RecipientUnavailable for all errors is a presence leak + -- and protocol violation let fail = do wlog $ "Failed delivery id="++show (stanzaId stanza) -- TODO reply <- makeErrorStanza stanza -- cgit v1.2.3