From: Ethan B. <ebl...@us...> - 2004-07-02 03:54:25
|
Update of /cvsroot/gaim/gaim/src/protocols/irc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27362 Modified Files: cmds.c irc.c irc.h Log Message: This should prevent any loops on connection errors for IRC Index: cmds.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/irc/cmds.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -p -r1.15 -r1.16 --- cmds.c 9 Jun 2004 06:34:33 -0000 1.15 +++ cmds.c 2 Jul 2004 03:54:13 -0000 1.16 @@ -362,9 +362,13 @@ int irc_cmd_quit(struct irc_conn *irc, c { char *buf; - buf = irc_format(irc, "v:", "QUIT", (args && args[0]) ? args[0] : "Download Gaim: " GAIM_WEBSITE); - irc_send(irc, buf); - g_free(buf); + if (!irc->quitting) { + buf = irc_format(irc, "v:", "QUIT", (args && args[0]) ? args[0] : "Download Gaim: " GAIM_WEBSITE); + irc_send(irc, buf); + g_free(buf); + + irc->quitting = TRUE; + } return 0; } Index: irc.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/irc/irc.c,v retrieving revision 1.222 retrieving revision 1.223 diff -u -d -p -r1.222 -r1.223 --- irc.c 19 Jun 2004 04:57:39 -0000 1.222 +++ irc.c 2 Jul 2004 03:54:13 -0000 1.223 @@ -82,11 +82,17 @@ static void irc_view_motd(GaimPluginActi int irc_send(struct irc_conn *irc, const char *buf) { + int ret; + if (irc->fd < 0) return -1; /* gaim_debug(GAIM_DEBUG_MISC, "irc", "sent: %s", buf); */ - return write(irc->fd, buf, strlen(buf)); + if ((ret = write(irc->fd, buf, strlen(buf))) < 0) + gaim_connection_error(gaim_account_get_connection(irc->account), + _("Server has disconnected")); + + return ret; } /* XXX I don't like messing directly with these buddies */ @@ -387,7 +393,7 @@ static void irc_input_cb(gpointer data, gaim_connection_error(gc, _("Read error")); return; } else if (len == 0) { - /* Remote closed the connection, probably */ + gaim_connection_error(gc, _("Server has disconnected")); return; } Index: irc.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/irc/irc.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -p -r1.11 -r1.12 --- irc.h 9 Jun 2004 06:34:33 -0000 1.11 +++ irc.h 2 Jul 2004 03:54:14 -0000 1.12 @@ -69,6 +69,8 @@ struct irc_conn { time_t signon; } whois; GaimRoomlist *roomlist; + + gboolean quitting; }; struct irc_buddy { |