@@ -301,10 +301,11 @@ class server_tls {
301
301
void do_accept () {
302
302
if (close_request_) return ;
303
303
auto socket = std::make_shared<socket_t >(ios_con_, ctx_);
304
+ auto ps = socket.get ();
304
305
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 {
308
309
if (ec) {
309
310
acceptor_.reset ();
310
311
if (h_error_) h_error_ (ec);
@@ -322,9 +323,10 @@ class server_tls {
322
323
socket->lowest_layer ().close (close_ec);
323
324
}
324
325
);
325
- socket->async_handshake (
326
+ auto ps = socket.get ();
327
+ ps->async_handshake (
326
328
as::ssl::stream_base::server,
327
- [this , socket, tim, underlying_finished]
329
+ [this , socket = force_move (socket) , tim, underlying_finished]
328
330
(boost::system ::error_code ec) mutable {
329
331
*underlying_finished = true ;
330
332
tim->cancel ();
@@ -496,10 +498,11 @@ class server_ws {
496
498
void do_accept () {
497
499
if (close_request_) return ;
498
500
auto socket = std::make_shared<socket_t >(ios_con_);
501
+ auto ps = socket.get ();
499
502
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 {
503
506
if (ec) {
504
507
acceptor_.reset ();
505
508
if (h_error_) h_error_ (ec);
@@ -520,12 +523,13 @@ class server_ws {
520
523
521
524
auto sb = std::make_shared<boost::asio::streambuf>();
522
525
auto request = std::make_shared<boost::beast::http::request<boost::beast::http::string_body>>();
526
+ auto ps = socket.get ();
523
527
boost::beast::http::async_read (
524
- socket ->next_layer (),
528
+ ps ->next_layer (),
525
529
*sb,
526
530
*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 {
529
533
if (ec) {
530
534
*underlying_finished = true ;
531
535
tim->cancel ();
@@ -536,7 +540,8 @@ class server_ws {
536
540
tim->cancel ();
537
541
return ;
538
542
}
539
- socket->async_accept_ex (
543
+ auto ps = socket.get ();
544
+ ps->async_accept_ex (
540
545
*request,
541
546
[request]
542
547
(boost::beast::websocket::response_type& m) {
@@ -545,7 +550,7 @@ class server_ws {
545
550
m.insert (it->name (), it->value ());
546
551
}
547
552
},
548
- [this , socket, tim, underlying_finished]
553
+ [this , socket = force_move (socket) , tim, underlying_finished]
549
554
(boost::system ::error_code const & ec) mutable {
550
555
*underlying_finished = true ;
551
556
tim->cancel ();
0 commit comments