diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 94bcb8c2fa..aa892cb2e3 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2579,7 +2579,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, diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index f591110316..3ebdfded66 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -576,7 +576,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", @@ -591,7 +591,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, "", ""}, diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp index 0a9da945bf..069cc7f775 100644 --- a/src/rpc/util.cpp +++ b/src/rpc/util.cpp @@ -1157,7 +1157,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: diff --git a/src/wallet/rpc/backup.cpp b/src/wallet/rpc/backup.cpp index 93b1654eac..758d7816ce 100644 --- a/src/wallet/rpc/backup.cpp +++ b/src/wallet/rpc/backup.cpp @@ -1334,12 +1334,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", @@ -1654,7 +1654,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", diff --git a/test/functional/mining_basic.py b/test/functional/mining_basic.py index e38781e40f..92d85619e8 100755 --- a/test/functional/mining_basic.py +++ b/test/functional/mining_basic.py @@ -178,7 +178,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)