Skip to content

Commit fea8457

Browse files
committed
Added g++ workaround.
1 parent e5b0f41 commit fea8457

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ sudo: false
22
language: cpp
33
dist: trusty
44

5-
#if: type != push OR branch = master OR branch =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
5+
if: type != push OR branch = master OR branch =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
66

77
install:
88
- export BASE=`pwd`

include/mqtt/server.hpp

+18-13
Original file line numberDiff line numberDiff line change
@@ -301,10 +301,11 @@ class server_tls {
301301
void do_accept() {
302302
if (close_request_) return;
303303
auto socket = std::make_shared<socket_t>(ios_con_, ctx_);
304+
auto ps = socket.get();
304305
acceptor_.value().async_accept(
305-
socket->lowest_layer(),
306-
[this, socket]
307-
(boost::system::error_code const& ec) {
306+
ps->lowest_layer(),
307+
[this, socket = force_move(socket)]
308+
(boost::system::error_code const& ec) mutable {
308309
if (ec) {
309310
acceptor_.reset();
310311
if (h_error_) h_error_(ec);
@@ -322,9 +323,10 @@ class server_tls {
322323
socket->lowest_layer().close(close_ec);
323324
}
324325
);
325-
socket->async_handshake(
326+
auto ps = socket.get();
327+
ps->async_handshake(
326328
as::ssl::stream_base::server,
327-
[this, socket, tim, underlying_finished]
329+
[this, socket = force_move(socket), tim, underlying_finished]
328330
(boost::system::error_code ec) mutable {
329331
*underlying_finished = true;
330332
tim->cancel();
@@ -496,10 +498,11 @@ class server_ws {
496498
void do_accept() {
497499
if (close_request_) return;
498500
auto socket = std::make_shared<socket_t>(ios_con_);
501+
auto ps = socket.get();
499502
acceptor_.value().async_accept(
500-
socket->next_layer(),
501-
[this, socket]
502-
(boost::system::error_code const& ec) {
503+
ps->next_layer(),
504+
[this, socket = force_move(socket)]
505+
(boost::system::error_code const& ec) mutable {
503506
if (ec) {
504507
acceptor_.reset();
505508
if (h_error_) h_error_(ec);
@@ -520,12 +523,13 @@ class server_ws {
520523

521524
auto sb = std::make_shared<boost::asio::streambuf>();
522525
auto request = std::make_shared<boost::beast::http::request<boost::beast::http::string_body>>();
526+
auto ps = socket.get();
523527
boost::beast::http::async_read(
524-
socket->next_layer(),
528+
ps->next_layer(),
525529
*sb,
526530
*request,
527-
[this, socket, sb, request, tim, underlying_finished]
528-
(boost::system::error_code const& ec, std::size_t) {
531+
[this, socket = force_move(socket), sb, request, tim, underlying_finished]
532+
(boost::system::error_code const& ec, std::size_t) mutable {
529533
if (ec) {
530534
*underlying_finished = true;
531535
tim->cancel();
@@ -536,7 +540,8 @@ class server_ws {
536540
tim->cancel();
537541
return;
538542
}
539-
socket->async_accept_ex(
543+
auto ps = socket.get();
544+
ps->async_accept_ex(
540545
*request,
541546
[request]
542547
(boost::beast::websocket::response_type& m) {
@@ -545,7 +550,7 @@ class server_ws {
545550
m.insert(it->name(), it->value());
546551
}
547552
},
548-
[this, socket, tim, underlying_finished]
553+
[this, socket = force_move(socket), tim, underlying_finished]
549554
(boost::system::error_code const& ec) mutable {
550555
*underlying_finished = true;
551556
tim->cancel();

0 commit comments

Comments
 (0)