# HG changeset patch
# Node ID 31d1e6abd965
# Parent  268ffbddb677
diff --git a/ChangeLog.API b/ChangeLog.API
--- a/ChangeLog.API
+++ b/ChangeLog.API
@@ -367,6 +367,7 @@
 		* purple_attention_type_get_unlocalized_name
 		* purple_base16_*
 		* purple_base64_*. Use g_base64_* instead
+		* purple_blist_find_chat
 		* purple_blist_get_ui_data
 		* purple_blist_load
 		* purple_blist_new
diff --git a/libpurple/buddylist.h b/libpurple/buddylist.h
--- a/libpurple/buddylist.h
+++ b/libpurple/buddylist.h
@@ -476,20 +476,6 @@
 PurpleGroup *purple_blist_get_default_group(void);
 
 /**
- * purple_blist_find_chat:
- * @account: The chat's account.
- * @name:    The chat's name.
- *
- * Finds a chat by name.
- *
- * Returns: (transfer none): The chat, or %NULL if the chat does not exist.
- *
- * Since: 2.0
- */
-PURPLE_AVAILABLE_IN_ALL
-PurpleChat *purple_blist_find_chat(PurpleAccount *account, const char *name);
-
-/**
  * purple_blist_add_account:
  * @account:   The account
  *
diff --git a/libpurple/buddylist.c b/libpurple/buddylist.c
--- a/libpurple/buddylist.c
+++ b/libpurple/buddylist.c
@@ -30,7 +30,6 @@
 #include "purpleaccountmanager.h"
 #include "purpleprivate.h"
 #include "purpleprotocol.h"
-#include "purpleprotocolchat.h"
 #include "purpleprotocolclient.h"
 #include "purpleconversation.h"
 #include "server.h"
@@ -1705,66 +1704,6 @@
 	return group;
 }
 
-PurpleChat *
-purple_blist_find_chat(PurpleAccount *account, const char *name)
-{
-	char *chat_name;
-	PurpleChat *chat;
-	PurpleProtocol *protocol = NULL;
-	PurpleProtocolChatEntry *pce;
-	PurpleBlistNode *node, *group;
-	GList *parts;
-	char *normname;
-
-	g_return_val_if_fail(PURPLE_IS_BUDDY_LIST(purplebuddylist), NULL);
-	g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL);
-
-	if (!purple_account_is_connected(account))
-		return NULL;
-
-	protocol = purple_account_get_protocol(account);
-
-	if(PURPLE_IS_PROTOCOL_CLIENT(protocol)) {
-		chat = purple_protocol_client_find_blist_chat(PURPLE_PROTOCOL_CLIENT(protocol),
-		                                              account, name);
-
-		if(PURPLE_IS_CHAT(chat)) {
-			return chat;
-		}
-	}
-
-	normname = g_strdup(purple_normalize(account, name));
-	for (group = purple_blist_get_default_root(); group != NULL;
-	     group = group->next) {
-		for (node = group->child; node != NULL; node = node->next) {
-			if (PURPLE_IS_CHAT(node)) {
-
-				chat = (PurpleChat*)node;
-
-				if (account != purple_chat_get_account(chat))
-					continue;
-
-				parts = purple_protocol_chat_info(PURPLE_PROTOCOL_CHAT(protocol),
-					purple_account_get_connection(purple_chat_get_account(chat)));
-
-				pce = parts->data;
-				chat_name = g_hash_table_lookup(purple_chat_get_components(chat),
-												pce->identifier);
-				g_list_free_full(parts, g_free);
-
-				if (purple_chat_get_account(chat) == account && chat_name != NULL &&
-					purple_strequal(purple_normalize(account, chat_name), normname)) {
-					g_free(normname);
-					return chat;
-				}
-			}
-		}
-	}
-
-	g_free(normname);
-	return NULL;
-}
-
 void purple_blist_add_account(PurpleAccount *account)
 {
 	PurpleBuddyListClass *klass = NULL;
diff --git a/libpurple/chat.h b/libpurple/chat.h
--- a/libpurple/chat.h
+++ b/libpurple/chat.h
@@ -106,19 +106,6 @@
 const char *purple_chat_get_name(PurpleChat *chat);
 
 /**
- * purple_chat_get_name_only:
- * @chat:   The chat whose name will be returned.
- *
- * Returns the name of the chat
- *
- * Returns:       The first component value.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-const char *purple_chat_get_name_only(PurpleChat *chat);
-
-/**
  * purple_chat_set_alias:
  * @chat:   The chat
  * @alias:  The alias
diff --git a/libpurple/chat.c b/libpurple/chat.c
--- a/libpurple/chat.c
+++ b/libpurple/chat.c
@@ -21,7 +21,6 @@
  */
 
 #include "chat.h"
