From 33054e23f707cf47954ad1ba02effaa63a582272 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Fri, 16 Nov 2018 17:23:16 +0200 Subject: [PATCH] Allow skipping 'params' field in Electrum JSONRPC --- src/rpc.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/rpc.rs b/src/rpc.rs index 6326924..c99f545 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -368,16 +368,21 @@ impl Connection { } fn handle_replies(&mut self) -> Result<()> { + let empty_params = json!([]); loop { let msg = self.chan.receiver().recv().chain_err(|| "channel closed")?; trace!("RPC {:?}", msg); match msg { Message::Request(line) => { let cmd: Value = from_str(&line).chain_err(|| "invalid JSON format")?; - let reply = match (cmd.get("method"), cmd.get("params"), cmd.get("id")) { + let reply = match ( + cmd.get("method"), + cmd.get("params").unwrap_or_else(|| &empty_params), + cmd.get("id"), + ) { ( Some(&Value::String(ref method)), - Some(&Value::Array(ref params)), + &Value::Array(ref params), Some(&Value::Number(ref id)), ) => self.handle_command(method, params, id)?, _ => bail!("invalid command: {}", cmd),