--- /usr/lib64/python3.0/telnetlib.py 2009-02-12 19:45:39.000000000 -0500 +++ /usr/lib64/python3.0/telnetlib.py.new 2009-02-15 10:03:03.000000000 -0500 @@ -423,41 +423,41 @@ while self.rawq: c = self.rawq_getchar() if not self.iacseq: - if c == theNULL: + if c[0] == theNULL: continue - if c == b"\021": + if c[0] == 0o21: continue - if c != IAC: + if c[0] != IAC: buf[self.sb] = buf[self.sb] + c continue else: self.iacseq += c elif len(self.iacseq) == 1: # 'IAC: IAC CMD [OPTION only for WILL/WONT/DO/DONT]' - if c in (DO, DONT, WILL, WONT): + if c[0] in (DO, DONT, WILL, WONT): self.iacseq += c continue self.iacseq = b'' - if c == IAC: + if c[0] == IAC: buf[self.sb] = buf[self.sb] + c else: - if c == SB: # SB ... SE start. + if c[0] == SB: # SB ... SE start. self.sb = 1 self.sbdataq = b'' - elif c == SE: + elif c[0] == SE: self.sb = 0 self.sbdataq = self.sbdataq + buf[1] buf[1] = b'' if self.option_callback: # Callback is supposed to look into # the sbdataq - self.option_callback(self.sock, c, NOOPT) + self.option_callback(self.sock, c[0], NOOPT) else: # We can't offer automatic processing of # suboptions. Alas, we should not get any # unless we did a WILL/DO before. - self.msg('IAC %d not recognized' % ord(c)) + self.msg('IAC %d not recognized' % c[0]) elif len(self.iacseq) == 2: cmd = self.iacseq[1] self.iacseq = b'' @@ -468,14 +468,14 @@ if self.option_callback: self.option_callback(self.sock, cmd, opt) else: - self.sock.sendall(IAC + WONT + opt) + self.sock.sendall(bytes([IAC, WONT]) + opt) elif cmd in (WILL, WONT): self.msg('IAC %s %d', - cmd == WILL and 'WILL' or 'WONT', ord(opt)) + cmd == WILL and 'WILL' or 'WONT', opt[0]) if self.option_callback: self.option_callback(self.sock, cmd, opt) else: - self.sock.sendall(IAC + DONT + opt) + self.sock.sendall(bytes[IAC, DONT]) + opt) except EOFError: # raised by self.rawq_getchar() self.iacseq = b'' # Reset on EOF self.sb = 0