+/* This could do with a rewrite from scratch. */
+
var IRCConnection = new Class({
Implements: [Events, Options],
options: {
return true;
},
__timeout: function() {
+ if(this.lastactiverequest) {
+ this.lastactiverequest.cancel();
+ this.lastactiverequest = null;
+ alert("warning: last active request");
+ }
if(this.activerequest) {
- this.activerequest.cancel();
- this.activerequest = null;
+ this.lastactiverequest = this.activerequest;
+ /*this.activerequest.cancel();
+ this.activerequest = null;*/
}
if($defined(this.timeoutid)) {
$clear(this.timeoutid);
},
recv: function() {
var r = new Request.JSON({url: "/e/s/" + this.sessionid + "?t=" + this.counter++, onComplete: function(o) {
- this.activerequest = null;
+ if(this.lastactiverequest != r)
+ this.activerequest = null;
+
if($defined(this.timeoutid)) {
$clear(this.timeoutid);
this.timeoutid = null;
}
-
+
if(o) {
+ if(this.lastactiverequest == r)
+ this.lastactiverequest = null;
this.lasttry = false;
if(o[0] == false) {
if(!this.disconnected) {
this.fireEvent("recv", [x]);
}, this);
} else {
+ if(this.lastactiverequest == r) {
+ this.lastactiverequest = null;
+ return;
+ }
if(!this.disconnected) {
if(this.lasttry) {
this.disconnected = true;
def subscribe(self, channel):
if len(self.subscriptions) >= config.MAXSUBSCRIPTIONS:
- self.subscriptions.pop(0)
+ self.subscriptions.pop(0).close()
self.subscriptions.append(channel)
self.flush()
self.request.finish()
return False
+ def close(self):
+ self.request.finish()
+
class MultipleUseChannel(Channel):
def write(self, data):
self.request.write(data)