-#include "purpleprotocolchat.h"
 #include "util.h"
 
 typedef struct _PurpleChatPrivate       PurpleChatPrivate;
@@ -69,31 +68,7 @@
 	if ((priv->alias != NULL) && (*priv->alias != '\0'))
 		return priv->alias;
 
-	return purple_chat_get_name_only(chat);
-}
-
-const char *purple_chat_get_name_only(PurpleChat *chat)
-{
-	PurpleChatPrivate *priv = NULL;
-	char *ret = NULL;
-	PurpleProtocol *protocol = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_CHAT(chat), NULL);
-
-	priv = purple_chat_get_instance_private(chat);
-
-	protocol = purple_account_get_protocol(priv->account);
-
-	if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT, info)) {
-		PurpleProtocolChatEntry *pce;
-		GList *parts = purple_protocol_chat_info(PURPLE_PROTOCOL_CHAT(protocol),
-		                                         purple_account_get_connection(priv->account));
-		pce = parts->data;
-		ret = g_hash_table_lookup(priv->components, pce->identifier);
-		g_list_free_full(parts, g_free);
-	}
-
-	return ret;
+	return NULL;
 }
 
 void
diff --git a/libpurple/meson.build b/libpurple/meson.build
--- a/libpurple/meson.build
+++ b/libpurple/meson.build
@@ -70,7 +70,6 @@
 	'purplepresencemanager.c',
 	'purpleprotocol.c',
 	'purpleprotocolactions.c',
-	'purpleprotocolchat.c',
 	'purpleprotocolclient.c',
 	'purpleprotocolcontacts.c',
 	'purpleprotocolconversation.c',
@@ -182,7 +181,6 @@
 	'purplepresencemanager.h',
 	'purpleprotocol.h',
 	'purpleprotocolactions.h',
-	'purpleprotocolchat.h',
 	'purpleprotocolclient.h',
 	'purpleprotocolcontacts.h',
 	'purpleprotocolconversation.h',
diff --git a/libpurple/plugins/purple-toast/meson.build b/libpurple/plugins/purple-toast/meson.build
--- a/libpurple/plugins/purple-toast/meson.build
+++ b/libpurple/plugins/purple-toast/meson.build
@@ -3,6 +3,8 @@
 	gnu_symbol_visibility : 'hidden',
 	dependencies : [libpurple_dep],
 	name_prefix: '',
-	install : true, install_dir : PURPLE_PLUGINDIR)
+	install : true,
+	install_dir : PURPLE_PLUGINDIR,
+	build_by_default : false)
 
 devenv.append('PURPLE_PLUGIN_PATH', meson.current_build_dir())
