From d0c9585b625539e0ee5bfd18359a1a117869b6da Mon Sep 17 00:00:00 2001 From: DH Date: Sun, 1 Sep 2024 21:51:02 +0300 Subject: [PATCH] ipmi: fix merge error --- orbis-kernel/src/ipmi.cpp | 64 +++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/orbis-kernel/src/ipmi.cpp b/orbis-kernel/src/ipmi.cpp index 705bfbc..f5de7a8 100644 --- a/orbis-kernel/src/ipmi.cpp +++ b/orbis-kernel/src/ipmi.cpp @@ -547,51 +547,49 @@ orbis::SysResult orbis::sysIpmiClientTryGetResult(Thread *thread, } while (true) { - { - std::lock_guard clientLock(client->mutex); + std::lock_guard clientLock(client->mutex); - for (auto it = client->asyncResponses.begin(); - it != client->asyncResponses.end(); ++it) { - if (it->methodId != _params.method) { - continue; - } + for (auto it = client->asyncResponses.begin(); + it != client->asyncResponses.end(); ++it) { + if (it->methodId != _params.method) { + continue; + } + + auto response = std::move(*it); + client->asyncResponses.erase(it); - auto response = std::move(*it); - client->asyncResponses.erase(it); + ORBIS_RET_ON_ERROR(uwrite(_params.pResult, it->errorCode)); - ORBIS_RET_ON_ERROR(uwrite(_params.pResult, it->errorCode)); + if (response.data.size() != _params.numOutData) { + ORBIS_LOG_ERROR(__FUNCTION__, "responses count mismatch", + response.data.size(), _params.numOutData); + } - if (response.data.size() != _params.numOutData) { - ORBIS_LOG_ERROR(__FUNCTION__, "responses count mismatch", + for (std::size_t i = 0; i < response.data.size(); ++i) { + if (response.data.size() > _params.numOutData) { + ORBIS_LOG_ERROR(__FUNCTION__, "too many responses", response.data.size(), _params.numOutData); + break; } - for (std::size_t i = 0; i < response.data.size(); ++i) { - if (response.data.size() > _params.numOutData) { - ORBIS_LOG_ERROR(__FUNCTION__, "too many responses", - response.data.size(), _params.numOutData); - break; - } - - IpmiBufferInfo _outData; - ORBIS_RET_ON_ERROR(uread(_outData, _params.pOutData + i)); + IpmiBufferInfo _outData; + ORBIS_RET_ON_ERROR(uread(_outData, _params.pOutData + i)); - auto &data = response.data[i]; + auto &data = response.data[i]; - if (_outData.capacity < data.size()) { - ORBIS_LOG_ERROR(__FUNCTION__, "too big response", _outData.capacity, - data.size()); - continue; - } - - _outData.size = data.size(); - ORBIS_RET_ON_ERROR( - uwriteRaw(_outData.data, data.data(), data.size())); - ORBIS_RET_ON_ERROR(uwrite(_params.pOutData + i, _outData)); + if (_outData.capacity < data.size()) { + ORBIS_LOG_ERROR(__FUNCTION__, "too big response", _outData.capacity, + data.size()); + continue; } - return uwrite(result, 0u); + _outData.size = data.size(); + ORBIS_RET_ON_ERROR( + uwriteRaw(_outData.data, data.data(), data.size())); + ORBIS_RET_ON_ERROR(uwrite(_params.pOutData + i, _outData)); } + + return uwrite(result, 0u); } client->asyncResponseCv.wait(client->mutex);