From 5e051ddb208c21a84fdb01194782da03fd6ebf6c Mon Sep 17 00:00:00 2001 From: Goffi Date: Sat, 20 Jul 2019 20:55:17 +0200 Subject: [PATCH] plugin XEP-0198: catch and log an error if buffer is unexpectedly empty --- sat/plugins/plugin_xep_0198.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sat/plugins/plugin_xep_0198.py b/sat/plugins/plugin_xep_0198.py index aabff0b7..77133090 100644 --- a/sat/plugins/plugin_xep_0198.py +++ b/sat/plugins/plugin_xep_0198.py @@ -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):