diff sat/plugins/plugin_xep_0198.py @ 3019:c9f03b1eb64d

plugin XEP-0198: catch and log an error if buffer is unexpectedly empty
author Goffi <goffi@goffi.org>
date Sat, 20 Jul 2019 20:55:17 +0200
parents 93da7c6f8e0c
children af9d71303605
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0198.py	Sat Jul 20 20:53:52 2019 +0200
+++ b/sat/plugins/plugin_xep_0198.py	Sat Jul 20 20:55:17 2019 +0200
@@ -245,8 +245,17 @@
         """Update buffer and buffer_index"""
         if server_acked > session.buffer_idx:
             diff = server_acked - session.buffer_idx
-            for i in xrange(diff):
-                session.buffer.pop()
+            try:
+                for i in xrange(diff):
+                    session.buffer.pop()
+            except IndexError:
+                log.error(
+                    u"error while cleaning buffer, invalid index (buffer is empty):\n"
+                    u"diff = {diff}\n"
+                    u"server_acked = {server_acked}\n"
+                    u"buffer_idx = {buffer_id}".format(
+                        diff=diff, server_acked=server_acked,
+                        buffer_id=session.buffer_idx))
             session.buffer_idx += diff
 
     def replayBuffer(self, client, buffer_, discard_results=False):