Mercurial > pidgin
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;
