eion/purple-hangouts

Parents 64937e4335ec
Children 9f02a61d3df4
Prevent hangouts tying to send typing notifications for group chats it doesn't own
--- a/hangouts_conversation.c Thu Mar 09 10:37:39 2017 +1300
+++ b/hangouts_conversation.c Mon Mar 13 22:13:45 2017 +1300
@@ -1525,7 +1525,7 @@
SetTypingRequest request;
ConversationId conversation_id;
- pc = ha ? ha->pc : purple_conversation_get_connection(conv);
+ pc = purple_conversation_get_connection(conv);
if (!PURPLE_CONNECTION_IS_CONNECTED(pc))
return 0;
--- a/libhangouts.c Thu Mar 09 10:37:39 2017 +1300
+++ b/libhangouts.c Mon Mar 13 22:13:45 2017 +1300
@@ -296,6 +296,8 @@
_("User cancelled authorization"));
}
+static gulong chat_conversation_typing_signal = 0;
+
static void
hangouts_login(PurpleAccount *account)
{
@@ -355,7 +357,9 @@
purple_signal_connect(purple_blist_get_handle(), "blist-node-removed", account, PURPLE_CALLBACK(hangouts_blist_node_removed), NULL);
purple_signal_connect(purple_blist_get_handle(), "blist-node-aliased", account, PURPLE_CALLBACK(hangouts_blist_node_aliased), NULL);
purple_signal_connect(purple_conversations_get_handle(), "conversation-updated", account, PURPLE_CALLBACK(hangouts_mark_conversation_seen), NULL);
- purple_signal_connect(purple_conversations_get_handle(), "chat-conversation-typing", account, PURPLE_CALLBACK(hangouts_conv_send_typing), ha);
+ if (!chat_conversation_typing_signal) {
+ chat_conversation_typing_signal = purple_signal_connect(purple_conversations_get_handle(), "chat-conversation-typing", purple_connection_get_protocol(pc), PURPLE_CALLBACK(hangouts_conv_send_typing), ha);
+ }
ha->active_client_timeout = purple_timeout_add_seconds(HANGOUTS_ACTIVE_CLIENT_TIMEOUT, ((GSourceFunc) hangouts_set_active_client), pc);
}