diff options
author | James Booth <boothj5@gmail.com> | 2015-05-03 01:48:12 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-05-03 01:48:12 +0100 |
commit | f25f90b38bfa72960f0290231696073966f58c69 (patch) | |
tree | d3b8495b74ed631103f89d057ee578f87b39a008 | |
parent | 530c060d2aa578bfbb9969ba6e56340830138dfc (diff) | |
download | profani-tty-f25f90b38bfa72960f0290231696073966f58c69.tar.gz |
Extracted receipt request processing in message.c
-rw-r--r-- | src/xmpp/message.c | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 0ceec4cf..85106132 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -555,7 +555,36 @@ _receipt_received_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza return 1; } -void _private_chat_handler(xmpp_stanza_t * const stanza, const char * const fulljid) +void +_receipt_request_handler(xmpp_stanza_t * const stanza) +{ + if (!prefs_get_boolean(PREF_RECEIPTS_SEND)) { + return; + } + + char *id = xmpp_stanza_get_id(stanza); + if (!id) { + return; + } + + xmpp_stanza_t *receipts = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_RECEIPTS); + if (!receipts) { + return; + } + + char *receipts_name = xmpp_stanza_get_name(receipts); + if (g_strcmp0(receipts_name, "request") != 0) { + return; + } + + gchar *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM); + Jid *jid = jid_create(from); + _message_send_receipt(jid->fulljid, id); + jid_destroy(jid); +} + +void +_private_chat_handler(xmpp_stanza_t * const stanza, const char * const fulljid) { xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_BODY); if (!body) { @@ -663,17 +692,7 @@ _chat_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * con sv_ev_incoming_message(jid->barejid, jid->resourcepart, message); } - // send receipt if configured - char *id = xmpp_stanza_get_id(stanza); - if (id && prefs_get_boolean(PREF_RECEIPTS_SEND)) { - xmpp_stanza_t *receipts = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_RECEIPTS); - if (receipts) { - char *receipts_name = xmpp_stanza_get_name(receipts); - if (g_strcmp0(receipts_name, "request") == 0) { - _message_send_receipt(jid->fulljid, id); - } - } - } + _receipt_request_handler(stanza); xmpp_ctx_t *ctx = connection_get_ctx(); xmpp_free(ctx, message); |