diff --git a/libpurple/purpleprotocolchat.h b/libpurple/purpleprotocolchat.h
deleted file mode 100644
--- a/libpurple/purpleprotocolchat.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Purple - Internet Messaging Library
- * Copyright (C) Pidgin Developers <devel@pidgin.im>
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, see <https://www.gnu.org/licenses/>.
- */
-
-#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
-# error "only <purple.h> may be included directly"
-#endif
-
-#ifndef PURPLE_PROTOCOL_CHAT_H
-#define PURPLE_PROTOCOL_CHAT_H
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include "connection.h"
-#include "purpleconversation.h"
-#include "purplemessage.h"
-#include "purpleprotocol.h"
-#include "purpleversion.h"
-
-#define PURPLE_TYPE_PROTOCOL_CHAT (purple_protocol_chat_get_type())
-
-/**
- * PurpleProtocolChat:
- *
- * #PurpleProtocolChat describes the API that protocols need to implement for
- * handling multiple user conversations.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-G_DECLARE_INTERFACE(PurpleProtocolChat, purple_protocol_chat, PURPLE,
-                    PROTOCOL_CHAT, PurpleProtocol)
-
-typedef struct _PurpleProtocolChatEntry PurpleProtocolChatEntry;
-
-/**
- * PurpleProtocolChatEntry:
- * @label:      User-friendly name of the entry
- * @identifier: Used by the protocol to identify the option
- * @required:   True if it's required
- * @is_int:     True if the entry expects an integer
- * @min:        Minimum value in case of integer
- * @max:        Maximum value in case of integer
- * @secret:     True if the entry is secret (password)
- *
- * Represents an entry containing information that must be supplied by the
- * user when joining a chat.
- */
-struct _PurpleProtocolChatEntry {
-	const char *label;
-	const char *identifier;
-	gboolean required;
-	gboolean is_int;
-	int min;
-	int max;
-	gboolean secret;
-};
-
-G_BEGIN_DECLS
-
-struct _PurpleProtocolChatInterface {
-	/*< private >*/
-	GTypeInterface parent;
-
-	/*< public >*/
-	GList *(*info)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection);
-
-	GHashTable *(*info_defaults)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, const gchar *chat_name);
-
-	void (*join)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, GHashTable *components);
-
-	void (*reject)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, GHashTable *components);
-
-	gchar *(*get_name)(PurpleProtocolChat *protocol_chat, GHashTable *components);
-
-	void (*invite)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, const gchar *message, const gchar *who);
-
-	void (*leave)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id);
-
-	gint (*send)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, PurpleConversation *conversation, PurpleMessage *message);
-
-	gchar *(*get_user_real_name)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, const gchar *who);
-
-	void (*set_topic)(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, const gchar *topic);
-
-	/*< private >*/
-	gpointer reserved[8];
-};
-
-/**
- * purple_protocol_chat_info:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- *
- * Gets the list of #PurpleProtocolChatEntry's that are required to join a
- * multi user chat.
- *
- * Returns: (transfer full) (element-type PurpleProtocolChatEntry): The list
- *          of #PurpleProtocolChatEntry's that are used to join a chat.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-GList *purple_protocol_chat_info(PurpleProtocolChat *protocol_chat, PurpleConnection *connection);
-
-/**
- * purple_protocol_chat_info_defaults:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @chat_name: The name of the chat.
- *
- * Returns a #GHashTable of the default protocol dependent components that will
- * be passed to purple_protocol_chat_join().
- *
- * Returns: (transfer full) (element-type utf8 utf8): The values that will be
- *          used to join the chat.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-GHashTable *purple_protocol_chat_info_defaults(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, const gchar *chat_name);
-
-/**
- * purple_protocol_chat_join:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @components: (element-type utf8 utf8) (transfer none): The protocol
- *              dependent join components.
- *
- * Joins the chat described in @components.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_protocol_chat_join(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, GHashTable *components);
-
-/**
- * purple_protocol_chat_reject:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @components: (element-type utf8 utf8) (transfer none): The protocol
- *              dependent join components.
- *
- * Used to reject a chat invite.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_protocol_chat_reject(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, GHashTable *components);
-
-/**
- * purple_protocol_chat_get_name:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @components: (element-type utf8 utf8) (transfer none): The protocol
- *              dependent join components.
- *
- * Gets the name from @components.
- *
- * Returns: (transfer full): The chat name from @components.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-gchar *purple_protocol_chat_get_name(PurpleProtocolChat *protocol_chat, GHashTable *components);
-
-/**
- * purple_protocol_chat_invite:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @id: The id of the chat.
- * @message: The invite message.
- * @who: The target of the invite.
- *
- * Sends an invite to @who with @message.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_protocol_chat_invite(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, const gchar *message, const gchar *who);
-
-/**
- * purple_protocol_chat_leave:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @id: The id of the chat.
- *
- * Leaves the chat identified by @id.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_protocol_chat_leave(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id);
-
-/**
- * purple_protocol_chat_send:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @id: The id of the chat.
- * @conversation: The [class@Conversation] of the chat.
- * @message: The message to send.
- *
- * Sends @message to the chat identified by @id.
- *
- * Returns: 0 on success, non-zero on failure.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-gint purple_protocol_chat_send(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, PurpleConversation *conversation, PurpleMessage *message);
-
-/**
- * purple_protocol_chat_get_user_real_name:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @id: The id of the chat.
- * @who: The username.
- *
- * Gets the real name of @who.
- *
- * Returns: (transfer full): The realname of @who.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-gchar *purple_protocol_chat_get_user_real_name(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, const gchar *who);
-
-/**
- * purple_protocol_chat_set_topic:
- * @protocol_chat: The #PurpleProtocolChat instance.
- * @connection: The #PurpleConnection instance.
- * @id: The id of the chat.
- * @topic: The new topic.
- *
- * Sets the topic for the chat with id @id to @topic.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_protocol_chat_set_topic(PurpleProtocolChat *protocol_chat, PurpleConnection *connection, gint id, const gchar *topic);
-
-G_END_DECLS
-
-#endif /* PURPLE_PROTOCOL_CHAT_H */
-
diff --git a/libpurple/purpleprotocolchat.c b/libpurple/purpleprotocolchat.c
deleted file mode 100644
--- a/libpurple/purpleprotocolchat.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Purple - Internet Messaging Library
- * Copyright (C) Pidgin Developers <devel@pidgin.im>
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, see <https://www.gnu.org/licenses/>.
- */
-
-#include "purpleprotocolchat.h"
-
-/******************************************************************************
- * GObject Implementation
- *****************************************************************************/
-G_DEFINE_INTERFACE(PurpleProtocolChat, purple_protocol_chat,
-                   PURPLE_TYPE_PROTOCOL)
-
-static void
-purple_protocol_chat_default_init(G_GNUC_UNUSED PurpleProtocolChatInterface *iface)
-{
-}
-
-/******************************************************************************
- * Public API
- *****************************************************************************/
-GList *
-purple_protocol_chat_info(PurpleProtocolChat *protocol_chat,
-                          PurpleConnection *connection)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat), NULL);
-	g_return_val_if_fail(PURPLE_IS_CONNECTION(connection), NULL);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->info != NULL) {
-		return iface->info(protocol_chat, connection);
-	}
-
-	return NULL;
-}
-
-GHashTable *
-purple_protocol_chat_info_defaults(PurpleProtocolChat *protocol_chat,
-                                   PurpleConnection *connection,
-                                   const gchar *chat_name)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat), NULL);
-	g_return_val_if_fail(PURPLE_IS_CONNECTION(connection), NULL);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->info_defaults != NULL) {
-		return iface->info_defaults(protocol_chat, connection, chat_name);
-	}
-
-	return NULL;
-}
-
-void
-purple_protocol_chat_join(PurpleProtocolChat *protocol_chat,
-                          PurpleConnection *connection,
-                          GHashTable *components)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat));
-	g_return_if_fail(PURPLE_IS_CONNECTION(connection));
-	g_return_if_fail(components != NULL);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->join != NULL) {
-		iface->join(protocol_chat, connection, components);
-	}
-}
-
-void
-purple_protocol_chat_reject(PurpleProtocolChat *protocol_chat,
-                            PurpleConnection *connection,
-                            GHashTable *components)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat));
-	g_return_if_fail(PURPLE_IS_CONNECTION(connection));
-	g_return_if_fail(components != NULL);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->reject != NULL) {
-		iface->reject(protocol_chat, connection, components);
-	}
-}
-
-gchar *
-purple_protocol_chat_get_name(PurpleProtocolChat *protocol_chat,
-                              GHashTable *components)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat), NULL);
-	g_return_val_if_fail(components != NULL, NULL);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->get_name != NULL) {
-		return iface->get_name(protocol_chat, components);
-	}
-
-	return NULL;
-}
-
-void
-purple_protocol_chat_invite(PurpleProtocolChat *protocol_chat,
-                            PurpleConnection *connection, gint id,
-                            const gchar *message, const gchar *who)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat));
-	g_return_if_fail(PURPLE_IS_CONNECTION(connection));
-	g_return_if_fail(who != NULL);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->invite != NULL) {
-		iface->invite(protocol_chat, connection, id, message, who);
-	}
-}
-
-void
-purple_protocol_chat_leave(PurpleProtocolChat *protocol_chat,
-                           PurpleConnection *connection, gint id)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat));
-	g_return_if_fail(PURPLE_IS_CONNECTION(connection));
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->leave != NULL) {
-		iface->leave(protocol_chat, connection, id);
-	}
-}
-
-gint
-purple_protocol_chat_send(PurpleProtocolChat *protocol_chat,
-                          PurpleConnection *connection, gint id,
-                          PurpleConversation *conversation,
-                          PurpleMessage *message)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat), -1);
-	g_return_val_if_fail(PURPLE_IS_CONNECTION(connection), -1);
-	g_return_val_if_fail(PURPLE_IS_MESSAGE(message), -1);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->send != NULL) {
-		return iface->send(protocol_chat, connection, id, conversation,
-		                   message);
-	}
-
-	return -1;
-}
-
-gchar *
-purple_protocol_chat_get_user_real_name(PurpleProtocolChat *protocol_chat,
-                                        PurpleConnection *connection, gint id,
-                                        const gchar *who)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_val_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat), NULL);
-	g_return_val_if_fail(PURPLE_IS_CONNECTION(connection), NULL);
-	g_return_val_if_fail(who != NULL, NULL);
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->get_user_real_name != NULL) {
-		return iface->get_user_real_name(protocol_chat, connection, id, who);
-	}
-
-	return NULL;
-}
-
-void
-purple_protocol_chat_set_topic(PurpleProtocolChat *protocol_chat,
-                               PurpleConnection *connection, gint id,
-                               const gchar *topic)
-{
-	PurpleProtocolChatInterface *iface = NULL;
-
-	g_return_if_fail(PURPLE_IS_PROTOCOL_CHAT(protocol_chat));
-	g_return_if_fail(PURPLE_IS_CONNECTION(connection));
-
-	iface = PURPLE_PROTOCOL_CHAT_GET_IFACE(protocol_chat);
-	if(iface != NULL && iface->set_topic != NULL) {
-		iface->set_topic(protocol_chat, connection, id, topic);
-	}
-}
diff --git a/libpurple/roomlist.c b/libpurple/roomlist.c
--- a/libpurple/roomlist.c
+++ b/libpurple/roomlist.c
@@ -178,7 +178,7 @@
 	name = purple_roomlist_room_get_name(room);
 	g_hash_table_replace(adjusted, "name", (gpointer)name);
 
