@@ -132,8 +132,7 @@ void AcceptorTcp<SocketType::Tcp>::asyncAccept() {
132
132
auto & socket = asioSocket->socket ;
133
133
auto & peer = asioSocket->peer ;
134
134
auto handler = [self_ptr = weak_from_this (),
135
- asioSocket = std::move (asioSocket)](
136
- asio_ns::error_code const & ec) mutable {
135
+ asioSocket](asio_ns::error_code const & ec) mutable {
137
136
if (auto self = self_ptr.lock (); self != nullptr ) {
138
137
if (ec) {
139
138
self->handleError (ec);
@@ -193,23 +192,26 @@ template<>
193
192
void AcceptorTcp<SocketType::Ssl>::performHandshake(
194
193
std::shared_ptr<AsioSocket<SocketType::Ssl>> proto) {
195
194
// io_context is single-threaded, no sync needed
196
- auto * ptr = proto.get ();
197
195
proto->timer .expires_from_now (std::chrono::seconds (60 ));
198
- proto->timer .async_wait ([ptr](asio_ns::error_code const & ec) {
199
- if (ec) { // canceled
200
- return ;
201
- }
202
- ptr->shutdown ([](asio_ns::error_code const &) {}); // ignore error
203
- });
196
+ proto->timer .async_wait (
197
+ [weak_ptr = std::weak_ptr<AsioSocket<SocketType::Ssl>>(proto)](
198
+ asio_ns::error_code const & ec) {
199
+ if (ec) { // canceled
200
+ return ;
201
+ }
202
+ if (auto ptr = weak_ptr.lock (); ptr != nullptr ) {
203
+ ptr->shutdown ([](asio_ns::error_code const &) {}); // ignore error
204
+ }
205
+ });
204
206
205
207
auto cb = [self_ptr = weak_from_this (),
206
- as = std::move ( proto) ](asio_ns::error_code const & ec) mutable {
207
- as ->timer .cancel ();
208
+ proto](asio_ns::error_code const & ec) mutable {
209
+ proto ->timer .cancel ();
208
210
if (auto self = self_ptr.lock (); self != nullptr ) {
209
211
if (ec) {
210
212
LOG_TOPIC (" 4c6b4" , DEBUG, arangodb::Logger::COMMUNICATION)
211
213
<< " error during TLS handshake: '" << ec.message () << " '" ;
212
- as .reset (); // ungraceful shutdown
214
+ proto .reset (); // ungraceful shutdown
213
215
return ;
214
216
}
215
217
@@ -221,22 +223,22 @@ void AcceptorTcp<SocketType::Ssl>::performHandshake(
221
223
info.serverAddress = self->_endpoint ->host ();
222
224
info.serverPort = self->_endpoint ->port ();
223
225
224
- info.clientAddress = as ->peer .address ().to_string ();
225
- info.clientPort = as ->peer .port ();
226
+ info.clientAddress = proto ->peer .address ().to_string ();
227
+ info.clientPort = proto ->peer .port ();
226
228
227
229
std::shared_ptr<CommTask> task;
228
- if (tls_h2_negotiated (as ->socket .native_handle ())) {
230
+ if (tls_h2_negotiated (proto ->socket .native_handle ())) {
229
231
task = std::make_shared<H2CommTask<SocketType::Ssl>>(
230
- self->_server , std::move (info), std::move (as ));
232
+ self->_server , std::move (info), std::move (proto ));
231
233
} else {
232
234
task = std::make_shared<HttpCommTask<SocketType::Ssl>>(
233
- self->_server , std::move (info), std::move (as ));
235
+ self->_server , std::move (info), std::move (proto ));
234
236
}
235
237
236
238
self->_server .registerTask (std::move (task));
237
239
}
238
240
};
239
- ptr ->handshake (withLogContext (std::move (cb)));
241
+ proto ->handshake (withLogContext (std::move (cb)));
240
242
}
241
243
242
244
template <>
@@ -251,8 +253,7 @@ void AcceptorTcp<SocketType::Ssl>::asyncAccept() {
251
253
auto & socket = asioSocket->socket .lowest_layer ();
252
254
auto & peer = asioSocket->peer ;
253
255
auto handler = [self_ptr = weak_from_this (),
254
- asioSocket = std::move (asioSocket)](
255
- asio_ns::error_code const & ec) mutable {
256
+ asioSocket](asio_ns::error_code const & ec) mutable {
256
257
if (auto self = self_ptr.lock (); self != nullptr ) {
257
258
if (ec) {
258
259
self->handleError (ec);
0 commit comments