Final batch of pty driver fixes... For now.

This commit is contained in:
Storm Dragon
2025-07-16 19:48:48 -04:00
parent 579bf0f0f0
commit 8c668cc0cc

View File

@ -30,6 +30,7 @@ class PTYConstants:
# Timeouts (in seconds)
DEFAULT_READ_TIMEOUT = 0.3
INPUT_READ_TIMEOUT = 0.01
OUTPUT_READ_TIMEOUT = 0.05 # Faster than default but allows for network lag
SELECT_TIMEOUT = 0.05
PROCESS_TERMINATION_TIMEOUT = 3.0
PROCESS_KILL_DELAY = 0.5
@ -211,6 +212,9 @@ class driver(screenDriver):
'input_timeout': float(settings_manager.get_setting(
'screen', 'ptyInputTimeout', PTYConstants.INPUT_READ_TIMEOUT
)),
'output_timeout': float(settings_manager.get_setting(
'screen', 'ptyOutputTimeout', PTYConstants.OUTPUT_READ_TIMEOUT
)),
'select_timeout': float(settings_manager.get_setting(
'screen', 'ptySelectTimeout', PTYConstants.SELECT_TIMEOUT
)),
@ -235,6 +239,7 @@ class driver(screenDriver):
)
self.pty_config = {
'input_timeout': PTYConstants.INPUT_READ_TIMEOUT,
'output_timeout': PTYConstants.OUTPUT_READ_TIMEOUT,
'select_timeout': PTYConstants.SELECT_TIMEOUT,
'process_termination_timeout': PTYConstants.PROCESS_TERMINATION_TIMEOUT,
'poll_interval': PTYConstants.MIN_POLL_INTERVAL
@ -427,7 +432,9 @@ class driver(screenDriver):
if self.p_out in r:
try:
msg_bytes = self.read_all(
self.p_out.fileno(), interruptFd=sys.stdin.fileno()
self.p_out.fileno(),
timeout=self.pty_config.get('output_timeout', PTYConstants.OUTPUT_READ_TIMEOUT),
interruptFd=sys.stdin.fileno()
)
except (EOFError, OSError):
event_queue.put(