check for backend-returned fatal errors in major callbacks

This commit is contained in:
Andrew Dolgov 2009-01-31 23:03:40 +03:00
parent 0002bc9f27
commit 2184738a44
3 changed files with 25 additions and 17 deletions

View File

@ -33,6 +33,7 @@ function viewCategory(cat) {
function feedlist_callback2(transport) { function feedlist_callback2(transport) {
try { try {
debug("feedlist_callback2"); debug("feedlist_callback2");
if (!transport_error_check(transport)) return;
var f = document.getElementById("feeds-frame"); var f = document.getElementById("feeds-frame");
f.innerHTML = transport.responseText; f.innerHTML = transport.responseText;
feedlist_init(); feedlist_init();

View File

@ -604,24 +604,8 @@ function parse_counters_reply(transport, scheduled_call) {
updateTitle(""); updateTitle("");
return; return;
} }
var error_code = false;
var error_msg = false;
if (reply.firstChild) { if (!transport_error_check(transport)) return;
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);
}
var counters = reply.getElementsByTagName("counters")[0]; 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;
}

View File

@ -67,6 +67,8 @@ function headlines_callback2(transport, feed_cur_page) {
debug("headlines_callback2 [page=" + feed_cur_page + "]"); debug("headlines_callback2 [page=" + feed_cur_page + "]");
if (!transport_error_check(transport)) return;
clean_feed_selections(); clean_feed_selections();
var is_cat = false; var is_cat = false;
@ -327,6 +329,8 @@ function article_callback2(transport, id, feed_id) {
if (transport.responseXML) { if (transport.responseXML) {
if (!transport_error_check(transport)) return;
debug("looking for articles to cache..."); debug("looking for articles to cache...");
var articles = transport.responseXML.getElementsByTagName("article"); var articles = transport.responseXML.getElementsByTagName("article");