diff -r cce925ddb58a -r 8d8ad40c9c7d libpurple/protocols/jabber/chat.c --- a/libpurple/protocols/jabber/chat.c Thu Feb 18 04:37:49 2010 +0000 +++ b/libpurple/protocols/jabber/chat.c Thu Feb 18 04:39:28 2010 +0000 @@ -1048,7 +1048,8 @@ return TRUE; } -gboolean jabber_chat_role_user(JabberChat *chat, const char *who, const char *role) +gboolean jabber_chat_role_user(JabberChat *chat, const char *who, + const char *role, const char *why) { char *to; JabberIq *iq; @@ -1071,6 +1072,10 @@ item = xmlnode_new_child(query, "item"); xmlnode_set_attrib(item, "nick", jcm->handle); xmlnode_set_attrib(item, "role", role); + if (why) { + xmlnode *reason = xmlnode_new_child(item, "reason"); + xmlnode_insert_data(reason, why, -1); + } jabber_iq_send(iq); @@ -1138,37 +1143,6 @@ return TRUE; } -gboolean jabber_chat_kick_user(JabberChat *chat, const char *who, const char *why) -{ - JabberIq *iq; - JabberChatMember *jcm = g_hash_table_lookup(chat->members, who); - char *to; - xmlnode *query, *item, *reason; - - if(!jcm || !jcm->jid) - return FALSE; - - iq = jabber_iq_new_query(chat->js, JABBER_IQ_SET, - "http://jabber.org/protocol/muc#admin"); - - to = g_strdup_printf("%s@%s", chat->room, chat->server); - xmlnode_set_attrib(iq->node, "to", to); - g_free(to); - - query = xmlnode_get_child(iq->node, "query"); - item = xmlnode_new_child(query, "item"); - xmlnode_set_attrib(item, "jid", jcm->jid); - xmlnode_set_attrib(item, "role", "none"); - if(why) { - reason = xmlnode_new_child(item, "reason"); - xmlnode_insert_data(reason, why, -1); - } - - jabber_iq_send(iq); - - return TRUE; -} - static void jabber_chat_disco_traffic_cb(JabberStream *js, const char *from, JabberIqType type, const char *id, xmlnode *packet, gpointer data)