src/protocols/msn/slp.c

changeset 10773
ef88ffed66eb
parent 10602
111ed237f509
child 10887
cedd4ef6297d
--- a/src/protocols/msn/slp.c	Sat Apr 02 16:07:20 2005 +0000
+++ b/src/protocols/msn/slp.c	Sat Apr 02 16:38:33 2005 +0000
@@ -31,9 +31,6 @@
 #include "user.h"
 #include "switchboard.h"
 
-/* #include "slplink.h" */
-/* #include "directconn.h" */
-
 static void send_ok(MsnSlpCall *slpcall, const char *branch,
 					const char *type, const char *content);
 
@@ -124,6 +121,8 @@
 
 			g_free(content);
 			msn_slplink_unleash(slpcall->slplink);
+
+			msn_slp_call_destroy(slpcall);
 		}
 	}
 }
@@ -753,7 +752,7 @@
 
 	gc = slpcall->slplink->session->account->gc;
 	who = slpcall->slplink->remote_user;
-	
+
 	conv = gaim_find_conversation_with_account(GAIM_CONV_ANY, who, gc->account);
 
 	/* FIXME: it would be better if we wrote the data as we received it
@@ -762,8 +761,9 @@
 	*/
 	gaim_conv_custom_smiley_write(conv, slpcall->data_info, data, size);
 	gaim_conv_custom_smiley_close(conv, slpcall->data_info );
- 
+#ifdef MSN_DEBUG_UD
 	gaim_debug_info("msn", "Got smiley: %s\n", slpcall->data_info);
+#endif
 }
 
 void
@@ -841,7 +841,9 @@
 
 	g_return_if_fail(userlist != NULL);
 
+#ifdef MSN_DEBUG_UD
 	gaim_debug_info("msn", "Releasing buddy icon request\n");
+#endif
 
 	while (userlist->buddy_icon_window > 0)
 	{
@@ -862,8 +864,10 @@
 		msn_request_user_display(user);
 		userlist->buddy_icon_window--;
 
+#ifdef MSN_DEBUG_UD
 		gaim_debug_info("msn", "buddy_icon_window=%d\n",
 						userlist->buddy_icon_window);
+#endif
 	}
 }
 
@@ -906,13 +910,17 @@
 		userlist = user->userlist;
 		queue = userlist->buddy_icon_requests;
 
+#ifdef MSN_DEBUG_UD
 		gaim_debug_info("msn", "Queueing buddy icon request: %s\n",
 						user->passport);
+#endif
 
 		g_queue_push_tail(queue, user);
 
+#ifdef MSN_DEBUG_UD
 		gaim_debug_info("msn", "buddy_icon_window=%d\n",
 						userlist->buddy_icon_window);
+#endif
 
 		if (userlist->buddy_icon_window > 0)
 			msn_release_buddy_icon_request(userlist);
@@ -931,7 +939,9 @@
 	g_return_if_fail(slpcall != NULL);
 
 	info = slpcall->data_info;
+#ifdef MSN_DEBUG_UD
 	gaim_debug_info("msn", "Got User Display: %s\n", info);
+#endif
 
 	userlist = slpcall->slplink->session->userlist;
 	account = slpcall->slplink->session->account;
@@ -966,7 +976,13 @@
 
 	g_return_if_fail(slpcall != NULL);
 
+#ifdef MSN_DEBUG_UD
 	gaim_debug_info("msn", "End User Display\n");
+#endif
+
+	/* Maybe the slplink was destroyed. */
+	if (slpcall->slplink == NULL)
+		return;
 
 	userlist = slpcall->slplink->session->userlist;
 
@@ -977,8 +993,10 @@
 	/* Free one window slot */
 	userlist->buddy_icon_window++;
 
+#ifdef MSN_DEBUG_UD
 	gaim_debug_info("msn", "buddy_icon_window=%d\n",
 					userlist->buddy_icon_window);
+#endif
 
 	msn_release_buddy_icon_request(userlist);
 }
@@ -1016,7 +1034,9 @@
 		const char *my_info = NULL;
 		GSList *sl;
 
+#ifdef MSN_DEBUG_UD
 		gaim_debug_info("msn", "Requesting our own user display\n");
+#endif
 
 		my_obj = msn_user_get_object(session->user);
 
@@ -1044,8 +1064,10 @@
 		/* Free one window slot */
 		session->userlist->buddy_icon_window++;
 
+#ifdef MSN_DEBUG_UD
 		gaim_debug_info("msn", "buddy_icon_window=%d\n",
 						session->userlist->buddy_icon_window);
+#endif
 
 		msn_release_buddy_icon_request(session->userlist);
 	}

mercurial