From 2a885d5cc48d5d36d1cfe77a390b289de9ea8cda Mon Sep 17 00:00:00 2001 From: Juan Eugenio Abadie Date: Thu, 23 Aug 2018 00:22:11 -0300 Subject: [PATCH 1/8] Remove duplicated word --- docs/faq.dox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq.dox b/docs/faq.dox index 24059f755..9f417ec41 100644 --- a/docs/faq.dox +++ b/docs/faq.dox @@ -55,7 +55,7 @@ If you handle errors from methods like send, ping, close, etc correctly then you Normally, for security purposes, operating systems prevent programs from listening on sockets created by other programs. When your program crashes and restarts, the new instance is a different program from the perspective of the operating system. As such it can’t listen on the socket address/port that the previous program was using until after a timeout occurs to make sure the old program was done with it. -The the first step for handling this is to make sure that you provide a method (signal handler, admin websocket message, etc) to perform a clean server shutdown. There is a question elsewhere in this FAQ that describes the steps necessary for this. +The first step for handling this is to make sure that you provide a method (signal handler, admin websocket message, etc) to perform a clean server shutdown. There is a question elsewhere in this FAQ that describes the steps necessary for this. The clean close strategy won't help in the case of crashes or other abnormal closures. An option to consider for these cases is the use of the SO_REUSEADDR socket option. This instructs the OS to not request an exclusive lock on the socket. This means that after your program crashes the replacement you start can immediately listen on that address/port combo again. From c769c9238ad62178f506038178714a1c35aa2769 Mon Sep 17 00:00:00 2001 From: Stefan Floeren <42731906+stefan-floeren@users.noreply.github.com> Date: Tue, 16 Apr 2019 08:38:01 +0200 Subject: [PATCH 2/8] Replace make_shared with new in some cases Replace make_shared for asio types that take a lib::ref as a parameter. This should fix the ASIO change (boostorg/asio@59066d8) for 1.70, while keeping it backwards compatible to older boost versions. --- websocketpp/transport/asio/connection.hpp | 7 ++++--- websocketpp/transport/asio/endpoint.hpp | 3 +-- websocketpp/transport/asio/security/none.hpp | 3 +-- websocketpp/transport/asio/security/tls.hpp | 3 +-- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp index 60f88a79f..1ccda8f3f 100644 --- a/websocketpp/transport/asio/connection.hpp +++ b/websocketpp/transport/asio/connection.hpp @@ -311,9 +311,10 @@ class connection : public config::socket_type::socket_con_type { * needed. */ timer_ptr set_timer(long duration, timer_handler callback) { - timer_ptr new_timer = lib::make_shared( - lib::ref(*m_io_service), - lib::asio::milliseconds(duration) + timer_ptr new_timer( + new lib::asio::steady_timer( + *m_io_service, + lib::asio::milliseconds(duration)) ); if (config::enable_multithreading) { diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp index ddab2c742..4b719a97b 100644 --- a/websocketpp/transport/asio/endpoint.hpp +++ b/websocketpp/transport/asio/endpoint.hpp @@ -195,8 +195,7 @@ class endpoint : public config::socket_type { m_io_service = ptr; m_external_io_service = true; - m_acceptor = lib::make_shared( - lib::ref(*m_io_service)); + m_acceptor.reset(new lib::asio::ip::tcp::acceptor(*m_io_service)); m_state = READY; ec = lib::error_code(); diff --git a/websocketpp/transport/asio/security/none.hpp b/websocketpp/transport/asio/security/none.hpp index 5c8293dbe..6c7d35241 100644 --- a/websocketpp/transport/asio/security/none.hpp +++ b/websocketpp/transport/asio/security/none.hpp @@ -168,8 +168,7 @@ class connection : public lib::enable_shared_from_this { return socket::make_error_code(socket::error::invalid_state); } - m_socket = lib::make_shared( - lib::ref(*service)); + m_socket.reset(new lib::asio::ip::tcp::socket(*service)); if (m_socket_init_handler) { m_socket_init_handler(m_hdl, *m_socket); diff --git a/websocketpp/transport/asio/security/tls.hpp b/websocketpp/transport/asio/security/tls.hpp index c76fd9aa1..04ac37903 100644 --- a/websocketpp/transport/asio/security/tls.hpp +++ b/websocketpp/transport/asio/security/tls.hpp @@ -193,8 +193,7 @@ class connection : public lib::enable_shared_from_this { if (!m_context) { return socket::make_error_code(socket::error::invalid_tls_context); } - m_socket = lib::make_shared( - _WEBSOCKETPP_REF(*service),lib::ref(*m_context)); + m_socket.reset(new socket_type(*service, *m_context)); if (m_socket_init_handler) { m_socket_init_handler(m_hdl, get_socket()); From f810ca2e800e9b55be41c5911cf1d1185fcd516b Mon Sep 17 00:00:00 2001 From: Stefan Floeren <42731906+stefan-floeren@users.noreply.github.com> Date: Wed, 17 Apr 2019 10:06:18 +0000 Subject: [PATCH 3/8] Fix missed entries; fix testing --- CMakeLists.txt | 2 +- websocketpp/transport/asio/connection.hpp | 3 +-- websocketpp/transport/asio/endpoint.hpp | 7 ++----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2786aba9e..951de975a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,7 +202,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES) endif () if (NOT Boost_USE_STATIC_LIBS) - add_definitions (/DBOOST_TEST_DYN_LINK) + add_definitions (-DBOOST_TEST_DYN_LINK) endif () set (Boost_FIND_REQUIRED TRUE) diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp index 1ccda8f3f..57dda74a2 100644 --- a/websocketpp/transport/asio/connection.hpp +++ b/websocketpp/transport/asio/connection.hpp @@ -462,8 +462,7 @@ class connection : public config::socket_type::socket_con_type { m_io_service = io_service; if (config::enable_multithreading) { - m_strand = lib::make_shared( - lib::ref(*io_service)); + m_strand.reset(new lib::asio::io_service::strand(*io_service)); } lib::error_code ec = socket_con_type::init_asio(io_service, m_strand, diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp index 4b719a97b..94509adb3 100644 --- a/websocketpp/transport/asio/endpoint.hpp +++ b/websocketpp/transport/asio/endpoint.hpp @@ -687,9 +687,7 @@ class endpoint : public config::socket_type { * @since 0.3.0 */ void start_perpetual() { - m_work = lib::make_shared( - lib::ref(*m_io_service) - ); + m_work.reset(new lib::asio::io_service::work(*m_io_service)); } /// Clears the endpoint's perpetual flag, allowing it to exit when empty @@ -853,8 +851,7 @@ class endpoint : public config::socket_type { // Create a resolver if (!m_resolver) { - m_resolver = lib::make_shared( - lib::ref(*m_io_service)); + m_resolver.reset(new lib::asio::ip::tcp::resolver(*m_io_service)); } tcon->set_uri(u); From 07b9d6a01ef37e8ed0715e39dcf7968ddc9d453a Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Thu, 26 Sep 2019 07:15:49 -0500 Subject: [PATCH 4/8] Update cmake installer to use a variable for the include directory references #842 --- changelog.md | 3 +++ cmake/CMakeHelpers.cmake | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 6771d6e9e..28379bc30 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,7 @@ HEAD +- CMake: Update cmake installer to use a variable for the include directory + improving the ability of the install to be customized. THank you Schrijvers + Luc and Gianfranco Costamanga for reporting and a patch. #842 0.8.1 - 2018-07-16 Note: This release does not change library behavior. It only corrects issues diff --git a/cmake/CMakeHelpers.cmake b/cmake/CMakeHelpers.cmake index 1478f4b52..f6036325b 100644 --- a/cmake/CMakeHelpers.cmake +++ b/cmake/CMakeHelpers.cmake @@ -80,7 +80,7 @@ macro (final_target) endif () install (DIRECTORY ${CMAKE_SOURCE_DIR}/${TARGET_NAME} - DESTINATION include/ + DESTINATION ${INSTALL_INCLUDE_DIR}/ FILES_MATCHING PATTERN "*.hpp*") endmacro () From 275e88af0c6e6699bf76c9df824480800e9e4b53 Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Thu, 26 Sep 2019 07:23:42 -0500 Subject: [PATCH 5/8] Update cmake installer to better handle dependencies when using g++ on MacOS. references #831 --- CMakeLists.txt | 6 +++++- changelog.md | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2786aba9e..0d08c197b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,7 +123,11 @@ if (BUILD_TESTS OR BUILD_EXAMPLES) # g++ if (CMAKE_COMPILER_IS_GNUCXX) - set (WEBSOCKETPP_PLATFORM_LIBS pthread rt) + if (NOT APPLE) + set (WEBSOCKETPP_PLATFORM_LIBS pthread rt) + else() + set (WEBSOCKETPP_PLATFORM_LIBS pthread) + endif() set (WEBSOCKETPP_PLATFORM_TLS_LIBS ssl crypto) set (WEBSOCKETPP_BOOST_LIBS system thread) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") diff --git a/changelog.md b/changelog.md index 28379bc30..743d0145b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,6 @@ HEAD +- CMake: Update cmake installer to better handle dependencies when using + g++ on MacOS. Thank you Luca Palano for reporting and a patch. #831 - CMake: Update cmake installer to use a variable for the include directory improving the ability of the install to be customized. THank you Schrijvers Luc and Gianfranco Costamanga for reporting and a patch. #842 From 7413885f6b95587574a869623537daf15a882ce0 Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Sun, 19 Apr 2020 12:54:35 -0500 Subject: [PATCH 6/8] [examples] Update print_client_tls example to remove use of deprecated OpenSSL functions --- changelog.md | 2 ++ examples/print_client_tls/print_client_tls.cpp | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 743d0145b..0b6fe4a0a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,6 @@ HEAD +- Examples: Update print_client_tls example to remove use of deprecated + OpenSSL functions. - CMake: Update cmake installer to better handle dependencies when using g++ on MacOS. Thank you Luca Palano for reporting and a patch. #831 - CMake: Update cmake installer to use a variable for the include directory diff --git a/examples/print_client_tls/print_client_tls.cpp b/examples/print_client_tls/print_client_tls.cpp index 0a1c72c06..469d9c61e 100644 --- a/examples/print_client_tls/print_client_tls.cpp +++ b/examples/print_client_tls/print_client_tls.cpp @@ -61,7 +61,7 @@ bool verify_subject_alternative_name(const char * hostname, X509 * cert) { continue; } - char * dns_name = (char *) ASN1_STRING_data(current_name->d.dNSName); + char const * dns_name = (char const *) ASN1_STRING_get0_data(current_name->d.dNSName); // Make sure there isn't an embedded NUL character in the DNS name if (ASN1_STRING_length(current_name->d.dNSName) != strlen(dns_name)) { @@ -76,7 +76,7 @@ bool verify_subject_alternative_name(const char * hostname, X509 * cert) { } /// Verify that the certificate common name matches the given hostname -bool verify_common_name(const char * hostname, X509 * cert) { +bool verify_common_name(char const * hostname, X509 * cert) { // Find the position of the CN field in the Subject field of the certificate int common_name_loc = X509_NAME_get_index_by_NID(X509_get_subject_name(cert), NID_commonName, -1); if (common_name_loc < 0) { @@ -95,7 +95,7 @@ bool verify_common_name(const char * hostname, X509 * cert) { return false; } - char * common_name_str = (char *) ASN1_STRING_data(common_name_asn1); + char const * common_name_str = (char const *) ASN1_STRING_get0_data(common_name_asn1); // Make sure there isn't an embedded NUL character in the CN if (ASN1_STRING_length(common_name_asn1) != strlen(common_name_str)) { From 7f76bdd30e684488169361227b9d74b4a9ff45f5 Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Sun, 19 Apr 2020 13:04:13 -0500 Subject: [PATCH 7/8] [core] Updates changelog to include credits for boost fix PR --- changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changelog.md b/changelog.md index 0b6fe4a0a..b112c6cd3 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,9 @@ HEAD - Examples: Update print_client_tls example to remove use of deprecated OpenSSL functions. +- Compatibility: Removes the use of make_shared in a number of cases where + it would be incompatible with newer versions of ASIO. Thank you Stefan + Floeren for the patch. - CMake: Update cmake installer to better handle dependencies when using g++ on MacOS. Thank you Luca Palano for reporting and a patch. #831 - CMake: Update cmake installer to use a variable for the include directory From 1c79f4c909a7412747fe7ba51883adba35a224ef Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Sun, 19 Apr 2020 13:10:18 -0500 Subject: [PATCH 8/8] [release] Prep documentation & version info for 0.8.2 release --- CMakeLists.txt | 2 +- Doxyfile | 2 +- changelog.md | 4 +++- readme.md | 2 +- websocketpp/version.hpp | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2fc33002e..4f93e243a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ endif () ############ Project name and version set (WEBSOCKETPP_MAJOR_VERSION 0) set (WEBSOCKETPP_MINOR_VERSION 8) -set (WEBSOCKETPP_PATCH_VERSION 0) +set (WEBSOCKETPP_PATCH_VERSION 2) set (WEBSOCKETPP_VERSION ${WEBSOCKETPP_MAJOR_VERSION}.${WEBSOCKETPP_MINOR_VERSION}.${WEBSOCKETPP_PATCH_VERSION}) if(POLICY CMP0048) diff --git a/Doxyfile b/Doxyfile index e2061659b..20b695cc9 100644 --- a/Doxyfile +++ b/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = WebSocket++ # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.8.1 +PROJECT_NUMBER = 0.8.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/changelog.md b/changelog.md index b112c6cd3..3488a1981 100644 --- a/changelog.md +++ b/changelog.md @@ -1,9 +1,11 @@ HEAD + +0.8.2 - 2020-04-19 - Examples: Update print_client_tls example to remove use of deprecated OpenSSL functions. - Compatibility: Removes the use of make_shared in a number of cases where it would be incompatible with newer versions of ASIO. Thank you Stefan - Floeren for the patch. + Floeren for the patch. #810 #814 #862 #843 #794 #808 - CMake: Update cmake installer to better handle dependencies when using g++ on MacOS. Thank you Luca Palano for reporting and a patch. #831 - CMake: Update cmake installer to use a variable for the include directory diff --git a/readme.md b/readme.md index aa99f668e..6cc608516 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -WebSocket++ (0.8.1) +WebSocket++ (0.8.2) ========================== WebSocket++ is a header only C++ library that implements RFC6455 The WebSocket diff --git a/websocketpp/version.hpp b/websocketpp/version.hpp index f701ab103..5766546f7 100644 --- a/websocketpp/version.hpp +++ b/websocketpp/version.hpp @@ -44,7 +44,7 @@ static int const major_version = 0; /// Library minor version number static int const minor_version = 8; /// Library patch version number -static int const patch_version = 1; +static int const patch_version = 2; /// Library pre-release flag /** * This is a textual flag indicating the type and number for pre-release @@ -54,7 +54,7 @@ static int const patch_version = 1; static char const prerelease_flag[] = ""; /// Default user agent string -static char const user_agent[] = "WebSocket++/0.8.1"; +static char const user_agent[] = "WebSocket++/0.8.2"; } // namespace websocketpp