Releases Archives

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

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 | 0 TrackBacks
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.
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.
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.
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.