Skip to content

Commit c5510d6

Browse files
author
Peter Thorson
committed
Merge branch 'develop'
Conflicts: CMakeLists.txt Doxyfile changelog.md readme.md websocketpp/version.hpp
2 parents 13f6da6 + f931734 commit c5510d6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1360
-397
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ language: cpp
22
compiler:
33
- gcc
44
before_install:
5-
- sudo apt-get install libboost-regex1.48-dev libboost-system1.48-dev libboost-thread1.48-dev libboost-test1.48-dev libboost-random1.48-dev -y
5+
- sudo apt-get install libboost-chrono1.48-dev libboost-regex1.48-dev libboost-system1.48-dev libboost-thread1.48-dev libboost-test1.48-dev libboost-random1.48-dev -y
66
env:
77
global:
88
- BOOST_INCLUDES=/usr/include

CMakeLists.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ project (websocketpp)
99
cmake_minimum_required (VERSION 2.6)
1010

1111
set (WEBSOCKETPP_MAJOR_VERSION 0)
12-
set (WEBSOCKETPP_MINOR_VERSION 5)
13-
set (WEBSOCKETPP_PATCH_VERSION 1)
12+
set (WEBSOCKETPP_MINOR_VERSION 6)
13+
set (WEBSOCKETPP_PATCH_VERSION 0)
1414
set (WEBSOCKETPP_VERSION ${WEBSOCKETPP_MAJOR_VERSION}.${WEBSOCKETPP_MINOR_VERSION}.${WEBSOCKETPP_PATCH_VERSION})
1515

1616
set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
@@ -70,7 +70,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
7070
############ Compiler specific setup
7171

7272
set (WEBSOCKETPP_PLATFORM_LIBS "")
73-
set (WEBSOCKETPP_PLATFORM_TSL_LIBS "")
73+
set (WEBSOCKETPP_PLATFORM_TLS_LIBS "")
7474
set (WEBSOCKETPP_BOOST_LIBS "")
7575

7676
# VC9 and C++11 reasoning
@@ -111,7 +111,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
111111
# g++
112112
if (CMAKE_COMPILER_IS_GNUCXX)
113113
set (WEBSOCKETPP_PLATFORM_LIBS pthread rt)
114-
set (WEBSOCKETPP_PLATFORM_TSL_LIBS ssl crypto)
114+
set (WEBSOCKETPP_PLATFORM_TLS_LIBS ssl crypto)
115115
set (WEBSOCKETPP_BOOST_LIBS system thread)
116116
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
117117
if (NOT APPLE)
@@ -133,7 +133,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
133133
else()
134134
set (WEBSOCKETPP_PLATFORM_LIBS pthread)
135135
endif()
136-
set (WEBSOCKETPP_PLATFORM_TSL_LIBS ssl crypto)
136+
set (WEBSOCKETPP_PLATFORM_TLS_LIBS ssl crypto)
137137
set (WEBSOCKETPP_BOOST_LIBS system thread)
138138
set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++0x -stdlib=libc++") # todo: is libc++ really needed here?
139139
if (NOT APPLE)

Doxyfile

+1-3
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ PROJECT_NAME = "websocketpp"
3232
# This could be handy for archiving the generated documentation or
3333
# if some version control system is used.
3434

35-
36-
PROJECT_NUMBER = "0.5.1"
37-
35+
PROJECT_NUMBER = "0.6.0"
3836

3937
# Using the PROJECT_BRIEF tag one can provide an optional one line description
4038
# for a project that appears at the top of each page and should give viewer

changelog.md

+45
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,50 @@
11
HEAD
22

