diff src/protocols/qq/qq_proxy.c @ 14089:10e8eb6a4910

[gaim-migrate @ 16712] Pretty large commit here. Basically I got sick of having to verify that gc is still valid on all the callback functions for gaim_proxy_connect(). The fix for this for gaim_proxy_connect() to return something that allows the connection attempt to be canceled. It's not quite there yet, but this is a good first step. I changed gaim_proxy_connect() to return a reference to a new GaimProxyConnectInfo (this used to be called PHB). Eventually this can be passed to a function that'll cancel the connection attempt. I also decided to add an error_cb instead of using connect_cb and passing a file descriptor of -1. And proxy.c will also pass an error message to callers which should explain the reason that the connection attempt failed. Oh, and proxy.c now never calls gaim_connection_error() committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 12 Aug 2006 10:12:43 +0000
parents 3cefea0bf4a2
children 7a205b430d19
line wrap: on
line diff
--- a/src/protocols/qq/qq_proxy.c	Sat Aug 12 10:06:15 2006 +0000
+++ b/src/protocols/qq/qq_proxy.c	Sat Aug 12 10:12:43 2006 +0000
@@ -119,7 +119,7 @@
 
 /* the callback function after socket is built
  * we setup the qq protocol related configuration here */
-static void _qq_got_login(gpointer data, gint source, GaimInputCondition cond)
+static void _qq_got_login(gpointer data, gint source)
 {
 	qq_data *qd;
 	GaimConnection *gc;
@@ -309,7 +309,7 @@
  * and qq_udp_proxy.c to add UDP proxy support (thanks henry)
  *  return the socket handle, -1 means fail */
 static gint _proxy_connect_full (GaimAccount *account, const gchar *host, guint16 port, 
-		GaimInputFunction func, gpointer data, gboolean use_tcp)
+		GaimProxyConnectFunction func, gpointer data, gboolean use_tcp)
 {
 	GaimConnection *gc;
 	qq_data *qd;
@@ -319,8 +319,12 @@
 	qd->server_ip = g_strdup(host);
 	qd->server_port = port;
 
-	return use_tcp ? gaim_proxy_connect(account, host, port, func, data) :	/* TCP mode */
-	    _qq_udp_proxy_connect(account, host, port, func, data);	/* UDP mode */
+	if (use_tcp)
+		/* TCP mode */
+		return (gaim_proxy_connect(account, host, port, func, NULL, data) == NULL);
+	else
+		/* UDP mode */
+		return _qq_udp_proxy_connect(account, host, port, func, data);
 }
 
 /* establish a generic QQ connection