diff libpurple/protocols/jabber/jabber.c @ 30506:e0796db1df8a

Keep track of more than one relay request at a time (this is probably not likely to happen, but you never know...)
author Marcus Lundblad <ml@update.uu.se>
date Wed, 30 Sep 2009 21:31:04 +0000
parents a7e16735b218
children 093c79fa01c7 d760797a3528
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c	Wed Sep 30 18:53:47 2009 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Wed Sep 30 21:31:04 2009 +0000
@@ -844,7 +844,7 @@
 	js->stun_query = NULL;
 	js->google_relay_token = NULL;
 	js->google_relay_host = NULL;
-	js->google_relay_request = NULL;
+	js->google_relay_requests = NULL;
 
 	/* if we are idle, set idle-ness on the stream (this could happen if we get
 		disconnected and the reconnects while being idle. I don't think it makes
@@ -1569,14 +1569,16 @@
 	/* remove Google relay-related stuff */
 	g_free(js->google_relay_token);
 	g_free(js->google_relay_host);
-	if (js->google_relay_request) {
-		purple_util_fetch_url_cancel(js->google_relay_request);
-		js->google_relay_request = NULL;
-	}
-
-	if (js->google_relay_request != NULL) {
-		purple_util_fetch_url_cancel(js->google_relay_request);
-		js->google_relay_request = NULL;
+	if (js->google_relay_requests) {
+		while (js->google_relay_requests) {
+			PurpleUtilFetchUrlData *url_data =
+				(PurpleUtilFetchUrlData *) js->google_relay_requests->data;
+			purple_util_fetch_url_cancel(url_data);
+			g_free(url_data);
+			js->google_relay_requests = 
+				g_list_delete_link(js->google_relay_requests, 
+					js->google_relay_requests);
+		}
 	}
 
 	g_free(js);