-	purple_serv_join_chat(connection, adjusted);
+	/* purple_serv_join_chat(connection, adjusted); */
 
 	g_hash_table_destroy(adjusted);
 }
diff --git a/libpurple/server.h b/libpurple/server.h
--- a/libpurple/server.h
+++ b/libpurple/server.h
@@ -29,7 +29,6 @@
 
 #include "buddy.h"
 #include "group.h"
-#include "purplemessage.h"
 #include "purpleversion.h"
 
 G_BEGIN_DECLS
@@ -47,23 +46,6 @@
 PURPLE_AVAILABLE_IN_3_0
 void purple_serv_move_buddy(PurpleBuddy *buddy, PurpleGroup *orig, PurpleGroup *dest);
 
-/******************************************************************************
- * Server Interface
- *****************************************************************************/
-
-/**
- * purple_serv_join_chat:
- * @gc:   The #PurpleConnection
- * @data: The hash function should be g_str_hash() and the equal
- *             function should be g_str_equal().
- *
- * Joins the chat described by the components in @data.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_serv_join_chat(PurpleConnection *gc, GHashTable *data);
-
 G_END_DECLS
 
 #endif /* PURPLE_SERVER_H */
diff --git a/libpurple/server.c b/libpurple/server.c
--- a/libpurple/server.c
+++ b/libpurple/server.c
@@ -33,7 +33,6 @@
 #include "purpleconversationmanager.h"
 #include "purpleprivate.h"
 #include "purpleprotocol.h"
-#include "purpleprotocolchat.h"
 #include "purpleprotocolserver.h"
 #include "request.h"
 #include "signals.h"
@@ -68,13 +67,3 @@
 		                                   purple_group_get_name(dest));
 	}
 }
-
-void purple_serv_join_chat(PurpleConnection *gc, GHashTable *data)
-{
-	PurpleProtocol *protocol;
-
-	if (gc) {
-		protocol = purple_connection_get_protocol(gc);
-		purple_protocol_chat_join(PURPLE_PROTOCOL_CHAT(protocol), gc, data);
-	}
-}
diff --git a/po/POTFILES.in b/po/POTFILES.in
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -64,7 +64,6 @@
 libpurple/purpleplugininfo.c
 libpurple/purplepresence.c
 libpurple/purpleprotocol.c
-libpurple/purpleprotocolchat.c
 libpurple/purpleprotocolclient.c
 libpurple/purpleprotocolmanager.c
 libpurple/purpleprotocolmedia.c
