From c0e12272b41aed4cd314001b649813d57c9a7870 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Mon, 28 Sep 2015 16:38:20 +0200 Subject: [PATCH] purple backend: Prevent hanging Vcard request when the plugin does not implement "get_info" --- backends/libpurple/main.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 4af24182..cce1f000 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -518,7 +518,11 @@ class SpectrumNetworkPlugin : public NetworkPlugin { } m_vcards[user + name] = id; - if (CONFIG_BOOL(config, "backend.no_vcard_fetch") && name != purple_account_get_username_wrapped(account)) { + PurplePlugin *prpl = purple_find_prpl_wrapped(purple_account_get_protocol_id_wrapped(account)); + PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); + bool support_get_info = prpl_info && prpl_info->get_info; + + if (!support_get_info || (CONFIG_BOOL(config, "backend.no_vcard_fetch") && name != purple_account_get_username_wrapped(account))) { PurpleNotifyUserInfo *user_info = purple_notify_user_info_new_wrapped(); notify_user_info(purple_account_get_connection_wrapped(account), name.c_str(), user_info); purple_notify_user_info_destroy_wrapped(user_info); @@ -526,7 +530,6 @@ class SpectrumNetworkPlugin : public NetworkPlugin { else { serv_get_info_wrapped(purple_account_get_connection_wrapped(account), name.c_str()); } - } }