commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Burch (JIRA)" <j...@apache.org>
Subject [jira] Created: (NET-173) Duplicate IAC when sending a IAC using TelnetClient.getOutputStream()
Date Wed, 07 Nov 2007 16:37:50 GMT
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.


Mime
View raw message