]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - qwebirc/engines/ajaxengine.py
Merge.
[irc/quakenet/qwebirc.git] / qwebirc / engines / ajaxengine.py
index 3a1c0244c487aba7fcdabb91d35e5b4b518fbce8..26aa7ad5b0d535985d42919932638c9350d998c1 100644 (file)
@@ -65,7 +65,7 @@ class IRCSession:
     if len(self.subscriptions) >= config.MAXSUBSCRIPTIONS:
       self.subscriptions.pop(0).close()
 
-    if seqNo < self.subSeqNo:
+    if seqNo is not None and seqNo < self.subSeqNo:
       if self.old_buffer is None or seqNo != self.old_buffer[0]:
         channel.write(json.dumps([False, "Unable to reconnect -- sequence number too old."]), seqNo + 1)
         return
@@ -87,7 +87,7 @@ class IRCSession:
       return
 
     self.unsubscribe(channel)
-    channel.write(EMPTY_JSON_LIST)
+    channel.write(EMPTY_JSON_LIST, self.subSeqNo)
 
   def flush(self, scheduled=False):
     if scheduled:
@@ -312,7 +312,7 @@ class AJAXEngine(resource.Resource):
         if seq_no < 0 or seq_no > MAX_SEQNO:
           raise ValueError
     except ValueError:
-      raise AJAXEngine, "Bad sequence number"
+      raise AJAXEngine("Bad sequence number %r" % seq_no)
 
     session = self.getSession(request)
     try:
@@ -380,7 +380,7 @@ if has_websocket:
       message_type, message = msg[:1], msg[1:]
       if state == self.AWAITING_AUTH:
         if message_type == "s":  # subscribe
-          tokens = message.split(",", 2)
+          tokens = message.split(",", 1)
           if len(tokens) != 2:
             self.close("Bad tokens")
             return
@@ -407,7 +407,7 @@ if has_websocket:
           return
       elif state == self.AUTHED:
         if message_type == "p":  # push
-          tokens = message.split(",", 2)
+          tokens = message.split(",", 1)
           if len(tokens) != 2:
             self.close("Bad tokens")
             return