Browse Source

Allow skipping 'params' field in Electrum JSONRPC

nonblocking
Roman Zeyde 6 years ago
parent
commit
33054e23f7
No known key found for this signature in database GPG Key ID: 87CAE5FA46917CBB
  1. 9
      src/rpc.rs

9
src/rpc.rs

@ -368,16 +368,21 @@ impl Connection {
} }
fn handle_replies(&mut self) -> Result<()> { fn handle_replies(&mut self) -> Result<()> {
let empty_params = json!([]);
loop { loop {
let msg = self.chan.receiver().recv().chain_err(|| "channel closed")?; let msg = self.chan.receiver().recv().chain_err(|| "channel closed")?;
trace!("RPC {:?}", msg); trace!("RPC {:?}", msg);
match msg { match msg {
Message::Request(line) => { Message::Request(line) => {
let cmd: Value = from_str(&line).chain_err(|| "invalid JSON format")?; 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::String(ref method)),
Some(&Value::Array(ref params)), &Value::Array(ref params),
Some(&Value::Number(ref id)), Some(&Value::Number(ref id)),
) => self.handle_command(method, params, id)?, ) => self.handle_command(method, params, id)?,
_ => bail!("invalid command: {}", cmd), _ => bail!("invalid command: {}", cmd),

Loading…
Cancel
Save