From 49da4874e5873b83ded966e207752271321db1ec Mon Sep 17 00:00:00 2001 From: "silver%warwickcompsoc.co.uk" Date: Wed, 7 Dec 2005 14:28:31 +0000 Subject: [PATCH] Bug 319219 - Add warning and error messages to be shown to the user when we detect that bug 291386 has attacked us. ChatZilla only. r=samuel --- extensions/irc/xul/content/handlers.js | 37 ++++++++++++++++--- extensions/irc/xul/content/static.js | 2 +- .../irc/xul/locale/en-US/chatzilla.properties | 6 ++- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/extensions/irc/xul/content/handlers.js b/extensions/irc/xul/content/handlers.js index 0be4cfd461ea..df86f54e198f 100644 --- a/extensions/irc/xul/content/handlers.js +++ b/extensions/irc/xul/content/handlers.js @@ -642,12 +642,37 @@ function onInputCompleteLine(e) } } -function onNotifyTimeout () +function onNotifyTimeout() { + /* Workaround: bug 291386 - timers sometimes fire way too quickly. + * This catches us out, as it causes the notify code (this) and the who + * code (below) to fire continuously, which completely floods the + * sendQueue. We work around this for now by reporting the probable + * error condition here, but don't attempt to stop it. + */ + for (var n in client.networks) { var net = client.networks[n]; if (net.isConnected()) { + // WORKAROUND BEGIN // + if (!("bug291386" in client) && + (net.primServ.sendQueue.length >= 1000)) + { + client.bug291386 = 10; + display(MSG_BUG291386_WARNING, MT_WARN); + window.getAttention(); + return; + } + else if (("bug291386" in client) && (client.bug291386 > 0) && + (net.primServ.sendQueue.length >= (1000 * client.bug291386))) + { + client.bug291386++; + display(MSG_BUG291386_ERROR, MT_ERROR); + window.getAttention(); + return; + } + // WORKAROUND END // if (net.prefs["notifyList"].length > 0) { var isonList = client.networks[n].prefs["notifyList"]; net.primServ.sendData ("ISON " + isonList.join(" ") + "\n"); @@ -1256,7 +1281,7 @@ function my_263 (e) return true; } -CIRCNetwork.prototype.isRunningList = +CIRCNetwork.prototype.isRunningList = function my_running_list() { return (("_list" in this) && !this._list.done && !this._list.cancelled); @@ -1321,7 +1346,7 @@ function my_list_init () /* The server is no longer throwing stuff at us, so now * we can safely kill the list. */ - network.display(getMsg(MSG_LIST_END, + network.display(getMsg(MSG_LIST_END, [list.displayed, list.count])); delete network._list; } @@ -1432,7 +1457,7 @@ function my_listrply (e) ++this._list.count; /* If the list has been cancelled, don't bother adding all this info - * anymore. Do increase the count (above), otherwise we never truly notice + * anymore. Do increase the count (above), otherwise we never truly notice * the list being finished. */ if (this._list.cancelled) @@ -2154,7 +2179,7 @@ function my_cjoin (e) if (userIsMe(e.user)) { var params = [e.user.unicodeName, e.channel.unicodeName]; - this.display(getMsg(MSG_YOU_JOINED, params), "JOIN", + this.display(getMsg(MSG_YOU_JOINED, params), "JOIN", e.server.me, this); if (client.globalHistory) client.globalHistory.addPage(this.getURL()); @@ -2273,7 +2298,7 @@ function my_ckick (e) else { this.display (getMsg(MSG_YOURE_GONE, - [e.lamer.unicodeName, e.channel.unicodeName, + [e.lamer.unicodeName, e.channel.unicodeName, MSG_SERVER, e.reason]), "KICK", (void 0), this); } diff --git a/extensions/irc/xul/content/static.js b/extensions/irc/xul/content/static.js index 4f2a0a137d3f..2da088c3a9be 100644 --- a/extensions/irc/xul/content/static.js +++ b/extensions/irc/xul/content/static.js @@ -43,7 +43,7 @@ const __cz_version = "0.9.67+"; const __cz_condition = "green"; const __cz_suffix = ""; const __cz_guid = "59c81df5-4b7a-477b-912d-4e0fdf64e5f2"; -const __cz_locale = "0.9.67.4"; +const __cz_locale = "0.9.67.5"; var warn; var ASSERT; diff --git a/extensions/irc/xul/locale/en-US/chatzilla.properties b/extensions/irc/xul/locale/en-US/chatzilla.properties index 61bdb2280f50..204840f4446b 100644 --- a/extensions/irc/xul/locale/en-US/chatzilla.properties +++ b/extensions/irc/xul/locale/en-US/chatzilla.properties @@ -69,7 +69,7 @@ # ### End of notes ### -locale.version = 0.9.67.4 +locale.version = 0.9.67.5 locale.error = You are using ChatZilla %1$S, which requires the locale version %2$S. The currently selected locale, %3$S, is version %4$S, and therefore there may be problems running ChatZilla.\n\nIt is strongly advised that you update or remove the ChatZilla locale in question. # Misc @@ -719,6 +719,10 @@ msg.err.unsupported.command = The server does not support the ``%S'' command. msg.err.invalid.mode = The mode string you entered (``%S'') is invalid. A valid mode string consists of one or more sequences of a + or - followed by one or more alphabetical characters. msg.err.away.save = Saving the list of away messages failed (%S). +# Specific bug messages. +msg.bug291386.warning = ChatZilla has detected a potential abnormality in its internal data. You will not be able to send any form of communication at this time, although it might appear you can. The most likely cause is Mozilla Bug 291386 . You are strongly advised to restart the host application (&brandShortName;) to prevent further problems. +msg.bug291386.error = ChatZilla has detected a serious abnormality in its internal data. You will not be able to send any form of communication at this time, although it might appear you can. The most likely cause is Mozilla Bug 291386 . You MUST restart the host application (&brandShortName;) to fix this. + # Ask for oper pass if not explicitly given in the command: msg.need.oper.password = Please enter a password for obtaining IRC Operator privileges.