diff --git a/evennia/server/portal/telnet.py b/evennia/server/portal/telnet.py index c1a87907a5..955ea5e918 100644 --- a/evennia/server/portal/telnet.py +++ b/evennia/server/portal/telnet.py @@ -246,12 +246,10 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session): # escape IAC in line mode, and correctly add \r\n (the TELNET end-of-line) line = line.replace(IAC, IAC + IAC) line = line.replace('\n', '\r\n') - if not self.protocol_flags.get("NOGOAHEAD", True): - if self.protocol_flags.get("FORCEDENDLINE", False): - line += "\r\n" - line += IAC + GA - elif not line.endswith("\r\n"): + if not line.endswith("\r\n") and self.protocol_flags.get("FORCEDENDLINE", True): line += "\r\n" + if not self.protocol_flags.get("NOGOAHEAD", True): + line += IAC + GA return self.transport.write(mccp_compress(self, line)) # Session hooks diff --git a/evennia/server/portal/ttype.py b/evennia/server/portal/ttype.py index 4279c52dd6..b07384ab26 100644 --- a/evennia/server/portal/ttype.py +++ b/evennia/server/portal/ttype.py @@ -113,20 +113,28 @@ class Ttype(object): # only support after a certain version, but all support # it since at least 4 years. We assume recent client here for now. cupper = clientname.upper() + xterm256 = False if cupper.startswith("MUDLET"): # supports xterm256 stably since 1.1 (2010?) xterm256 = cupper.split("MUDLET", 1)[1].strip() >= "1.1" - else: - xterm256 = (cupper.startswith("XTERM") or - cupper.endswith("-256COLOR") or - cupper in ("ATLANTIS", # > 0.9.9.0 (aug 2009) - "CMUD", # > 3.04 (mar 2009) - "KILDCLIENT", # > 2.2.0 (sep 2005) - "MUDLET", # > beta 15 (sep 2009) - "MUSHCLIENT", # > 4.02 (apr 2007) - "PUTTY", # > 0.58 (apr 2005) - "BEIP", # > 2.00.206 (late 2009) (BeipMu) - "POTATO")) # > 2.00 (maybe earlier) + + if cupper.startswith("TINYFUGUE"): + # tinyfugue expects _GA + endline + self.protocol.protocol_flags["FORCEDENDLINE"] = True + + if (cupper.startswith("XTERM") or + cupper.endswith("-256COLOR") or + cupper in ("ATLANTIS", # > 0.9.9.0 (aug 2009) + "CMUD", # > 3.04 (mar 2009) + "KILDCLIENT", # > 2.2.0 (sep 2005) + "MUDLET", # > beta 15 (sep 2009) + "MUSHCLIENT", # > 4.02 (apr 2007) + "PUTTY", # > 0.58 (apr 2005) + "BEIP", # > 2.00.206 (late 2009) (BeipMu) + "POTATO", # > 2.00 (maybe earlier) + "TINYFUGUE" # > 4.x (maybe earlier) + )): + xterm256 = True # all clients supporting TTYPE at all seem to support ANSI self.protocol.protocol_flags['ANSI'] = True