From 2184738a443e3fa62ea197f9b33b174eff8cf41d Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 31 Jan 2009 23:03:40 +0300 Subject: [PATCH] check for backend-returned fatal errors in major callbacks --- feedlist.js | 1 + functions.js | 37 ++++++++++++++++++++----------------- viewfeed.js | 4 ++++ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/feedlist.js b/feedlist.js index 0d458933..8f1b5efe 100644 --- a/feedlist.js +++ b/feedlist.js @@ -33,6 +33,7 @@ function viewCategory(cat) { function feedlist_callback2(transport) { try { debug("feedlist_callback2"); + if (!transport_error_check(transport)) return; var f = document.getElementById("feeds-frame"); f.innerHTML = transport.responseText; feedlist_init(); diff --git a/functions.js b/functions.js index e9cbed91..6827420c 100644 --- a/functions.js +++ b/functions.js @@ -604,24 +604,8 @@ function parse_counters_reply(transport, scheduled_call) { updateTitle(""); return; } - - var error_code = false; - var error_msg = false; - - if (reply.firstChild) { - error_code = reply.firstChild.getAttribute("error-code"); - error_msg = reply.firstChild.getAttribute("error-msg"); - } - if (!error_code) { - error_code = reply.getAttribute("error-code"); - error_msg = reply.getAttribute("error-msg"); - } - - if (error_code && error_code != 0) { - debug("refetch_callback: got error code " + error_code); - return fatalError(error_code, error_msg); - } + if (!transport_error_check(transport)) return; var counters = reply.getElementsByTagName("counters")[0]; @@ -2104,4 +2088,23 @@ function browseFeeds(limit) { } } +function transport_error_check(transport) { + try { + if (transport.responseXML) { + var error = transport.responseXML.getElementsByTagName("error")[0]; + + if (error) { + var code = error.getAttribute("error-code"); + var msg = error.getAttribute("error-msg"); + if (code != 0) { + fatalError(code, msg); + return false; + } + } + } + } catch (e) { + exception_error("check_for_error_xml", e); + } + return true; +} diff --git a/viewfeed.js b/viewfeed.js index 52f0e8ad..0f5345b9 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -67,6 +67,8 @@ function headlines_callback2(transport, feed_cur_page) { debug("headlines_callback2 [page=" + feed_cur_page + "]"); + if (!transport_error_check(transport)) return; + clean_feed_selections(); var is_cat = false; @@ -327,6 +329,8 @@ function article_callback2(transport, id, feed_id) { if (transport.responseXML) { + if (!transport_error_check(transport)) return; + debug("looking for articles to cache..."); var articles = transport.responseXML.getElementsByTagName("article"); -- 2.39.2