@@ -481,16 +481,22 @@ MessageProcessingResult CQuorumManager::ProcessMessage(CNode& pfrom, CConnman& c
481481 }
482482
483483 // Check if request wants ENCRYPTED_CONTRIBUTIONS data
484- MessageProcessingResult ret{};
484+ CQuorumDataRequest::Errors ret_err{CQuorumDataRequest::Errors::NONE};
485+ MessageProcessingResult qdata_ret{}, ret{};
485486 if (m_handler) {
486487 ret = m_handler->ProcessContribQGETDATA (request_limit_exceeded, ssResponseData, *pQuorum, request, pQuorumBaseBlockIndex);
487488 if (auto request_err = request.GetError (); request_err != CQuorumDataRequest::Errors::NONE &&
488489 request_err != CQuorumDataRequest::Errors::UNDEFINED) {
489- auto qdata_ret = sendQDATA (request_err, request_limit_exceeded);
490- return ret.empty () ? qdata_ret : ret;
490+ ret_err = request_err;
491491 }
492492 }
493- return ret.empty () ? sendQDATA (CQuorumDataRequest::Errors::NONE, request_limit_exceeded, ssResponseData) : ret;
493+ // sendQDATA also pushes a message independent of the returned value
494+ if (ret_err != CQuorumDataRequest::Errors::NONE) {
495+ qdata_ret = sendQDATA (ret_err, request_limit_exceeded);
496+ } else {
497+ qdata_ret = sendQDATA (CQuorumDataRequest::Errors::NONE, request_limit_exceeded, ssResponseData);
498+ }
499+ return ret.empty () ? qdata_ret : ret;
494500 }
495501
496502 if (msg_type == NetMsgType::QDATA) {
@@ -518,7 +524,7 @@ MessageProcessingResult CQuorumManager::ProcessMessage(CNode& pfrom, CConnman& c
518524 }
519525
520526 if (request.GetError () != CQuorumDataRequest::Errors::NONE) {
521- LogPrint (BCLog::LLMQ, " CQuorumManager::%s -- %s: %s , from peer=%d\n " , __func__, msg_type, strprintf ( " Error %d (%s) " , request.GetError (), request.GetErrorString () ), pfrom.GetId ());
527+ LogPrint (BCLog::LLMQ, " CQuorumManager::%s -- %s: Error %d (%s) , from peer=%d\n " , __func__, msg_type, request.GetError (), request.GetErrorString (), pfrom.GetId ());
522528 return {};
523529 }
524530
0 commit comments