summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--feedlist.js1
-rw-r--r--functions.js37
-rw-r--r--viewfeed.js4
3 files changed, 25 insertions, 17 deletions
diff --git a/feedlist.js b/feedlist.js
index 0d4589331..8f1b5efec 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 e9cbed91b..6827420c6 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 52f0e8add..0f5345b9b 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");