Я реализую сервер Telnet, где у меня есть две реализации Telnet: предварительная аутентификация и пост-аутентификация.Twisted Telnet Server: как избежать вложенных CRLF
Основная проблема заключается в том, что сервер отправляет \r\r\n
вместо \r\n
. Пошаговую отладку я узнал, что это связано с ProtocolTransportMixin
, что есть дважды в классе heriarchy. Я считаю, что это связано с предварительным и пост-автским транспортом, которые каким-то образом взаимосвязаны (один из них является базовым транспортом другого).
Есть ли способ отменить эффект одного из микшинов?
Мой Telnet сервер завод конкретизирует с
lambda: TelnetTransport(MyOwnTelnetAuthTransport, ...)
MyOwnTelnetAuthTransport
подкласс AuthenticatingTelnetProtocol
.
После аутентификации я соединяю его через царство с моим собственным подклассом TelnetBootstrapProtocol
.
Так как TelnetTransport
и TelnetBootstrapProtocol
имеют ProtocolTransportMixin
, который заменяет \n
для \r\n
в write()
метод, который я в конечном итоге с \r\r\n
...
Хотя это будет работать 99,9% от времени, с технической точки зрения это неверно, поскольку вызывающий может * вызывать 'write (" \ r ")', а затем 'write (" \ n ")'. – Glyph