Releases Archives

Latest release of The Server Framework: 6.8

| 0 Comments
Version 6.8 of The Server Framework was released today.

This release includes important bug fixes, see here. It also includes lots of code change due to: the removal of support for Visual Studio 2012, adding support for Visual Studio 2017 and the results of lots of static analysis.

This release is essential for users of Release 6.7.

Latest release of The Server Framework: 6.7

| 0 Comments
Version 6.7 of The Server Framework was released today.

This release is mainly a code simplification release which removes support for legacy compilers and operating systems. See here for more details. However, there are some breaking changes where smart buffers have replaced buffer references and this causes function signature changes. In addition there has been considerable churn in the Streaming Media Option Pack with knock on changes in the HTTP library code which needed to be made more complete to deal with serving HLS streams.
Version 6.6.5 of The Server Framework was released today.

This release is mainly a feature release with a few bug fixes.

Latest release of The Server Framework: 6.6.4

| 0 Comments
Version 6.6.4 of The Server Framework was released today.

This release is mainly a bug fix release for clients using WebSockets over SSL.

Latest release of The Server Framework: 6.6.3

| 0 Comments
Version 6.6.3 of The Server Framework was released today.

This release is mainly a bug fix release but it also adds support for Visual Studio 2015 and Windows 10 (though we don't explicitly use any Windows 10 APIs). There are quite a lot of small changes due to us running Gimpel Lint over the code. Most of the changes will have fixed potential issues rather than issues that have actually been reported.

However, there are two serious fixes for the SChannel Option Pack for an issue that was introduced in Release 6.6.2 and which could cause corruption of the data flow in some situations and stalling and CPU pegging in another. There is also a fix which may prevent UDP datagram corruption, See here for more details.

Latest release of The Server Framework: 6.6.2

| 0 Comments
Version 6.6.2 of The Server Framework was released today.

This release is a bug fix and internal feature release which results in lots of change to the OpenSSL, SChannel, Compression and TCP flow control filters. See the release notes here, for full details of all changes.

All clients using earlier versions of both the OpenSSL Option Pack and the SChannel Option Pack are advised to upgrade to this release.

Latest release of The Server Framework: 6.6.1

| 0 Comments
Version 6.6.1 of The Server Framework was released today.

This release is a minor bug fix release mainly for several bugs in the 6.6 version's OpenSSL code, see the release notes here, for full details of all changes.

All clients using version 6.6 of the OpenSSL Option Pack are advised to upgrade to this release.

Latest release of The Server Framework: 6.6

| 0 Comments
Version 6.6 of The Server Framework was released today.

This release is a major release and contains many changes, see the release notes, here, for full details of all changes.

All clients are advised to upgrade to this release.

Latest release of The Server Framework: 6.5.9

| 0 Comments
Version 6.5.9 of The Server Framework was released today.

This release contains one bug fix for write sequencing bug which has been present in The Server Framework since at least release 5.0 but which, thankfully, is very unlikely to occur. It also contains a bug fix for the TCP flow control filter, some bug fixes for the WebSocket code, hardening of the WebSocket code to help it resist denial of service attacks and a small amount of new functionality in several other libraries.

If you use the flow control filter, WebSockets, or have multiple threads writing to a single socket without using your own locks then you need this release.

Latest release of The Server Framework: 6.5.8

| 0 Comments
Version 6.5.8 of The Server Framework was released today.

This release contains one bug fix for a bug which has been present in The Server Framework since at least release 5.0 and one change to work around a bug in Windows 8 and Server 2012.

If you plan to use AcceptEx() on Windows 8 or Server 2012 or you have connections which run for a long period of time, use sequenced sockets and issue more than 2,147,483,647 writes on a socket then you need this release.

This release includes the following, see the release notes, here, for full details of all changes.

  • Changes to how CStreamSocketServerEx issues AcceptEx() calls to ensure that these calls are always made from an I/O thread. This is to help reduce the likely impact of the bug in Windows 8/Server 2012 with regard to the delay of AcceptEx() completions when the issuing thread is blocked in a synchronous ReadFile().
  • Bug fix to sequence writes, see here for more details. Due to a type size mismatch between IBuffer::SequenceNumber and the sequence numbers generated by CSequencedStreamSocket::SequenceData a write stall could occur when the sequence number that was being generated (a signed long) wrapped as the "next" sequence number in CInOrderBufferList was a IBuffer::SequenceNumber which was a size_t which wrapped far later. The buffer list would wait for buffers with sequence numbers which could never be generated.

Latest release of The Server Framework: 6.5.7

| 0 Comments
Version 6.5.7 of The Server Framework was released today.

This release contains one important bug fix and support for Visual Studio 2012 RTM. The bug that was introduced in 6.5.6 has exposed a gap in our unit testing which has also been filled with this release.

If you use either the Read Timeout filter or VS2012 RTM then you should install this update.

This release includes the following, see the release notes, here, for full details of all changes.

  • 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.
  • Bug fix to the changes in 6.5.6 to CReadTimeoutStreamSocketConnectionFilter. The 'connection closed' data is per connection and not per filter. The bug manifests as timers not being set on any connections once a single connection has closed.
  • Added unit tests for CReadTimeoutStreamSocketConnectionFilter.

Latest release of The Server Framework: 6.5.6

| 0 Comments
Version 6.5.6 of The Server Framework was released today.

This release contains some bug fixes, a selection of minor improvements and improved support for the Visual Studio 2012 (Note that there will be a further release shortly after Visual Studio 2012's RTM if needed to address any changes between the Release Candidate and the RTM versions).

If you use either the Read Timeout filter or the Flow Control filter then you should install this update. If you use the Service Tools library there are several improvements which make automating service installation and removal easier and make handling complex multi-instance start up restrictions easier.
Version 6.5.5 of The Server Framework was released today.

This release contains some bug fixes, a selection of minor improvements and support for Visual Studio 11 Beta and Windows 8. If you use either the Read Timeout filter or the Flow Control filter then you should install this update.

This release includes the following, see the release notes, here, for full details of all changes.

  • Rewrote CFlowControlStreamSocketConnectionFilter to make it more reliable and correct.
  • Bug fix. CReadTimeoutStreamSocketConnectionFilter now holds a socket reference when the timer is set.
  • Bug fix. TAsyncSocket::CanIssueFilteredWrite() now checks that the socket is valid before calling TAsyncSocket::ForceWritePending().
  • Fixed some warnings generated by /analyze.
  • Added JetByteTools::WebSocket::CSmartWebSocket.
  • Added debug trace output to CThreadedCallbackTimerQueue::OnThreadTerminationException(). This is one of the rare cases where the libraries log to the debug trace internally. You should override CThreadedCallbackTimerQueue::OnThreadTerminationException() if you don't want it to log to the debug trace BUT you should log the details somewhere as a thread termination in the timer queue will stall the queue and produce bugs which are hard to track down if you haven't logged the fact that the thread has died.
  • Adjusted how CLRHosting::CException::GetErrorMessage() deals with HRESULTs that are actually just Win32 errors.
  • Bug fix. Potential buffer overflow in CLRHosting::CException::GetErrorMessage()
  • Bug fix. Memory leak, delete rather than delete [] in CHostAssemblyManager::GetNonHostStoreAssemblies()

Latest release of The Server Framework: 6.5.4

| 0 Comments
Version 6.5.4 of The Server Framework was released today.

This release contains two important bug fixes and a selection of minor improvements. If you run your code on Vista/Windows Server 2003 or later and you don't explicitly disable FILE_SKIP_COMPLETION_PORT_ON_SUCCESS in your Config.h then you should install this update.

This release includes the following, see the release notes, here, for full details of all changes.

  • Bug fix. If FILE_SKIP_COMPLETION_PORT_ON_SUCCESS was enabled but JetByteTools::Socket::CanEnableSkipCompletionPortOnSuccess() returned false then the the code that handled issuing read and write calls would fail if ERROR_SUCCESS was returned because it would assume that FILE_SKIP_COMPLETION_PORT_ON_SUCCESS was enabled and that it should handle the completion directly but a completion would have been posted to the IOCP and so the completion would get handled twice. We now correctly whether we have actually enabled FILE_SKIP_COMPLETION_PORT_ON_SUCCESS rather than just whether we want to enable it.
  • Change to JetByteTools::Socket::CConnectionMaintainingStreamSocketConnectionFilter so that we do not attempt to maintain a connection if the reconnect delay is 0.
  • Added the concept of being able to force a write request to go via the I/O pool even if marshalling is currently turned off.
  • Added JetByteTools::Socket::IManageStreamSocketConnectionFilters::TryRequestWrite()
  • Changed how JetByteTools::Socket::CFlowControlStreamSocketConnectionFilter issues write requests and how it deals with write failure due to socket closure. We now purge any queued data when we detect the socket has been closed, rather than continuing to try and send more.
  • Added JetByteTools::Socket::IDatagramSendSocket which is a common base class for JetByteTools::Socket::IDatagramSocket and JetByteTools::Socket::IDatagramServerSocket.
  • Added JetByteTools::Socket::IFilterableStreamSocket::CanIssueFilteredWrite() which is now called instead of JetByteTools::Socket::IStreamSocketEx::CanWrite() by JetByteTools::Socket::CFilteringStreamSocketConnectionManagerBase::TryRequestWrite(). This removes a race condition during the shutdown of the write side of a socket in situations where filtering is being used and the filter wishes to write to the socket after the application level code has requested that the write side of the socket be shut down. We always tracked the outstanding write count before actually issuing the shutdown and the filter could manage this to allow it to be able to send after a shutdown had been requested BUT the filtered send could still fail as the socket's write shutdown flag would be set. This new function does not check the write shutdown flag and so allows the filter to write successfully.
  • Changed JetByteTools::IO::IAllocateBufferHandles::Flush() so that it returns a bool indicating if buffers were active when the flush was done. This brings it in line with JetByteTools::IO::IAllocateBuffers.
  • Changed the JetByteTools::IO::IAsyncIOStream::Write() methods so that they take an optional bool that enables you to force the write to go via the I/O pool even if I/O marshalling is turned off.
  • Changed JetByteTools::IO::CAsyncFileLog to monitor its own write thread to remove the chance that it might hang during destruction if the thread has terminated due to an exception.

Latest release of The Server Framework: 6.5.3

| 0 Comments
Version 6.5.3 of The Server Framework was released today.

This release updates the WebSockets Option pack to the final version of the protocol as detailed in RFC 6455 which was released yesterday. There is also a bug fix to WebSocket status reason processing. If you have 6.5 or 6.5.1 or 6.5.2 and you are NOT using WebSockets then you probably don't need this release.

This release includes the following, see the release notes, here, for full details of all changes.

  • 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.

Latest release of The Server Framework: 6.5.2

| 0 Comments
Version 6.5.2 of The Server Framework was released today.

This release adds some new functionality to the WebSockets Option pack and fixes some bugs in code that is only currently used by the WebSockets Option pack. If you have 6.5 or 6.5.1 and you are not using WebSockets then you probably don't need this release.

This release includes the following, see the release notes, here, for full details of all changes.

Latest release of The Server Framework: 6.5.1

| 0 Comments
Version 6.5.1 of The Server Framework was released today.

This is primarily a bug fix release, although we also add several new example clients and servers.

This release includes the following, see the release notes, here, for full details of all changes.

  • Bug fixes to The Core Framework which affect the use of the newly added "Read Again" functionality.
  • Fixes to the Hixie76 WebSockets protocol handler to improve interoperability.
  • Added outbound connection establishment support to the Hixie76 protocol handler.
  • Updated the WebSocket Echo Server Test and the Secure WebSocket Echo Server Test example clients to support the creation of both Hixie and HyBi connections.
  • Fixed a race condition in the WebSocket example clients that could cause a connection to "stall" - note that this was an issue with the how the client code used the WebSocket layer and not an issue in The WebSockets Option Pack itself.
  • Added two new example servers; a secure, managed WebSocket server which hosts the CLR and routes complete WebSocket messages to managed code for processing and a version of this example which also hosts a simple HTTP server.
  • Added a new HTTP client. This is designed to stress test HTTP and HTTPS servers by creating thousands of concurrent connections and requesting various resources at controllable rates.

Latest release of The Server Framework: 6.5

| 0 Comments
Version 6.5 of The Server Framework was released today.

This release includes the following, see the release notes, here, for full details of all changes.

  • WebSockets support via The WebSockets Option Pack. WebSocket protocol compliance test results can be found here.
  • Improvements to the flow control connection filter so that managing high volume connections is easier than ever.
  • Added code to automatically detect if it's safe to enable FILE_SKIP_COMPLETION_PORT_ON_SUCCESS on a given machine. See this Microsoft Knowledge Base article for more details.
  • Extended the IBuffer interface to provide more control over buffer manipulation
  • Added buffer chains, a set of invasive lists for linking buffers together. These are much more performant than then old STL based buffer lists and collections.
  • New high performance expanding thread pool.
  • Support for the latest versions of TinyXML and ZLib.

Latest release of The Server Framework: 6.4

| 0 Comments
Version 6.4 of The Server Framework was released today.

This release includes the following, see the release notes, here, for full details of all changes.

  • The ability to enable, configurable, automatic, crash dump creation on certain error conditions.
  • Two new single reader, multiple writer, lock implementations.
  • Full code page support for unicode to multi-byte conversions.
  • Rationalisation of output from ToHexString() variants.
  • The ability to limit the number of pending file writes to a collection of asynchronous file writers.
  • New high performance buffer allocator.
  • Improved performance in the connection manager base class's active connection tracking code.

Latest release of The Server Framework: 6.3.3

| 0 Comments
Version 6.3.3 of The Server Framework was released today.

This release is purely a bug fix release and includes the following fix.

  • A fix to JetByteTools::Service::CServiceManager so that it actually allows the service to run without throwing an exception!
  • Fixes to JetByteTools::CLRHosting::CCLREventSink and JetByteTools::CLRHosting::CHostPolicyManager to remove a race condition during host shutdown which could have caused a purecall due to events being fired after the event sink has been destroyed.

There's no need for a documentation update so the latest docs available online will be for the 6.3 release. Likewise the server examples have not changed and code that built with 6.3 will build with 6.3.3 without changes.

Latest release of The Server Framework: 6.3.2

| 0 Comments | 1 TrackBack
Version 6.3.2 of The Server Framework was released today.

This release is purely a bug fix release and includes the following fixes.

  • Fixes to JetByteTools::OpenSSL::CAsyncConnection to remove the possibility of deadlock due to a lock inversion.
  • Fixes to JetByteTools::SSPI::SChannel::CAsyncConnection to remove the possibility of deadlock due to a lock inversion.
  • Fixes to JetByteTools::SSPI::Negotiate::CAsyncConnection to remove the possibility of deadlock due to a lock inversion.
  • Fixes to JetByteTools::CLRHosting::CCLREventSink and JetByteTools::CLRHosting::CCLRHost to remove a race condition during host shutdown which could have caused a purecall due to events being fired after the event sink has been destroyed.

There's no need for a documentation update so the latest docs available online will be for the 6.3 release. Likewise the server examples have not changed and code that built with 6.3 will build with 6.3.2 without changes.

Latest release of The Server Framework: 6.3.1

| 0 Comments
Version 6.3.1 of The Server Framework was released today.

This release is purely a bug fix release and includes the following fixes.

  • Fixes to JetByteTools::OpenSSL::CStreamSocketConnectionFilter to prevent buffer reference leaks which result in memory leaks during secure connection processing; see here for more details.
  • Fixes to JetByteTools::OpenSSL::CAsyncConnector to prevent socket reference leaks in situations where connections are reset or where unexpected SSL errors occur. These socket reference leaks can cause delays and hangs when shutting down a server or connection manager.
  • Fixes to JetByteTools::SSPI::SChannel::CStreamSocketConnectionFilter to prevent buffer reference leaks which result in memory leaks during secure connection processing.
  • Fixes to JetByteTools::SSPI::Negotiate::CStreamSocketConnectionFilter to prevent buffer reference leaks which result in memory leaks during secure connection processing.

There's no need for a documentation update so the latest docs available online will be for the 6.3 release. Likewise the server examples have not changed and code that built with 6.3 will build with 6.3.1 without changes.
Version 6.3 of The Server Framework was released today.

This release includes the following, see the release notes, here, for full details of all changes.

  • Performance improvements on Vista and later operating systems. See here for more details.
  • Performance improvements for some designs of datagram server by reusing sockets and buffers more aggressively and thus avoiding the allocators in some situations
  • A redesigned the timer queue to improve timer dispatch performance. See here for more details.
  • A new implementation of the timer queue interface, implemented as a timer wheel, which is optimised for timers where the maximum timeout is known and is relatively small (ideal for most situations where timeouts can be guaranteed to be less than 30 mins). See here for more details.
  • Monitoring interfaces for timer queues and the new timer wheel.
  • Buffer allocation contention monitoring. See here for more details.
  • Added a "low contention" buffer allocator which relies on multiple buffer pools to avoid contention on any one pool.
  • Added a "reusable id" manager which will manage a pool of ids which can be reused thus avoiding id duplication due to id wrap.
  • Added a simple ring buffer class.
  • Added a recursion limiter which will prevent some kinds of servers from experiencing potentially unbounded recursion during read and write completions when certain 6.2 performance optimisations are enabled. See here for more details.
  • Lots of changes to the Service Tools library, see here for more details.
  • Enabled hosting of the .Net 4.0 CLR and 'side by side' multiple CLR version hosting via the .Net 4.0 hosting API.

Follow us on Twitter: @ServerFramework

About this Archive

This page is an archive of recent entries in the Releases category.

New features is the previous category.

Testing is the next category.

I usually write about the development of The Server Framework, a super scalable, high performance, C++, I/O Completion Port based framework for writing servers and clients on Windows platforms.

Find recent content on the main index or look in the archives to find all content.