Latest release of The Server Framework: 6.6.1

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.

Bug fixes:

  • Bug fix to JetByteTools::OpenSSL::CAsyncConnector so that we spot failures in the SSL allocation functions due to low memory situations and throw exceptions if we fail to create the SSL objects.
  • Bug fix to CAsyncConnector and CStreamSocketConnectionFilter so that we notify the connector when an outbound connection fails. This allows the connector to correctly release the socket reference that it takes in its constructor.
  • Bug fix to CAsyncConnector::Read() to prevent leak of buffers.
  • Bug fix to the allocation and creation of JetByteTools::IO::CNonPooledBuffer which was failing to force the correct alignment. See the JETBYTE_IO_IBUFFER_ALIGNMENT_REQUIREMENT changes in version 6.6 for more details
  • Bug fix to TLockableObjectTracksLockingThread<t>::IsLockedByThisThread()</t> to correct a casting bug that prevents some configurations from building.
  • Bug fix to CTimeChangeNotificationMonitor which fires the timer callback immediately if the delay timer cannot be set and which also prevents the timer callback from being fired continually once it has been fired once (assuming a delay timer is used).
  • Bug fix to CDirectoryChangeMonitor() to ensure that multiple shutdown attempts do not access deleted data.


  • Added IO::CTimeChangeAwareRotatingAsyncFileLog, which is a rotating async file log which includes a CTimeChangeNotificationMonitor.
  • Added IStreamSocket::SetKeepAlive() and IStreamSocket::DisableKeepAlive()
  • Added IFilterDatagramSocketConnections::FilterConnectionClosed() and IFilterStreamSocketConnections::FilterConnectionClosed() which are called, when expected, after a call to FilterConnectionClosure().
  • Added a conditional overload constructor to Socket::CException which can provide more detail on the socket that generated the exception if socket identifiers are enabled.
  • Added an overload to Win32::CException() constructor that takes std::string.
  • Added TExpandableBuffer<t>::Swap()</t>.
  • Added IConfiguration::GetUnsignedShortValue().
  • Added IQueueTimers::SetTimerWithRefCountedUserData(), CancelTimerWithRefCountedUserData(), and DestroyTimerWithRefCountedUserData() which all implement the operations using the correct ‘AddRef()/Release()’ pattern.


  • We now use IQueueTimers::SetTimerWithRefCountedUserData() and the other helper functions for reference counted user data where appropriate.
  • CStreamSocketBroadcastableConnectionCollection::Broadcast() is now const.