The recent changes to 6.5.5 so that
JetByteTools::Socket::CReadTimeoutStreamSocketConnectionFilter holds a socket reference when the timer is set causes problems when the socket is shutdown. The filter doesn’t see the shutdown and fails to cancel the timer which means that a reference is held on the socket until the timeout expires. This delays socket closure and causes your timeout handling code to be run on a socket which has been cleanly shut down. The fix addresses this by notifying the filter chain of the shutdown.
This change will be included in 6.5.6 which is currently in testing. If you need the fix now, please get in touch.
This bug slipped through testing due to a lapse on my part. A manual step in the release process needs to be automated and made part of the build/test/release cycle that runs on my build machines. All of the servers are tested using the test clients that ship as part of the server examples and many of these test clients should have failed during testing of 6.5.5. The tools that are used as part of the build and test, such as the client tests, are built via a script and use the latest version. They are then checked in as part of the release and are used during the build/test/release cycle on the build machines. For 6.5.5 the script wasn’t run and so it was tested with the 6.5.4 versions of the test clients which didn’t have this problem.