diff libpurple/protocols/bonjour/buddy.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 d50194ab3016
children fe7504f465a2 16734635febf
line wrap: on
line diff
--- a/libpurple/protocols/bonjour/buddy.c	Thu Jun 19 02:55:44 2008 +0000
+++ b/libpurple/protocols/bonjour/buddy.c	Thu Jun 19 02:56:37 2008 +0000
@@ -156,9 +156,9 @@
 		purple_blist_node_set_flags((PurpleBlistNode *)buddy, PURPLE_BLIST_NODE_FLAG_NO_SAVE);
 		purple_blist_add_buddy(buddy, NULL, group, NULL);
 	}
-	
+
 	buddy->proto_data = bonjour_buddy;
-	
+
 	/* Create the alias for the buddy using the first and the last name */
 	if (bonjour_buddy->nick)
 		serv_got_alias(purple_account_get_connection(account), buddy->name, bonjour_buddy->nick);
@@ -206,10 +206,12 @@
  * If the buddy is being saved, mark as offline, otherwise delete
  */
 void bonjour_buddy_signed_off(PurpleBuddy *pb) {
-	if (PURPLE_BLIST_NODE_SHOULD_SAVE(pb))
+	if (PURPLE_BLIST_NODE_SHOULD_SAVE(pb)) {
 		purple_prpl_got_user_status(purple_buddy_get_account(pb),
 					    purple_buddy_get_name(pb), "offline", NULL);
-	else {
+		bonjour_buddy_delete(pb->proto_data);
+		pb->proto_data = NULL;
+	} else {
 		purple_account_remove_buddy(purple_buddy_get_account(pb), pb, NULL);
 		purple_blist_remove_buddy(pb);
 	}