3+
0.6.0
4+
- MINOR BREAKING TRANSPORT POLICY CHANGE: Custom transport policies will now be
5+
required to include a new method `void set_uri(uri_ptr u)`. An implementation
6+
is not required. The stub transport policy includes an example stub method
7+
that can be added to any existing custom transport policy to fulfill this
8+
requirement. This does not affect anyone using the bundled transports or
9+
configs.
10+
- MINOR BREAKING SOCKET POLICY CHANGE: Custom asio transport socket policies
11+
will now be required to include a new method `void set_uri(uri_ptr u)`. Like
12+
with the transport layer, an implementation is not required. This does not
13+
affect anyone using the bundled socket policies.
14+
- MINOR BREAKING DEPENDENCY CHANGE: When using Boost versions greater than or
15+
equal to 1.49 in C++03 mode, `libboost-chrono` is needed now instead of
16+
`libboost-date_time`. Users with C++11 compilers or using Boost versions 1.48
17+
and earlier are not affected. Note: This change affects the bundled unit test
18+
suite.
19+
- Feature: WebSocket++ Asio transport policy can now be used with the standalone
20+
version of Asio (1.8.0+) when a C++11 compiler and standard library are
21+
present. This means that it is possible now to use WebSocket++'s Asio
22+
transport entirely without Boost. Thank you Robert Seiler for proof of concept
23+
code that was used as a guide for this implementation. Fixes #324
24+
- Feature: Adds a vectored/scatter-gather write handler to the iostream
25+
transport.
26+
- Feature: Adds the ability to defer sending an HTTP response until sometime
27+
after the `http_handler` is run. This allows processing of long running http
28+
handlers to defer their response until it is ready without blocking the
29+
network thread. references #425
30+
- Improvement: `echo_server_tls` has been update to demonstrate how to configure
31+
it for Mozilla's recommended intermediate and modern TLS security profiles.
32+
- Improvement: `endpoint::set_timer` now uses a steady clock provided by
33+
`boost::chrono` or `std::chrono` where available instead of the non-monotonic
34+
system clock. Thank you breyed for reporting. fixes #241
35+
- Improvement: Outgoing TLS connections to servers using the SNI extension to
36+
choose a certificate will now work. Thank you moozzyk for reporting.
37+
Fixes #400
38+
- Improvement: Removes an unnecessary mutex lock in `get_con_from_hdl`.
39+
- Cleanup: Asio transport policy has been refactored to remove many Boost
40+
dependencies. On C++03 compilers the `boost::noncopyable` dependency has been
41+
removed and the `boost::date_time` dependency has been replaced with the newer
42+
`boost::chrono` when possible. On C++11 compilers the `boost::aligned_storage`
43+
and `boost::date_time` dependencies are gone, replaced with equivalent C++11
44+
standard library features.
45+
- Bug: Fixes a potential dangling pointer and inconsistent error message
46+
handling in `websocketpp::exception`. #432 Thank you Tom Swirly for the fix.
47+
348
0.5.1 - 2015-02-27
449
- Bug: Fixes an issue where some frame data was counted against the max header
550
size limit, resulting in connections that included a lot of frame data

examples/echo_server/echo_server.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
1919
<< " and message: " << msg->get_payload()
2020
<< std::endl;
2121

22+
// check for a special command to instruct the server to stop listening so
23+
// it can be cleanly exited.
24+
if (msg->get_payload() == "stop-listening") {
25+
s->stop_listening();
26+
return;
27+
}
28+
2229
try {
2330
s->send(hdl, msg->get_payload(), msg->get_opcode());
2431
} catch (const websocketpp::lib::error_code& e) {

examples/echo_server_tls/dh.pem

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-----BEGIN DH PARAMETERS-----
2+
MIIBCAKCAQEAqxMGKZB8YNV8WQnbJWwwwmifc+PfVRtd1FN5v5aQSsf6dpjX3Zlh
3+
N1NmgecsQyg4u2EWe4Umta10QzCgYaxf6QdTCg7iprLzFNw7IvWYbQ6du12NMGDr
4+
hmwA6KQKwbTgPL6mSlSlcK2wTP2FzxDTNffFu10cB/6Fj4kdQjPG0c1Koz/z7OOq
5+
BuDElJLClS8rjp3z1xvrc7gX95dFa2KaKgOAYDkpe8tfHRhHfJeIVS/whH9hzx6r
6+
OBg+E5K9JyvayrUoKgPeptRKCqo8A4YevtMLpRxMup0nMUgAIv6+BGTwPAFpwgl/
7+
8UIVcvjh1v95PwGDM/Q8yvIBJznBYk/e2wIBAg==
8+
-----END DH PARAMETERS-----

examples/echo_server_tls/echo_server_tls.cpp

+51-9
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,66 @@ void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {
2727
}
2828
}
2929

30+
void on_http(server* s, websocketpp::connection_hdl hdl) {
31+
server::connection_ptr con = s->get_con_from_hdl(hdl);
32+
33+
con->set_body("Hello World!");
34+
con->set_status(websocketpp::http::status_code::ok);
35+
}
36+
3037
std::string get_password() {
3138
return "test";
3239
}
3340

