But the channel is only "dead" if the xmlhtprequest wasn't processed properly. And that should never happen. If the xmlhttprequest is in pol with readyState == 4, then new xmlhttprequest should be created.
Can you demonstrate the behavior you're describing on a quick start project? -Matej On 3/15/07, Martin Funk <[EMAIL PROTECTED]> wrote:
Hi, as I see it Wicket.Ajax.getTransport sometimes returns XMLHttpRequest objects that are in "readyState == 4" so they still might be processed by the "stateChangeCallback". Once "stateChangeCallback" reaches "t.onreadystatechange = Wicket.emptyFunction;" the freshly created XMLHttpRequest never calls back, the Channel its been asigned to never reaches "done" the Channel is dead. To resolve that I came up with this patch. Not quite shure if it introduces more problems than it solves:-) Esp. I cant tell if XMLHttpRequest.abort() sets back the readyState back to 0 on all browsers. mf Index: jdk-1.4/wicket/src/main/java/wicket/ajax/wicket-ajax.js =================================================================== --- jdk-1.4/wicket/src/main/java/wicket/ajax/wicket-ajax.js (Revision 518505) +++ jdk-1.4/wicket/src/main/java/wicket/ajax/wicket-ajax.js (Arbeitskopie) @@ -403,7 +403,7 @@ this.busy = true; return callback(); } else { - Wicket.Log.info("Chanel busy - postponing..."); + Wicket.Log.info("Channel busy - postponing..."); if (this.type == 's') // stack this.callbacks.push(callback); else /* drop */ @@ -487,7 +487,7 @@ getTransport: function() { var t = Wicket.Ajax.transports; for (var i = 0; i < t.length; ++i) { - if (t[i].readyState == 0 || t[i].readyState == 4) { + if (t[i].readyState == 0) { return t[i]; } } @@ -713,7 +713,7 @@ this.done(); this.failure(); } - t.onreadystatechange = Wicket.emptyFunction; + t.abort(); this.transport = null; } }