From 4b6206fa978bde200731872bc4a587d3135cf0a0 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 23 Nov 2006 06:26:49 +0100 Subject: [PATCH] detect xmlhttp deadlocks in view() --- viewfeed.js | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/viewfeed.js b/viewfeed.js index 70e8aaf0..7a499fd3 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -1,5 +1,6 @@ var active_post_id = false; var _catchup_callback_func = false; +var last_article_view = false; function catchup_callback() { if (xmlhttp_rpc.readyState == 4) { @@ -39,6 +40,10 @@ function article_callback() { f.scrollTop = 0; } catch (e) { }; f.innerHTML = xmlhttp.responseText; + + var date = new Date(); + last_article_view = date.getTime() / 1000; + if (typeof correctPNG != 'undefined') { correctPNG(); } @@ -53,30 +58,35 @@ function view(id, feed_id) { enableHotkeys(); - var crow = document.getElementById("RROW-" + id); - - crow.className = crow.className.replace("Unread", ""); - - cleanSelected("headlinesList"); - - var upd_img_pic = document.getElementById("FUPDPIC-" + id); - - if (upd_img_pic) { - upd_img_pic.src = "images/blank_icon.gif"; - } - active_post_id = id; //setActiveFeedId(feed_id); - - var content = document.getElementById("content-frame"); - - selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false); - markHeadline(active_post_id); var query = "backend.php?op=view&id=" + param_escape(id) + "&feed=" + param_escape(feed_id); + var date = new Date(); + + if (!xmlhttp_ready(xmlhttp) && last_article_view < date.getTime() / 1000 - 15) { + debug("xmlhttp seems to be stuck at view, aborting"); + xmlhttp.abort(); + } + if (xmlhttp_ready(xmlhttp)) { + + cleanSelected("headlinesList"); + + var crow = document.getElementById("RROW-" + active_post_id); + crow.className = crow.className.replace("Unread", ""); + + var upd_img_pic = document.getElementById("FUPDPIC-" + active_post_id); + + if (upd_img_pic) { + upd_img_pic.src = "images/blank_icon.gif"; + } + + selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false); + markHeadline(active_post_id); + xmlhttp.open("GET", query, true); xmlhttp.onreadystatechange=article_callback; xmlhttp.send(null); -- 2.39.2