diff options
author | Michael Vetter <jubalh@iodoru.org> | 2019-10-18 14:50:25 +0200 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2019-10-18 14:50:25 +0200 |
commit | 06f300a42c4c627b6f1817bd48d92f083ffd9883 (patch) | |
tree | b1aab57931696be76a7a8c2b470c78f2a91687c6 /src | |
parent | 3bd5c9f535327b11c8417456fa0268b217de666e (diff) | |
download | profani-tty-06f300a42c4c627b6f1817bd48d92f083ffd9883.tar.gz |
Move message sent by us logic in own function
Diffstat (limited to 'src')
-rw-r--r-- | src/event/server_events.c | 16 | ||||
-rw-r--r-- | src/xmpp/message.c | 16 | ||||
-rw-r--r-- | src/xmpp/message.h | 1 |
3 files changed, 21 insertions, 12 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c index 6b1b6611..6b8792a8 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -304,19 +304,11 @@ sv_ev_room_message(ProfMessage *message) char *mynick = muc_nick(mucwin->roomjid); - // messages from ourselves - if (g_strcmp0(mynick, message->jid->resourcepart) == 0 && message->id != NULL) { - // test if message was sent from this client - // we check the </origin-id> for this we calculate a hash into it so we can detect - // whether this client sent it. See connection_create_stanza_id() - gsize tmp_len; - char *tmp = (char*)g_base64_decode(message->id, &tmp_len); - // log if not from this client. our client sents at least 10 for the identifier + random message bytes - if ((tmp_len < 11) || (g_strcmp0(&tmp[10], connection_get_profanity_identifier()) != 0)) { - _log_muc(message); - } - // messages from others + // messages from ourselves (account and this client) + if (g_strcmp0(mynick, message->jid->resourcepart) == 0 && message_is_sent_by_us(message)) { + _log_muc(message); } else { + // messages from others _log_muc(message); } diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 84c85471..78364ca2 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -1158,3 +1158,19 @@ _send_message_stanza(xmpp_stanza_t *const stanza) } xmpp_free(connection_get_ctx(), text); } + +bool message_is_sent_by_us(ProfMessage *message) { + // we check the </origin-id> for this we calculate a hash into it so we can detect + // whether this client sent it. See connection_create_stanza_id() + if (message->id != NULL) { + gsize tmp_len; + char *tmp = (char*)g_base64_decode(message->id, &tmp_len); + + // our client sents at least 10 for the identifier + random message bytes + if ((tmp_len > 10) || (g_strcmp0(&tmp[10], connection_get_profanity_identifier()) == 0)) { + return TRUE; + } + } + + return FALSE; +} diff --git a/src/xmpp/message.h b/src/xmpp/message.h index badfba72..154fff49 100644 --- a/src/xmpp/message.h +++ b/src/xmpp/message.h @@ -67,5 +67,6 @@ void message_free(ProfMessage *message); void message_handlers_init(void); void message_handlers_clear(void); void message_pubsub_event_handler_add(const char *const node, ProfMessageCallback func, ProfMessageFreeCallback free_func, void *userdata); +bool message_is_sent_by_us(ProfMessage *message); #endif |