]> git.wh0rd.org - tt-rss.git/commitdiff
xmlhttp sometimes get stuck in main loop: workaround
authorAndrew Dolgov <fox@madoka.spb.ru>
Thu, 2 Mar 2006 17:07:46 +0000 (18:07 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Thu, 2 Mar 2006 17:07:46 +0000 (18:07 +0100)
tt-rss.js

index a600c9c332c351103f26a228922a19065f259f81..aa08b74f7a4e2c72ca237877eb1ec2680d4d9ae2 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -8,6 +8,7 @@ var current_subtitle = "";
 var daemon_enabled = false;
 var _qfd_deleted_feed = 0;
 var firsttime_update = true;
+var last_refetch = 0;
 
 /*@cc_on @*/
 /*@if (@_jscript_version >= 5)
@@ -102,6 +103,10 @@ function refetch_callback() {
        if (xmlhttp.readyState == 4) {
                try {
 
+                       var date = new Date();
+
+                       last_refetch = date.getTime() / 1000;
+
                        if (!xmlhttp.responseXML) {
                                notify("refetch_callback: backend did not return valid XML");
                                return;
@@ -207,11 +212,19 @@ function scheduleFeedUpdate(force) {
 
        debug("in scheduleFeedUpdate");
 
+       var date = new Date();
+
+       if (!xmlhttp_ready(xmlhttp) && last_refetch < date.getTime() / 1000 - 60) {
+               debug("xmlhttp seems to be stuck, aborting");
+               xmlhttp.abort();
+       }
+
        if (xmlhttp_ready(xmlhttp)) {
                xmlhttp.open("GET", query_str, true);
                xmlhttp.onreadystatechange=refetch_callback;
                xmlhttp.send(null);
        } else {
+               debug("xmlhttp busy");
                printLockingError();
        }   
 }