diff --git a/src/MatrixEventHandler.c b/src/MatrixEventHandler.c index 85e816f..f289af8 100644 --- a/src/MatrixEventHandler.c +++ b/src/MatrixEventHandler.c @@ -368,7 +368,8 @@ end: void ParseeEventHandler(ParseeData *data, HashMap *event) { - char *event_type, *event_id, *room_id; + char *event_type, *event_id, *room_id, *sender; + char *parsee = ParseeMXID(data); if (!data || !event) { return; @@ -377,11 +378,13 @@ ParseeEventHandler(ParseeData *data, HashMap *event) event_type = GrabString(event, 1, "type"); event_id = GrabString(event, 1, "event_id"); room_id = GrabString(event, 1, "room_id"); + sender = GrabString(event, 1, "sender"); ParseePushHeadTable(room_id, event_id); if (StrEquals(event_type, "m.room.member")) { ParseeMemberHandler(data, event); + Free(parsee); return; } else if (StrEquals(event_type, "m.room.message") || @@ -389,9 +392,11 @@ ParseeEventHandler(ParseeData *data, HashMap *event) * support here... */ { ParseeMessageHandler(data, event); + Free(parsee); return; } - else if (StrEquals(event_type, "m.room.redaction")) + else if (StrEquals(event_type, "m.room.redaction") && + !StrEquals(sender, parsee)) { char *from, *to; char *redacted = GrabString(event, 1, "redacts"); @@ -421,5 +426,6 @@ ParseeEventHandler(ParseeData *data, HashMap *event) Free(from); Free(to); } + Free(parsee); } diff --git a/src/XMPPThread/Stanzas/Message.c b/src/XMPPThread/Stanzas/Message.c index f6d5180..9a90af1 100644 --- a/src/XMPPThread/Stanzas/Message.c +++ b/src/XMPPThread/Stanzas/Message.c @@ -47,6 +47,7 @@ MessageStanza(ParseeData *args, XMLElement *stanza, XMPPThread *thr) char *event_id = NULL; char *encoded = ParseeMXID(args); mroom_id = ParseeGetBridgedRoom(args, stanza); + if (!resource && chat_id) { event_id = ParseeGetEventFromID(args, stanza, moderated);