The C++ framework for developing highly scalable, high performance servers on Windows platforms.

Release Notes - WebSocket Tools Library


You might also be interested in the release notes for the libraries that this one is built on:


Version 7.4
  • Remove support for Visual Studio 2015.
  • Remove deprecated functionality.

Version 7.3
  • Clearly identify any open source software used by the framework and make it easy to disable it or see the relevant license details.
  • Preparations for making the code compile on other platforms.
  • Added support for a new method of dynamic object leak tracking.
  • Removed the need for WinsockWrapper.h any reference to this header should be removed.
  • Removed seldom used and untested aspects of the library. Contact us if you relied on functionality that is no longer present in this release.

Version 7.2
  • Removal of manual "#define include guards" now that all supported compilers support pragma once.
  • Removal of out of date lint directives.
  • Added support for Visual Studio 2022 Preview.

Version 7.1
Version 7.0
  • Major changes due to preparations for multi-platform support. Addition of CoreTools library which contains all cross platform code that was previously in Win32Tools.

Version 6.9.5
  • Added support for Visual Studio 2019 (16.5 - 16.9).
  • Updated project files to make release build optimisations consistent.
  • Rationalised precompiled header usage.
  • Removed unrequired includes.
  • Began to move towards removing JetByteTools\Win32Tools\Utils.h by splitting it into more functionally cohesive headers.
  • Changes to avoid explicitly catching JetByteTools::Win32::CSEHException now that it derives from JetByteTools::Win32::CException.

Version 6.9.4
  • Added support for Visual Studio 2019 (16.4).

Version 6.9.3
  • Fixed issued raised by Resharper++
  • Changed include path separators from \ to / so as to support compilation on Linux using CLANG
  • Fixed case of include file names to aid portability.
  • Migrating code towards 'modern C++' idioms.
  • Suppress warning C4355 "'this': used in base member initializer list" in Warnings.h and remove per file suppressions. We just use this idiom far too often for it to be a special case.
  • Added support for Visual Studio 2019 (16.3).
  • Dropped support for Visual Studio 2013.

Version 6.9.2
  • Added support for Visual Studio 2017 (15.6 - 15.9).
  • Added support for Visual Studio 2019 (16 - 16.2).
  • Added GetIdentifierA() to all socket code and made GetIdentifier() always available rather than conditional on some debug traces being enabled.
  • Added conditional code to JetByteTools::WebSocket::CRequestHeaders::ValidateBasicHeaders() to allow communication with peers that do not correctly implement the websocket protcol. Specifically you can conditionally enable code that allows the "upgrade" header to be missing and separately also allow the "connection" header to be missing. See JETBYTE_WEBSOCKET_ALLOW_MISSING_UPGRADE_HEADER_IN_HANDSHAKE and JETBYTE_WEBSOCKET_ALLOW_MISSING_CONNECTION_HEADER_IN_HANDSHAKE.
  • Bug fix to JetByteTools::WebSocket::CHandshakeParser::OnDataReceived(), we were returning an incorrect value for the number of bytes consumed.
  • Bug fix to JetByteTools::WebSocket::HiBi::CProtocolHandler::AccumulateControlFrameData() where we now remove any unused space at the front of a buffer during processing so that subsequent buffer operations are more likely to find space in the buffer.
  • Improved error handling for Hixie Websockets in JetByteTools::WebSocket::CHandshakeParser::CalculateKey() so that we spot and report invalid numeric conversions.

Version 6.9.1
  • Added support for Visual Studio 2017 15.5.

Version 6.9
Version 6.8
  • Made pragma once unconditional in headers.
  • Fixed issued raised by PC-Lint Plus.
  • Fixed issued raised by CppDepend
  • Fixed issued raised by Resharper++
  • Fixed issued raised by Resharper++
  • Use override rather than virtual for implementations of virtual functions in derived classes.

Version 6.7
  • All websockets code now works in terms of JetByteTools::IO:CSmartBuffer where possible. This potentially reduces the reference counting activity on the buffers.
  • Removed support for the "deflate-stream" websocket extension which never made it into the RFC.

Version 6.6.5
  • JetByteTools::WebSocket::CHeaders can now handle adding headers with no value.
  • Bug fix to JetByteTools::WebSocket::HyBi::CProtocolHandler::HandleData() to remove an incorrect internal state validation exception which would generate spurious "No space left in read buffer." exceptions.

Version 6.6.4
  • Bug fix for a highly unlikely possible situation in JetByteTools::WebSocket::HyBi::CProtocolHandler::HandleData() where a buffer in the read request buffers queue contains no space for more data.

