Bug 362740 - Websocket D13 close handling is off [autobahn]

+ Address autobahn 0.4.3 test case 7.5.1
  Description: Send a close frame with invalid UTF8 payload
  Expectation: Clean close with protocol error or invalid utf8 code
This commit is contained in:
Joakim Erdfelt 2011-11-02 17:22:40 -07:00
parent e207ea357e
commit da60996ce5
1 changed files with 10 additions and 3 deletions

View File

@ -747,9 +747,16 @@ public class WebSocketConnectionD13 extends AbstractConnection implements WebSoc
if (buffer.length()>=2)
{
code=(0xff&buffer.array()[buffer.getIndex()])*0x100+(0xff&buffer.array()[buffer.getIndex()+1]);
if (buffer.length()>2)
message=new String(buffer.array(),buffer.getIndex()+2,buffer.length()-2,StringUtil.__UTF8);
} else if(buffer.length() == 1)
if (buffer.length()>2)
{
if(_utf8.append(buffer.array(),buffer.getIndex()+2,buffer.length()-2,_connection.getMaxTextMessageSize()))
{
message = _utf8.toString();
_utf8.reset();
}
}
}
else if(buffer.length() == 1)
{
// Invalid length. use status code 1002 (Protocol error)
errorClose(WebSocketConnectionD13.CLOSE_PROTOCOL,"Invalid payload length of 1");