Skip to content

v2.4.0

Compare
Choose a tag to compare
@alexkaratarakis alexkaratarakis released this 20 Nov 21:55
· 1181 commits to master since this release

Release Notes

oauth

  • Fixed memory leak with OAuth 1 in the success case. #321
  • OAuth1 added support for parameters in POST request body if Content-Type is application/x-www-form-urlencoded.
  • OAuth1 fixed some parameters which were incorrectly encoded twice.
  • OAuth1 added support for additional provider parameters on the token.

websocket_client

  • Added a new websocket_client class, websocket_client_class, that supports using callbacks instead for receiving messages and when the connection is closed. #15
  • Fixed issues around the websocket_client destructor taking the loader lock causing hangs/crashes if dynamically loading/unloading in a dll at runtime on Windows. #309, #233
  • Fixed memory leaks coming from OpenSSL when using secure websocket client.

http_client

  • Fixed http_client constructor taking parameters by value and performing a lot of moves and sometimes copying again. Now everything cleaner is passed by const reference. In the future if performance critical another overload can be added.
  • Removed unnecessary exception_ptr stored per request on all but WinRT platforms, saving space.
  • Misc cleanup in asio based http_client, renaming classes to not contain 'linux', making more data/methods private, removing some unnecessary usage of shared_ptr parameters and unnecessary indirection.
  • Fixed memory leak in asio based http_client with 'https' requests. #326
  • Fixed race condition in asio based http_client when obtaining a connection from the connection pool. #320
  • Deprecated http_client_config::set_guarantee_order(...) option. It is confusing and simplifies the implementation if removed. If request ordering is a requirement it can always be done manually with task continuations. In the future a better option to expose would be to configure the max number of allowed concurrent connections.
  • Fixed an issue in Boost based http_client where connections that encounter an error were being pooled for reuse. Now all connections that hit any errors are properly shutdown and closed.

http_listener

  • Updated to Boost based implementation to include underlying Boost error code in exceptions. #224
  • Updated a bunch of parameters in Boost based implementation to pass by const reference instead of by value.
  • Fixed problem in Boost based implementation where if an error occurred while processing the request body then the event from http_request::content_ready() won't be signaled. #220

uri

  • Fixed issue with uri_builder not including user information when calling to_string() and to_uri(). #329

json

  • Fixed a small memory leak in locale support for json library.

miscellaneous

  • Moved all the non public headers under the cpprest include folder into a details subfolder.
  • Removed a bunch of unnecessary pragma warning suppressions. This removes a ton of warnings when using Clang.
  • Renamed a bunch of source files to better reflect their contents. For example http_linux.cpp is now http_client_asio.cpp.
  • Cleaned up and combined the *_compat.h header files into one more manageable file making it easier to share settings.
  • Removed a bunch of unnecessary macros/defines.
  • Public API code documentation improvements for reference docs.
  • Fixed a conversion bug in datetime::utc_now() causing the seconds to be off potentially by 100 nanoseconds.
  • Added /detectleaks option for TestRunner when running on Windows.

Windows

  • Updated all the solution files to use the VS2013 shared projects feature. With this change all the source code is present in the IDE regardless of the platform. Now it is easier to develop in VS for other platforms as well.
  • Removed the _MS_WINDOWS macro, _WIN32 should be used instead.
  • Updated NuGet package to include CPPREST_TARGET_XP define if targeting XP, otherwise http_client_config size mismatches can occur leading to crashes.
  • Fixed an issue with PHONE8 define causing problems if not defined when targeting Windows Phone 8. The macro has now been removed.
  • We now statically link with OpenSSL on Windows and so our NuGet package no longer has the OpenSSL dependency. This makes deployment easier for customers. #308
  • Worked around a VS2015 compiler devirtualization bug causing AVs, using /d2notypeopt. #314, #315
  • Changed name of powershell VS setup script for VS2015.

Android

  • Added Android vcxproj files for Visual Studio and included them in the solution files.
  • Fixed incorrect _M_ARM macro check that lead to websockets being excluded on Android.
  • Added support for the Windows x86 emulator. Android NuGet package now contains binaries for it as well.
  • Fixed lots of warning with Clang, turned on treating warnings as errors when building on Windows. #323
  • Added vxproj files for tests and an Android test runner.

iOS

  • Added a XCode unit test bridge to enable easily running tests for iOS. Can be used from command line with xcodebuild. #105