Home > Web Site Updates > HTTPServerWrappers and CPPCThreadPool v1.01

HTTPServerWrappers and CPPCThreadPool v1.01

December 21, 2020

Just to let everyone know that v1.01 of HTTPServerWrappers and CPPCThreadPool has been released. Updates for this version include:

  • Fixed a bug in CThreadPool::OtherQueuesAreEmpty where the return value was being calculated incorrectly. This bug was causing the threads in the thread pool to do busy waits instead of waiting correctly on the "_TasksAvailable" condition variable.
  • Fixed an issue in the CThreadPool constructor where a lock was not taken prior to modifying the _Dones array.
  • Fixed an issue in CThreadPool::pause where a lock was not taken prior to modifying the _Paused variable.
  • Fixed an issue in CThreadPool::resize where a lock was not taken prior to modifying the _Dones array.
  • Added a new override of the CServer::SendResponse method which allows an already initialized HTTP_RESPONSE structure to be provided as a parameter.
  • Provided a new CServer::EqualsSplit method to aid parsing HTTP header values.
  • Provided a new CServer::IsInQuotedString method to aid parsing HTTP header values.
  • Provided a new CServer::HeaderTokenize method to aid parsing HTTP header values.
  • Provided a new CServer::UnquoteHeaderValue method to aid parsing HTTP header values.
  • Provided a new CServer::ParseCookieFromCookieHeader method to aid parsing HTTP cookies.
  • Provided a new CServer::ParseBasicAuthorizationHeader method to aid parsing Basic authentication headers.
  • Provided a new CServer::ParseAuthorizationHeader method to aid parsing NTLM and Negotiate authentication headers.
  • Provided a new CServer::ParseNegotiateAuthorizationHeader method to aid parsing Negotiate authentication headers.
  • Provided a new CServer::ParseNTLMAuthorizationHeader method to aid parsing NTLM authentication headers.
  • Provided a new CServer::DetermineDigestAlgorithm to aid parsing Digest authentication headers.
  • Provided a new CServer::GenerateRandom method to aid generating random data for Digest authentication headers.
  • Provided a new CServer::Hash method to aid generating cryptographic hashes data for Digest authentication headers.
  • Provided new CServer::MD5 methods to aid generating MD5 hashes data for Digest authentication headers.
  • Provided a new CServer::GenerateDigestNonce method to aid generating cryptographic nonces for Digest authentication headers.
  • Provided a new CServer::GenerateDigestHA1 method to aid validating Digest authentication headers.
  • Provided a new CServer::GenerateDigestHA2 method to aid validating Digest authentication headers.
  • Provided a new CServer::GenerateDigestResponse method to aid validating Digest authentication headers.
  • Provided a new CServer::ParseDigestAuthorizationHeader method to aid parsing Digest authentication headers.
  • Provided a new CCredHandle RAII class in CCredHandle.h to encapsulate an SDK CredHandle handle value.
  • Provided a new CSecHandle RAII class in CSecHandle.h to encapsulate an SDK SecHandle handle value.
  • Updated the existing basic authentication code in the included sample HTTP server to log important data to the console.
  • Updated the included sample HTTP server to implement a fully worked NTLM authentication example.
  • Updated the included sample HTTP server to implement a fully worked Negotiate (i.e. NTLM / Kerberbos) authentication example.
  • Updated the included sample HTTP server to implement a fully worked Digest (RFC 7616) authentication example. Please note that the sample code only supports the digest authentication logic supported by the most common web browsers (i.e. Internet Explorer, Firefox, Chrome and Edge). What this means is that only MD5 and MD5-sess is supported and features such as auth-int, SHA-256, SHA-256-sess, SHA-512-256, SHA-512-256-sess, username*, stale & userhash are not implemented.
Categories: Web Site Updates
%d bloggers like this: