another WebSocket fix, updated libversion

This commit is contained in:
Guenter Obiltschnig
2012-08-10 15:07:05 +00:00
parent 392d98e575
commit 72bf84ea52
3 changed files with 13 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
//
// WebSocketImpl.h
//
// $Id: //poco/1.4/Net/include/Poco/Net/WebSocketImpl.h#2 $
// $Id: //poco/1.4/Net/include/Poco/Net/WebSocketImpl.h#3 $
//
// Library: Net
// Package: WebSocket
@@ -90,7 +90,6 @@ protected:
enum
{
FRAME_FLAG_MASK = 0x80,
MIN_HEADER_LENGTH = 2,
MAX_HEADER_LENGTH = 14
};

View File

@@ -1,7 +1,7 @@
//
// WebSocketImpl.cpp
//
// $Id: //poco/1.4/Net/src/WebSocketImpl.cpp#3 $
// $Id: //poco/1.4/Net/src/WebSocketImpl.cpp#4 $
//
// Library: Net
// Package: WebSocket
@@ -118,23 +118,27 @@ int WebSocketImpl::sendBytes(const void* buffer, int length, int flags)
int WebSocketImpl::receiveBytes(void* buffer, int length, int)
{
char header[MAX_HEADER_LENGTH];
int n = _pStreamSocketImpl->receiveBytes(header, MIN_HEADER_LENGTH);
if (n == MIN_HEADER_LENGTH)
int n = _pStreamSocketImpl->receiveBytes(header, 2);
if (n == 1)
{
n += _pStreamSocketImpl->receiveBytes(header + 1, 1);
}
if (n == 2)
{
Poco::UInt8 lengthByte = static_cast<Poco::UInt8>(header[1]) & 0x7f;
if (lengthByte + MIN_HEADER_LENGTH < MAX_HEADER_LENGTH)
if (lengthByte + 2 < MAX_HEADER_LENGTH)
{
n = _pStreamSocketImpl->receiveBytes(header + MIN_HEADER_LENGTH, lengthByte);
n = _pStreamSocketImpl->receiveBytes(header + 2, lengthByte);
}
else
{
n = _pStreamSocketImpl->receiveBytes(header + MIN_HEADER_LENGTH, MAX_HEADER_LENGTH - MIN_HEADER_LENGTH);
n = _pStreamSocketImpl->receiveBytes(header + 2, MAX_HEADER_LENGTH - 2);
}
}
else throw WebSocketException("Incomplete frame received", WebSocket::WS_ERR_INCOMPLETE_FRAME);
if (n > 0)
{
n += MIN_HEADER_LENGTH;
n += 2;
Poco::MemoryInputStream istr(header, n);
Poco::BinaryReader reader(istr, Poco::BinaryReader::NETWORK_BYTE_ORDER);
Poco::UInt8 flags;

View File

@@ -1 +1 @@
12
14