Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
# Conflicts:
#	CMakeLists.txt
  • Loading branch information
Peter Thorson committed Apr 19, 2020
2 parents 72e2760 + 1c79f4c commit 56123c8
Show file tree
Hide file tree
Showing 12 changed files with 38 additions and 28 deletions.
10 changes: 7 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ endif ()
############ Project name and version
set (WEBSOCKETPP_MAJOR_VERSION 0)
set (WEBSOCKETPP_MINOR_VERSION 8)
set (WEBSOCKETPP_PATCH_VERSION 1)
set (WEBSOCKETPP_PATCH_VERSION 2)
set (WEBSOCKETPP_VERSION ${WEBSOCKETPP_MAJOR_VERSION}.${WEBSOCKETPP_MINOR_VERSION}.${WEBSOCKETPP_PATCH_VERSION})

if(POLICY CMP0048)
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -202,7 +206,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)
Expand Down
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 12 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
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. #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
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
in the installer and test system.
Expand Down
2 changes: 1 addition & 1 deletion cmake/CMakeHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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 ()

Expand Down
2 changes: 1 addition & 1 deletion docs/faq.dox
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
6 changes: 3 additions & 3 deletions examples/print_client_tls/print_client_tls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand All @@ -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) {
Expand All @@ -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)) {
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
WebSocket++ (0.8.1)
WebSocket++ (0.8.2)
==========================

WebSocket++ is a header only C++ library that implements RFC6455 The WebSocket
Expand Down
10 changes: 5 additions & 5 deletions websocketpp/transport/asio/connection.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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::asio::steady_timer>(
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) {
Expand Down Expand Up @@ -461,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::asio::io_service::strand>(
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,
Expand Down
10 changes: 3 additions & 7 deletions websocketpp/transport/asio/endpoint.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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::asio::ip::tcp::acceptor>(
lib::ref(*m_io_service));
m_acceptor.reset(new lib::asio::ip::tcp::acceptor(*m_io_service));

m_state = READY;
ec = lib::error_code();
Expand Down Expand Up @@ -688,9 +687,7 @@ class endpoint : public config::socket_type {
* @since 0.3.0
*/
void start_perpetual() {
m_work = lib::make_shared<lib::asio::io_service::work>(
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
Expand Down Expand Up @@ -854,8 +851,7 @@ class endpoint : public config::socket_type {

// Create a resolver
if (!m_resolver) {
m_resolver = lib::make_shared<lib::asio::ip::tcp::resolver>(
lib::ref(*m_io_service));
m_resolver.reset(new lib::asio::ip::tcp::resolver(*m_io_service));
}

tcon->set_uri(u);
Expand Down
3 changes: 1 addition & 2 deletions websocketpp/transport/asio/security/none.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,7 @@ class connection : public lib::enable_shared_from_this<connection> {
return socket::make_error_code(socket::error::invalid_state);
}

m_socket = lib::make_shared<lib::asio::ip::tcp::socket>(
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);
Expand Down
3 changes: 1 addition & 2 deletions websocketpp/transport/asio/security/tls.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,7 @@ class connection : public lib::enable_shared_from_this<connection> {
if (!m_context) {
return socket::make_error_code(socket::error::invalid_tls_context);
}
m_socket = lib::make_shared<socket_type>(
_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());
Expand Down
4 changes: 2 additions & 2 deletions websocketpp/version.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down

0 comments on commit 56123c8

Please sign in to comment.