diff --git a/src/dht_proxy_client.cpp b/src/dht_proxy_client.cpp index 6a1e6c54fb95694fe4127bb2c372ae70724fa8b4..555b9e027837a3b1f3d6eeed1eea55cdaf56d8e2 100644 --- a/src/dht_proxy_client.cpp +++ b/src/dht_proxy_client.cpp @@ -1121,10 +1121,12 @@ DhtProxyClient::sendListen(const restinio::http_request_header_t& header, std::lock_guard<std::mutex> l(requestLock_); requests_[reqid] = request; } - request->add_on_status_callback([request, seconds = this->listenKeepIdle()] (unsigned status_code) { + request->add_on_status_callback([r=std::weak_ptr(request), seconds = this->listenKeepIdle()] (unsigned status_code) { if(status_code == 200) { // increase TCP_KEEPIDLE to save power - request->get_connection()->set_keepalive(seconds); + if (auto request = r.lock()) { + request->get_connection()->set_keepalive(seconds); + } } }); request->send();