mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-29 04:17:55 +01:00
- fixed SF# 594: Websocket fails with small masked payloads
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// WebSocketTest.cpp
|
||||
//
|
||||
// $Id: //poco/1.4/Net/testsuite/src/WebSocketTest.cpp#2 $
|
||||
// $Id: //poco/1.4/Net/testsuite/src/WebSocketTest.cpp#3 $
|
||||
//
|
||||
// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
@@ -106,6 +106,16 @@ namespace
|
||||
|
||||
|
||||
WebSocketTest::WebSocketTest(const std::string& name): CppUnit::TestCase(name)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
WebSocketTest::~WebSocketTest()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void WebSocketTest::testWebSocket()
|
||||
{
|
||||
Poco::Net::ServerSocket ss(0);
|
||||
Poco::Net::HTTPServer server(new WebSocketRequestHandlerFactory, ss, new Poco::Net::HTTPServerParams);
|
||||
@@ -117,7 +127,8 @@ WebSocketTest::WebSocketTest(const std::string& name): CppUnit::TestCase(name)
|
||||
HTTPRequest request(HTTPRequest::HTTP_GET, "/ws");
|
||||
HTTPResponse response;
|
||||
WebSocket ws(cs, request, response);
|
||||
std::string payload("Hello, world!");
|
||||
|
||||
std::string payload("x");
|
||||
ws.sendFrame(payload.data(), payload.size());
|
||||
char buffer[1024];
|
||||
int flags;
|
||||
@@ -125,6 +136,33 @@ WebSocketTest::WebSocketTest(const std::string& name): CppUnit::TestCase(name)
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), buffer, 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
|
||||
for (int i = 2; i < 20; i++)
|
||||
{
|
||||
payload.assign(i, 'x');
|
||||
ws.sendFrame(payload.data(), payload.size());
|
||||
n = ws.receiveFrame(buffer, sizeof(buffer), flags);
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), buffer, 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
}
|
||||
|
||||
for (int i = 125; i < 129; i++)
|
||||
{
|
||||
payload.assign(i, 'x');
|
||||
ws.sendFrame(payload.data(), payload.size());
|
||||
n = ws.receiveFrame(buffer, sizeof(buffer), flags);
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), buffer, 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
}
|
||||
|
||||
payload = "Hello, world!";
|
||||
ws.sendFrame(payload.data(), payload.size());
|
||||
n = ws.receiveFrame(buffer, sizeof(buffer), flags);
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), buffer, 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
|
||||
payload = "Hello, universe!";
|
||||
ws.sendFrame(payload.data(), payload.size(), WebSocket::FRAME_BINARY);
|
||||
@@ -142,16 +180,6 @@ WebSocketTest::WebSocketTest(const std::string& name): CppUnit::TestCase(name)
|
||||
}
|
||||
|
||||
|
||||
WebSocketTest::~WebSocketTest()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void WebSocketTest::testWebSocket()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void WebSocketTest::setUp()
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user