Return an error from descriptor Parse that gives more information about what failed

This commit is contained in:
Andrew Chow
2019-08-02 18:04:02 -04:00
parent 7a960ba775
commit c325f619dd
7 changed files with 110 additions and 51 deletions

View File

@@ -717,9 +717,10 @@ std::vector<CScript> EvalDescriptorStringOrObject(const UniValue& scanobject, Fl
throw JSONRPCError(RPC_INVALID_PARAMETER, "Scan object needs to be either a string or an object");
}
auto desc = Parse(desc_str, provider);
std::string error;
auto desc = Parse(desc_str, provider, error);
if (!desc) {
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, strprintf("Invalid descriptor '%s'", desc_str));
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, strprintf("Invalid descriptor '%s', %s", desc_str, error));
}
if (!desc->IsRange()) {
range.first = 0;