|
Post by Dr. Video/ADDiXiON on Apr 9, 2004 0:10:48 GMT -5
While trying in futility to download last night from Last Stand, I noticed that on my windows box, about 10000 dialogs popped up with messages like "cannot respond to command 092".
It took several hundred clicks to close them all. This happened 2 different times (once for punter, once for xmodem crc).
BBS Server should log these if possible, not throw up dialogs.
|
|
|
Post by Leif Bloomquist on Apr 9, 2004 13:38:00 GMT -5
While trying in futility to download last night from Last Stand, I noticed that on my windows box, about 10000 dialogs popped up with messages like "cannot respond to command 092". Sorry about that - I found the cause. There must have been some 255s in the data stream, and the Telnet IAC code I incorporated kicked in and tried to interpret the bytes as commands. Their code used MsgBox when this happens. Obviously, at some point BBS Server should start ignoring the 255s and pass them through transparently. I'm not sure when exactly that should be done. "Real" Telnet has no concept of file transfer, so you would never get a 255 in a normal Telnet session, except as an IAC command. However, there are some Telnet clients that support Xmodem etc. file transfer, and they must have this problem as well. I guess the client knows when to inhibit the checking, because it knows when a file transfer has started. BBS Server doesn't know that, however. Is it guaranteed that all IAC commands happen right at the start of the Telnet session? Does anyone know? Maybe I could turn the IAC checking off after a few seconds, or after packets have appeared with no IAC commands. Other suggestions?
|
|
|
Post by Jim Brain on Apr 9, 2004 20:20:00 GMT -5
What my code does is check the first byte of the session. If it is 255, then assume the session is telnet and always parse IAC commands. If not, pass all chars through. Otherwise, BBS server is not 8-bit clean for non-telnet sessions. You need to remember to reset the flag after the session is over.
I believe it is defined that telnet must negotiate first, so a 255 would come as the first char.
Jim
|
|
|
Post by Jim Brain on Apr 9, 2004 20:22:54 GMT -5
Oh, BTW, you can't turn off IAC after a while when in a telnet session. Anytime you hit Ctrl-C when connected to a telnet session, it sends a IAC INT command, which you need to parse and remove from the data stream. (Well, I suppose it would not hurt anything to let it pass through, but it would look funny.)
Jim
|
|