diff --git a/coilmq/util/frames.py b/coilmq/util/frames.py index 3026ee0..5323754 100644 --- a/coilmq/util/frames.py +++ b/coilmq/util/frames.py @@ -333,7 +333,7 @@ def extract_frame(self): f = Frame.from_buffer(self._buffer) self._pointer = self._buffer.tell() except (IncompleteFrame, EmptyBuffer): - self._buffer.seek(self._pointer, 0) + self._buffer.seek(0, 2) return None return f diff --git a/tests/functional/test_basic.py b/tests/functional/test_basic.py index c2d34d0..af98f11 100644 --- a/tests/functional/test_basic.py +++ b/tests/functional/test_basic.py @@ -121,3 +121,28 @@ def test_send_utf8(self): res = c1.received_frames.get() self.assertEqual(res.cmd, 'message') self.assertEqual(res.body, utf8msg) + + + def test_send_large_message(self): + """ + Test sending a large message after a short one. + """ + c1 = self._new_client() + c1.subscribe('/queue/foo') + + shortmessage = 'x' + longmessage = 'y' * 1024 * 16 + + c2 = self._new_client() + + c2.send('/queue/foo', shortmessage) + + res = c1.received_frames.get() + self.assertEqual(res.cmd, 'message') + self.assertEqual(res.body, shortmessage) + + c2.send('/queue/foo', longmessage) + + res2 = c1.received_frames.get() + self.assertEqual(res2.cmd, 'message') + self.assertEqual(res2.body, longmessage)