cln-rpc: allow id to be any token.
Suggested-by: @cdecker Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
bd18fbc488
commit
ce0b765c96
|
@ -9,7 +9,7 @@ use std::fmt::Debug;
|
|||
|
||||
#[derive(Debug)]
|
||||
pub enum JsonRpc<N, R> {
|
||||
Request(usize, R),
|
||||
Request(serde_json::Value, R),
|
||||
Notification(N),
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ where
|
|||
{
|
||||
#[derive(Deserialize, Debug)]
|
||||
struct IdHelper {
|
||||
id: Option<usize>,
|
||||
id: Option<serde_json::Value>,
|
||||
}
|
||||
|
||||
let v = Value::deserialize(deserializer)?;
|
||||
|
|
|
@ -5,6 +5,7 @@ use anyhow::Result;
|
|||
use futures_util::sink::SinkExt;
|
||||
use futures_util::StreamExt;
|
||||
use log::{debug, trace};
|
||||
use serde_json::json;
|
||||
use std::path::Path;
|
||||
use std::sync::atomic::AtomicUsize;
|
||||
use std::sync::atomic::Ordering;
|
||||
|
@ -60,7 +61,7 @@ impl ClnRpc {
|
|||
|
||||
// Wrap the raw request in a well-formed JSON-RPC outer dict.
|
||||
let id = self.next_id.fetch_add(1, Ordering::SeqCst);
|
||||
let req: JsonRpc<Notification, Request> = JsonRpc::Request(id, req);
|
||||
let req: JsonRpc<Notification, Request> = JsonRpc::Request(json!(id), req);
|
||||
let req = serde_json::to_value(req).map_err(|e| RpcError {
|
||||
code: None,
|
||||
message: format!("Error parsing request: {}", e),
|
||||
|
@ -137,7 +138,7 @@ mod test {
|
|||
let read_req = dbg!(read.next().await.unwrap().unwrap());
|
||||
|
||||
assert_eq!(
|
||||
json!({"id": 1, "method": "getinfo", "params": {}, "jsonrpc": "2.0"}),
|
||||
json!({"id": "1", "method": "getinfo", "params": {}, "jsonrpc": "2.0"}),
|
||||
read_req
|
||||
);
|
||||
}
|
||||
|
|
|
@ -364,7 +364,7 @@ pub struct ConfiguredPlugin<S, I, O>
|
|||
where
|
||||
S: Clone + Send,
|
||||
{
|
||||
init_id: usize,
|
||||
init_id: serde_json::Value,
|
||||
input: FramedRead<I, JsonRpcCodec>,
|
||||
output: Arc<Mutex<FramedWrite<O, JsonCodec>>>,
|
||||
plugin: Plugin<S>,
|
||||
|
@ -543,7 +543,7 @@ where
|
|||
self.dispatch_notification(n, plugin).await
|
||||
}
|
||||
messages::JsonRpc::CustomRequest(id, p) => {
|
||||
match self.dispatch_custom_request(id, p, plugin).await {
|
||||
match self.dispatch_custom_request(id.clone(), p, plugin).await {
|
||||
Ok(v) => plugin
|
||||
.sender
|
||||
.send(json!({
|
||||
|
@ -575,7 +575,7 @@ where
|
|||
}
|
||||
|
||||
async fn dispatch_request(
|
||||
_id: usize,
|
||||
_id: serde_json::Value,
|
||||
_request: messages::Request,
|
||||
_plugin: &Plugin<S>,
|
||||
) -> Result<(), Error> {
|
||||
|
@ -595,7 +595,7 @@ where
|
|||
|
||||
async fn dispatch_custom_request(
|
||||
&self,
|
||||
_id: usize,
|
||||
_id: serde_json::Value,
|
||||
request: serde_json::Value,
|
||||
plugin: &Plugin<S>,
|
||||
) -> Result<serde_json::Value, Error> {
|
||||
|
|
|
@ -94,9 +94,9 @@ pub struct ProxyInfo {
|
|||
|
||||
#[derive(Debug)]
|
||||
pub enum JsonRpc<N, R> {
|
||||
Request(usize, R),
|
||||
Request(serde_json::Value, R),
|
||||
Notification(N),
|
||||
CustomRequest(usize, Value),
|
||||
CustomRequest(serde_json::Value, Value),
|
||||
CustomNotification(Value),
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ where
|
|||
{
|
||||
#[derive(Deserialize, Debug)]
|
||||
struct IdHelper {
|
||||
id: Option<usize>,
|
||||
id: Option<serde_json::Value>,
|
||||
}
|
||||
|
||||
let v = Value::deserialize(deserializer)?;
|
||||
|
@ -203,7 +203,7 @@ mod test {
|
|||
"always_use_proxy": false
|
||||
}
|
||||
},
|
||||
"id": 10,
|
||||
"id": "10",
|
||||
});
|
||||
let req: JsonRpc<Notification, Request> = serde_json::from_value(value).unwrap();
|
||||
match req {
|
||||
|
|
Loading…
Reference in New Issue