libpurple/conversation.c

changeset 34486
054505210944
parent 34483
0fbb73c987a4
child 34488
55eee2b3453f
--- a/libpurple/conversation.c	Sat Oct 05 19:57:39 2013 +0200
+++ b/libpurple/conversation.c	Sat Oct 05 20:20:46 2013 +0200
@@ -602,6 +602,9 @@
 	gc   = purple_conversation_get_connection(conv);
 	name = purple_conversation_get_name(conv);
 
+	purple_e2ee_state_unref(conv->e2ee_state);
+	conv->e2ee_state = NULL;
+
 	if (gc != NULL)
 	{
 		/* Still connected */
@@ -949,7 +952,8 @@
 	if (conv->e2ee_state == state)
 		return;
 
-	purple_e2ee_state_ref(state);
+	if (state)
+		purple_e2ee_state_ref(state);
 	purple_e2ee_state_unref(conv->e2ee_state);
 	conv->e2ee_state = state;
 
@@ -960,27 +964,16 @@
 purple_conversation_get_e2ee_state(PurpleConversation *conv)
 {
 	PurpleE2eeProvider *provider;
-	PurpleE2eeFeatures features;
 
 	g_return_val_if_fail(conv != NULL, NULL);
 
+	if (conv->e2ee_state == NULL)
+		return NULL;
+
 	provider = purple_e2ee_provider_get_main();
 	if (provider == NULL)
 		return NULL;
 
-	features = purple_e2ee_provider_get_features(provider);
-	if (conv->type == PURPLE_CONV_TYPE_IM) {
-		if (!(features & PURPLE_E2EE_FEATURE_IM))
-			return NULL;
-	} else if (conv->type == PURPLE_CONV_TYPE_CHAT) {
-		if (!(features & PURPLE_E2EE_FEATURE_CHAT))
-			return NULL;
-	} else
-		return NULL;
-
-	if (conv->e2ee_state == NULL)
-		return purple_e2ee_provider_get_default_state(provider);
-
 	if (purple_e2ee_state_get_provider(conv->e2ee_state) != provider) {
 		purple_debug_warning("conversation",
 			"e2ee state has invalid provider set");

mercurial