diff libpurple/protocols/bonjour/jabber.c @ 23018:ef0bcbe33689

applied changes from 3d595739f53a259d5dae408a05f64d2836f02ac9 through 05cdb341d2bf5165ab95cc42e52750624f0a7ad9
author Daniel Atallah <daniel.atallah@gmail.com>
date Thu, 19 Jun 2008 02:56:37 +0000
parents 1c87e81c44fa
children a9db0aec7e59
line wrap: on
line diff
--- a/libpurple/protocols/bonjour/jabber.c	Thu Jun 19 02:55:44 2008 +0000
+++ b/libpurple/protocols/bonjour/jabber.c	Thu Jun 19 02:56:37 2008 +0000
@@ -385,7 +385,7 @@
 			purple_debug_warning("bonjour", "receive error: %s\n", err ? err : "(null)");
 
 			bonjour_jabber_close_conversation(bconv);
-			if (bconv->pb != NULL) {
+			if (bconv->pb != NULL && bconv->pb->proto_data != NULL) {
 				BonjourBuddy *bb = bconv->pb->proto_data;
 				bb->conversation = NULL;
 			}
@@ -957,7 +957,7 @@
 	int ret;
 
 	pb = _find_or_start_conversation(jdata, to);
-	if (pb == NULL) {
+	if (pb == NULL || pb->proto_data == NULL) {
 		purple_debug_info("bonjour", "Can't send a message to an offline buddy (%s).\n", to);
 		/* You can not send a message to an offline buddy */
 		return -10000;
@@ -1103,8 +1103,10 @@
 		buddies = purple_find_buddies(jdata->account, NULL);
 		for (l = buddies; l; l = l->next) {
 			BonjourBuddy *bb = ((PurpleBuddy*) l->data)->proto_data;
-			bonjour_jabber_close_conversation(bb->conversation);
-			bb->conversation = NULL;
+			if (bb != NULL) {
+				bonjour_jabber_close_conversation(bb->conversation);
+				bb->conversation = NULL;
+			}
 		}
 
 		g_slist_free(buddies);