From aafdcdca4281c0c88a9ae1434d2c2b20c505a93f Mon Sep 17 00:00:00 2001 From: Jared Miller Date: Thu, 12 Feb 2026 14:36:25 -0500 Subject: [PATCH] Move GMCP/MSDP offers to initial negotiation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old begin_advanced_negotiation relied on a telnetlib3 hook that races with the negotiation timer — by the time it fires, the timer has already declared negotiation complete. Moving to begin_negotiation sends the offers alongside standard options (TTYPE, NAWS, ECHO) so clients see them immediately. --- src/mudlib/server.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mudlib/server.py b/src/mudlib/server.py index 1da3d30..16ed9d9 100644 --- a/src/mudlib/server.py +++ b/src/mudlib/server.py @@ -229,9 +229,9 @@ async def handle_login( class MudTelnetServer(TelnetServer): """Telnet server that offers GMCP and MSDP during negotiation.""" - def begin_advanced_negotiation(self) -> None: - """Offer GMCP and MSDP alongside the standard options.""" - super().begin_advanced_negotiation() + def begin_negotiation(self) -> None: + """Offer GMCP and MSDP as part of initial negotiation.""" + super().begin_negotiation() assert self.writer is not None gmcp_ok = self.writer.iac(WILL, GMCP) msdp_ok = self.writer.iac(WILL, MSDP)