@@ -432,13 +432,12 @@ void CDeterministicMNList::AddMN(const CDeterministicMNCPtr& dmn, bool fBumpTota
432432 throw (std::runtime_error (strprintf (" %s: Can't add a masternode %s with a duplicate collateralOutpoint=%s" , __func__,
433433 dmn->proTxHash .ToString (), dmn->collateralOutpoint .ToStringShort ())));
434434 }
435- for (const NetInfoEntry& entry : dmn->pdmnState ->netInfo ->GetEntries ()) {
436- if (const auto & service_opt{entry.GetAddrPort ()}; service_opt.has_value ()) {
437- const CService& service{service_opt.value ()};
438- if (!AddUniqueProperty (*dmn, service)) {
435+ for (const auto & entry : dmn->pdmnState ->netInfo ->GetEntries ()) {
436+ if (const auto service_opt{entry.GetAddrPort ()}) {
437+ if (!AddUniqueProperty (*dmn, *service_opt)) {
439438 mnUniquePropertyMap = mnUniquePropertyMapSaved;
440- throw std::runtime_error (strprintf (" %s: Can't add a masternode %s with a duplicate address=%s" ,
441- __func__, dmn->proTxHash .ToString (), service. ToStringAddrPort ()));
439+ throw std::runtime_error (strprintf (" %s: Can't add a masternode %s with a duplicate address=%s" , __func__,
440+ dmn->proTxHash .ToString (), service_opt-> ToStringAddrPort ()));
442441 }
443442 } else {
444443 mnUniquePropertyMap = mnUniquePropertyMapSaved;
@@ -489,21 +488,19 @@ void CDeterministicMNList::UpdateMN(const CDeterministicMN& oldDmn, const std::s
489488 // We track each individual entry in netInfo as opposed to netInfo itself (preventing us from
490489 // using UpdateUniqueProperty()), so we need to successfully purge all old entries and insert
491490 // new entries to successfully update.
492- for (const NetInfoEntry& old_entry : oldInfo->GetEntries ()) {
493- if (const auto & service_opt{old_entry.GetAddrPort ()}) {
494- const CService& service{service_opt.value ()};
495- if (!DeleteUniqueProperty (dmn, service)) {
491+ for (const auto & old_entry : oldInfo->GetEntries ()) {
492+ if (const auto service_opt{old_entry.GetAddrPort ()}) {
493+ if (!DeleteUniqueProperty (dmn, *service_opt)) {
496494 return " internal error" ; // This shouldn't be possible
497495 }
498496 } else {
499497 return " invalid address" ;
500498 }
501499 }
502- for (const NetInfoEntry& new_entry : newInfo->GetEntries ()) {
503- if (const auto & service_opt{new_entry.GetAddrPort ()}) {
504- const CService& service{service_opt.value ()};
505- if (!AddUniqueProperty (dmn, service)) {
506- return strprintf (" duplicate (%s)" , service.ToStringAddrPort ());
500+ for (const auto & new_entry : newInfo->GetEntries ()) {
501+ if (const auto service_opt{new_entry.GetAddrPort ()}) {
502+ if (!AddUniqueProperty (dmn, *service_opt)) {
503+ return strprintf (" duplicate (%s)" , service_opt->ToStringAddrPort ());
507504 }
508505 } else {
509506 return " invalid address" ;
@@ -578,13 +575,12 @@ void CDeterministicMNList::RemoveMN(const uint256& proTxHash)
578575 throw (std::runtime_error (strprintf (" %s: Can't delete a masternode %s with a collateralOutpoint=%s" , __func__,
579576 proTxHash.ToString (), dmn->collateralOutpoint .ToStringShort ())));
580577 }
581- for (const NetInfoEntry& entry : dmn->pdmnState ->netInfo ->GetEntries ()) {
582- if (const auto & service_opt{entry.GetAddrPort ()}; service_opt.has_value ()) {
583- const CService& service{service_opt.value ()};
584- if (!DeleteUniqueProperty (*dmn, service)) {
578+ for (const auto & entry : dmn->pdmnState ->netInfo ->GetEntries ()) {
579+ if (const auto service_opt{entry.GetAddrPort ()}) {
580+ if (!DeleteUniqueProperty (*dmn, *service_opt)) {
585581 mnUniquePropertyMap = mnUniquePropertyMapSaved;
586582 throw std::runtime_error (strprintf (" %s: Can't delete a masternode %s with an address=%s" , __func__,
587- proTxHash.ToString (), service. ToStringAddrPort ()));
583+ proTxHash.ToString (), service_opt-> ToStringAddrPort ()));
588584 }
589585 } else {
590586 mnUniquePropertyMap = mnUniquePropertyMapSaved;
@@ -1119,11 +1115,10 @@ bool CheckProRegTx(CDeterministicMNManager& dmnman, const CTransaction& tx, gsl:
11191115 auto mnList = dmnman.GetListForBlock (pindexPrev);
11201116
11211117 // only allow reusing of addresses when it's for the same collateral (which replaces the old MN)
1122- for (const NetInfoEntry& entry : opt_ptx->netInfo ->GetEntries ()) {
1123- if (const auto & service_opt{entry.GetAddrPort ()}; service_opt.has_value ()) {
1124- const CService& service{service_opt.value ()};
1125- if (mnList.HasUniqueProperty (service) &&
1126- mnList.GetUniquePropertyMN (service)->collateralOutpoint != collateralOutpoint) {
1118+ for (const auto & entry : opt_ptx->netInfo ->GetEntries ()) {
1119+ if (const auto service_opt{entry.GetAddrPort ()}) {
1120+ if (mnList.HasUniqueProperty (*service_opt) &&
1121+ mnList.GetUniquePropertyMN (*service_opt)->collateralOutpoint != collateralOutpoint) {
11271122 return state.Invalid (TxValidationResult::TX_BAD_SPECIAL, " bad-protx-dup-netinfo-entry" );
11281123 }
11291124 } else {
@@ -1202,10 +1197,10 @@ bool CheckProUpServTx(CDeterministicMNManager& dmnman, const CTransaction& tx, g
12021197 }
12031198
12041199 // don't allow updating to addresses already used by other MNs
1205- for (const NetInfoEntry & entry : opt_ptx->netInfo ->GetEntries ()) {
1206- if (const auto & service_opt{entry.GetAddrPort ()}; service_opt. has_value () ) {
1207- const CService& service{service_opt. value ()};
1208- if (mnList. HasUniqueProperty (service) && mnList.GetUniquePropertyMN (service )->proTxHash != opt_ptx->proTxHash ) {
1200+ for (const auto & entry : opt_ptx->netInfo ->GetEntries ()) {
1201+ if (const auto service_opt{entry.GetAddrPort ()}) {
1202+ if (mnList. HasUniqueProperty (*service_opt) &&
1203+ mnList.GetUniquePropertyMN (*service_opt )->proTxHash != opt_ptx->proTxHash ) {
12091204 return state.Invalid (TxValidationResult::TX_BAD_SPECIAL, " bad-protx-dup-netinfo-entry" );
12101205 }
12111206 } else {
0 commit comments