From 960599d9837e061a0f790d1b0dffd4faa0c6cbff Mon Sep 17 00:00:00 2001 From: LDA Date: Wed, 30 Oct 2024 09:21:20 +0100 Subject: [PATCH] [FIX/ADD/WIP] Fix very silly printf, media flags --- src/Parsee/Data.c | 18 ++++++++++++++++++ src/XMPP/Component.c | 2 +- src/XMPPThread/Stanzas/Message.c | 8 +++++++- src/include/Parsee.h | 3 +++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Parsee/Data.c b/src/Parsee/Data.c index 180f389..46a31ee 100644 --- a/src/Parsee/Data.c +++ b/src/Parsee/Data.c @@ -707,3 +707,21 @@ ParseeSetChatSetting(ParseeData *data, char *chat, char *key, char *val) DbUnlock(data->db, ref); return; } +bool +ParseeIsMediaEnabled(ParseeData *data, char *chat_id) +{ + char *value; + bool ret; + if (!data || !chat_id) + { + return false; + } + + ret = !StrEquals( + (value = ParseeGetChatSetting(data, chat_id, "p.media.enabled")), + "false" + ); + Free(value); + + return ret; +} diff --git a/src/XMPP/Component.c b/src/XMPP/Component.c index 4440ff0..42e2992 100644 --- a/src/XMPP/Component.c +++ b/src/XMPP/Component.c @@ -240,7 +240,7 @@ XMPPSendStanza(XMPPComponent *comp, XMLElement *stanza, size_t max) pthread_mutex_lock(&comp->write_lock); - StreamPrintf(comp->stream, c); + StreamPrintf(comp->stream, "%s", c); StreamFlush(comp->stream); pthread_mutex_unlock(&comp->write_lock); Free(c); diff --git a/src/XMPPThread/Stanzas/Message.c b/src/XMPPThread/Stanzas/Message.c index 839b930..3c57e69 100644 --- a/src/XMPPThread/Stanzas/Message.c +++ b/src/XMPPThread/Stanzas/Message.c @@ -390,6 +390,12 @@ end_error: if (ParseeVerifyAllStanza(args, stanza) && !replaced) { XMLElement *oob, *oob_data; + char *chat_id = ParseeGetFromMUCID(args, from); + bool media_enabled = chat_id ? + ParseeIsMediaEnabled(args, chat_id) : + true ; + + Free(chat_id); pthread_mutex_unlock(&thr->info->chk_lock); @@ -405,7 +411,7 @@ end_error: /* Check if it is a media link */ oob = XMLookForTKV(stanza, "x", "xmlns", "jabber:x:oob"); - if (oob && data) + if (oob && data && media_enabled) { char *mxc, *mime = NULL; HashMap *content = NULL; diff --git a/src/include/Parsee.h b/src/include/Parsee.h index 456c4fe..30c8b61 100644 --- a/src/include/Parsee.h +++ b/src/include/Parsee.h @@ -314,6 +314,9 @@ ParseeFreeChatSettings(HashMap *settings); extern void ParseeSetChatSetting(ParseeData *data, char *chat, char *key, char *val); +extern bool +ParseeIsMediaEnabled(ParseeData *data, char *chat_id); + /* Pushes a stanza ID to a chat ID */ extern void ParseePushStanza(ParseeData *, char *chat_id, char *stanza_id, char *origin_id, char *event, char *sender); extern void ParseePushDMStanza(ParseeData *, char *room_id, char *stanza_id, char *origin_id, char *event, char *sender);