Skip to content

Commit 7c84ec6

Browse files
committed
rpc: Permit JSON-RPC IDs to be non-strings
Fixes ZcashFoundation#9314.
1 parent f0140a4 commit 7c84ec6

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

zebra-rpc/src/server/rpc_call_compatibility.rs

+10-5
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,18 @@ impl<'a> RpcServiceT<'a> for FixRpcResponseMiddleware {
5151
let json: serde_json::Value =
5252
serde_json::from_str(response.into_parts().0.as_str())
5353
.expect("response string should be valid json");
54-
let id = json["id"]
55-
.as_str()
56-
.expect("response json should have an id")
57-
.to_string();
54+
let id = match &json["id"] {
55+
serde_json::Value::Null => Some(jsonrpsee::types::Id::Null),
56+
serde_json::Value::Number(n) => {
57+
n.as_u64().map(jsonrpsee::types::Id::Number)
58+
}
59+
serde_json::Value::String(s) => Some(jsonrpsee::types::Id::Str(s.into())),
60+
_ => None,
61+
}
62+
.expect("response json should have an id");
5863

5964
return MethodResponse::error(
60-
jsonrpsee_types::Id::Str(id.into()),
65+
id,
6166
ErrorObject::borrowed(new_error_code, "Invalid params", None),
6267
);
6368
}

0 commit comments

Comments
 (0)