Latest release of The Server Framework: 6.9.5
Version 6.9.5 of The Server Framework was released today.
This release includes changes to support Visual Studio 2019 (16.5 - 16.9), some new functionality and a bug fixes.
As always, see the release notes here, for full details of all changes.
Bug fixes:
- Bug fix in
JetByteTools::SChannel::CServerContext::ContinueHandshake()so that we returnHandshakeFatalErrorand set the last status correctly on failure rather than throwing an exception. This allows us to correctly report, or not, the issue to the other side. - Bug fix to
JetByteTools::Socket::CFilterDataBasewhich prevents reference leaks. - Bug fix to
JetByteTools::Socket::TStreamSocketConnectionManager<>::AsyncConnect()where we were failing to callConnectionCreated()on the connection creator and this meant we weren’t limiting connections correctly. - Bug fix to
JetByteTools::Win32::CRecursiveDirectorySearchin how we deal with access denied errors accessing directories. - Bug fix to
JetByteTools::Win32::TZeroInitialiseExpandableBuffer<>::Resize()so that we zero fill the whole of the new buffer.
Changes:
- 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.hby splitting it into more functionally cohesive headers. - Added checking for
_MSC_FULL_VERas well as_MSC_VERviaJETBYTE_LATEST_TESTED_FULL_COMPILER_VERSIONto determine compatibility. - Breaking change to
JetByteTools::Win32::CSEHExceptionwhich now derives fromJetByteTools::Win32::CException. This means that if you want to catchJetByteTools::Win32::CSEHExceptionexplicitly, which you usually don’t, then you need to do so before catchingJetByteTools::Win32::CException. Note that, in general, prefer to remove all reference toJetByteTools::Win32::CSEHExceptionand rely on catching and processing asJetByteTools::Win32::CExceptionas this will ease migration to cross platform code. - Breaking change to
JetByteTools::Win32::CException.JetByteTools::Win32::CException::GetMessage()is nowJetByteTools::Win32::CException::GetWhat(). This removes the mess that is caused by windows headers having a define for “GetMessage”. In general, switch you usingGetDetails()rather thanGetWhere()andGetWhat(). - Changes to avoid explicitly catching
JetByteTools::Win32::CSEHExceptionnow that it derives fromJetByteTools::Win32::CException. - Added a move constructor to
JetByteTools::IO::CBufferChainStoresNulls - Added
JetByteTools::IO::CFixedFileHeaderRotatingAsyncFileLogwhich is a rotating log that can have some lines designated as ‘header lines’ that are included at the start of every new log file that is created. - Added
GetLastErrorMessage.hand moved the functions out ofUtils.h. - Added
GUID.hand moved the functionsGUIDAsString()andCreateGUIDAsString()out ofUtils.h. - Added
JetByteTools::Win32::IConfiguration::HasConfiguration()which returns true if a given sub configuration exists. - Added
JetByteTools::Win32::IConfiguration::GetOptionalConfigurationOrNullConfiguration()which will return an instance ofJetByteTools::Win32::CNullConfigurationif the optional configuration does not exist. This allows use of the ’null object pattern’ during configuration processing. - Added
JetByteTools::Win32::IConfiguration::Visitwhich takes an instance of an object that implementsJetByteTools::Win32::IVisitConfigurationElementswhich is called for each element in the configuration. - Added
JetByteTools::Win32::CMD5an MD5 implementation that doesn’t rely on Windows API calls. IfJETBYTE_TOOLS_USE_WINDOWS_NATIVE_MD5is defined then this implementation forwards to the code inWin32::GetMD5Digest()if not defined then an implementation from https://github.com/karelzak/util-linux/blob/master/lib/md5.c is used. - Added
JetByteTools::Win32::SHA1a SHA1 implementation that doesn’t rely on Windows API calls. IfJETBYTE_TOOLS_USE_WINDOWS_NATIVE_SHA1is defined then this implementation forwards to the code inWin32::GetSHA1Hash()if not defined then an implementation from https://github.com/karelzak/util-linux/blob/master/lib/sha1.c is used. - Added
JetByteTools::Win32::CStringConverter::AtoT(), etc. overrides where the input and output are provided as pointers and lengths and where the output is a pointer and length and the input is a pointer which hasstrlencalled on it. - Added static methods to
JetByteTools::Win32::CSystemTime.JetByteTools::Win32::CSystemTime::GetSystemTime()andJetByteTools::Win32::CSystemTime::GetLocalTime(). - Added static method to
JetByteTools::Win32::CTickCount64Provider.JetByteTools::Win32::CTickCount64Provider::TickCount64(). - Added static method to
JetByteTools::Win32::CTickCountProvider.JetByteTools::Win32::CTickCount64Provider::TickCount().