aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber/message.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/jabber/message.c')
-rw-r--r--protocols/jabber/message.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/protocols/jabber/message.c b/protocols/jabber/message.c
index c57e6337..5a271fa8 100644
--- a/protocols/jabber/message.c
+++ b/protocols/jabber/message.c
@@ -26,6 +26,7 @@
static xt_status jabber_pkt_message_normal(struct xt_node *node, gpointer data, gboolean carbons_sent)
{
struct im_connection *ic = data;
+ struct jabber_data *jd = ic->proto_data;
char *from = xt_find_attr(node, carbons_sent ? "to" : "from");
char *type = xt_find_attr(node, "type");
char *id = xt_find_attr(node, "id");
@@ -38,6 +39,17 @@ static xt_status jabber_pkt_message_normal(struct xt_node *node, gpointer data,
return XT_HANDLED; /* Consider this packet corrupted. */
}
+ /* try to detect hipchat's own version of self-messages */
+ if (jd->flags & JFLAG_HIPCHAT) {
+ struct xt_node *c;
+
+ if ((c = xt_find_node_by_attr(node->children, "delay", "xmlns", XMLNS_DELAY)) &&
+ (s = xt_find_attr(c, "from_jid")) &&
+ jabber_compare_jid(s, jd->me)) {
+ carbons_sent = TRUE;
+ }
+ }
+
if (request && id && g_strcmp0(type, "groupchat") != 0 && !carbons_sent) {
/* Send a message receipt (XEP-0184), looking like this:
* <message from='...' id='...' to='...'>