ref: 458a91724a672b45602ef8cbd6093b6f8c76fef6
parent: a5ac48e0d64d20fc0acef12f8639a5613a76c573
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Thu May 30 10:17:26 EDT 2024
enable message carbons if server advertises the extension
--- a/xmpp.c
+++ b/xmpp.c
@@ -72,7 +72,7 @@
if((e = xmlget(x->ch, "received")) != nil &&
ismyjid(from->v) &&
(ns = xmlgetattr(e->a, "xmlns")) != nil &&
- strncmp(ns->v, "urn:xmpp:carbons:", 17) == 0 &&
+ strcmp(ns->v, "urn:xmpp:carbons:2") == 0 &&
(e = xmlget(e->ch, "forwarded")) != nil &&
(e = xmlget(e->ch, "message")) != nil){
x = e;
@@ -151,7 +151,7 @@
iniq(Xelem *x, int fd)
{
Xelem *e;
- Xattr *a, *from, *id;
+ Xattr *a, *from, *id, *var;
int isget, isset;
a = xmlgetattr(x->a, "type");
@@ -202,6 +202,25 @@
"<query xmlns='jabber:iq:roster'/></iq>",
myjid) < 0)
return -1;
+
+ /* enable message carbons https://xmpp.org/extensions/xep-0280.html */
+ if(x->ch != nil)
+ for(e = x->ch->ch; e != nil; e = e->next){
+ if(strcmp(e->n, "feature") != 0)
+ continue;
+ if((var = xmlgetattr(e->a, "var")) == nil)
+ continue;
+ if(strcmp(var->v, "urn:xmpp:carbons:2") != 0)
+ continue;
+
+ if(fprint(pfd,
+ "<iq type='set' from='%Ӽ' id='lotsofcarbs' xmlns='jabber:client'>"
+ "<enable xmlns='urn:xmpp:carbons:2'/>"
+ "</iq>",
+ myjid) < 0)
+ return -1;
+ break;
+ }
}
}