src/protocols/jabber/jabber.c

changeset 14175
2bc5a80c5071
parent 14170
f611621bc8a0
--- a/src/protocols/jabber/jabber.c	Mon Aug 14 07:00:26 2006 +0000
+++ b/src/protocols/jabber/jabber.c	Mon Aug 14 07:18:58 2006 +0000
@@ -30,6 +30,7 @@
 #include "message.h"
 #include "notify.h"
 #include "pluginpref.h"
+#include "proxy.h"
 #include "prpl.h"
 #include "request.h"
 #include "server.h"
@@ -421,21 +422,18 @@
 
 
 static void
-jabber_login_callback(gpointer data, gint source)
+jabber_login_callback(gpointer data, gint source, const gchar *error)
 {
 	GaimConnection *gc = data;
 	JabberStream *js = gc->proto_data;
 
+	js->connect_info = NULL;
+
 	if (source < 0) {
 		gaim_connection_error(gc, _("Couldn't connect to host"));
 		return;
 	}
 
-	if(!g_list_find(gaim_connections_get_all(), gc)) {
-		close(source);
-		return;
-	}
-
 	js->fd = source;
 
 	if(js->state == JABBER_STREAM_CONNECTING)
@@ -474,12 +472,10 @@
 
 static void jabber_login_connect(JabberStream *js, const char *server, int port)
 {
-	GaimProxyConnectInfo *connect_info;
-
-	connect_info = gaim_proxy_connect(js->gc->account, server,
+	js->connect_info = gaim_proxy_connect(js->gc->account, server,
 			port, jabber_login_callback, js->gc);
 
-	if (connect_info == NULL)
+	if (js->connect_info == NULL)
 		gaim_connection_error(js->gc, _("Unable to create socket"));
 }
 
@@ -862,7 +858,6 @@
 	const char *connect_server = gaim_account_get_string(account,
 			"connect_server", "");
 	const char *server;
-	GaimProxyConnectInfo *connect_info;
 
 	js = gc->proto_data = g_new0(JabberStream, 1);
 	js->gc = gc;
@@ -912,11 +907,11 @@
 	}
 
 	if(!js->gsc) {
-		connect_info = gaim_proxy_connect(account, server,
+		js->connect_info = gaim_proxy_connect(account, server,
 				gaim_account_get_int(account, "port", 5222),
 				jabber_login_callback, gc);
 
-		if (connect_info == NULL)
+		if (js->connect_info == NULL)
 			gaim_connection_error(gc, _("Unable to create socket"));
 	}
 }
@@ -932,6 +927,9 @@
 	if (!gc->disconnect_timeout)
 		jabber_send_raw(js, "</stream:stream>", -1);
 
+	if (js->connect_info)
+		gaim_proxy_connect_cancel(js->connect_info);
+
 	if(js->gsc) {
 #ifdef HAVE_OPENSSL
 		if (!gc->disconnect_timeout)

mercurial