diff options
author | James Booth <boothj5@gmail.com> | 2012-11-28 01:05:37 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2012-11-28 01:05:37 +0000 |
commit | ce0e96edf51d2ee2bc8bbe55520893741668cde1 (patch) | |
tree | 3cbde4077556839b1ff41fb0edb1988b21d8cf37 | |
parent | 3462b5afd623cb11c07c49251a7009bdc006f461 (diff) | |
parent | 80c2209bbda6a5624ca8ab63645d144252befb26 (diff) | |
download | profani-tty-ce0e96edf51d2ee2bc8bbe55520893741668cde1.tar.gz |
Merge branch 'master' into sublist
-rw-r--r-- | src/contact_list.c | 10 | ||||
-rw-r--r-- | src/contact_list.h | 1 | ||||
-rw-r--r-- | src/jabber.c | 5 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/contact_list.c b/src/contact_list.c index ddbe969c..5eb43324 100644 --- a/src/contact_list.c +++ b/src/contact_list.c @@ -72,6 +72,12 @@ contact_list_add(const char * const jid, const char * const name, return added; } +void +contact_list_remove(const char * const jid) +{ + g_hash_table_remove(contacts, jid); +} + gboolean contact_list_update_contact(const char * const jid, const char * const presence, const char * const status) @@ -103,7 +109,9 @@ contact_list_update_subscription(const char * const jid, PContact contact = g_hash_table_lookup(contacts, jid); if (contact == NULL) { - return; + contact = p_contact_new(jid, NULL, "offline", NULL, subscription, + pending_out); + g_hash_table_insert(contacts, strdup(jid), contact); } else { p_contact_set_subscription(contact, subscription); p_contact_set_pending_out(contact, pending_out); diff --git a/src/contact_list.h b/src/contact_list.h index 44322048..062cfa65 100644 --- a/src/contact_list.h +++ b/src/contact_list.h @@ -30,6 +30,7 @@ void contact_list_init(void); void contact_list_clear(void); void contact_list_reset_search_attempts(void); +void contact_list_remove(const char * const jid); gboolean contact_list_add(const char * const jid, const char * const name, const char * const presence, const char * const status, const char * const subscription, gboolean pending_out); diff --git a/src/jabber.c b/src/jabber.c index 3dd4eb77..e03f1e2b 100644 --- a/src/jabber.c +++ b/src/jabber.c @@ -802,6 +802,11 @@ _iq_handler(xmpp_conn_t * const conn, const char *jid = xmpp_stanza_get_attribute(item, STANZA_ATTR_JID); const char *sub = xmpp_stanza_get_attribute(item, STANZA_ATTR_SUBSCRIPTION); + if (g_strcmp0(sub, "remove") == 0) { + contact_list_remove(jid); + return TRUE; + } + gboolean pending_out = FALSE; const char *ask = xmpp_stanza_get_attribute(item, STANZA_ATTR_ASK); if ((ask != NULL) && (strcmp(ask, "subscribe") == 0)) { |