mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-29 11:12:10 +01:00
Merge bitcoin/bitcoin#28123: Bugfix: RPC: Remove quotes from non-string oneline descriptions
5e3e83b005518659a69916c373b808da27e51791 RPC/Mining: Document template_request better for getblocktemplate (Luke Dashjr) de319c61759952318364fbcb28c47f0959d89d0e RPC/rpcdoccheck: Error if a oneline_description has a quote for a non-string (Luke Dashjr) 7c61e9df90579ed42a30016e52355e437733b128 Bugfix: RPC: Remove quotes from non-string oneline descriptions (Luke Dashjr) Pull request description: Various JSON Object parameters had a `oneline_description` with quote characters. Fix those, and extend `rpcdoccheck` to detect them. Also, slightly improve GBT's oneline description for template_request. ACKs for top commit: MarcoFalke: review ACK 5e3e83b005518659a69916c373b808da27e51791 Tree-SHA512: 363d1669a661d0acfc19fddb57e777d781c7246f330cf62160e77dde10a6adcb0249db748127067da1afe1b7d17c71cf611d9fdc3664d6bf5b3f30105637769a
This commit is contained in:
commit
ecb20563b6
@ -2312,7 +2312,7 @@ static RPCHelpMan scanblocks()
|
||||
{
|
||||
{"filter_false_positives", RPCArg::Type::BOOL, RPCArg::Default{false}, "Filter false positives (slower and may fail on pruned nodes). Otherwise they may occur at a rate of 1/M"},
|
||||
},
|
||||
RPCArgOptions{.oneline_description="\"options\""}},
|
||||
RPCArgOptions{.oneline_description="options"}},
|
||||
},
|
||||
{
|
||||
scan_result_status_none,
|
||||
|
@ -554,7 +554,7 @@ static RPCHelpMan getblocktemplate()
|
||||
" https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki#getblocktemplate_changes\n"
|
||||
" https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki\n",
|
||||
{
|
||||
{"template_request", RPCArg::Type::OBJ, RPCArg::Default{UniValue::VOBJ}, "Format of the template",
|
||||
{"template_request", RPCArg::Type::OBJ, RPCArg::Optional::NO, "Format of the template",
|
||||
{
|
||||
{"mode", RPCArg::Type::STR, /* treat as named arg */ RPCArg::Optional::OMITTED, "This must be set to \"template\", \"proposal\" (see BIP 23), or omitted"},
|
||||
{"capabilities", RPCArg::Type::ARR, /* treat as named arg */ RPCArg::Optional::OMITTED, "A list of strings",
|
||||
@ -569,7 +569,7 @@ static RPCHelpMan getblocktemplate()
|
||||
{"longpollid", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "delay processing request until the result would vary significantly from the \"longpollid\" of a prior template"},
|
||||
{"data", RPCArg::Type::STR_HEX, RPCArg::Optional::OMITTED, "proposed block data to check, encoded in hexadecimal; valid only for mode=\"proposal\""},
|
||||
},
|
||||
RPCArgOptions{.oneline_description="\"template_request\""}},
|
||||
},
|
||||
},
|
||||
{
|
||||
RPCResult{"If the proposal was accepted with mode=='proposal'", RPCResult::Type::NONE, "", ""},
|
||||
|
@ -1138,7 +1138,16 @@ std::string RPCArg::ToStringObj(const bool oneline) const
|
||||
|
||||
std::string RPCArg::ToString(const bool oneline) const
|
||||
{
|
||||
if (oneline && !m_opts.oneline_description.empty()) return m_opts.oneline_description;
|
||||
if (oneline && !m_opts.oneline_description.empty()) {
|
||||
if (m_opts.oneline_description[0] == '\"' && m_type != Type::STR_HEX && m_type != Type::STR && gArgs.GetBoolArg("-rpcdoccheck", DEFAULT_RPC_DOC_CHECK)) {
|
||||
throw std::runtime_error{
|
||||
strprintf("Internal bug detected: non-string RPC arg \"%s\" quotes oneline_description:\n%s\n%s %s\nPlease report this issue here: %s\n",
|
||||
m_names, m_opts.oneline_description,
|
||||
PACKAGE_NAME, FormatFullVersion(),
|
||||
PACKAGE_BUGREPORT)};
|
||||
}
|
||||
return m_opts.oneline_description;
|
||||
}
|
||||
|
||||
switch (m_type) {
|
||||
case Type::STR_HEX:
|
||||
|
@ -1297,12 +1297,12 @@ RPCHelpMan importmulti()
|
||||
},
|
||||
},
|
||||
},
|
||||
RPCArgOptions{.oneline_description="\"requests\""}},
|
||||
RPCArgOptions{.oneline_description="requests"}},
|
||||
{"options", RPCArg::Type::OBJ_NAMED_PARAMS, RPCArg::Optional::OMITTED, "",
|
||||
{
|
||||
{"rescan", RPCArg::Type::BOOL, RPCArg::Default{true}, "Scan the chain and mempool for wallet transactions after all imports."},
|
||||
},
|
||||
RPCArgOptions{.oneline_description="\"options\""}},
|
||||
RPCArgOptions{.oneline_description="options"}},
|
||||
},
|
||||
RPCResult{
|
||||
RPCResult::Type::ARR, "", "Response is an array with the same size as the input that has the execution result",
|
||||
@ -1617,7 +1617,7 @@ RPCHelpMan importdescriptors()
|
||||
},
|
||||
},
|
||||
},
|
||||
RPCArgOptions{.oneline_description="\"requests\""}},
|
||||
RPCArgOptions{.oneline_description="requests"}},
|
||||
},
|
||||
RPCResult{
|
||||
RPCResult::Type::ARR, "", "Response is an array with the same size as the input that has the execution result",
|
||||
|
@ -172,7 +172,7 @@ class MiningTest(BitcoinTestFramework):
|
||||
block.vtx = [coinbase_tx]
|
||||
|
||||
self.log.info("getblocktemplate: segwit rule must be set")
|
||||
assert_raises_rpc_error(-8, "getblocktemplate must be called with the segwit rule set", node.getblocktemplate)
|
||||
assert_raises_rpc_error(-8, "getblocktemplate must be called with the segwit rule set", node.getblocktemplate, {})
|
||||
|
||||
self.log.info("getblocktemplate: Test valid block")
|
||||
assert_template(node, block, None)
|
||||
|
Loading…
x
Reference in New Issue
Block a user