[Date Prev] [Date Index] [Date Next] [Thread Prev] [Thread Index] [Thread Next]
Bryan Stansell bryan@conserver.com
Mon, 7 Nov 2005 14:06:30 -0800 (PST)
lorne and i have been working offline about this and it looks like the perle term server (CS9032) has a telnet option processing bug. at least, that's what i believe. after looking at the debug output, it's obvious that the "ECHO" and "SGA" options keep getting renegotiated, which is causing the lag. the term server is running 8.3.0G (basically the latest), and perle has been notified (though they haven't confirmed there is a bug or have an eta for a fix - since i don't have a support contract). but it has been sent to their engineering group, at least. if anyone else runs into this, one way to work around the problem is to set the 'protocol raw;' option for the consoles. that will prevent conserver from doing any telnet option negotiation (though you'll end up with those coming out a text, being sent to clients and logged to files...but that's just an annoyance). i'm currently thinking about putting some logic in conserver to determine when it's already "acked" an option and to ignore future ones. this is kind of specified in the telnet rfc (854): b. If a party receives what appears to be a request to enter some mode it is already in, the request should not be acknowledged. This non-response is essential to prevent endless loops in the negotiation. It is required that a response be sent to requests for a change of mode -- even if the mode is not changed. it's kind of ambiguous (does this apply to "DO" requests only or "DO" and "WILL"?). i also think i'll be looking at a good open-source reference implementation, just to see what others do. anyway, a non-response should be ok, i think. and here's the summary of the option negotation, for those who are curious. it doesn't stop at the end...it keeps bouncing between ECHO and SGA. Term Server Conserver ----------- --------- WILL ECHO -> <- DO ECHO WILL SGA -> <- DO SGA DO TERMTYPE -> <- WONT TERMTYPE WILL ECHO -> <- DO ECHO WILL SGA -> <- DO SGA DONT TERMTYPE -> WILL ECHO -> <- DO ECHO WILL SGA -> <- DO SGA WILL ECHO -> <- DO ECHO WILL SGA -> <- DO SGA Bryan