Version 6.6.3
  • Ran Visual Lint using Gimpel PC Lint on all code and adjusted to remove warnings and fix bugs.
  • Removed all use of exception specifications. We only ever used throw() but that's now gone too.
  • Protected non-virtual destructors on interfaces are now virtual even though they you can't delete the object via the interface.
  • All destructors that could throw exceptions now have optional "log and swallow" exception handlers which are enabled by default. This is better than ignoring the problem and being faced with a call to std::terminate() which can be hard to track down.

Version 6.6.2
  • Changes to remove non-trivial, function level static objects from the code, the construction of which is problematic in multi-threaded code.

Version 6.6.1
  • No changes.

Version 6.6
  • Adjusted the debug tracing output due to the presence of JetByteTools::Socket::TAsyncSocket::GetIdentifier().
  • Protocol handlers no longer need explicit buffer user data indices passed to them due to changes in how buffer chains use buffer data indices.
  • Reduced the locking required in multi-buffer write situations in the hybi and hixie websocket classes by using buffer chain writes rather than sequences of single buffer writes. Locks are no longer held across the write just during the creation of the buffer chain.
  • Use per connection buffer pooling.
  • Deprecated Deflate-Stream support. See JETBYTE_DEPRECATE_DEFLATING_STREAM_SOCKET_FILTER. This is because this extension never made it into the standard.
  • Allow HyBi protocol handlers to be connected via an external handshake rather than expecting the protocol handler to create its own internal handshake parser to deal with the handshake. This allows for an external handshake parser and the ability to support normal HTTP connections on the same port as websocket connections.
  • Fixed a bug in how we deal with "delayed pongs" which need to be queued if we're sending a fragmented message.
  • Rewrite of JetByteTools::WebSocket::HyBi::CProtocolHandler to use JetByteTools::IO::CInputFilterProcessor to remove contention and improve code correctness.
    Version 6.5.9
    • Fixed a bug in the accumulation of Hixie 76 messages.
    • Fixed a bug in the sending of messages larger than buffer size with HyBi.
    • Fixed a bug in JetByteTools::WebSocket::CAutoDetectProtocolHandler which prevented connections being denied by the caller's OnConnectionEstablished() callback.
    • Added an overload to JetByteTools::WebSocket::HyBi::CProtocolHandler::Connect() which allows you to specify sub protocols.
    • Added JetByteTools::WebSocket::Hixie76::CSmartWebSocket.
    • Added JetByteTools::WebSocket::HyBi::CSmartWebSocket.
    • We now validate that clients do not send additional data before they receive a handshake response in JetByteTools::WebSocket::CAutoDetectProtocolHandler::OnDataReceived().
    • Added limits to JetByteTools::WebSocket::HandshakeParser to prevent denial of service attacks. The maximum number of headers in a request is now limited to 100 and the maximum length of a header is now 8190 bytes. These limits are the same as those present in Apache 2.3.
    • Added validation of HyBi secuirty information - we decode the Base64 encoded key and ensure that it's clear text is 16 bytes long.
    • Added compile time configuration to allow for non conforming Hixie76 clients to connect. If you define JETBYTE_WEBSOCKET_ALLOW_BAD_SPACES_IN_HIXIE76_HANDSHAKE to 1 in your Config.h then we allow an invalid number of spaces in the Hixie76 security info. Currently WebSocket4Net generates its keys incorrectly, see http://websocket4net.codeplex.com/workitem/16
    • Added tighter validation of the request method to prevent denial of service attacks.

    Version 6.5.8
    • No changes.

    Version 6.5.7
    • Updated our support of Visual Studio 2012 to the RTM version. Added a few more warning suppressions. Fixed the solution file format so that it's actually a 2012 solution file and not a 2010 solution file using the 2012 tool chain.

    Version 6.5.6
    • Updated our support of Visual Studio 2012 (11) to the RC version. Added a few more warning suppressions. Renamed the output directories. Renamed the solutions and projects from .11. to .2012.

    Version 6.5.5
    Version 6.5.4
    • Some changes to the debugging code so that it interoperates better with the debugging code in the SocketTools library

    Version 6.5.3
    • Updated to support RFC 6455 - added close status codes 1011 and 1015.
    • Fixed a bug in the handling of long status result messages, we now truncate them correctly.

    Version 6.5.2
    Version 6.5.1
    • Added support for creating outbound, client connections for the Hixie version of the WebSockets protocol.
    • Adjusted the conditional debug tracing code.
    • Fixed a bug in the HyBi outbound connection code which could cause corruption of the first message after the handshake.
    • Fixed various interoperability issues with the Hixie code.

    Version 6.5
    • The first release of the library


Generated on Sun Sep 12 19:06:45 2021 for The Server Framework - v7.4 by doxygen 1.5.3