Changeset 1e2094e


Ignore:
Timestamp:
2015-11-23T22:09:39Z (8 years ago)
Author:
dequis <dx@…>
Parents:
ad9ac5d
Message:

hipchat: Implement their own variant of self-messages

Reuses part of the carbons code, but it's not like it at all.

To be able to receive these messages at all, a different cap node
whitelisted by them is required. I could have used one of the official
clients, but let's try to get things done the right way.

Location:
protocols/jabber
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/message.c

    rad9ac5d r1e2094e  
    2727{
    2828        struct im_connection *ic = data;
     29        struct jabber_data *jd = ic->proto_data;
    2930        char *from = xt_find_attr(node, carbons_sent ? "to" : "from");
    3031        char *type = xt_find_attr(node, "type");
     
    3738        if (!from) {
    3839                return XT_HANDLED; /* Consider this packet corrupted. */
     40        }
     41
     42        /* try to detect hipchat's own version of self-messages */
     43        if (jd->flags & JFLAG_HIPCHAT) {
     44                struct xt_node *c;
     45
     46                if ((c = xt_find_node_by_attr(node->children, "delay", "xmlns", XMLNS_DELAY)) &&
     47                    (s = xt_find_attr(c, "from_jid")) &&
     48                    jabber_compare_jid(s, jd->me)) {
     49                        carbons_sent = TRUE;
     50                }
    3951        }
    4052
  • protocols/jabber/presence.c

    rad9ac5d r1e2094e  
    222222        cap = xt_new_node("c", NULL, NULL);
    223223        xt_add_attr(cap, "xmlns", XMLNS_CAPS);
    224         xt_add_attr(cap, "node", "http://bitlbee.org/xmpp/caps");
     224
     225        if (jd->flags & JFLAG_HIPCHAT) {
     226                /* hipchat specific node, whitelisted by request to receive self-messages */
     227                xt_add_attr(cap, "node", "http://bitlbee.org/xmpp/caps/hipchat");
     228        } else {
     229                xt_add_attr(cap, "node", "http://bitlbee.org/xmpp/caps");
     230        }
    225231        xt_add_attr(cap, "ver", BITLBEE_VERSION);   /* The XEP wants this hashed, but nobody's doing that. */
    226232        xt_add_child(node, cap);
Note: See TracChangeset for help on using the changeset viewer.