rpc: Accept strings in AmountFromValue
Accept strings containing decimal values, in addition to bare values. Useful from JSON-RPC implementations where it's not possible to have direct control over the text of numbers (e.g. where numbers are always doubles), and it's still desired to send an exact value. This would allow users to post JSON content with numbers encoded like `{"value": "0.00000001"}` instead of `{"value": 0.00000001}` which some php/python encoders wrap into 1e-8, or worse.
This commit is contained in:
parent
d43297c5ba
commit
614601be8f
1 changed files with 2 additions and 2 deletions
|
@ -120,8 +120,8 @@ void RPCTypeCheckObj(const UniValue& o,
|
||||||
|
|
||||||
CAmount AmountFromValue(const UniValue& value)
|
CAmount AmountFromValue(const UniValue& value)
|
||||||
{
|
{
|
||||||
if (!value.isNum())
|
if (!value.isNum() && !value.isStr())
|
||||||
throw JSONRPCError(RPC_TYPE_ERROR, "Amount is not a number");
|
throw JSONRPCError(RPC_TYPE_ERROR, "Amount is not a number or string");
|
||||||
CAmount amount;
|
CAmount amount;
|
||||||
if (!ParseFixedPoint(value.getValStr(), 8, &amount))
|
if (!ParseFixedPoint(value.getValStr(), 8, &amount))
|
||||||
throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount");
|
throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount");
|
||||||
|
|
Loading…
Reference in a new issue