[
https://issues.apache.org/jira/browse/NET-173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12597553#action_12597553
]
Scott Burch commented on NET-173:
---------------------------------
Thank you for sending that.
Now, I think I know where the confusion is. What I was trying to do was send a
command. I think what that part of the RFC was talking about was escaping 0xFF
characters.
What I could not find was a way to send a command because (if I remember right)
the stacks were hard wired together and could not be broken apart.
So, what I tried to do was send a IAC-COMMAND and what was coming out was
IAC-IAC-COMMAND which the other end recognized as a IAC-0xFF substituting the
second IAC for command. Then getting my COMMAND as data
I could not find a way around this, so we went with a different library.
> Duplicate IAC when sending a IAC using TelnetClient.getOutputStream()
> ---------------------------------------------------------------------
>
> Key: NET-173
> URL: https://issues.apache.org/jira/browse/NET-173
> Project: Commons Net
> Issue Type: Bug
> Affects Versions: 1.4
> Environment: Linux
> Reporter: Scott Burch
> Priority: Blocker
>
> TelnetOutputStream.java appears to have a bug that if we send a IAC to the
> stream returned by TelnetClient.getOutputStream() we get duplicate IAC
> commands to the telnet server.
> I looked through the code and I think I have found the reason.
> Line 82-85 appears to just send two IAC commands.
> 82 case TelnetCommand.IAC:
> 83 __client._sendByte(TelnetCommand.IAC);
> 84 __client._sendByte(TelnetCommand.IAC);
> 85 break;
> Line 91-95 appears to send the original character (which is a IAC) and a IAC
> thus producing two IACs in the stream.
> 91 else if (ch == TelnetCommand.IAC)
> 92 {
> 93 __client._sendByte(ch);
> 94 __client._sendByte(TelnetCommand.IAC);
> 95 }
> 50 public void write(int ch) throws IOException
> 51 {
> 52
> 53 synchronized (__client)
> 54 {
> 55 ch &= 0xff;
> 56
> 57 if (__client._requestedWont(TelnetOption.BINARY))
> 58 {
> 59 if (__lastWasCR)
> 60 {
> 61 if (__convertCRtoCRLF)this
> 62 {
> 63 __client._sendByte('\n');
> 64 if (ch == '\n')
> 65 {
> 66 __lastWasCR = false;
> 67 return ;
> 68 }
> 69 }
> 70 else if (ch != '\n')
> 71 __client._sendByte('\0');
> 72 }
> 73
> 74 __lastWasCR = false;
> 75
> 76 switch (ch)
> 77 {
> 78 case '\r':
> 79 __client._sendByte('\r');
> 80 __lastWasCR = true;
> 81 break;
> 82 case TelnetCommand.IAC:
> 83 __client._sendByte(TelnetCommand.IAC);
> 84 __client._sendByte(TelnetCommand.IAC);
> 85 break;
> 86 default:
> 87 __client._sendByte(ch);
> 88 break;
> 89 }
> 90 }
> 91 else if (ch == TelnetCommand.IAC)
> 92 {
> 93 __client._sendByte(ch);
> 94 __client._sendByte(TelnetCommand.IAC);
> 95 }
> 96 else
> 97 __client._sendByte(ch);
> 98 }
> 99 }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.