diff src/protocols/simple/simple.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 72660065eb3e
children 7a205b430d19
line wrap: on
line diff
--- a/src/protocols/simple/simple.c	Sat Aug 12 10:06:15 2006 +0000
+++ b/src/protocols/simple/simple.c	Sat Aug 12 10:12:43 2006 +0000
@@ -421,7 +421,7 @@
 
 static void simple_input_cb(gpointer data, gint source, GaimInputCondition cond);
 
-static void send_later_cb(gpointer data, gint source, GaimInputCondition cond) {
+static void send_later_cb(gpointer data, gint source) {
 	GaimConnection *gc = data;
 	struct simple_account_data *sip = gc->proto_data;
 	struct sip_connection *conn;
@@ -448,11 +448,12 @@
 
 static void sendlater(GaimConnection *gc, const char *buf) {
 	struct simple_account_data *sip = gc->proto_data;
-	int error = 0;
+	GaimProxyConnectInfo *connect_info;
+
 	if(!sip->connecting) {
 		gaim_debug_info("simple", "connecting to %s port %d\n", sip->realhostname ? sip->realhostname : "{NULL}", sip->realport);
-		error = gaim_proxy_connect(sip->account, sip->realhostname, sip->realport, send_later_cb, gc);
-		if(error) {
+		connect_info = gaim_proxy_connect(sip->account, sip->realhostname, sip->realport, send_later_cb, NULL, gc);
+		if(connect_info == NULL) {
 			gaim_connection_error(gc, _("Couldn't create socket"));
 		}
 		sip->connecting = TRUE;
@@ -1452,7 +1453,7 @@
 	conn->inputhandler = gaim_input_add(newfd, GAIM_INPUT_READ, simple_input_cb, gc);
 }
 
-static void login_cb(gpointer data, gint source, GaimInputCondition cond) {
+static void login_cb(gpointer data, gint source) {
 	GaimConnection *gc = data;
 	struct simple_account_data *sip = gc->proto_data;
 	struct sip_connection *conn;
@@ -1536,7 +1537,7 @@
 static void
 simple_tcp_connect_listen_cb(int listenfd, gpointer data) {
 	struct simple_account_data *sip = (struct simple_account_data*) data;
-	int error = 0;
+	GaimProxyConnectInfo *connect_info;
 
 	sip->listenfd = listenfd;
 	if(sip->listenfd == -1) {
@@ -1551,9 +1552,9 @@
 	gaim_debug_info("simple", "connecting to %s port %d\n",
 			sip->realhostname, sip->realport);
 	/* open tcp connection to the server */
-	error = gaim_proxy_connect(sip->account, sip->realhostname,
-			sip->realport, login_cb, sip->gc);
-	if(error) {
+	connect_info = gaim_proxy_connect(sip->account, sip->realhostname,
+			sip->realport, login_cb, NULL, sip->gc);
+	if(connect_info == NULL) {
 		gaim_connection_error(sip->gc, _("Couldn't create socket"));
 	}
 }