145
edits
Line 18: | Line 18: | ||
Before processing a Carbon, the client must determine whether the message was a MUC-PM or a regular chat message (this might require an IQ round-trip to the sending entity). | Before processing a Carbon, the client must determine whether the message was a MUC-PM or a regular chat message (this might require an IQ round-trip to the sending entity). | ||
Possible MUC-PM resolution, "partner" is the sender JID of "received" and the recipient JID of "sent" Carbons: | |||
# If the forwarded message contains an <tt><x xmlns='http://jabber.org/protocol/muc'></tt> payload, it's a PM | |||
# If the partner's bare JID is a known MUC (joined, listed in bookmarks), it's a PM | |||
# If the partner's bare JID is in the roster, it's *probably* a normal message (shakes fist at Gajim) | |||
# If still undetermined, send a <tt>disco#info</tt> IQ to the partner's bare JID and delay processing of the Carbon (yes, ewwww!) | |||
# If the <tt>disco#info</tt> response contains <tt><feature var='http://jabber.org/protocol/muc'/></tt> then it's a PM, otherwise it's a normal message. Cache the disco result for next time! | |||
For regular messsages, the client should process the Carbon similarly to a normal message (it might modify notification behavior, but this is not guaranteed to work). | For regular messsages, the client should process the Carbon similarly to a normal message (it might modify notification behavior, but this is not guaranteed to work). | ||
= Handling of MUC-PMs = | = Handling of MUC-PMs = |