Merge pull request #2628 from Raizo62/console

Fix QEMU serial console artifacts by filtering ANSI CPR responses in …
This commit is contained in:
Jeremy Grossmann 2026-03-06 18:24:34 +08:00 committed by GitHub
commit 09aaf43dd1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,6 +20,7 @@ import socket
import asyncio
import asyncio.subprocess
import struct
import re
import logging
log = logging.getLogger(__name__)
@ -57,6 +58,7 @@ NAWS = 31 # Negotiate About Window Size
LINEMO = 34 # Line Mode
READ_SIZE = 1024
CPR_RESPONSE = re.compile(br"\x1b\[[0-9]{1,4}(;[0-9]{1,4})?R")
class TelnetConnection(object):
@ -286,6 +288,11 @@ class AsyncioTelnetServer:
if IAC in data:
data = await self._IAC_parser(data, network_reader, network_writer, connection)
# Some terminal clients may send ANSI cursor position reports
# (e.g. ESC[1;80R) when attaching to a serial console. Those
# responses can show up as spurious characters at the shell prompt.
data = CPR_RESPONSE.sub(b"", data)
if len(data) == 0:
continue