From 8a7941d1e474b916b477bdf0a241495e79b1ed07 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Wed, 30 Jul 2025 10:44:00 +0100 Subject: [PATCH 01/12] fix RPC responses to always contain stacks-canonical-height headere --- stackslib/src/chainstate/stacks/db/mod.rs | 10 +++++----- stackslib/src/net/api/get_tenures_fork_info.rs | 6 +++--- stackslib/src/net/api/getblock.rs | 8 +++++--- stackslib/src/net/api/getblock_v3.rs | 8 +++++--- stackslib/src/net/api/getblockbyheight.rs | 7 ++++--- stackslib/src/net/api/getclaritymarfvalue.rs | 4 ++-- stackslib/src/net/api/getclaritymetadata.rs | 2 +- stackslib/src/net/api/getconstantval.rs | 2 +- stackslib/src/net/api/getcontractabi.rs | 2 +- stackslib/src/net/api/getcontractsrc.rs | 2 +- stackslib/src/net/api/getdatavar.rs | 2 +- stackslib/src/net/api/getheaders.rs | 8 ++++---- stackslib/src/net/api/gethealth.rs | 7 +++++-- stackslib/src/net/api/getinfo.rs | 4 ++-- stackslib/src/net/api/getmapentry.rs | 2 +- .../src/net/api/getmicroblocks_confirmed.rs | 8 +++++--- stackslib/src/net/api/getmicroblocks_indexed.rs | 8 +++++--- .../src/net/api/getmicroblocks_unconfirmed.rs | 8 +++++--- stackslib/src/net/api/getneighbors.rs | 2 +- stackslib/src/net/api/getpoxinfo.rs | 4 ++-- stackslib/src/net/api/getsigner.rs | 4 ++-- stackslib/src/net/api/getsortition.rs | 7 +++++-- stackslib/src/net/api/getstackerdbchunk.rs | 2 +- stackslib/src/net/api/getstackerdbmetadata.rs | 2 +- stackslib/src/net/api/getstackers.rs | 4 ++-- stackslib/src/net/api/getstxtransfercost.rs | 2 +- stackslib/src/net/api/gettenure.rs | 8 +++++--- stackslib/src/net/api/gettenureinfo.rs | 7 +++++-- stackslib/src/net/api/gettenuretip.rs | 7 +++++-- stackslib/src/net/api/gettransaction.rs | 9 ++++++--- .../src/net/api/gettransaction_unconfirmed.rs | 2 +- stackslib/src/net/api/liststackerdbreplicas.rs | 2 +- stackslib/src/net/api/postblock.rs | 2 +- stackslib/src/net/api/postblock_proposal.rs | 2 +- stackslib/src/net/api/postblock_v3.rs | 2 +- stackslib/src/net/api/postfeerate.rs | 2 +- stackslib/src/net/api/postmempoolquery.rs | 8 +++++--- stackslib/src/net/api/postmicroblock.rs | 4 ++-- stackslib/src/net/api/poststackerdbchunk.rs | 2 +- stackslib/src/net/api/posttransaction.rs | 2 +- stackslib/src/net/download/epoch2x.rs | 6 +++--- .../nakamoto/tenure_downloader_unconfirmed.rs | 4 ++-- stackslib/src/net/httpcore.rs | 16 ++++++++-------- stackslib/src/net/mod.rs | 4 ++-- stackslib/src/net/rpc.rs | 3 ++- 45 files changed, 124 insertions(+), 93 deletions(-) diff --git a/stackslib/src/chainstate/stacks/db/mod.rs b/stackslib/src/chainstate/stacks/db/mod.rs index 51b38fd4b8..453eafb049 100644 --- a/stackslib/src/chainstate/stacks/db/mod.rs +++ b/stackslib/src/chainstate/stacks/db/mod.rs @@ -661,9 +661,9 @@ const CHAINSTATE_INITIAL_SCHEMA: &[&str] = &[ tx_merkle_root TEXT NOT NULL, state_index_root TEXT NOT NULL, microblock_pubkey_hash TEXT NOT NULL, - + block_hash TEXT NOT NULL, -- NOTE: this is *not* unique, since two burn chain forks can commit to the same Stacks block. - index_block_hash TEXT UNIQUE NOT NULL, -- NOTE: this is the hash of the block hash and consensus hash of the burn block that selected it, + index_block_hash TEXT UNIQUE NOT NULL, -- NOTE: this is the hash of the block hash and consensus hash of the burn block that selected it, -- and is guaranteed to be globally unique (across all Stacks forks and across all PoX forks). -- index_block_hash is the block hash fed into the MARF index. @@ -698,7 +698,7 @@ const CHAINSTATE_INITIAL_SCHEMA: &[&str] = &[ burnchain_commit_burn INT NOT NULL, burnchain_sortition_burn INT NOT NULL, miner INT NOT NULL, - + -- internal use stacks_block_height INTEGER NOT NULL, index_block_hash TEXT NOT NULL, -- NOTE: can't enforce UNIQUE here, because there will be multiple entries per block @@ -799,7 +799,7 @@ const CHAINSTATE_SCHEMA_3: &[&str] = &[ -- * one that records the coinbase, anchored tx fee, and confirmed streamed tx fees, and -- * one that records only the produced streamed tx fees. -- The latter is determined once this block's stream gets subsequently confirmed. - -- You query this table by passing both the parent and the child block hashes, since both the + -- You query this table by passing both the parent and the child block hashes, since both the -- parent and child blocks determine the full reward for the parent block. CREATE TABLE matured_rewards( address TEXT NOT NULL, -- address of the miner who produced the block @@ -810,7 +810,7 @@ const CHAINSTATE_SCHEMA_3: &[&str] = &[ tx_fees_streamed_confirmed TEXT NOT NULL, tx_fees_streamed_produced TEXT NOT NULL, - -- fork identifier + -- fork identifier child_index_block_hash TEXT NOT NULL, parent_index_block_hash TEXT NOT NULL, diff --git a/stackslib/src/net/api/get_tenures_fork_info.rs b/stackslib/src/net/api/get_tenures_fork_info.rs index 60ea5eddee..92c8b3d659 100644 --- a/stackslib/src/net/api/get_tenures_fork_info.rs +++ b/stackslib/src/net/api/get_tenures_fork_info.rs @@ -30,7 +30,7 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpResponse}; +use crate::net::httpcore::{HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; pub static RPC_TENURE_FORKING_INFO_PATH: &str = "/v3/tenures/fork_info"; @@ -297,14 +297,14 @@ impl RPCRequestHandler for GetTenuresForkInfo { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::JSON, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::try_from_json(&tenures)?, diff --git a/stackslib/src/net/api/getblock.rs b/stackslib/src/net/api/getblock.rs index 28e09ce90c..f5f9bf00fe 100644 --- a/stackslib/src/net/api/getblock.rs +++ b/stackslib/src/net/api/getblock.rs @@ -29,7 +29,9 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -160,14 +162,14 @@ impl RPCRequestHandler for RPCBlocksRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getblock_v3.rs b/stackslib/src/net/api/getblock_v3.rs index cece392f59..952a8449b7 100644 --- a/stackslib/src/net/api/getblock_v3.rs +++ b/stackslib/src/net/api/getblock_v3.rs @@ -29,7 +29,9 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -202,14 +204,14 @@ impl RPCRequestHandler for RPCNakamotoBlockRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getblockbyheight.rs b/stackslib/src/net/api/getblockbyheight.rs index e5f99eb754..885316c970 100644 --- a/stackslib/src/net/api/getblockbyheight.rs +++ b/stackslib/src/net/api/getblockbyheight.rs @@ -26,7 +26,8 @@ use crate::net::http::{ HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, + StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -172,14 +173,14 @@ impl RPCRequestHandler for RPCNakamotoBlockByHeightRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getclaritymarfvalue.rs b/stackslib/src/net/api/getclaritymarfvalue.rs index 61a27b906d..1ca972b964 100644 --- a/stackslib/src/net/api/getclaritymarfvalue.rs +++ b/stackslib/src/net/api/getclaritymarfvalue.rs @@ -24,8 +24,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, - StacksHttpResponse, + HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, + StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getclaritymetadata.rs b/stackslib/src/net/api/getclaritymetadata.rs index ee6ec96567..92cb3f5489 100644 --- a/stackslib/src/net/api/getclaritymetadata.rs +++ b/stackslib/src/net/api/getclaritymetadata.rs @@ -31,7 +31,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, + request, HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getconstantval.rs b/stackslib/src/net/api/getconstantval.rs index d7a50c4a28..6d14272d60 100644 --- a/stackslib/src/net/api/getconstantval.rs +++ b/stackslib/src/net/api/getconstantval.rs @@ -28,7 +28,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, + request, HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getcontractabi.rs b/stackslib/src/net/api/getcontractabi.rs index 0ff478d191..0ea432901f 100644 --- a/stackslib/src/net/api/getcontractabi.rs +++ b/stackslib/src/net/api/getcontractabi.rs @@ -28,7 +28,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, + request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getcontractsrc.rs b/stackslib/src/net/api/getcontractsrc.rs index df8a86a51c..e521001c13 100644 --- a/stackslib/src/net/api/getcontractsrc.rs +++ b/stackslib/src/net/api/getcontractsrc.rs @@ -29,7 +29,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, + request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getdatavar.rs b/stackslib/src/net/api/getdatavar.rs index e4783ed5e4..539550dab8 100644 --- a/stackslib/src/net/api/getdatavar.rs +++ b/stackslib/src/net/api/getdatavar.rs @@ -30,7 +30,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, + request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getheaders.rs b/stackslib/src/net/api/getheaders.rs index bfeb7cf206..edb4502cb5 100644 --- a/stackslib/src/net/api/getheaders.rs +++ b/stackslib/src/net/api/getheaders.rs @@ -27,8 +27,8 @@ use crate::net::http::{ HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - request, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, - StacksHttpResponse, + request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, + StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest, MAX_HEADERS}; use crate::util_lib::db::{DBConn, Error as DBError}; @@ -196,14 +196,14 @@ impl RPCRequestHandler for RPCHeadersRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::JSON, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/gethealth.rs b/stackslib/src/net/api/gethealth.rs index d17fe14229..0a0a65ad2f 100644 --- a/stackslib/src/net/api/gethealth.rs +++ b/stackslib/src/net/api/gethealth.rs @@ -26,7 +26,9 @@ use crate::net::http::{ parse_json, Error, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{ infer_initial_burnchain_block_download, Error as NetError, NeighborAddress, StacksNodeState, }; @@ -232,7 +234,8 @@ impl RPCRequestHandler for RPCGetHealthRequestHandler { let difference_from_max_peer = max_stacks_height_of_neighbors.saturating_sub(node_stacks_tip_height); - let preamble = HttpResponsePreamble::ok_json(&preamble); + let mut preamble = HttpResponsePreamble::ok_json(&preamble); + preamble.set_canonical_stacks_tip_height(Some(network.burnchain_tip.canonical_stacks_tip_height)); let data = RPCGetHealthResponse { difference_from_max_peer, max_stacks_height_of_neighbors, diff --git a/stackslib/src/net/api/getinfo.rs b/stackslib/src/net/api/getinfo.rs index acdcf1f10f..a9e848f13d 100644 --- a/stackslib/src/net/api/getinfo.rs +++ b/stackslib/src/net/api/getinfo.rs @@ -30,7 +30,7 @@ use crate::net::http::{ HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::p2p::PeerNetwork; use crate::net::{Error as NetError, StacksNodeState}; @@ -254,7 +254,7 @@ impl HttpResponse for RPCPeerInfoRequestHandler { impl StacksHttpRequest { /// Make a new getinfo request to this endpoint - pub fn new_getinfo(host: PeerHost, stacks_height: Option) -> StacksHttpRequest { + pub fn new_getinfo(host: PeerHost, stacks_height: Option) -> StacksHttpRequest { let mut req = StacksHttpRequest::new_for_peer( host, "GET".into(), diff --git a/stackslib/src/net/api/getmapentry.rs b/stackslib/src/net/api/getmapentry.rs index 611d13eba6..26a3f2535f 100644 --- a/stackslib/src/net/api/getmapentry.rs +++ b/stackslib/src/net/api/getmapentry.rs @@ -31,7 +31,7 @@ use crate::net::http::{ HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, + request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getmicroblocks_confirmed.rs b/stackslib/src/net/api/getmicroblocks_confirmed.rs index 1cf310bf74..c60b86b101 100644 --- a/stackslib/src/net/api/getmicroblocks_confirmed.rs +++ b/stackslib/src/net/api/getmicroblocks_confirmed.rs @@ -27,7 +27,9 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -140,14 +142,14 @@ impl RPCRequestHandler for RPCMicroblocksConfirmedRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getmicroblocks_indexed.rs b/stackslib/src/net/api/getmicroblocks_indexed.rs index a0b2aa5fe1..bf0ebe6dba 100644 --- a/stackslib/src/net/api/getmicroblocks_indexed.rs +++ b/stackslib/src/net/api/getmicroblocks_indexed.rs @@ -26,7 +26,9 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::DBConn; @@ -172,14 +174,14 @@ impl RPCRequestHandler for RPCMicroblocksIndexedRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getmicroblocks_unconfirmed.rs b/stackslib/src/net/api/getmicroblocks_unconfirmed.rs index 7e6c4708c5..11245568c7 100644 --- a/stackslib/src/net/api/getmicroblocks_unconfirmed.rs +++ b/stackslib/src/net/api/getmicroblocks_unconfirmed.rs @@ -29,7 +29,9 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState, MAX_MICROBLOCKS_UNCONFIRMED}; use crate::util_lib::db::DBConn; @@ -180,14 +182,14 @@ impl RPCRequestHandler for RPCMicroblocksUnconfirmedRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getneighbors.rs b/stackslib/src/net/api/getneighbors.rs index f80c945153..92c68d08c5 100644 --- a/stackslib/src/net/api/getneighbors.rs +++ b/stackslib/src/net/api/getneighbors.rs @@ -26,7 +26,7 @@ use crate::net::http::{ HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::p2p::PeerNetwork; use crate::net::{Error as NetError, NeighborKey, StacksNodeState, MAX_NEIGHBORS_DATA_LEN}; diff --git a/stackslib/src/net/api/getpoxinfo.rs b/stackslib/src/net/api/getpoxinfo.rs index 0864700e9b..7eb9c3c458 100644 --- a/stackslib/src/net/api/getpoxinfo.rs +++ b/stackslib/src/net/api/getpoxinfo.rs @@ -34,8 +34,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, - StacksHttpResponse, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, + StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; use crate::util_lib::boot::boot_code_id; diff --git a/stackslib/src/net/api/getsigner.rs b/stackslib/src/net/api/getsigner.rs index eeaf872f81..06f004767f 100644 --- a/stackslib/src/net/api/getsigner.rs +++ b/stackslib/src/net/api/getsigner.rs @@ -22,8 +22,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, - StacksHttpResponse, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, + StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getsortition.rs b/stackslib/src/net/api/getsortition.rs index b6e317af7f..7b10d467ec 100644 --- a/stackslib/src/net/api/getsortition.rs +++ b/stackslib/src/net/api/getsortition.rs @@ -33,7 +33,9 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::Error as DBError; @@ -405,7 +407,8 @@ impl RPCRequestHandler for GetSortitionHandler { } } - let preamble = HttpResponsePreamble::ok_json(&preamble); + let mut preamble = HttpResponsePreamble::ok_json(&preamble); + preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); let result = HttpResponseContents::try_from_json(&info_list)?; Ok((preamble, result)) } diff --git a/stackslib/src/net/api/getstackerdbchunk.rs b/stackslib/src/net/api/getstackerdbchunk.rs index 0b6eafd08c..3d82827d69 100644 --- a/stackslib/src/net/api/getstackerdbchunk.rs +++ b/stackslib/src/net/api/getstackerdbchunk.rs @@ -26,7 +26,7 @@ use crate::net::http::{ HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState}; diff --git a/stackslib/src/net/api/getstackerdbmetadata.rs b/stackslib/src/net/api/getstackerdbmetadata.rs index d2933d47bd..3a4b092ccb 100644 --- a/stackslib/src/net/api/getstackerdbmetadata.rs +++ b/stackslib/src/net/api/getstackerdbmetadata.rs @@ -26,7 +26,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState}; diff --git a/stackslib/src/net/api/getstackers.rs b/stackslib/src/net/api/getstackers.rs index c998ab2e34..bae63feecf 100644 --- a/stackslib/src/net/api/getstackers.rs +++ b/stackslib/src/net/api/getstackers.rs @@ -27,8 +27,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, - StacksHttpResponse, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, + StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; diff --git a/stackslib/src/net/api/getstxtransfercost.rs b/stackslib/src/net/api/getstxtransfercost.rs index cefd85e1e5..4ba796aeca 100644 --- a/stackslib/src/net/api/getstxtransfercost.rs +++ b/stackslib/src/net/api/getstxtransfercost.rs @@ -25,7 +25,7 @@ use crate::net::http::{ HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, HttpServerError, StacksNodeState}; diff --git a/stackslib/src/net/api/gettenure.rs b/stackslib/src/net/api/gettenure.rs index a45b136160..a3d5d08614 100644 --- a/stackslib/src/net/api/gettenure.rs +++ b/stackslib/src/net/api/gettenure.rs @@ -28,7 +28,9 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::DBConn; @@ -251,14 +253,14 @@ impl RPCRequestHandler for RPCNakamotoTenureRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/gettenureinfo.rs b/stackslib/src/net/api/gettenureinfo.rs index 307c7cc6cb..b6383654a2 100644 --- a/stackslib/src/net/api/gettenureinfo.rs +++ b/stackslib/src/net/api/gettenureinfo.rs @@ -23,7 +23,9 @@ use crate::net::http::{ parse_json, Error, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -120,7 +122,8 @@ impl RPCRequestHandler for RPCNakamotoTenureInfoRequestHandler { } }); - let preamble = HttpResponsePreamble::ok_json(&preamble); + let mut preamble = HttpResponsePreamble::ok_json(&preamble); + preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); let body = HttpResponseContents::try_from_json(&info)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/gettenuretip.rs b/stackslib/src/net/api/gettenuretip.rs index d150ea240a..74c40365a8 100644 --- a/stackslib/src/net/api/gettenuretip.rs +++ b/stackslib/src/net/api/gettenuretip.rs @@ -24,7 +24,9 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -131,7 +133,8 @@ impl RPCRequestHandler for RPCNakamotoTenureTipRequestHandler { } }; - let preamble = HttpResponsePreamble::ok_json(&preamble); + let mut preamble = HttpResponsePreamble::ok_json(&preamble); + preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); let body = HttpResponseContents::try_from_json(&tenure_tip)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/gettransaction.rs b/stackslib/src/net/api/gettransaction.rs index 17d62b7f8b..aff7eedd81 100644 --- a/stackslib/src/net/api/gettransaction.rs +++ b/stackslib/src/net/api/gettransaction.rs @@ -25,7 +25,9 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -108,7 +110,7 @@ impl RPCRequestHandler for RPCGetTransactionRequestHandler { .take() .ok_or(NetError::SendError("`txid` no set".into()))?; - node.with_node_state(|_network, _sortdb, chainstate, _mempool, _rpc_args| { + node.with_node_state(|network, _sortdb, chainstate, _mempool, _rpc_args| { let index_block_hash_and_tx_hex_opt = match NakamotoChainState::get_tx_info_from_txid( chainstate.index_conn().conn(), txid, @@ -126,7 +128,8 @@ impl RPCRequestHandler for RPCGetTransactionRequestHandler { match index_block_hash_and_tx_hex_opt { Some((index_block_hash, tx_hex, result)) => { - let preamble = HttpResponsePreamble::ok_json(&preamble); + let mut preamble = HttpResponsePreamble::ok_json(&preamble); + preamble.set_canonical_stacks_tip_height(Some(network.stacks_tip.height)); let body = HttpResponseContents::try_from_json(&TransactionResponse { index_block_hash, tx: tx_hex, diff --git a/stackslib/src/net/api/gettransaction_unconfirmed.rs b/stackslib/src/net/api/gettransaction_unconfirmed.rs index bcc77b0c02..435840362a 100644 --- a/stackslib/src/net/api/gettransaction_unconfirmed.rs +++ b/stackslib/src/net/api/gettransaction_unconfirmed.rs @@ -27,7 +27,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState}; diff --git a/stackslib/src/net/api/liststackerdbreplicas.rs b/stackslib/src/net/api/liststackerdbreplicas.rs index 4af8f6ad0a..037cfd4d78 100644 --- a/stackslib/src/net/api/liststackerdbreplicas.rs +++ b/stackslib/src/net/api/liststackerdbreplicas.rs @@ -27,7 +27,7 @@ use crate::net::http::{ HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, NeighborAddress, StacksNodeState}; diff --git a/stackslib/src/net/api/postblock.rs b/stackslib/src/net/api/postblock.rs index b04e8e71e8..b15f64fe74 100644 --- a/stackslib/src/net/api/postblock.rs +++ b/stackslib/src/net/api/postblock.rs @@ -27,7 +27,7 @@ use crate::net::http::{ HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::relay::{BlockAcceptResponse, Relayer}; use crate::net::{BlocksData, BlocksDatum, Error as NetError, StacksMessageType, StacksNodeState}; diff --git a/stackslib/src/net/api/postblock_proposal.rs b/stackslib/src/net/api/postblock_proposal.rs index d7b5abfcf3..0c6ff1f13c 100644 --- a/stackslib/src/net/api/postblock_proposal.rs +++ b/stackslib/src/net/api/postblock_proposal.rs @@ -53,7 +53,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{HttpPreambleExtensions, RPCRequestHandler}; +use crate::net::httpcore::{HttpPreambleExtensions as _, RPCRequestHandler}; use crate::net::{Error as NetError, StacksNodeState}; #[cfg(any(test, feature = "testing"))] diff --git a/stackslib/src/net/api/postblock_v3.rs b/stackslib/src/net/api/postblock_v3.rs index 1290cc8e8b..867a2060f1 100644 --- a/stackslib/src/net/api/postblock_v3.rs +++ b/stackslib/src/net/api/postblock_v3.rs @@ -27,7 +27,7 @@ use crate::net::http::{ HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::relay::Relayer; use crate::net::{Error as NetError, NakamotoBlocksData, StacksMessageType, StacksNodeState}; diff --git a/stackslib/src/net/api/postfeerate.rs b/stackslib/src/net/api/postfeerate.rs index b33677289c..dde4863e69 100644 --- a/stackslib/src/net/api/postfeerate.rs +++ b/stackslib/src/net/api/postfeerate.rs @@ -32,7 +32,7 @@ use crate::net::http::{ HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState}; diff --git a/stackslib/src/net/api/postmempoolquery.rs b/stackslib/src/net/api/postmempoolquery.rs index 04a43ab067..736a5f7e1a 100644 --- a/stackslib/src/net/api/postmempoolquery.rs +++ b/stackslib/src/net/api/postmempoolquery.rs @@ -28,7 +28,9 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, +}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::DBConn; @@ -302,14 +304,14 @@ impl RPCRequestHandler for RPCMempoolQueryRequestHandler { } }; - let resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - + resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/postmicroblock.rs b/stackslib/src/net/api/postmicroblock.rs index 9b2b1848f4..cadf3d47b8 100644 --- a/stackslib/src/net/api/postmicroblock.rs +++ b/stackslib/src/net/api/postmicroblock.rs @@ -29,8 +29,8 @@ use crate::net::http::{ HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, - StacksHttpResponse, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, + StacksHttpRequest, StacksHttpResponse, }; use crate::net::relay::Relayer; use crate::net::{ diff --git a/stackslib/src/net/api/poststackerdbchunk.rs b/stackslib/src/net/api/poststackerdbchunk.rs index b08d19aa59..52cee28974 100644 --- a/stackslib/src/net/api/poststackerdbchunk.rs +++ b/stackslib/src/net/api/poststackerdbchunk.rs @@ -29,7 +29,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StackerDBPushChunkData, StacksMessageType, StacksNodeState}; diff --git a/stackslib/src/net/api/posttransaction.rs b/stackslib/src/net/api/posttransaction.rs index 82360c058c..b0e3a1c467 100644 --- a/stackslib/src/net/api/posttransaction.rs +++ b/stackslib/src/net/api/posttransaction.rs @@ -27,7 +27,7 @@ use crate::net::http::{ HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::relay::Relayer; use crate::net::{Attachment, Error as NetError, StacksMessageType, StacksNodeState}; diff --git a/stackslib/src/net/download/epoch2x.rs b/stackslib/src/net/download/epoch2x.rs index fb9f55af6d..87f20758e8 100644 --- a/stackslib/src/net/download/epoch2x.rs +++ b/stackslib/src/net/download/epoch2x.rs @@ -1666,7 +1666,7 @@ impl PeerNetwork { mblock_height += scan_batch_size; } - test_debug!("{:?}: at {},{}: {} blocks to get, {} microblock streams to get (up to {},{})", + test_debug!("{:?}: at {},{}: {} blocks to get, {} microblock streams to get (up to {},{})", &network.local_peer, next_block_sortition_height, next_microblock_sortition_height, next_blocks_to_try.len(), next_microblocks_to_try.len(), max_height, max_mblock_height); test_debug!("{:?}: Begin block requests", &network.local_peer); @@ -1795,7 +1795,7 @@ impl PeerNetwork { } } - debug!("{:?}: will request microblock stream confirmed by sortition {}: {}/{} ({}) from {:?}", + debug!("{:?}: will request microblock stream confirmed by sortition {}: {}/{} ({}) from {:?}", &network.local_peer, mblock_height, &requests.front().as_ref().unwrap().consensus_hash, &requests.front().as_ref().unwrap().anchor_block_hash, &index_block_hash, requests.iter().map(|r| &r.data_url).collect::>() ); @@ -1867,7 +1867,7 @@ impl PeerNetwork { downloader.next_block_sortition_height = next_block_sortition_height; downloader.next_microblock_sortition_height = next_microblock_sortition_height; - debug!("{:?}: Will try for {} blocks and {} microblocks (next sortition heights are {},{}, chain tip is {})", + debug!("{:?}: Will try for {} blocks and {} microblocks (next sortition heights are {},{}, chain tip is {})", &network.local_peer, downloader.blocks_to_try.len(), downloader.microblocks_to_try.len(), next_block_sortition_height, next_microblock_sortition_height, network.chain_view.burn_block_height - sortdb.first_block_height); Ok(()) })?; diff --git a/stackslib/src/net/download/nakamoto/tenure_downloader_unconfirmed.rs b/stackslib/src/net/download/nakamoto/tenure_downloader_unconfirmed.rs index b56ffcae61..29fd9bc28f 100644 --- a/stackslib/src/net/download/nakamoto/tenure_downloader_unconfirmed.rs +++ b/stackslib/src/net/download/nakamoto/tenure_downloader_unconfirmed.rs @@ -142,7 +142,7 @@ impl NakamotoUnconfirmedTenureDownloader { /// * tenure_tip.parent_tenure_start_block_id /// This is the tenure start block for the highest complete tenure. It should be equal to /// the winning Stacks block hash of the snapshot for the ongoing tenure. - /// + /// /// We may already have the tenure-start block for the unconfirmed tenure. If so, then don't go /// fetch it again; just get the new unconfirmed blocks. pub fn try_accept_tenure_info( @@ -406,7 +406,7 @@ impl NakamotoUnconfirmedTenureDownloader { // block has to match the expected hash if tenure_start_block_id != &unconfirmed_tenure_start_block.header.block_id() { - warn!("Invalid tenure-start block"; + warn!("Invalid tenure-start block"; "tenure_id_start_block" => %tenure_start_block_id, "unconfirmed_tenure_start_block.header.consensus_hash" => %unconfirmed_tenure_start_block.header.consensus_hash, "unconfirmed_tenure_start_block ID" => %unconfirmed_tenure_start_block.header.block_id(), diff --git a/stackslib/src/net/httpcore.rs b/stackslib/src/net/httpcore.rs index 28e1673e1a..afe5c1cca8 100644 --- a/stackslib/src/net/httpcore.rs +++ b/stackslib/src/net/httpcore.rs @@ -106,18 +106,18 @@ impl From<&str> for TipRequest { /// Extension to HttpRequestPreamble to give it awareness of Stacks-specific fields pub trait HttpPreambleExtensions { /// Set the node's canonical Stacks chain tip - fn set_canonical_stacks_tip_height(&mut self, height: Option); + fn set_canonical_stacks_tip_height(&mut self, height: Option); /// Set the node's request ID fn set_request_id(&mut self, req_id: u32); /// Get the canonical stacks chain tip - fn get_canonical_stacks_tip_height(&self) -> Option; + fn get_canonical_stacks_tip_height(&self) -> Option; /// Get the request ID fn get_request_id(&self) -> Option; } impl HttpPreambleExtensions for HttpRequestPreamble { /// Set the canonical Stacks chain tip height - fn set_canonical_stacks_tip_height(&mut self, height_opt: Option) { + fn set_canonical_stacks_tip_height(&mut self, height_opt: Option) { if let Some(height) = height_opt { self.add_header( "X-Canonical-Stacks-Tip-Height".into(), @@ -134,9 +134,9 @@ impl HttpPreambleExtensions for HttpRequestPreamble { } /// Get the canonical Stacks chain tip - fn get_canonical_stacks_tip_height(&self) -> Option { + fn get_canonical_stacks_tip_height(&self) -> Option { self.get_header("X-Canonical-Stacks-Tip-Height".to_string()) - .and_then(|hdr| hdr.parse::().ok()) + .and_then(|hdr| hdr.parse::().ok()) } /// Get the request ID @@ -148,7 +148,7 @@ impl HttpPreambleExtensions for HttpRequestPreamble { impl HttpPreambleExtensions for HttpResponsePreamble { /// Set the canonical Stacks chain tip height - fn set_canonical_stacks_tip_height(&mut self, height_opt: Option) { + fn set_canonical_stacks_tip_height(&mut self, height_opt: Option) { if let Some(height) = height_opt { self.add_header( "X-Canonical-Stacks-Tip-Height".into(), @@ -165,9 +165,9 @@ impl HttpPreambleExtensions for HttpResponsePreamble { } /// Get the canonical Stacks chain tip - fn get_canonical_stacks_tip_height(&self) -> Option { + fn get_canonical_stacks_tip_height(&self) -> Option { self.get_header("X-Canonical-Stacks-Tip-Height".to_string()) - .and_then(|hdr| hdr.parse::().ok()) + .and_then(|hdr| hdr.parse::().ok()) } /// Get the request ID diff --git a/stackslib/src/net/mod.rs b/stackslib/src/net/mod.rs index dff1812593..6756a8297a 100644 --- a/stackslib/src/net/mod.rs +++ b/stackslib/src/net/mod.rs @@ -692,9 +692,9 @@ impl<'a> StacksNodeState<'a> { res } - pub fn canonical_stacks_tip_height(&mut self) -> u32 { + pub fn canonical_stacks_tip_height(&mut self) -> u64 { self.with_node_state(|network, _, _, _, _| { - network.burnchain_tip.canonical_stacks_tip_height as u32 + network.burnchain_tip.canonical_stacks_tip_height }) } diff --git a/stackslib/src/net/rpc.rs b/stackslib/src/net/rpc.rs index 56c718c7d7..858193eb15 100644 --- a/stackslib/src/net/rpc.rs +++ b/stackslib/src/net/rpc.rs @@ -28,7 +28,8 @@ use crate::monitoring; use crate::net::connection::{ConnectionHttp, ConnectionOptions, ReplyHandleHttp}; use crate::net::http::HttpResponseContents; use crate::net::httpcore::{ - StacksHttp, StacksHttpMessage, StacksHttpRequest, StacksHttpResponse, HTTP_REQUEST_ID_RESERVED, + HttpPreambleExtensions as _, StacksHttp, StacksHttpMessage, StacksHttpRequest, + StacksHttpResponse, HTTP_REQUEST_ID_RESERVED, }; use crate::net::{Error as net_error, StacksMessageType, StacksNodeState}; use crate::util_lib::strings::UrlString; From ec0399e0a507bca5e5b75e3e7209f5fc2cc5f59f Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Thu, 31 Jul 2025 16:58:23 +0200 Subject: [PATCH 02/12] remove unused import --- stackslib/src/net/rpc.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/stackslib/src/net/rpc.rs b/stackslib/src/net/rpc.rs index 858193eb15..56c718c7d7 100644 --- a/stackslib/src/net/rpc.rs +++ b/stackslib/src/net/rpc.rs @@ -28,8 +28,7 @@ use crate::monitoring; use crate::net::connection::{ConnectionHttp, ConnectionOptions, ReplyHandleHttp}; use crate::net::http::HttpResponseContents; use crate::net::httpcore::{ - HttpPreambleExtensions as _, StacksHttp, StacksHttpMessage, StacksHttpRequest, - StacksHttpResponse, HTTP_REQUEST_ID_RESERVED, + StacksHttp, StacksHttpMessage, StacksHttpRequest, StacksHttpResponse, HTTP_REQUEST_ID_RESERVED, }; use crate::net::{Error as net_error, StacksMessageType, StacksNodeState}; use crate::util_lib::strings::UrlString; From 15ce376f2ed3b46f45f83883fc974964350d5da9 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Thu, 31 Jul 2025 17:06:28 +0200 Subject: [PATCH 03/12] use burnchain_tip.canoninical_stacks_tip_height instead of stacks_tip --- stackslib/src/net/api/gettransaction.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stackslib/src/net/api/gettransaction.rs b/stackslib/src/net/api/gettransaction.rs index aff7eedd81..29de3fe3e4 100644 --- a/stackslib/src/net/api/gettransaction.rs +++ b/stackslib/src/net/api/gettransaction.rs @@ -129,7 +129,9 @@ impl RPCRequestHandler for RPCGetTransactionRequestHandler { match index_block_hash_and_tx_hex_opt { Some((index_block_hash, tx_hex, result)) => { let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(network.stacks_tip.height)); + preamble.set_canonical_stacks_tip_height(Some( + network.burnchain_tip.canonical_stacks_tip_height, + )); let body = HttpResponseContents::try_from_json(&TransactionResponse { index_block_hash, tx: tx_hex, From 27e057df7097599f1c505c43430e0fd534e5ec78 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Fri, 1 Aug 2025 12:52:24 +0100 Subject: [PATCH 04/12] centralize set_canonical_stacks_tip_height --- stackslib/src/net/api/callreadonly.rs | 7 +- stackslib/src/net/api/fastcallreadonly.rs | 7 +- .../src/net/api/get_tenures_fork_info.rs | 5 +- stackslib/src/net/api/getaccount.rs | 6 +- stackslib/src/net/api/getattachment.rs | 7 +- stackslib/src/net/api/getattachmentsinv.rs | 7 +- stackslib/src/net/api/getblock.rs | 7 +- stackslib/src/net/api/getblock_v3.rs | 7 +- stackslib/src/net/api/getblockbyheight.rs | 6 +- stackslib/src/net/api/getclaritymarfvalue.rs | 6 +- stackslib/src/net/api/getclaritymetadata.rs | 7 +- stackslib/src/net/api/getconstantval.rs | 7 +- stackslib/src/net/api/getcontractabi.rs | 7 +- stackslib/src/net/api/getcontractsrc.rs | 7 +- stackslib/src/net/api/getdatavar.rs | 7 +- stackslib/src/net/api/getheaders.rs | 7 +- stackslib/src/net/api/gethealth.rs | 7 +- stackslib/src/net/api/getinfo.rs | 3 +- .../src/net/api/getistraitimplemented.rs | 7 +- stackslib/src/net/api/getmapentry.rs | 7 +- .../src/net/api/getmicroblocks_confirmed.rs | 7 +- .../src/net/api/getmicroblocks_indexed.rs | 7 +- .../src/net/api/getmicroblocks_unconfirmed.rs | 7 +- stackslib/src/net/api/getneighbors.rs | 7 +- stackslib/src/net/api/getpoxinfo.rs | 6 +- stackslib/src/net/api/getsigner.rs | 6 +- stackslib/src/net/api/getsortition.rs | 7 +- stackslib/src/net/api/getstackerdbchunk.rs | 8 +-- stackslib/src/net/api/getstackerdbmetadata.rs | 7 +- stackslib/src/net/api/getstackers.rs | 6 +- stackslib/src/net/api/getstxtransfercost.rs | 7 +- stackslib/src/net/api/gettenure.rs | 7 +- stackslib/src/net/api/gettenureinfo.rs | 7 +- stackslib/src/net/api/gettenuretip.rs | 7 +- stackslib/src/net/api/gettransaction.rs | 11 +-- .../src/net/api/gettransaction_unconfirmed.rs | 7 +- .../src/net/api/liststackerdbreplicas.rs | 7 +- stackslib/src/net/api/postblock.rs | 7 +- stackslib/src/net/api/postblock_proposal.rs | 8 +-- stackslib/src/net/api/postblock_v3.rs | 7 +- stackslib/src/net/api/postfeerate.rs | 7 +- stackslib/src/net/api/postmempoolquery.rs | 7 +- stackslib/src/net/api/postmicroblock.rs | 6 +- stackslib/src/net/api/poststackerdbchunk.rs | 7 +- stackslib/src/net/api/posttransaction.rs | 7 +- stackslib/src/net/api/tests/callreadonly.rs | 2 +- .../src/net/api/tests/fastcallreadonly.rs | 2 +- stackslib/src/net/api/tests/getaccount.rs | 2 +- stackslib/src/net/api/tests/getattachment.rs | 2 +- .../src/net/api/tests/getattachmentsinv.rs | 2 +- .../src/net/api/tests/getclaritymarfvalue.rs | 2 +- .../src/net/api/tests/getclaritymetadata.rs | 2 +- stackslib/src/net/api/tests/getconstantval.rs | 2 +- stackslib/src/net/api/tests/getcontractabi.rs | 2 +- stackslib/src/net/api/tests/getcontractsrc.rs | 2 +- stackslib/src/net/api/tests/getdatavar.rs | 2 +- stackslib/src/net/api/tests/getheaders.rs | 2 +- stackslib/src/net/api/tests/getinfo.rs | 2 +- .../net/api/tests/getistraitimplemented.rs | 2 +- stackslib/src/net/api/tests/getmapentry.rs | 2 +- stackslib/src/net/api/tests/getneighbors.rs | 2 +- stackslib/src/net/api/tests/getpoxinfo.rs | 2 +- .../src/net/api/tests/getstackerdbchunk.rs | 2 +- .../src/net/api/tests/getstackerdbmetadata.rs | 2 +- .../src/net/api/tests/getstxtransfercost.rs | 2 +- .../net/api/tests/liststackerdbreplicas.rs | 2 +- stackslib/src/net/api/tests/postmicroblock.rs | 2 +- stackslib/src/net/http/response.rs | 5 ++ stackslib/src/net/mod.rs | 3 +- stackslib/src/net/rpc.rs | 9 ++- stackslib/src/net/tests/httpcore.rs | 67 ++++++++++++++++++- 71 files changed, 204 insertions(+), 232 deletions(-) diff --git a/stackslib/src/net/api/callreadonly.rs b/stackslib/src/net/api/callreadonly.rs index 355c83ef26..2b393b6f8d 100644 --- a/stackslib/src/net/api/callreadonly.rs +++ b/stackslib/src/net/api/callreadonly.rs @@ -33,8 +33,8 @@ use crate::net::http::{ HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -307,8 +307,7 @@ impl RPCRequestHandler for RPCCallReadOnlyRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/fastcallreadonly.rs b/stackslib/src/net/api/fastcallreadonly.rs index 33ead2e3c1..f26a3acdfd 100644 --- a/stackslib/src/net/api/fastcallreadonly.rs +++ b/stackslib/src/net/api/fastcallreadonly.rs @@ -37,8 +37,8 @@ use crate::net::http::{ HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -312,8 +312,7 @@ impl RPCRequestHandler for RPCFastCallReadOnlyRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/get_tenures_fork_info.rs b/stackslib/src/net/api/get_tenures_fork_info.rs index 92c8b3d659..19d6b8b006 100644 --- a/stackslib/src/net/api/get_tenures_fork_info.rs +++ b/stackslib/src/net/api/get_tenures_fork_info.rs @@ -30,7 +30,7 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpResponse}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; pub static RPC_TENURE_FORKING_INFO_PATH: &str = "/v3/tenures/fork_info"; @@ -297,14 +297,13 @@ impl RPCRequestHandler for GetTenuresForkInfo { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::JSON, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::try_from_json(&tenures)?, diff --git a/stackslib/src/net/api/getaccount.rs b/stackslib/src/net/api/getaccount.rs index d495f5d7ee..389ec2fc70 100644 --- a/stackslib/src/net/api/getaccount.rs +++ b/stackslib/src/net/api/getaccount.rs @@ -27,8 +27,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttpRequest, - StacksHttpResponse, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -219,8 +218,7 @@ impl RPCRequestHandler for RPCGetAccountRequestHandler { .map_err(NetError::from); }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&account)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getattachment.rs b/stackslib/src/net/api/getattachment.rs index 42f0a9e50a..1481a7ca4b 100644 --- a/stackslib/src/net/api/getattachment.rs +++ b/stackslib/src/net/api/getattachment.rs @@ -23,9 +23,7 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -126,8 +124,7 @@ impl RPCRequestHandler for RPCGetAttachmentRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&attachment)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getattachmentsinv.rs b/stackslib/src/net/api/getattachmentsinv.rs index 3a4c0b8483..32803fc093 100644 --- a/stackslib/src/net/api/getattachmentsinv.rs +++ b/stackslib/src/net/api/getattachmentsinv.rs @@ -29,9 +29,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -214,8 +212,7 @@ impl RPCRequestHandler for RPCGetAttachmentsInvRequestHandler { pages, }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&content)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getblock.rs b/stackslib/src/net/api/getblock.rs index f5f9bf00fe..0b89f0ca4d 100644 --- a/stackslib/src/net/api/getblock.rs +++ b/stackslib/src/net/api/getblock.rs @@ -29,9 +29,7 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -162,14 +160,13 @@ impl RPCRequestHandler for RPCBlocksRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getblock_v3.rs b/stackslib/src/net/api/getblock_v3.rs index 952a8449b7..dffb2c38f3 100644 --- a/stackslib/src/net/api/getblock_v3.rs +++ b/stackslib/src/net/api/getblock_v3.rs @@ -29,9 +29,7 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -204,14 +202,13 @@ impl RPCRequestHandler for RPCNakamotoBlockRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getblockbyheight.rs b/stackslib/src/net/api/getblockbyheight.rs index 885316c970..916f995fd0 100644 --- a/stackslib/src/net/api/getblockbyheight.rs +++ b/stackslib/src/net/api/getblockbyheight.rs @@ -26,8 +26,7 @@ use crate::net::http::{ HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -173,14 +172,13 @@ impl RPCRequestHandler for RPCNakamotoBlockByHeightRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getclaritymarfvalue.rs b/stackslib/src/net/api/getclaritymarfvalue.rs index 1ca972b964..697e58f414 100644 --- a/stackslib/src/net/api/getclaritymarfvalue.rs +++ b/stackslib/src/net/api/getclaritymarfvalue.rs @@ -24,8 +24,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -168,8 +167,7 @@ impl RPCRequestHandler for RPCGetClarityMarfRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getclaritymetadata.rs b/stackslib/src/net/api/getclaritymetadata.rs index 92cb3f5489..5e48b7fd2c 100644 --- a/stackslib/src/net/api/getclaritymetadata.rs +++ b/stackslib/src/net/api/getclaritymetadata.rs @@ -31,8 +31,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -221,8 +221,7 @@ impl RPCRequestHandler for RPCGetClarityMetadataRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getconstantval.rs b/stackslib/src/net/api/getconstantval.rs index 6d14272d60..ce4c3f1801 100644 --- a/stackslib/src/net/api/getconstantval.rs +++ b/stackslib/src/net/api/getconstantval.rs @@ -28,8 +28,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, HttpRequestContentsExtensions, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -168,8 +168,7 @@ impl RPCRequestHandler for RPCGetConstantValRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getcontractabi.rs b/stackslib/src/net/api/getcontractabi.rs index 0ea432901f..aeef75b635 100644 --- a/stackslib/src/net/api/getcontractabi.rs +++ b/stackslib/src/net/api/getcontractabi.rs @@ -28,8 +28,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -148,8 +148,7 @@ impl RPCRequestHandler for RPCGetContractAbiRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getcontractsrc.rs b/stackslib/src/net/api/getcontractsrc.rs index e521001c13..20a0ccf458 100644 --- a/stackslib/src/net/api/getcontractsrc.rs +++ b/stackslib/src/net/api/getcontractsrc.rs @@ -29,8 +29,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -175,8 +175,7 @@ impl RPCRequestHandler for RPCGetContractSrcRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getdatavar.rs b/stackslib/src/net/api/getdatavar.rs index 539550dab8..6bae25bb91 100644 --- a/stackslib/src/net/api/getdatavar.rs +++ b/stackslib/src/net/api/getdatavar.rs @@ -30,8 +30,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -186,8 +186,7 @@ impl RPCRequestHandler for RPCGetDataVarRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getheaders.rs b/stackslib/src/net/api/getheaders.rs index edb4502cb5..606e6b01fa 100644 --- a/stackslib/src/net/api/getheaders.rs +++ b/stackslib/src/net/api/getheaders.rs @@ -27,8 +27,8 @@ use crate::net::http::{ HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest, MAX_HEADERS}; use crate::util_lib::db::{DBConn, Error as DBError}; @@ -196,14 +196,13 @@ impl RPCRequestHandler for RPCHeadersRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::JSON, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/gethealth.rs b/stackslib/src/net/api/gethealth.rs index 0a0a65ad2f..d17fe14229 100644 --- a/stackslib/src/net/api/gethealth.rs +++ b/stackslib/src/net/api/gethealth.rs @@ -26,9 +26,7 @@ use crate::net::http::{ parse_json, Error, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{ infer_initial_burnchain_block_download, Error as NetError, NeighborAddress, StacksNodeState, }; @@ -234,8 +232,7 @@ impl RPCRequestHandler for RPCGetHealthRequestHandler { let difference_from_max_peer = max_stacks_height_of_neighbors.saturating_sub(node_stacks_tip_height); - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(network.burnchain_tip.canonical_stacks_tip_height)); + let preamble = HttpResponsePreamble::ok_json(&preamble); let data = RPCGetHealthResponse { difference_from_max_peer, max_stacks_height_of_neighbors, diff --git a/stackslib/src/net/api/getinfo.rs b/stackslib/src/net/api/getinfo.rs index a9e848f13d..23600366ab 100644 --- a/stackslib/src/net/api/getinfo.rs +++ b/stackslib/src/net/api/getinfo.rs @@ -233,8 +233,7 @@ impl RPCRequestHandler for RPCPeerInfoRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&rpc_peer_info)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getistraitimplemented.rs b/stackslib/src/net/api/getistraitimplemented.rs index eae8a79467..ea8e9ae57a 100644 --- a/stackslib/src/net/api/getistraitimplemented.rs +++ b/stackslib/src/net/api/getistraitimplemented.rs @@ -28,8 +28,8 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -198,8 +198,7 @@ impl RPCRequestHandler for RPCGetIsTraitImplementedRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getmapentry.rs b/stackslib/src/net/api/getmapentry.rs index 26a3f2535f..8152b7676f 100644 --- a/stackslib/src/net/api/getmapentry.rs +++ b/stackslib/src/net/api/getmapentry.rs @@ -31,8 +31,8 @@ use crate::net::http::{ HttpResponsePreamble, }; use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + request, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, + StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -212,8 +212,7 @@ impl RPCRequestHandler for RPCGetMapEntryRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getmicroblocks_confirmed.rs b/stackslib/src/net/api/getmicroblocks_confirmed.rs index c60b86b101..f95f7a694e 100644 --- a/stackslib/src/net/api/getmicroblocks_confirmed.rs +++ b/stackslib/src/net/api/getmicroblocks_confirmed.rs @@ -27,9 +27,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -142,14 +140,13 @@ impl RPCRequestHandler for RPCMicroblocksConfirmedRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getmicroblocks_indexed.rs b/stackslib/src/net/api/getmicroblocks_indexed.rs index bf0ebe6dba..615dcfb0b0 100644 --- a/stackslib/src/net/api/getmicroblocks_indexed.rs +++ b/stackslib/src/net/api/getmicroblocks_indexed.rs @@ -26,9 +26,7 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::DBConn; @@ -174,14 +172,13 @@ impl RPCRequestHandler for RPCMicroblocksIndexedRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getmicroblocks_unconfirmed.rs b/stackslib/src/net/api/getmicroblocks_unconfirmed.rs index 11245568c7..01769a53bf 100644 --- a/stackslib/src/net/api/getmicroblocks_unconfirmed.rs +++ b/stackslib/src/net/api/getmicroblocks_unconfirmed.rs @@ -29,9 +29,7 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState, MAX_MICROBLOCKS_UNCONFIRMED}; use crate::util_lib::db::DBConn; @@ -182,14 +180,13 @@ impl RPCRequestHandler for RPCMicroblocksUnconfirmedRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/getneighbors.rs b/stackslib/src/net/api/getneighbors.rs index 92c68d08c5..f5224f8595 100644 --- a/stackslib/src/net/api/getneighbors.rs +++ b/stackslib/src/net/api/getneighbors.rs @@ -25,9 +25,7 @@ use crate::net::http::{ parse_json, Error, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::p2p::PeerNetwork; use crate::net::{Error as NetError, NeighborKey, StacksNodeState, MAX_NEIGHBORS_DATA_LEN}; @@ -260,8 +258,7 @@ impl RPCRequestHandler for RPCNeighborsRequestHandler { RPCNeighborsInfo::from_p2p(network) })?; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&neighbor_data)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getpoxinfo.rs b/stackslib/src/net/api/getpoxinfo.rs index 7eb9c3c458..f8fd2bdd9b 100644 --- a/stackslib/src/net/api/getpoxinfo.rs +++ b/stackslib/src/net/api/getpoxinfo.rs @@ -34,8 +34,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; use crate::util_lib::boot::boot_code_id; @@ -506,8 +505,7 @@ impl RPCRequestHandler for RPCPoxInfoRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&pox_info)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getsigner.rs b/stackslib/src/net/api/getsigner.rs index 06f004767f..adff8e8932 100644 --- a/stackslib/src/net/api/getsigner.rs +++ b/stackslib/src/net/api/getsigner.rs @@ -22,8 +22,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -149,8 +148,7 @@ impl RPCRequestHandler for GetSignerRequestHandler { let response = GetSignerResponse { blocks_signed }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&response)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getsortition.rs b/stackslib/src/net/api/getsortition.rs index 7b10d467ec..b6e317af7f 100644 --- a/stackslib/src/net/api/getsortition.rs +++ b/stackslib/src/net/api/getsortition.rs @@ -33,9 +33,7 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::Error as DBError; @@ -407,8 +405,7 @@ impl RPCRequestHandler for GetSortitionHandler { } } - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let result = HttpResponseContents::try_from_json(&info_list)?; Ok((preamble, result)) } diff --git a/stackslib/src/net/api/getstackerdbchunk.rs b/stackslib/src/net/api/getstackerdbchunk.rs index 3d82827d69..ee4655dfa6 100644 --- a/stackslib/src/net/api/getstackerdbchunk.rs +++ b/stackslib/src/net/api/getstackerdbchunk.rs @@ -25,9 +25,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -179,15 +177,13 @@ impl RPCRequestHandler for RPCGetStackerDBChunkRequestHandler { } }; - let mut preamble = HttpResponsePreamble::from_http_request_preamble( + let preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); let body = HttpResponseContents::from_ram(chunk_resp); Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getstackerdbmetadata.rs b/stackslib/src/net/api/getstackerdbmetadata.rs index 3a4b092ccb..694a94cd48 100644 --- a/stackslib/src/net/api/getstackerdbmetadata.rs +++ b/stackslib/src/net/api/getstackerdbmetadata.rs @@ -25,9 +25,7 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -120,8 +118,7 @@ impl RPCRequestHandler for RPCGetStackerDBMetadataRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&metadata_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getstackers.rs b/stackslib/src/net/api/getstackers.rs index bae63feecf..44ff47ea81 100644 --- a/stackslib/src/net/api/getstackers.rs +++ b/stackslib/src/net/api/getstackers.rs @@ -27,8 +27,7 @@ use crate::net::http::{ HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::{Error as NetError, StacksNodeState, TipRequest}; @@ -201,8 +200,7 @@ impl RPCRequestHandler for GetStackersRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&response)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/getstxtransfercost.rs b/stackslib/src/net/api/getstxtransfercost.rs index 4ba796aeca..4f738a27fe 100644 --- a/stackslib/src/net/api/getstxtransfercost.rs +++ b/stackslib/src/net/api/getstxtransfercost.rs @@ -24,9 +24,7 @@ use crate::net::http::{ parse_json, Error, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, HttpServerError, StacksNodeState}; pub(crate) const SINGLESIG_TX_TRANSFER_LEN: u64 = 180; @@ -141,8 +139,7 @@ impl RPCRequestHandler for RPCGetStxTransferCostRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&fee)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/gettenure.rs b/stackslib/src/net/api/gettenure.rs index a3d5d08614..dbe9d0836c 100644 --- a/stackslib/src/net/api/gettenure.rs +++ b/stackslib/src/net/api/gettenure.rs @@ -28,9 +28,7 @@ use crate::net::http::{ HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::DBConn; @@ -253,14 +251,13 @@ impl RPCRequestHandler for RPCNakamotoTenureRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/gettenureinfo.rs b/stackslib/src/net/api/gettenureinfo.rs index b6383654a2..307c7cc6cb 100644 --- a/stackslib/src/net/api/gettenureinfo.rs +++ b/stackslib/src/net/api/gettenureinfo.rs @@ -23,9 +23,7 @@ use crate::net::http::{ parse_json, Error, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -122,8 +120,7 @@ impl RPCRequestHandler for RPCNakamotoTenureInfoRequestHandler { } }); - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&info)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/gettenuretip.rs b/stackslib/src/net/api/gettenuretip.rs index 74c40365a8..d150ea240a 100644 --- a/stackslib/src/net/api/gettenuretip.rs +++ b/stackslib/src/net/api/gettenuretip.rs @@ -24,9 +24,7 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Clone)] @@ -133,8 +131,7 @@ impl RPCRequestHandler for RPCNakamotoTenureTipRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&tenure_tip)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/gettransaction.rs b/stackslib/src/net/api/gettransaction.rs index 29de3fe3e4..17d62b7f8b 100644 --- a/stackslib/src/net/api/gettransaction.rs +++ b/stackslib/src/net/api/gettransaction.rs @@ -25,9 +25,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -110,7 +108,7 @@ impl RPCRequestHandler for RPCGetTransactionRequestHandler { .take() .ok_or(NetError::SendError("`txid` no set".into()))?; - node.with_node_state(|network, _sortdb, chainstate, _mempool, _rpc_args| { + node.with_node_state(|_network, _sortdb, chainstate, _mempool, _rpc_args| { let index_block_hash_and_tx_hex_opt = match NakamotoChainState::get_tx_info_from_txid( chainstate.index_conn().conn(), txid, @@ -128,10 +126,7 @@ impl RPCRequestHandler for RPCGetTransactionRequestHandler { match index_block_hash_and_tx_hex_opt { Some((index_block_hash, tx_hex, result)) => { - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some( - network.burnchain_tip.canonical_stacks_tip_height, - )); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&TransactionResponse { index_block_hash, tx: tx_hex, diff --git a/stackslib/src/net/api/gettransaction_unconfirmed.rs b/stackslib/src/net/api/gettransaction_unconfirmed.rs index 435840362a..44d608c404 100644 --- a/stackslib/src/net/api/gettransaction_unconfirmed.rs +++ b/stackslib/src/net/api/gettransaction_unconfirmed.rs @@ -26,9 +26,7 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -165,8 +163,7 @@ impl RPCRequestHandler for RPCGetTransactionUnconfirmedRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&txinfo)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/liststackerdbreplicas.rs b/stackslib/src/net/api/liststackerdbreplicas.rs index 037cfd4d78..f5fb3d75a3 100644 --- a/stackslib/src/net/api/liststackerdbreplicas.rs +++ b/stackslib/src/net/api/liststackerdbreplicas.rs @@ -26,9 +26,7 @@ use crate::net::http::{ parse_json, Error, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, NeighborAddress, StacksNodeState}; /// Largest number of replicas returned @@ -155,8 +153,7 @@ impl RPCRequestHandler for RPCListStackerDBReplicasRequestHandler { naddrs.insert(0, local_peer.to_public_neighbor_addr()); } - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&naddrs)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/postblock.rs b/stackslib/src/net/api/postblock.rs index b15f64fe74..f056e07605 100644 --- a/stackslib/src/net/api/postblock.rs +++ b/stackslib/src/net/api/postblock.rs @@ -26,9 +26,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::relay::{BlockAcceptResponse, Relayer}; use crate::net::{BlocksData, BlocksDatum, Error as NetError, StacksMessageType, StacksNodeState}; @@ -223,8 +221,7 @@ impl RPCRequestHandler for RPCPostBlockRequestHandler { })); } - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/postblock_proposal.rs b/stackslib/src/net/api/postblock_proposal.rs index 0c6ff1f13c..060f23f230 100644 --- a/stackslib/src/net/api/postblock_proposal.rs +++ b/stackslib/src/net/api/postblock_proposal.rs @@ -53,7 +53,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{HttpPreambleExtensions as _, RPCRequestHandler}; +use crate::net::httpcore::RPCRequestHandler; use crate::net::{Error as NetError, StacksNodeState}; #[cfg(any(test, feature = "testing"))] @@ -1030,8 +1030,7 @@ impl RPCRequestHandler for RPCBlockProposalRequestHandler { match res { Ok(_) => { - let mut preamble = HttpResponsePreamble::accepted_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::accepted_json(&preamble); let body = HttpResponseContents::try_from_json(&serde_json::json!({ "result": "Accepted", "message": "Block proposal is processing, result will be returned via the event observer" @@ -1039,8 +1038,7 @@ impl RPCRequestHandler for RPCBlockProposalRequestHandler { Ok((preamble, body)) } Err((code, err)) => { - let mut preamble = HttpResponsePreamble::error_json(code, http_reason(code)); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::error_json(code, http_reason(code)); let body = HttpResponseContents::try_from_json(&serde_json::json!({ "result": "Error", "message": format!("Could not process block proposal request: {err}") diff --git a/stackslib/src/net/api/postblock_v3.rs b/stackslib/src/net/api/postblock_v3.rs index 867a2060f1..893e930d4d 100644 --- a/stackslib/src/net/api/postblock_v3.rs +++ b/stackslib/src/net/api/postblock_v3.rs @@ -26,9 +26,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::relay::Relayer; use crate::net::{Error as NetError, NakamotoBlocksData, StacksMessageType, StacksNodeState}; @@ -203,8 +201,7 @@ impl RPCRequestHandler for RPCPostBlockRequestHandler { })); } - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/postfeerate.rs b/stackslib/src/net/api/postfeerate.rs index dde4863e69..4a0ba32d7e 100644 --- a/stackslib/src/net/api/postfeerate.rs +++ b/stackslib/src/net/api/postfeerate.rs @@ -31,9 +31,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; #[derive(Serialize, Deserialize)] @@ -255,8 +253,7 @@ impl RPCRequestHandler for RPCPostFeeRateRequestHandler { } }; - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/postmempoolquery.rs b/stackslib/src/net/api/postmempoolquery.rs index 736a5f7e1a..83146f144e 100644 --- a/stackslib/src/net/api/postmempoolquery.rs +++ b/stackslib/src/net/api/postmempoolquery.rs @@ -28,9 +28,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StacksNodeState}; use crate::util_lib::db::DBConn; @@ -304,14 +302,13 @@ impl RPCRequestHandler for RPCMempoolQueryRequestHandler { } }; - let mut resp_preamble = HttpResponsePreamble::from_http_request_preamble( + let resp_preamble = HttpResponsePreamble::from_http_request_preamble( &preamble, 200, "OK", None, HttpContentType::Bytes, ); - resp_preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); Ok(( resp_preamble, HttpResponseContents::from_stream(Box::new(stream)), diff --git a/stackslib/src/net/api/postmicroblock.rs b/stackslib/src/net/api/postmicroblock.rs index cadf3d47b8..f5b8f0a778 100644 --- a/stackslib/src/net/api/postmicroblock.rs +++ b/stackslib/src/net/api/postmicroblock.rs @@ -29,8 +29,7 @@ use crate::net::http::{ HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, - StacksHttpRequest, StacksHttpResponse, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, }; use crate::net::relay::Relayer; use crate::net::{ @@ -212,8 +211,7 @@ impl RPCRequestHandler for RPCPostMicroblockRequestHandler { })); } - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&data_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/poststackerdbchunk.rs b/stackslib/src/net/api/poststackerdbchunk.rs index 52cee28974..dc3981268c 100644 --- a/stackslib/src/net/api/poststackerdbchunk.rs +++ b/stackslib/src/net/api/poststackerdbchunk.rs @@ -28,9 +28,7 @@ use crate::net::http::{ parse_json, Error, HttpNotFound, HttpRequest, HttpRequestContents, HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - request, HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{request, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::{Error as NetError, StackerDBPushChunkData, StacksMessageType, StacksNodeState}; #[derive(Clone)] @@ -290,8 +288,7 @@ impl RPCRequestHandler for RPCPostStackerDBChunkRequestHandler { node.set_relay_message(StacksMessageType::StackerDBPushChunk(push_chunk_data)); } - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&ack_resp)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/posttransaction.rs b/stackslib/src/net/api/posttransaction.rs index b0e3a1c467..158df79009 100644 --- a/stackslib/src/net/api/posttransaction.rs +++ b/stackslib/src/net/api/posttransaction.rs @@ -26,9 +26,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponse, HttpResponseContents, HttpResponsePayload, HttpResponsePreamble, HttpServerError, }; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttpRequest, StacksHttpResponse, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttpRequest, StacksHttpResponse}; use crate::net::relay::Relayer; use crate::net::{Attachment, Error as NetError, StacksMessageType, StacksNodeState}; @@ -269,8 +267,7 @@ impl RPCRequestHandler for RPCPostTransactionRequestHandler { node.set_relay_message(StacksMessageType::Transaction(tx)); } - let mut preamble = HttpResponsePreamble::ok_json(&preamble); - preamble.set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + let preamble = HttpResponsePreamble::ok_json(&preamble); let body = HttpResponseContents::try_from_json(&txid)?; Ok((preamble, body)) } diff --git a/stackslib/src/net/api/tests/callreadonly.rs b/stackslib/src/net/api/tests/callreadonly.rs index 3ca5f473f2..779b7bed2f 100644 --- a/stackslib/src/net/api/tests/callreadonly.rs +++ b/stackslib/src/net/api/tests/callreadonly.rs @@ -26,7 +26,7 @@ use crate::core::BLOCK_LIMIT_MAINNET_21; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/fastcallreadonly.rs b/stackslib/src/net/api/tests/fastcallreadonly.rs index c65ab75955..da33e47046 100644 --- a/stackslib/src/net/api/tests/fastcallreadonly.rs +++ b/stackslib/src/net/api/tests/fastcallreadonly.rs @@ -25,7 +25,7 @@ use super::{test_rpc, test_rpc_with_config}; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getaccount.rs b/stackslib/src/net/api/tests/getaccount.rs index 697bca958f..a1dfead7d7 100644 --- a/stackslib/src/net/api/tests/getaccount.rs +++ b/stackslib/src/net/api/tests/getaccount.rs @@ -24,7 +24,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getattachment.rs b/stackslib/src/net/api/tests/getattachment.rs index e9f71ab198..46d666651d 100644 --- a/stackslib/src/net/api/tests/getattachment.rs +++ b/stackslib/src/net/api/tests/getattachment.rs @@ -22,7 +22,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{Attachment, ProtocolFamily}; diff --git a/stackslib/src/net/api/tests/getattachmentsinv.rs b/stackslib/src/net/api/tests/getattachmentsinv.rs index 18c1549756..6e31f6fb89 100644 --- a/stackslib/src/net/api/tests/getattachmentsinv.rs +++ b/stackslib/src/net/api/tests/getattachmentsinv.rs @@ -23,7 +23,7 @@ use super::TestRPC; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{Attachment, ProtocolFamily}; diff --git a/stackslib/src/net/api/tests/getclaritymarfvalue.rs b/stackslib/src/net/api/tests/getclaritymarfvalue.rs index f334225a9c..a0eef6b5bf 100644 --- a/stackslib/src/net/api/tests/getclaritymarfvalue.rs +++ b/stackslib/src/net/api/tests/getclaritymarfvalue.rs @@ -23,7 +23,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getclaritymetadata.rs b/stackslib/src/net/api/tests/getclaritymetadata.rs index 1dff391416..d59bb777a6 100644 --- a/stackslib/src/net/api/tests/getclaritymetadata.rs +++ b/stackslib/src/net/api/tests/getclaritymetadata.rs @@ -26,7 +26,7 @@ use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::http::Error as HttpError; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getconstantval.rs b/stackslib/src/net/api/tests/getconstantval.rs index ca1b818f73..4ed07b4952 100644 --- a/stackslib/src/net/api/tests/getconstantval.rs +++ b/stackslib/src/net/api/tests/getconstantval.rs @@ -25,7 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getcontractabi.rs b/stackslib/src/net/api/tests/getcontractabi.rs index fed361ed21..5b77aac32a 100644 --- a/stackslib/src/net/api/tests/getcontractabi.rs +++ b/stackslib/src/net/api/tests/getcontractabi.rs @@ -25,7 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getcontractsrc.rs b/stackslib/src/net/api/tests/getcontractsrc.rs index 0556f280b7..22f6738593 100644 --- a/stackslib/src/net/api/tests/getcontractsrc.rs +++ b/stackslib/src/net/api/tests/getcontractsrc.rs @@ -25,7 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getdatavar.rs b/stackslib/src/net/api/tests/getdatavar.rs index 7e6fab4ca1..174577abbd 100644 --- a/stackslib/src/net/api/tests/getdatavar.rs +++ b/stackslib/src/net/api/tests/getdatavar.rs @@ -25,7 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getheaders.rs b/stackslib/src/net/api/tests/getheaders.rs index 2161725b73..ab7e48fab8 100644 --- a/stackslib/src/net/api/tests/getheaders.rs +++ b/stackslib/src/net/api/tests/getheaders.rs @@ -29,7 +29,7 @@ use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::http::HttpChunkGenerator; use crate::net::httpcore::{ - HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getinfo.rs b/stackslib/src/net/api/tests/getinfo.rs index f057d4c89c..b50fdf15e0 100644 --- a/stackslib/src/net/api/tests/getinfo.rs +++ b/stackslib/src/net/api/tests/getinfo.rs @@ -21,7 +21,7 @@ use serde_json; use super::test_rpc; use crate::net::api::getinfo::RPCPeerInfoData; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{HttpPreambleExtensions, StacksHttp, StacksHttpRequest}; +use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] diff --git a/stackslib/src/net/api/tests/getistraitimplemented.rs b/stackslib/src/net/api/tests/getistraitimplemented.rs index 6a21bed1d7..4e4ef16488 100644 --- a/stackslib/src/net/api/tests/getistraitimplemented.rs +++ b/stackslib/src/net/api/tests/getistraitimplemented.rs @@ -25,7 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getmapentry.rs b/stackslib/src/net/api/tests/getmapentry.rs index 6bf6a6aaa3..d2645a5b76 100644 --- a/stackslib/src/net/api/tests/getmapentry.rs +++ b/stackslib/src/net/api/tests/getmapentry.rs @@ -26,7 +26,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getneighbors.rs b/stackslib/src/net/api/tests/getneighbors.rs index eb32a92e24..60ecf45d88 100644 --- a/stackslib/src/net/api/tests/getneighbors.rs +++ b/stackslib/src/net/api/tests/getneighbors.rs @@ -19,7 +19,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{HttpPreambleExtensions, StacksHttp, StacksHttpRequest}; +use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] diff --git a/stackslib/src/net/api/tests/getpoxinfo.rs b/stackslib/src/net/api/tests/getpoxinfo.rs index bedb362259..6c02ce1392 100644 --- a/stackslib/src/net/api/tests/getpoxinfo.rs +++ b/stackslib/src/net/api/tests/getpoxinfo.rs @@ -22,7 +22,7 @@ use super::test_rpc; use crate::net::api::getpoxinfo; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, HttpRequestContentsExtensions, StacksHttp, StacksHttpRequest, + HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/api/tests/getstackerdbchunk.rs b/stackslib/src/net/api/tests/getstackerdbchunk.rs index 9a7fe688b8..2e07191b3c 100644 --- a/stackslib/src/net/api/tests/getstackerdbchunk.rs +++ b/stackslib/src/net/api/tests/getstackerdbchunk.rs @@ -22,7 +22,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::ProtocolFamily; diff --git a/stackslib/src/net/api/tests/getstackerdbmetadata.rs b/stackslib/src/net/api/tests/getstackerdbmetadata.rs index a7fa9f01a3..45a0329d14 100644 --- a/stackslib/src/net/api/tests/getstackerdbmetadata.rs +++ b/stackslib/src/net/api/tests/getstackerdbmetadata.rs @@ -24,7 +24,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::ProtocolFamily; diff --git a/stackslib/src/net/api/tests/getstxtransfercost.rs b/stackslib/src/net/api/tests/getstxtransfercost.rs index 0aad1f7c77..784601cb09 100644 --- a/stackslib/src/net/api/tests/getstxtransfercost.rs +++ b/stackslib/src/net/api/tests/getstxtransfercost.rs @@ -20,7 +20,7 @@ use super::test_rpc; use crate::chainstate::stacks::db::blocks::MINIMUM_TX_FEE_RATE_PER_BYTE; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{HttpPreambleExtensions, StacksHttp, StacksHttpRequest}; +use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] diff --git a/stackslib/src/net/api/tests/liststackerdbreplicas.rs b/stackslib/src/net/api/tests/liststackerdbreplicas.rs index 960163f92e..e725fd9f85 100644 --- a/stackslib/src/net/api/tests/liststackerdbreplicas.rs +++ b/stackslib/src/net/api/tests/liststackerdbreplicas.rs @@ -24,7 +24,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::ProtocolFamily; diff --git a/stackslib/src/net/api/tests/postmicroblock.rs b/stackslib/src/net/api/tests/postmicroblock.rs index 6ef163bfc2..9c9276735f 100644 --- a/stackslib/src/net/api/tests/postmicroblock.rs +++ b/stackslib/src/net/api/tests/postmicroblock.rs @@ -23,7 +23,7 @@ use crate::chainstate::stacks::test::make_codec_test_microblock; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpRequestContentsExtensions, RPCRequestHandler, StacksHttp, StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; diff --git a/stackslib/src/net/http/response.rs b/stackslib/src/net/http/response.rs index 774740e292..0abe479b6b 100644 --- a/stackslib/src/net/http/response.rs +++ b/stackslib/src/net/http/response.rs @@ -343,6 +343,11 @@ impl HttpResponsePreamble { pub fn is_chunked(&self) -> bool { self.content_length.is_none() } + + /// Is this a successful response? + pub fn is_success(&self) -> bool { + self.status_code >= 100 && self.status_code < 400 + } } /// Get an RFC 7231 date that represents the current time diff --git a/stackslib/src/net/mod.rs b/stackslib/src/net/mod.rs index 6756a8297a..15edb36b92 100644 --- a/stackslib/src/net/mod.rs +++ b/stackslib/src/net/mod.rs @@ -57,7 +57,8 @@ use crate::net::atlas::{Attachment, AttachmentInstance}; use crate::net::http::error::{HttpNotFound, HttpServerError}; use crate::net::http::{Error as HttpErr, HttpRequestContents, HttpRequestPreamble}; use crate::net::httpcore::{ - HttpRequestContentsExtensions, StacksHttp, StacksHttpRequest, StacksHttpResponse, TipRequest, + HttpRequestContentsExtensions as _, StacksHttp, StacksHttpRequest, StacksHttpResponse, + TipRequest, }; use crate::net::p2p::{PeerNetwork, PendingMessages}; use crate::util_lib::db::{DBConn, Error as db_error}; diff --git a/stackslib/src/net/rpc.rs b/stackslib/src/net/rpc.rs index 56c718c7d7..641a247c25 100644 --- a/stackslib/src/net/rpc.rs +++ b/stackslib/src/net/rpc.rs @@ -28,7 +28,8 @@ use crate::monitoring; use crate::net::connection::{ConnectionHttp, ConnectionOptions, ReplyHandleHttp}; use crate::net::http::HttpResponseContents; use crate::net::httpcore::{ - StacksHttp, StacksHttpMessage, StacksHttpRequest, StacksHttpResponse, HTTP_REQUEST_ID_RESERVED, + HttpPreambleExtensions as _, StacksHttp, StacksHttpMessage, StacksHttpRequest, + StacksHttpResponse, HTTP_REQUEST_ID_RESERVED, }; use crate::net::{Error as net_error, StacksMessageType, StacksNodeState}; use crate::util_lib::strings::UrlString; @@ -229,6 +230,12 @@ impl ConversationHttp { let mut reply = self.connection.make_relay_handle(self.conn_id)?; let relay_msg_opt = node.take_relay_message(); + // All successful RPC responses MUST include the canonical stacks tip height header. + if response_preamble.is_success() { + response_preamble + .set_canonical_stacks_tip_height(Some(node.canonical_stacks_tip_height())); + } + // make sure content-length is properly set, based on how we're about to stream data back response_preamble.content_length = response_body.content_length(); diff --git a/stackslib/src/net/tests/httpcore.rs b/stackslib/src/net/tests/httpcore.rs index f807f4934d..5097102dea 100644 --- a/stackslib/src/net/tests/httpcore.rs +++ b/stackslib/src/net/tests/httpcore.rs @@ -40,7 +40,7 @@ use crate::net::http::{ HttpRequestPreamble, HttpResponsePayload, HttpResponsePreamble, HttpVersion, }; use crate::net::httpcore::{ - send_http_request, HttpPreambleExtensions, HttpRequestContentsExtensions, StacksHttp, + send_http_request, HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, StacksHttp, StacksHttpMessage, StacksHttpPreamble, StacksHttpRequest, StacksHttpResponse, }; use crate::net::rpc::ConversationHttp; @@ -1188,6 +1188,71 @@ fn parse_http_response(response: StacksHttpResponse) -> String { response_txt } +#[test] +fn test_http_response_is_success() { + // Test cases: (status_code, expected_is_success) + let test_cases = vec![ + // Edge cases below 100 + (99, false), + // Informational responses (1xx) - should be success + (100, true), // Continue + (101, true), // Switching Protocols + (102, true), // Processing + (199, true), // Any other 1xx + // Successful responses (2xx) - should be success + (200, true), // OK + (201, true), // Created + (202, true), // Accepted + (204, true), // No Content + (206, true), // Partial Content + (299, true), // Any other 2xx + // Redirection responses (3xx) - should be success + (300, true), // Multiple Choices + (301, true), // Moved Permanently + (302, true), // Found + (304, true), // Not Modified + (307, true), // Temporary Redirect + (308, true), // Permanent Redirect + (399, true), // Any other 3xx + // Client error responses (4xx) - should not be success + (400, false), // Bad Request + (401, false), // Unauthorized + (403, false), // Forbidden + (404, false), // Not Found + (418, false), // I'm a teapot + (429, false), // Too Many Requests + (499, false), // Any other 4xx + // Server error responses (5xx) - should not be success + (500, false), // Internal Server Error + (501, false), // Not Implemented + (502, false), // Bad Gateway + (503, false), // Service Unavailable + (504, false), // Gateway Timeout + (599, false), // Any other 5xx + // Edge cases above 5xx + (600, false), + (999, false), + ]; + + for (status_code, expected_is_success) in test_cases { + let preamble = HttpResponsePreamble::new( + HttpVersion::Http11, + status_code, + http_reason(status_code).to_string(), + Some(0), // content_length + HttpContentType::JSON, + true, // keep_alive + ); + + let actual_is_success = preamble.is_success(); + assert_eq!( + actual_is_success, expected_is_success, + "Status code {} should have is_success() = {}, but got {}", + status_code, expected_is_success, actual_is_success + ); + } +} + #[test] fn test_send_request_success() { // Prepare the mock server to return a successful HTTP response From 7c9f86f373d49226785bbc35e193a40b6928e4cc Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Wed, 13 Aug 2025 12:47:22 +0100 Subject: [PATCH 05/12] add canonical stacks tip header check --- stackslib/src/net/api/tests/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stackslib/src/net/api/tests/mod.rs b/stackslib/src/net/api/tests/mod.rs index b227af0763..0f5a636165 100644 --- a/stackslib/src/net/api/tests/mod.rs +++ b/stackslib/src/net/api/tests/mod.rs @@ -45,7 +45,7 @@ use crate::chainstate::stacks::{ }; use crate::core::MemPoolDB; use crate::net::db::PeerDB; -use crate::net::httpcore::{StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttpRequest, StacksHttpResponse}; use crate::net::relay::Relayer; use crate::net::rpc::ConversationHttp; use crate::net::test::{RPCHandlerArgsType, TestEventObserver, TestPeer, TestPeerConfig}; @@ -1288,6 +1288,8 @@ impl<'a> TestRPC<'a> { assert!(resp_opt.is_some()); let resp = resp_opt.unwrap(); + assert!(resp.preamble().get_canonical_stacks_tip_height().is_some()); + responses.push(resp); } From a95d3e74db5e6fd8b926d60aeeac5a2493bc6061 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Wed, 13 Aug 2025 15:10:38 +0100 Subject: [PATCH 06/12] check for canonical tip header only for successful requests --- stackslib/src/net/api/tests/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stackslib/src/net/api/tests/mod.rs b/stackslib/src/net/api/tests/mod.rs index 0f5a636165..1995452fcf 100644 --- a/stackslib/src/net/api/tests/mod.rs +++ b/stackslib/src/net/api/tests/mod.rs @@ -1288,7 +1288,10 @@ impl<'a> TestRPC<'a> { assert!(resp_opt.is_some()); let resp = resp_opt.unwrap(); - assert!(resp.preamble().get_canonical_stacks_tip_height().is_some()); + + if resp.preamble().is_success() { + assert!(resp.preamble().get_canonical_stacks_tip_height().is_some()); + } responses.push(resp); } From 136094a1c9227ef424811911728c932dfe7dd383 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Thu, 14 Aug 2025 13:28:16 +0100 Subject: [PATCH 07/12] remove get_canonical_stacks_tip_height checks from endpoints tests --- stackslib/src/net/api/tests/callreadonly.rs | 13 +------ .../src/net/api/tests/fastcallreadonly.rs | 13 +------ stackslib/src/net/api/tests/getaccount.rs | 24 +----------- stackslib/src/net/api/tests/getattachment.rs | 9 +---- .../src/net/api/tests/getclaritymarfvalue.rs | 13 +------ .../src/net/api/tests/getclaritymetadata.rs | 11 +----- stackslib/src/net/api/tests/getconstantval.rs | 13 +------ stackslib/src/net/api/tests/getcontractabi.rs | 13 +------ stackslib/src/net/api/tests/getcontractsrc.rs | 13 +------ stackslib/src/net/api/tests/getdatavar.rs | 13 +------ stackslib/src/net/api/tests/getinfo.rs | 6 +-- .../net/api/tests/getistraitimplemented.rs | 18 +-------- stackslib/src/net/api/tests/getmapentry.rs | 23 +----------- stackslib/src/net/api/tests/getneighbors.rs | 7 +--- stackslib/src/net/api/tests/getpoxinfo.rs | 9 +---- .../src/net/api/tests/getstackerdbchunk.rs | 12 +----- .../src/net/api/tests/getstackerdbmetadata.rs | 8 +--- .../src/net/api/tests/getstxtransfercost.rs | 7 +--- .../net/api/tests/liststackerdbreplicas.rs | 8 +--- stackslib/src/net/api/tests/mod.rs | 37 ++++++++++++++++++- 20 files changed, 54 insertions(+), 216 deletions(-) diff --git a/stackslib/src/net/api/tests/callreadonly.rs b/stackslib/src/net/api/tests/callreadonly.rs index 779b7bed2f..c1f7d9fbfa 100644 --- a/stackslib/src/net/api/tests/callreadonly.rs +++ b/stackslib/src/net/api/tests/callreadonly.rs @@ -26,8 +26,7 @@ use crate::core::BLOCK_LIMIT_MAINNET_21; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -191,11 +190,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_call_readonly_response().unwrap(); assert!(resp.okay); @@ -212,11 +206,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_call_readonly_response().unwrap(); assert!(resp.okay); diff --git a/stackslib/src/net/api/tests/fastcallreadonly.rs b/stackslib/src/net/api/tests/fastcallreadonly.rs index da33e47046..dd2a50ca91 100644 --- a/stackslib/src/net/api/tests/fastcallreadonly.rs +++ b/stackslib/src/net/api/tests/fastcallreadonly.rs @@ -25,8 +25,7 @@ use super::{test_rpc, test_rpc_with_config}; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -211,11 +210,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_call_readonly_response().unwrap(); assert!(resp.okay); @@ -232,11 +226,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_call_readonly_response().unwrap(); assert!(resp.okay); diff --git a/stackslib/src/net/api/tests/getaccount.rs b/stackslib/src/net/api/tests/getaccount.rs index a1dfead7d7..492b26d5e5 100644 --- a/stackslib/src/net/api/tests/getaccount.rs +++ b/stackslib/src/net/api/tests/getaccount.rs @@ -23,9 +23,7 @@ use stacks_common::types::Address; use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttp, StacksHttpRequest}; use crate::net::{ProtocolFamily, TipRequest}; #[test] @@ -130,11 +128,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_account_entry_response().unwrap(); assert_eq!(resp.balance, "0x0000000000000000000000003b9aca00"); @@ -149,11 +142,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_account_entry_response().unwrap(); assert_eq!(resp.balance, "0x0000000000000000000000003b9aca00"); @@ -168,11 +156,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_account_entry_response().unwrap(); assert_eq!(resp.balance, "0x00000000000000000000000000000000"); @@ -187,11 +170,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_account_entry_response().unwrap(); assert_eq!(resp.balance, "0x0000000000000000000000003b9ac985"); diff --git a/stackslib/src/net/api/tests/getattachment.rs b/stackslib/src/net/api/tests/getattachment.rs index 46d666651d..6011265037 100644 --- a/stackslib/src/net/api/tests/getattachment.rs +++ b/stackslib/src/net/api/tests/getattachment.rs @@ -21,9 +21,7 @@ use stacks_common::util::hash::Hash160; use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttp, StacksHttpRequest}; use crate::net::{Attachment, ProtocolFamily}; #[test] @@ -87,11 +85,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_atlas_get_attachment().unwrap(); assert_eq!(resp.attachment, attachment); diff --git a/stackslib/src/net/api/tests/getclaritymarfvalue.rs b/stackslib/src/net/api/tests/getclaritymarfvalue.rs index a0eef6b5bf..bcfbb2aef3 100644 --- a/stackslib/src/net/api/tests/getclaritymarfvalue.rs +++ b/stackslib/src/net/api/tests/getclaritymarfvalue.rs @@ -23,8 +23,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -141,11 +140,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_clarity_marf_response().unwrap(); assert_eq!(resp.data, "0x0000000000000000000000000000000000"); assert!(resp.marf_proof.is_some()); @@ -157,11 +151,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_clarity_marf_response().unwrap(); assert_eq!(resp.data, "0x0100000000000000000000000000000001"); assert!(resp.marf_proof.is_some()); diff --git a/stackslib/src/net/api/tests/getclaritymetadata.rs b/stackslib/src/net/api/tests/getclaritymetadata.rs index d59bb777a6..98523abc37 100644 --- a/stackslib/src/net/api/tests/getclaritymetadata.rs +++ b/stackslib/src/net/api/tests/getclaritymetadata.rs @@ -26,8 +26,7 @@ use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::http::Error as HttpError; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -309,10 +308,6 @@ fn test_try_make_response() { // contract size metadata let response = responses.remove(0); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_clarity_metadata_response().unwrap(); assert_eq!(resp.data, "1432"); @@ -356,10 +351,6 @@ fn test_try_make_response() { // contract size metadata let response = responses.remove(0); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_clarity_metadata_response().unwrap(); assert_eq!(resp.data, "1432"); diff --git a/stackslib/src/net/api/tests/getconstantval.rs b/stackslib/src/net/api/tests/getconstantval.rs index 4ed07b4952..43e46ebad7 100644 --- a/stackslib/src/net/api/tests/getconstantval.rs +++ b/stackslib/src/net/api/tests/getconstantval.rs @@ -25,8 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -138,11 +137,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_constant_val_response().unwrap(); assert_eq!(resp.data, "0x000000000000000000000000000000007b"); @@ -154,11 +148,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_constant_val_response().unwrap(); assert_eq!(resp.data, "0x00000000000000000000000000000001c8"); diff --git a/stackslib/src/net/api/tests/getcontractabi.rs b/stackslib/src/net/api/tests/getcontractabi.rs index 5b77aac32a..12133b950e 100644 --- a/stackslib/src/net/api/tests/getcontractabi.rs +++ b/stackslib/src/net/api/tests/getcontractabi.rs @@ -25,8 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -123,11 +122,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_contract_abi_response().unwrap(); // unconfirmed data @@ -137,11 +131,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_contract_abi_response().unwrap(); // no such contract diff --git a/stackslib/src/net/api/tests/getcontractsrc.rs b/stackslib/src/net/api/tests/getcontractsrc.rs index 22f6738593..47ec4f702d 100644 --- a/stackslib/src/net/api/tests/getcontractsrc.rs +++ b/stackslib/src/net/api/tests/getcontractsrc.rs @@ -25,8 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -128,11 +127,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_contract_src_response().unwrap(); assert_eq!(resp.publish_height, 1); assert!(resp.marf_proof.is_some()); @@ -144,11 +138,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_contract_src_response().unwrap(); assert_eq!(resp.publish_height, 2); assert!(resp.marf_proof.is_some()); diff --git a/stackslib/src/net/api/tests/getdatavar.rs b/stackslib/src/net/api/tests/getdatavar.rs index 174577abbd..0d6c67e058 100644 --- a/stackslib/src/net/api/tests/getdatavar.rs +++ b/stackslib/src/net/api/tests/getdatavar.rs @@ -25,8 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -145,11 +144,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_data_var_response().unwrap(); assert_eq!(resp.data, "0x0000000000000000000000000000000000"); assert!(resp.marf_proof.is_some()); @@ -161,11 +155,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_data_var_response().unwrap(); assert_eq!(resp.data, "0x0100000000000000000000000000000001"); assert!(resp.marf_proof.is_some()); diff --git a/stackslib/src/net/api/tests/getinfo.rs b/stackslib/src/net/api/tests/getinfo.rs index b50fdf15e0..bd3a4c7d7d 100644 --- a/stackslib/src/net/api/tests/getinfo.rs +++ b/stackslib/src/net/api/tests/getinfo.rs @@ -21,7 +21,7 @@ use serde_json; use super::test_rpc; use crate::net::api::getinfo::RPCPeerInfoData; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttp, StacksHttpRequest}; +use crate::net::httpcore::{StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] @@ -87,10 +87,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_peer_info().unwrap(); assert_eq!(resp.tenure_height, 1); diff --git a/stackslib/src/net/api/tests/getistraitimplemented.rs b/stackslib/src/net/api/tests/getistraitimplemented.rs index 4e4ef16488..93315877e1 100644 --- a/stackslib/src/net/api/tests/getistraitimplemented.rs +++ b/stackslib/src/net/api/tests/getistraitimplemented.rs @@ -25,8 +25,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -170,11 +169,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_is_trait_implemented_response().unwrap(); assert!(resp.is_implemented); @@ -185,11 +179,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_is_trait_implemented_response().unwrap(); assert!(!resp.is_implemented); @@ -200,11 +189,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_is_trait_implemented_response().unwrap(); assert!(resp.is_implemented); diff --git a/stackslib/src/net/api/tests/getmapentry.rs b/stackslib/src/net/api/tests/getmapentry.rs index d2645a5b76..0052179df9 100644 --- a/stackslib/src/net/api/tests/getmapentry.rs +++ b/stackslib/src/net/api/tests/getmapentry.rs @@ -26,8 +26,7 @@ use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, - StacksHttpRequest, + HttpRequestContentsExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{ProtocolFamily, TipRequest}; @@ -153,11 +152,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_map_entry_response().unwrap(); assert_eq!(resp.data, "0x0a0100000000000000000000000000000002"); assert!(resp.marf_proof.is_some()); @@ -169,11 +163,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_map_entry_response().unwrap(); assert_eq!(resp.data, "0x0a0000000000000000000000000000000004"); assert!(resp.marf_proof.is_some()); @@ -185,11 +174,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_map_entry_response().unwrap(); assert_eq!(resp.data, "0x09"); assert_eq!(resp.marf_proof, Some("".to_string())); @@ -201,11 +185,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_map_entry_response().unwrap(); assert_eq!(resp.data, "0x09"); assert_eq!(resp.marf_proof, Some("".to_string())); diff --git a/stackslib/src/net/api/tests/getneighbors.rs b/stackslib/src/net/api/tests/getneighbors.rs index 60ecf45d88..eee96a119a 100644 --- a/stackslib/src/net/api/tests/getneighbors.rs +++ b/stackslib/src/net/api/tests/getneighbors.rs @@ -19,7 +19,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttp, StacksHttpRequest}; +use crate::net::httpcore::{StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] @@ -66,11 +66,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_rpc_neighbors().unwrap(); // as configured there's one boostrap neighbor diff --git a/stackslib/src/net/api/tests/getpoxinfo.rs b/stackslib/src/net/api/tests/getpoxinfo.rs index 6c02ce1392..1b1d4a90d7 100644 --- a/stackslib/src/net/api/tests/getpoxinfo.rs +++ b/stackslib/src/net/api/tests/getpoxinfo.rs @@ -21,9 +21,7 @@ use clarity::types::chainstate::StacksBlockId; use super::test_rpc; use crate::net::api::getpoxinfo; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, HttpRequestContentsExtensions as _, StacksHttp, StacksHttpRequest, -}; +use crate::net::httpcore::{HttpRequestContentsExtensions as _, StacksHttp, StacksHttpRequest}; use crate::net::{ProtocolFamily, TipRequest}; #[test] @@ -85,11 +83,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - // this works let resp = response.decode_rpc_get_pox_info().unwrap(); diff --git a/stackslib/src/net/api/tests/getstackerdbchunk.rs b/stackslib/src/net/api/tests/getstackerdbchunk.rs index 2e07191b3c..3450558448 100644 --- a/stackslib/src/net/api/tests/getstackerdbchunk.rs +++ b/stackslib/src/net/api/tests/getstackerdbchunk.rs @@ -21,9 +21,7 @@ use clarity::vm::types::QualifiedContractIdentifier; use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] @@ -138,10 +136,6 @@ fn test_try_make_response() { "Response:\n{}\n", std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_stackerdb_chunk().unwrap(); assert_eq!(std::str::from_utf8(&resp).unwrap(), "hello world"); @@ -151,10 +145,6 @@ fn test_try_make_response() { "Response:\n{}\n", std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_stackerdb_chunk().unwrap(); assert_eq!(std::str::from_utf8(&resp).unwrap(), "hello world"); diff --git a/stackslib/src/net/api/tests/getstackerdbmetadata.rs b/stackslib/src/net/api/tests/getstackerdbmetadata.rs index 45a0329d14..2caa442626 100644 --- a/stackslib/src/net/api/tests/getstackerdbmetadata.rs +++ b/stackslib/src/net/api/tests/getstackerdbmetadata.rs @@ -23,9 +23,7 @@ use stacks_common::util::secp256k1::MessageSignature; use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] @@ -94,10 +92,6 @@ fn test_try_make_response() { "Response:\n{}\n", std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_stackerdb_metadata().unwrap(); diff --git a/stackslib/src/net/api/tests/getstxtransfercost.rs b/stackslib/src/net/api/tests/getstxtransfercost.rs index 784601cb09..f435fb30d6 100644 --- a/stackslib/src/net/api/tests/getstxtransfercost.rs +++ b/stackslib/src/net/api/tests/getstxtransfercost.rs @@ -20,7 +20,7 @@ use super::test_rpc; use crate::chainstate::stacks::db::blocks::MINIMUM_TX_FEE_RATE_PER_BYTE; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttp, StacksHttpRequest}; +use crate::net::httpcore::{StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] @@ -65,11 +65,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let fee_rate = response.decode_stx_transfer_fee().unwrap(); debug!("fee_rate = {:?}", &fee_rate); assert_eq!(fee_rate, MINIMUM_TX_FEE_RATE_PER_BYTE); diff --git a/stackslib/src/net/api/tests/liststackerdbreplicas.rs b/stackslib/src/net/api/tests/liststackerdbreplicas.rs index e725fd9f85..ee9ea00cf9 100644 --- a/stackslib/src/net/api/tests/liststackerdbreplicas.rs +++ b/stackslib/src/net/api/tests/liststackerdbreplicas.rs @@ -23,9 +23,7 @@ use stacks_common::util::hash::Hash160; use super::test_rpc; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttp, StacksHttpRequest}; use crate::net::ProtocolFamily; #[test] @@ -94,10 +92,6 @@ fn test_try_make_response() { "Response:\n{}\n", std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_stackerdb_replicas().unwrap(); assert_eq!(resp.len(), 2); diff --git a/stackslib/src/net/api/tests/mod.rs b/stackslib/src/net/api/tests/mod.rs index 1995452fcf..21803d7fe5 100644 --- a/stackslib/src/net/api/tests/mod.rs +++ b/stackslib/src/net/api/tests/mod.rs @@ -14,10 +14,11 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use std::net::SocketAddr; +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::thread; use std::time::{Duration, Instant}; +use clarity::types::net::PeerHost; use clarity::vm::costs::ExecutionCost; use clarity::vm::types::{QualifiedContractIdentifier, StacksAddressExtensions}; use libstackerdb::SlotMetadata; @@ -45,7 +46,9 @@ use crate::chainstate::stacks::{ }; use crate::core::MemPoolDB; use crate::net::db::PeerDB; -use crate::net::httpcore::{HttpPreambleExtensions as _, StacksHttpRequest, StacksHttpResponse}; +use crate::net::httpcore::{ + HttpPreambleExtensions as _, StacksHttpRequest, StacksHttpResponse, TipRequest, +}; use crate::net::relay::Relayer; use crate::net::rpc::ConversationHttp; use crate::net::test::{RPCHandlerArgsType, TestEventObserver, TestPeer, TestPeerConfig}; @@ -1289,6 +1292,7 @@ impl<'a> TestRPC<'a> { let resp = resp_opt.unwrap(); + // Assert that the `X-Canonical-Stacks-Tip-Height` header is always set for successful responses if resp.preamble().is_success() { assert!(resp.preamble().get_canonical_stacks_tip_height().is_some()); } @@ -1420,3 +1424,32 @@ fn prefixed_hex_serialization() { assert_eq!(hex_str, format!("\"0x{}\"", to_hex(&inp.0))); } } + +#[test] +fn test_successfull_resposes_preambles_have_canonical_stacks_tip_height() { + let addr: PeerHost = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 33333).into(); + let test_observer = TestEventObserver::new(); + let rpc_test = TestRPC::setup(function_name!()); + + let expected_height = rpc_test.peer_2.network.stacks_tip.height; + + // Just a few different types of requests. + let requests = vec![ + StacksHttpRequest::new_getinfo(addr.clone(), None), + StacksHttpRequest::new_getheaders( + addr.clone(), + 2100, + TipRequest::SpecificTip(StacksBlockId([0x80; 32])), + ), + StacksHttpRequest::new_getpoxinfo(addr.clone(), TipRequest::UseLatestUnconfirmedTip), + ]; + let mut responses = rpc_test.run(requests); + + let response = responses.remove(0); + let preamble = response.preamble(); + assert!(preamble.is_success()); + assert_eq!( + preamble.get_canonical_stacks_tip_height().unwrap(), + expected_height + ); +} From 35f76518ec4f36b60b7d2e7164e75427c7b9c0f6 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Thu, 14 Aug 2025 13:28:39 +0100 Subject: [PATCH 08/12] canonical_stacks_tip_height now uses network.stacks_tip.height --- stackslib/src/net/mod.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stackslib/src/net/mod.rs b/stackslib/src/net/mod.rs index 15edb36b92..f3884eaba4 100644 --- a/stackslib/src/net/mod.rs +++ b/stackslib/src/net/mod.rs @@ -694,9 +694,7 @@ impl<'a> StacksNodeState<'a> { } pub fn canonical_stacks_tip_height(&mut self) -> u64 { - self.with_node_state(|network, _, _, _, _| { - network.burnchain_tip.canonical_stacks_tip_height - }) + self.with_node_state(|network, _, _, _, _| network.stacks_tip.height) } pub fn set_relay_message(&mut self, msg: StacksMessageType) { From b964aca86d89c0ed64e4a0a2489068626496498b Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Thu, 14 Aug 2025 15:17:19 +0100 Subject: [PATCH 09/12] remove missed response.preamble().get_canonical_stacks_tip_height() assert --- stackslib/src/net/api/tests/getattachmentsinv.rs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/stackslib/src/net/api/tests/getattachmentsinv.rs b/stackslib/src/net/api/tests/getattachmentsinv.rs index 6e31f6fb89..6c1c5cbf0e 100644 --- a/stackslib/src/net/api/tests/getattachmentsinv.rs +++ b/stackslib/src/net/api/tests/getattachmentsinv.rs @@ -110,11 +110,6 @@ fn test_try_make_response() { std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); - let resp = response.decode_atlas_attachments_inv_response().unwrap(); // there should be a bit set in the inventory vector @@ -128,11 +123,6 @@ fn test_try_make_response() { "Response:\n{}\n", std::str::from_utf8(&response.try_serialize().unwrap()).unwrap() ); - - assert_eq!( - response.preamble().get_canonical_stacks_tip_height(), - Some(1) - ); let resp = response.decode_atlas_attachments_inv_response().unwrap(); // this is a HTTP 200, but no bits are set From 605fd22f41cbc52c2ac37d1ea06e5a251d49a6c4 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Mon, 18 Aug 2025 12:44:37 +0200 Subject: [PATCH 10/12] remove unnecessary import in tests --- stackslib/src/net/api/tests/getattachmentsinv.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stackslib/src/net/api/tests/getattachmentsinv.rs b/stackslib/src/net/api/tests/getattachmentsinv.rs index 6c1c5cbf0e..47e7dfd779 100644 --- a/stackslib/src/net/api/tests/getattachmentsinv.rs +++ b/stackslib/src/net/api/tests/getattachmentsinv.rs @@ -23,7 +23,7 @@ use super::TestRPC; use crate::net::api::*; use crate::net::connection::ConnectionOptions; use crate::net::httpcore::{ - HttpPreambleExtensions as _, RPCRequestHandler, StacksHttp, StacksHttpRequest, + RPCRequestHandler, StacksHttp, StacksHttpRequest, }; use crate::net::{Attachment, ProtocolFamily}; From 7d862712a12dd34f1ec6679d3357eddedac29589 Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Mon, 18 Aug 2025 12:45:01 +0200 Subject: [PATCH 11/12] rewrite test_successfull_responses_have_correct_canonical_stacks_tip_height with rstest --- stackslib/src/net/api/tests/mod.rs | 31 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/stackslib/src/net/api/tests/mod.rs b/stackslib/src/net/api/tests/mod.rs index 21803d7fe5..d8c97e6bbe 100644 --- a/stackslib/src/net/api/tests/mod.rs +++ b/stackslib/src/net/api/tests/mod.rs @@ -1425,25 +1425,28 @@ fn prefixed_hex_serialization() { } } -#[test] -fn test_successfull_resposes_preambles_have_canonical_stacks_tip_height() { +/// Test that the `X-Canonical-Stacks-Tip-Height` header always matches the node's +/// `network.stacks_tip.height` value. +/// +/// This doesn't aim to test each possible endpoint, but rather to test that the +/// header is set to the correct value for successful responses. +#[rstest] +#[case::getinfo(|addr| StacksHttpRequest::new_getinfo(addr, None))] +#[case::getneighbors(StacksHttpRequest::new_getneighbors)] +#[case::getpoxinfo(|addr| StacksHttpRequest::new_getpoxinfo( + addr, + TipRequest::UseLatestUnconfirmedTip, +))] +fn test_successfull_responses_have_correct_canonical_stacks_tip_height( + #[case] request_builder: impl Fn(PeerHost) -> StacksHttpRequest, +) { let addr: PeerHost = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 33333).into(); let test_observer = TestEventObserver::new(); let rpc_test = TestRPC::setup(function_name!()); let expected_height = rpc_test.peer_2.network.stacks_tip.height; - - // Just a few different types of requests. - let requests = vec![ - StacksHttpRequest::new_getinfo(addr.clone(), None), - StacksHttpRequest::new_getheaders( - addr.clone(), - 2100, - TipRequest::SpecificTip(StacksBlockId([0x80; 32])), - ), - StacksHttpRequest::new_getpoxinfo(addr.clone(), TipRequest::UseLatestUnconfirmedTip), - ]; - let mut responses = rpc_test.run(requests); + let request = request_builder(addr); + let mut responses = rpc_test.run(vec![request]); let response = responses.remove(0); let preamble = response.preamble(); From 72caf0c1a7257c7cf79d02356d88aa49306d1e6e Mon Sep 17 00:00:00 2001 From: Francesco Leacche Date: Mon, 18 Aug 2025 12:57:37 +0200 Subject: [PATCH 12/12] cargo fmt --- stackslib/src/net/api/tests/getattachmentsinv.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stackslib/src/net/api/tests/getattachmentsinv.rs b/stackslib/src/net/api/tests/getattachmentsinv.rs index 47e7dfd779..271c1fff6c 100644 --- a/stackslib/src/net/api/tests/getattachmentsinv.rs +++ b/stackslib/src/net/api/tests/getattachmentsinv.rs @@ -22,9 +22,7 @@ use stacks_common::types::chainstate::StacksBlockId; use super::TestRPC; use crate::net::api::*; use crate::net::connection::ConnectionOptions; -use crate::net::httpcore::{ - RPCRequestHandler, StacksHttp, StacksHttpRequest, -}; +use crate::net::httpcore::{RPCRequestHandler, StacksHttp, StacksHttpRequest}; use crate::net::{Attachment, ProtocolFamily}; #[test]