diff src/protocols/irc/irc.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 4bfb720a8fc2
children 7a205b430d19
line wrap: on
line diff
--- a/src/protocols/irc/irc.c	Sat Aug 12 10:06:15 2006 +0000
+++ b/src/protocols/irc/irc.c	Sat Aug 12 10:12:43 2006 +0000
@@ -46,7 +46,7 @@
 /* static GList *irc_chat_info(GaimConnection *gc); */
 static void irc_login(GaimAccount *account);
 static void irc_login_cb_ssl(gpointer data, GaimSslConnection *gsc, GaimInputCondition cond);
-static void irc_login_cb(gpointer data, gint source, GaimInputCondition cond);
+static void irc_login_cb(gpointer data, gint source);
 static void irc_ssl_connect_failure(GaimSslConnection *gsc, GaimSslErrorType error, gpointer data);
 static void irc_close(GaimConnection *gc);
 static int irc_im_send(GaimConnection *gc, const char *who, const char *what, GaimMessageFlags flags);
@@ -283,7 +283,7 @@
 	struct irc_conn *irc;
 	char **userparts;
 	const char *username = gaim_account_get_username(account);
-	int err;
+	GaimProxyConnectInfo *connect_info;
 
 	gc = gaim_account_get_connection(account);
 	gc->flags |= GAIM_CONNECTION_NO_NEWLINES;
@@ -325,11 +325,11 @@
 
 	if (!irc->gsc) {
 
-		err = gaim_proxy_connect(account, irc->server,
+		connect_info = gaim_proxy_connect(account, irc->server,
 				 gaim_account_get_int(account, "port", IRC_DEFAULT_PORT),
-				 irc_login_cb, gc);
+				 irc_login_cb, NULL, gc);
 
-		if (err || !gaim_account_get_connection(account)) {
+		if (!connect_info || !gaim_account_get_connection(account)) {
 			gaim_connection_error(gc, _("Couldn't create socket"));
 			return;
 		}
@@ -394,7 +394,7 @@
 	}
 }
 
-static void irc_login_cb(gpointer data, gint source, GaimInputCondition cond)
+static void irc_login_cb(gpointer data, gint source)
 {
 	GaimConnection *gc = data;
 	struct irc_conn *irc = gc->proto_data;