plugin XEP-0198: catch and log an error if buffer is unexpectedly empty

This commit is contained in:
Goffi 2019-07-20 20:55:17 +02:00
commit 5e051ddb20

View file

@ -245,8 +245,17 @@ class XEP_0198(object):
"""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):