1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Tidied _roster_result_handler

This commit is contained in:
James Booth 2015-05-07 22:51:35 +01:00
parent a2c6211732
commit f69ccbf0cc

View File

@ -290,51 +290,49 @@ _roster_set_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
} }
static int static int
_roster_result_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, _roster_result_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, void * const userdata)
void * const userdata)
{ {
const char *id = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_ID); const char *id = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_ID);
if (g_strcmp0(id, "roster") != 0) {
return 1;
}
// handle initial roster response // handle initial roster response
if (g_strcmp0(id, "roster") == 0) { xmpp_stanza_t *query = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_QUERY);
xmpp_stanza_t *query = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_QUERY); xmpp_stanza_t *item = xmpp_stanza_get_children(query);
xmpp_stanza_t *item = xmpp_stanza_get_children(query);
while (item) { while (item) {
const char *barejid = xmpp_stanza_get_attribute(item, STANZA_ATTR_JID); const char *barejid = xmpp_stanza_get_attribute(item, STANZA_ATTR_JID);
gchar *barejid_lower = g_utf8_strdown(barejid, -1); gchar *barejid_lower = g_utf8_strdown(barejid, -1);
const char *name = xmpp_stanza_get_attribute(item, STANZA_ATTR_NAME); const char *name = xmpp_stanza_get_attribute(item, STANZA_ATTR_NAME);
const char *sub = xmpp_stanza_get_attribute(item, STANZA_ATTR_SUBSCRIPTION); const char *sub = xmpp_stanza_get_attribute(item, STANZA_ATTR_SUBSCRIPTION);
// do not set nickname to empty string, set to NULL instead // do not set nickname to empty string, set to NULL instead
if (name && (strlen(name) == 0)) { if (name && (strlen(name) == 0)) name = NULL;
name = NULL;
}
gboolean pending_out = FALSE; gboolean pending_out = FALSE;
const char *ask = xmpp_stanza_get_attribute(item, STANZA_ATTR_ASK); const char *ask = xmpp_stanza_get_attribute(item, STANZA_ATTR_ASK);
if (g_strcmp0(ask, "subscribe") == 0) { if (g_strcmp0(ask, "subscribe") == 0) {
pending_out = TRUE; pending_out = TRUE;
}
GSList *groups = _get_groups_from_item(item);
gboolean added = roster_add(barejid_lower, name, groups, sub, pending_out);
if (!added) {
log_warning("Attempt to add contact twice: %s", barejid_lower);
}
g_free(barejid_lower);
item = xmpp_stanza_get_next(item);
} }
sv_ev_roster_received(); GSList *groups = _get_groups_from_item(item);
resource_presence_t conn_presence = accounts_get_login_presence(jabber_get_account_name()); gboolean added = roster_add(barejid_lower, name, groups, sub, pending_out);
presence_update(conn_presence, NULL, 0); if (!added) {
log_warning("Attempt to add contact twice: %s", barejid_lower);
}
g_free(barejid_lower);
item = xmpp_stanza_get_next(item);
} }
sv_ev_roster_received();
resource_presence_t conn_presence = accounts_get_login_presence(jabber_get_account_name());
presence_update(conn_presence, NULL, 0);
return 1; return 1;
} }