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 returnHandshakeFatalError
and 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::CFilterDataBase
which 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::CRecursiveDirectorySearch
in 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.h
by splitting it into more functionally cohesive headers. - Added checking for
_MSC_FULL_VER
as well as_MSC_VER
viaJETBYTE_LATEST_TESTED_FULL_COMPILER_VERSION
to determine compatibility. - Breaking change to
JetByteTools::Win32::CSEHException
which now derives fromJetByteTools::Win32::CException
. This means that if you want to catchJetByteTools::Win32::CSEHException
explicitly, 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::CSEHException
and rely on catching and processing asJetByteTools::Win32::CException
as 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::CSEHException
now that it derives fromJetByteTools::Win32::CException
. - Added a move constructor to
JetByteTools::IO::CBufferChainStoresNulls
- Added
JetByteTools::IO::CFixedFileHeaderRotatingAsyncFileLog
which 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.h
and moved the functions out ofUtils.h
. - Added
GUID.h
and 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::CNullConfiguration
if the optional configuration does not exist. This allows use of the ’null object pattern’ during configuration processing. - Added
JetByteTools::Win32::IConfiguration::Visit
which takes an instance of an object that implementsJetByteTools::Win32::IVisitConfigurationElements
which is called for each element in the configuration. - Added
JetByteTools::Win32::CMD5
an MD5 implementation that doesn’t rely on Windows API calls. IfJETBYTE_TOOLS_USE_WINDOWS_NATIVE_MD5
is 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::SHA1
a SHA1 implementation that doesn’t rely on Windows API calls. IfJETBYTE_TOOLS_USE_WINDOWS_NATIVE_SHA1
is 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 hasstrlen
called 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()
.