diff --git a/crates/common/src/config/mux.rs b/crates/common/src/config/mux.rs index afd3075c..8a9dab73 100644 --- a/crates/common/src/config/mux.rs +++ b/crates/common/src/config/mux.rs @@ -461,6 +461,7 @@ async fn fetch_ssv_pubkeys_from_public_api( let mut pubkeys: Vec = vec![]; let mut page = 1; + let mut expected_total: Option = None; loop { let route = format!( @@ -470,21 +471,22 @@ async fn fetch_ssv_pubkeys_from_public_api( let response = request_ssv_pubkeys_from_public_api(url, http_timeout).await?; let fetched = response.validators.len(); + if expected_total.is_none() && fetched > 0 { + expected_total = Some(response.pagination.total); + } pubkeys.extend( response.validators.into_iter().map(|v| v.pubkey).collect::>(), ); page += 1; if fetched < MAX_PER_PAGE { - ensure!( - pubkeys.len() == response.pagination.total, - "expected {} keys, got {}", - response.pagination.total, - pubkeys.len() - ); break; } } + if let Some(expected) = expected_total { + ensure!(pubkeys.len() == expected, "expected {expected} keys, got {}", pubkeys.len()); + } + Ok(pubkeys) }