# HG changeset patch # User franky # Date 1413578345 -7200 # Node ID f51c341a9da51f04bd4b762036676ea0515a0841 # Parent db6ca1e1e082cda716af9d14b2ed104dea3bdc26 Simplify handle_state_events() diff -r db6ca1e1e082 -r f51c341a9da5 mcabber/mcabber/xmpp.c --- a/mcabber/mcabber/xmpp.c Fri Oct 17 22:33:19 2014 +0200 +++ b/mcabber/mcabber/xmpp.c Fri Oct 17 22:39:05 2014 +0200 @@ -852,29 +852,23 @@ xmpp_setstatus(offline, NULL, mystatusmsg, TRUE); } -static void handle_state_events(const char *from, LmMessageNode *node) +static void handle_state_events(const char *bjid, + const char *resource, + LmMessageNode *node) { #if defined XEP0085 LmMessageNode *state_ns = NULL; - char *rname, *bjid; GSList *sl_buddy; struct xep0085 *xep85 = NULL; - rname = strchr(from, JID_RESOURCE_SEPARATOR); - if (rname) - ++rname; - else - rname = (char *)from + strlen(from); - bjid = jidtodisp(from); sl_buddy = roster_find(bjid, jidsearch, ROSTER_TYPE_USER); - g_free(bjid); if (!sl_buddy) { return; } /* Let's see whether the contact supports XEP0085 */ - xep85 = buddy_resource_xep85(sl_buddy->data, rname); + xep85 = buddy_resource_xep85(sl_buddy->data, resource); if (xep85) state_ns = lm_message_node_find_xmlns(node, NS_CHATSTATES); @@ -896,7 +890,7 @@ xep85->last_state_rcvd = ROSTER_EVENT_GONE; } - buddy_resource_setevents(sl_buddy->data, rname, xep85->last_state_rcvd); + buddy_resource_setevents(sl_buddy->data, resource, xep85->last_state_rcvd); update_roster = TRUE; #endif } @@ -1096,7 +1090,7 @@ chatstates_reset_probed(from); #endif } else { - handle_state_events(from, m->node); + handle_state_events(bjid, res, m->node); } // Check for carbons! @@ -1126,7 +1120,7 @@ skip_process = TRUE; // Try to handle forwarded chat state messages - handle_state_events(from, x); + handle_state_events(from, res, x); scr_LogPrint(LPRINT_DEBUG, "Received incoming carbon from <%s>", from);