34-
context_ptr on_tls_init(websocketpp::connection_hdl hdl) {
41+
// See https://wiki.mozilla.org/Security/Server_Side_TLS for more details about
42+
// the TLS modes. The code below demonstrates how to implement both the modern
43+
enum tls_mode {
44+
MOZILLA_INTERMEDIATE = 1,
45+
MOZILLA_MODERN = 2
46+
};
47+
48+
context_ptr on_tls_init(tls_mode mode, websocketpp::connection_hdl hdl) {
3549
std::cout << "on_tls_init called with hdl: " << hdl.lock().get() << std::endl;
36-
context_ptr ctx = websocketpp::lib::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::tlsv1);
50+
std::cout << "using TLS mode: " << (mode == MOZILLA_MODERN ? "Mozilla Modern" : "Mozilla Intermediate") << std::endl;
51+
context_ptr ctx = websocketpp::lib::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
3752

3853
try {
39-
ctx->set_options(boost::asio::ssl::context::default_workarounds |
40-
boost::asio::ssl::context::no_sslv2 |
41-
boost::asio::ssl::context::no_sslv3 |
42-
boost::asio::ssl::context::single_dh_use);
54+
if (mode == MOZILLA_MODERN) {
55+
// Modern disables TLSv1
56+
ctx->set_options(boost::asio::ssl::context::default_workarounds |
57+
boost::asio::ssl::context::no_sslv2 |
58+
boost::asio::ssl::context::no_sslv3 |
59+
boost::asio::ssl::context::no_tlsv1 |
60+
boost::asio::ssl::context::single_dh_use);
61+
} else {
62+
ctx->set_options(boost::asio::ssl::context::default_workarounds |
63+
boost::asio::ssl::context::no_sslv2 |
64+
boost::asio::ssl::context::no_sslv3 |
65+
boost::asio::ssl::context::single_dh_use);
66+
}
4367
ctx->set_password_callback(bind(&get_password));
4468
ctx->use_certificate_chain_file("server.pem");
4569
ctx->use_private_key_file("server.pem", boost::asio::ssl::context::pem);
70+
71+
// Example method of generating this file:
72+
// `openssl dhparam -out dh.pem 2048`
73+
// Mozilla Intermediate suggests 1024 as the minimum size to use
74+
// Mozilla Modern suggests 2048 as the minimum size to use.
75+
ctx->use_tmp_dh_file("dh.pem");
76+
77+
std::string ciphers;
78+
79+
if (mode == MOZILLA_MODERN) {
80+
ciphers = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK";
81+
} else {
82+
ciphers = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";
83+
}
84+
85+
if (SSL_CTX_set_cipher_list(ctx->native_handle() , ciphers.c_str()) != 1) {
86+
std::cout << "Error setting cipher list" << std::endl;
87+
}
4688
} catch (std::exception& e) {
47-
std::cout << e.what() << std::endl;
89+
std::cout << "Exception: " << e.what() << std::endl;
4890
}
4991
return ctx;
5092
}
@@ -58,8 +100,8 @@ int main() {
58100

59101
// Register our message handler
60102
echo_server.set_message_handler(bind(&on_message,&echo_server,::_1,::_2));
61-
echo_server.set_tls_init_handler(bind(&on_tls_init,::_1));
62-
103+
echo_server.set_http_handler(bind(&on_http,&echo_server,::_1));
104+
echo_server.set_tls_init_handler(bind(&on_tls_init,MOZILLA_INTERMEDIATE,::_1));
63105

64106
// Listen on port 9002
65107
echo_server.listen(9002);

examples/echo_server_tls/server.pem

+51-54
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,55 @@
11
-----BEGIN RSA PRIVATE KEY-----
2-
Proc-Type: 4,ENCRYPTED
3-
DEK-Info: DES-EDE3-CBC,A0ED66EF872A48A9
4-
5-
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
3027
-----END RSA PRIVATE KEY-----
3128
-----BEGIN CERTIFICATE-----
32-
MIIE0DCCA7igAwIBAgIJAM5MuKJezXq0MA0GCSqGSIb3DQEBBQUAMIGgMQswCQYD
33-
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xGDAW
34-
BgNVBAoTD1phcGhveWQgU3R1ZGlvczEUMBIGA1UECxMLV2ViU29ja2V0KysxFjAU
35-
BgNVBAMTDVBldGVyIFRob3Jzb24xJDAiBgkqhkiG9w0BCQEWFXdlYm1hc3RlckB6
36-
YXBob3lkLmNvbTAeFw0xMTExMTUyMTIwMDZaFw0xMjExMTQyMTIwMDZaMIGgMQsw
37-
CQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28x
38-
GDAWBgNVBAoTD1phcGhveWQgU3R1ZGlvczEUMBIGA1UECxMLV2ViU29ja2V0Kysx
39-
FjAUBgNVBAMTDVBldGVyIFRob3Jzb24xJDAiBgkqhkiG9w0BCQEWFXdlYm1hc3Rl
40-
ckB6YXBob3lkLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANR0
41-
tdwAnIB8I9qRZ7QbzEWY95RpM7GIn0u/9oH90PzdHiE0rXSkKT+yw3XUzH0iw5t0
42-
5dEwSC+srSP5Vm4cA6kXc94agVVaPW89tGcdP4fHptCruSrzQsDXELCPl5UUvMpA
43-
YUcGisdXYPN/EeOoqb9wKWxoW5mREsyyeWWS89fYN5qU/d0QpbSvEWghqLbL/ZS2
44-
hOlXT9LufOeA+vHiV1/T/h5xC7ecIH02YDQw1EnqxbPmkLPcWThztLS9FiufNDRM
45-
Rhcoaj2b9VDHvDwdbeA0T5v5qNdG34LaapYOelxzQMOtM0f9Dgqehodyxl2qm9mR
46-
lq432dlOEzDnVCPNHwECAwEAAaOCAQkwggEFMB0GA1UdDgQWBBTTPKfNMnKOykhv
47-
+vKS7vql5JsMyzCB1QYDVR0jBIHNMIHKgBTTPKfNMnKOykhv+vKS7vql5JsMy6GB
48-
pqSBozCBoDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQH
49-
EwdDaGljYWdvMRgwFgYDVQQKEw9aYXBob3lkIFN0dWRpb3MxFDASBgNVBAsTC1dl
50-
YlNvY2tldCsrMRYwFAYDVQQDEw1QZXRlciBUaG9yc29uMSQwIgYJKoZIhvcNAQkB
51-
FhV3ZWJtYXN0ZXJAemFwaG95ZC5jb22CCQDOTLiiXs16tDAMBgNVHRMEBTADAQH/
52-
MA0GCSqGSIb3DQEBBQUAA4IBAQB+SH0s/hrv5VYqgX6SNLzxdSLvCVsUkCdTpxwY
53-
wOJ84XmYcXDMhKDtZqLtOtN6pfEwVusFlC9mkieuunztCnWNmsSG83RuljJPjFSi
54-
1d4Id4bKEQkQ4cfnjoHKivRrViWLnxuNnLzC6tpyGH/35kKWhhr6T58AXerFgVw3
55-
mHvLPTr1DuhdAZA0ZuvuseVAFFAjI3RetSySwHJE3ak8KswDVfLi6E3XxMVsIWTS
56-
/iFsC2WwoZQlljya2V/kRYIhu+uCdqJ01wunn2BvmURPSgr4GTBF0FQ9JGpNbXxM
57-
TAU7oQJgyFc5sCcuEgPTO0dWVQTvdZVgay4tkmduKDRkmJBF
29+
MIIEpzCCA4+gAwIBAgIJAMlCHvwnJ+F/MA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD
30+
VQQGEwJVUzELMAkGA1UECBMCSUwxEDAOBgNVBAcTB0NoaWNhZ28xGTAXBgNVBAoT
31+
EFdlYlNvY2tldCsrIERlbW8xIjAgBgNVBAMTGXV0aWxpdGllcy53ZWJzb2NrZXRw
32+
cC5vcmcxJjAkBgkqhkiG9w0BCQEWF3dlYnNvY2tldHBwQHphcGhveWQuY29tMB4X
33+
DTE1MDQyNTE1NTk1M1oXDTE4MDMyODE1NTk1M1owgZMxCzAJBgNVBAYTAlVTMQsw
34+
CQYDVQQIEwJJTDEQMA4GA1UEBxMHQ2hpY2FnbzEZMBcGA1UEChMQV2ViU29ja2V0
35+
KysgRGVtbzEiMCAGA1UEAxMZdXRpbGl0aWVzLndlYnNvY2tldHBwLm9yZzEmMCQG
36+
CSqGSIb3DQEJARYXd2Vic29ja2V0cHBAemFwaG95ZC5jb20wggEiMA0GCSqGSIb3
37+
DQEBAQUAA4IBDwAwggEKAoIBAQDvu/lVsVqr6B5V39EItegpNaP8uBcaOI5cGkll
38+
xrejl52Ls3USPjX/XeN9ng7GAUhEUAAt359Tg2w5tfOyS2HeskuYmNS0ZqNEg+oX
39+
YhRWMUybJtD11QNKo/N39sb66XQM/sM26IFwsLxc0Lf+RyE9TNWr2A0OTnqNefzu
40+
QygiRVcFZBJHCTTIK0QtJ/DHFEKsYqBAN9edF3CaQ97jYOYq10aSxcmVSE/VRVMB
41+
dpLDU3PrgtX1smN796gOxJ7g7GJ9VVOgTpnEhb6vWNWCty6l5hdCtIcjO2XZT+vH
42+
YmQYw3R5L4+quwmaSZEE3VymCa9JXtagzeGPoSrvXPgN+/oTAgMBAAGjgfswgfgw
43+
HQYDVR0OBBYEFAWNBET93ZzSukXGkuGb93CfmUkDMIHIBgNVHSMEgcAwgb2AFAWN
44+
BET93ZzSukXGkuGb93CfmUkDoYGZpIGWMIGTMQswCQYDVQQGEwJVUzELMAkGA1UE
45+
CBMCSUwxEDAOBgNVBAcTB0NoaWNhZ28xGTAXBgNVBAoTEFdlYlNvY2tldCsrIERl
46+
bW8xIjAgBgNVBAMTGXV0aWxpdGllcy53ZWJzb2NrZXRwcC5vcmcxJjAkBgkqhkiG
47+
9w0BCQEWF3dlYnNvY2tldHBwQHphcGhveWQuY29tggkAyUIe/Ccn4X8wDAYDVR0T
48+
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEA2DRQSDmo2Q5t8MEjp6jddRIFts5t
49+
BDBWPSwJ0qvmheFt53MuLds2hhvMn42WGrKtVJiLiDyOWuUZ41REJZb1uaissUuY
50+
r9pLuP5QLdibx7+/30iDEY0OGTgtSTfgwNx8bIApBSHoZEN3/HaikqplBng2+6u/
51+
kTe6UnRrBJ+8JOGl+duhCXNPeSyLa2NcrxE9XpWC/k1kC9MTUF+2NuqCtK3zO8ci
52+
p0mqARWDSrEBYISh3dAOgDFrcX6zj+0MK+iswu3ijEdItGAjxjlQ2t4XT1T/CDbc
53+
ysHg04TJw7v682+v124GrnrAPYUK34OK8kFVJ60SNYRUi7euOCdTM4Lwkw==
5854
-----END CERTIFICATE-----
55+

examples/telemetry_client/telemetry_client.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ class telemetry_client {
3030
// Bind the handlers we are using
3131
using websocketpp::lib::placeholders::_1;
3232
using websocketpp::lib::bind;
33-
m_client.set_open_handler(bind(&telemetry_client::on_open,this,::_1));
34-
m_client.set_close_handler(bind(&telemetry_client::on_close,this,::_1));
35-
m_client.set_fail_handler(bind(&telemetry_client::on_fail,this,::_1));
33+
m_client.set_open_handler(bind(&telemetry_client::on_open,this,_1));
34+
m_client.set_close_handler(bind(&telemetry_client::on_close,this,_1));
35+
m_client.set_fail_handler(bind(&telemetry_client::on_fail,this,_1));
3636
}
3737

3838
// This method will block until the connection is complete

examples/telemetry_server/telemetry_server.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ class telemetry_server {
4646
// Bind the handlers we are using
4747
using websocketpp::lib::placeholders::_1;
4848
using websocketpp::lib::bind;
49-
m_endpoint.set_open_handler(bind(&telemetry_server::on_open,this,::_1));
50-
m_endpoint.set_close_handler(bind(&telemetry_server::on_close,this,::_1));
51-
m_endpoint.set_http_handler(bind(&telemetry_server::on_http,this,::_1));
49+
m_endpoint.set_open_handler(bind(&telemetry_server::on_open,this,_1));
50+
m_endpoint.set_close_handler(bind(&telemetry_server::on_close,this,_1));
51+
m_endpoint.set_http_handler(bind(&telemetry_server::on_http,this,_1));
5252
}
5353

5454
void run(std::string docroot, uint16_t port) {

0 commit comments

Comments
 (0)