make[1]: Entering directory '/home/runner/work/moq-interop-runner/moq-interop-runner/main' Running tests against moqt://draft-18-interop.cloudflare.mediaoverquic.com:443... Client: ghcr.io/gmarzot/aiomoqt:latest docker run --rm \ \ --network host \ -e RELAY_URL=moqt://draft-18-interop.cloudflare.mediaoverquic.com:443 \ -e TLS_DISABLE_VERIFY=false \ ghcr.io/gmarzot/aiomoqt:latest WARNING aiopquic.quic.connection: connection closed (transport): error=376 2026-08-21 00:16:52.317 ERROR: QUIC error: code: 376 reason: ConnectionTerminated 2026-08-21 00:16:52.318 ERROR: MOQT error: closing: ConnectionTerminated (376) WARNING aiopquic.quic.connection: connection closed (transport): error=376 2026-08-21 00:16:52.347 ERROR: QUIC error: code: 376 reason: ConnectionTerminated 2026-08-21 00:16:52.347 ERROR: MOQT error: closing: ConnectionTerminated (376) [PASS] setup-only: SERVER_SETUP received with compatible version [PASS] announce-only: PUBLISH_NAMESPACE_OK received [PASS] publish-namespace-done: PUBLISH_NAMESPACE_OK received, PUBLISH_NAMESPACE_DONE sent [PASS] subscribe-error: Error received (expected): code=16 2026-08-21 00:16:53.190 ERROR: handle_control_message: error handling control message: RuntimeError: RuntimeError('non-compliant peer: truncated trailing extensions block (kvp_start=8 tell=9 exts_end=9 parsed_kvps=0)') 2026-08-21 00:16:53.192 ERROR: handle_control_message: traceback: Traceback (most recent call last): File "/app/aiomoqt/messages/base.py", line 169, in _extensions_decode ext_value = buf.pull_uint_var() ^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 181, in aiopquic._binding._buffer.Buffer.pull_uint_var File "src/aiopquic/_binding/_buffer.pyx", line 183, in aiopquic._binding._buffer.Buffer.pull_uint_var aiopquic._binding._buffer.BufferReadError: read out of bounds During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/app/aiomoqt/protocol.py", line 544, in _moqt_handle_control_message msg = message_class.deserialize(buf, prof=self._profile, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/subscribe.py", line 505, in deserialize track_extensions = MOQTMessage._extensions_decode( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 184, in _extensions_decode raise RuntimeError( RuntimeError: non-compliant peer: truncated trailing extensions block (kvp_start=8 tell=9 exts_end=9 parsed_kvps=0) ERROR asyncio: Exception in callback QuicConnectionProtocol._on_eventfd() handle: Traceback (most recent call last): File "/app/aiomoqt/messages/base.py", line 169, in _extensions_decode ext_value = buf.pull_uint_var() ^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 181, in aiopquic._binding._buffer.Buffer.pull_uint_var File "src/aiopquic/_binding/_buffer.pyx", line 183, in aiopquic._binding._buffer.Buffer.pull_uint_var aiopquic._binding._buffer.BufferReadError: read out of bounds During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/protocol.py", line 61, in _on_eventfd self._process_events() File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/protocol.py", line 86, in _process_events self.quic_event_received(event) File "/app/aiomoqt/protocol.py", line 1271, in quic_event_received self._handle_bidi_stream(stream_id, msg_buf, msg_len) File "/app/aiomoqt/protocol.py", line 1730, in _handle_bidi_stream msg = self._moqt_handle_control_message( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/protocol.py", line 544, in _moqt_handle_control_message msg = message_class.deserialize(buf, prof=self._profile, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/subscribe.py", line 505, in deserialize track_extensions = MOQTMessage._extensions_decode( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 184, in _extensions_decode raise RuntimeError( RuntimeError: non-compliant peer: truncated trailing extensions block (kvp_start=8 tell=9 exts_end=9 parsed_kvps=0) [PASS (COMPAT)] announce-subscribe: relay holds subscription pending (forward-and-wait); no SUBSCRIBE_OK within 5s [PASS] subscribe-before-announce: Error received (valid: relay didn't buffer): code=16 TAP version 14 # date: 2026-08-21T00:16:52Z # ended: 2026-08-21T00:16:58Z # target: moqt://draft-18-interop.cloudflare.mediaoverquic.com:443 # version: aiomoqt/0.10.6 # note: preference probe pinned draft-18 1..6 ok 1 - setup-only --- duration_ms: 100.1 connection_id: unknown message: SERVER_SETUP received with compatible version ... ok 2 - announce-only --- duration_ms: 107.5 connection_id: unknown message: PUBLISH_NAMESPACE_OK received ... ok 3 - publish-namespace-done --- duration_ms: 207.2 connection_id: unknown message: PUBLISH_NAMESPACE_OK received, PUBLISH_NAMESPACE_DONE sent ... ok 4 - subscribe-error --- duration_ms: 103.9 connection_id: unknown message: Error received (expected): code=16 expected: SUBSCRIBE_ERROR code=TRACK_DOES_NOT_EXIST ... ok 5 - announce-subscribe # COMPAT --- duration_ms: 5186.1 publisher_connection_id: unknown subscriber_connection_id: unknown message: relay holds subscription pending (forward-and-wait); no SUBSCRIBE_OK within 5s compat: true compat_note: relay held the subscription pending without an eager SUBSCRIBE_OK; accepted as a valid forward-and-wait relay model (matches moq-rs) wire_noncompliance: 1 ... ok 6 - subscribe-before-announce --- duration_ms: 684.8 publisher_connection_id: unknown subscriber_connection_id: unknown message: Error received (valid: relay didn't buffer): code=16 ... # wire_noncompliance_total: trailing_extensions=1 make[1]: Leaving directory '/home/runner/work/moq-interop-runner/moq-interop-runner/main'