remote_address, request_id, offset);
auto rw_callback_data = static_cast<ReadWriteRequestCallbackData*>(user_data);
+ // We create a copy of this value, because remote_address pointer will be invalid
+ // when the job will be executed in the worker
+ auto remote_address_copy = std::string{remote_address};
+
rw_callback_data->instance_.GetWorker().add_job(
- [remote_address, request_id, server, gatt_handle, offset, rw_callback_data] {
+ [remote_address_copy, request_id, server, gatt_handle, offset, rw_callback_data] {
ScopeLogger("Async call: SetReadValueRequestCallback");
auto read_value_request = picojson::value{picojson::object{}};
auto& read_value_request_obj = read_value_request.get<picojson::object>();
- read_value_request_obj[kClientAddress] = picojson::value{remote_address};
+ read_value_request_obj[kClientAddress] = picojson::value{remote_address_copy};
read_value_request_obj[kRequestId] = picojson::value{static_cast<double>(request_id)};
read_value_request_obj[kRequestType] = picojson::value{kReadRequestType};
read_value_request_obj[kOffset] = picojson::value{static_cast<double>(offset)};