pyln-client, libplugin, rust cln-plugin: explicitly flag that we allow non-numeric JSON ids.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2022-11-21 12:23:26 +10:30 committed by Christian Decker
parent d5ce5cbab3
commit ece77840f9
5 changed files with 6 additions and 15 deletions

View file

@ -917,6 +917,7 @@ class Plugin(object):
'subscriptions': list(self.subscriptions.keys()),
'hooks': hooks,
'dynamic': self.dynamic,
'nonnumericids': True,
'notifications': [
{"method": name} for name in self.notification_topics
],

View file

@ -888,6 +888,7 @@ handle_getmanifest(struct command *getmanifest_cmd,
}
json_add_bool(params, "dynamic", p->restartability == PLUGIN_RESTARTABLE);
json_add_bool(params, "nonnumericids", true);
json_array_start(params, "notifications");
for (size_t i = 0; p->notif_topics && i < p->num_notif_topics; i++) {

View file

@ -46,6 +46,7 @@ where
rpcmethods: HashMap<String, RpcMethod<S>>,
subscriptions: HashMap<String, Subscription<S>>,
dynamic: bool,
nonnumericids: bool,
}
/// A plugin that has registered with the lightning daemon, and gotten
@ -115,6 +116,7 @@ where
options: vec![],
rpcmethods: HashMap::new(),
dynamic: false,
nonnumericids: true,
}
}
@ -318,6 +320,7 @@ where
hooks: self.hooks.keys().map(|s| s.clone()).collect(),
rpcmethods,
dynamic: self.dynamic,
nonnumericids: true,
}
}

View file

@ -157,6 +157,7 @@ pub(crate) struct GetManifestResponse {
pub(crate) subscriptions: Vec<String>,
pub(crate) hooks: Vec<String>,
pub(crate) dynamic: bool,
pub(crate) nonnumericids: bool,
}
#[derive(Serialize, Default, Debug)]

View file

@ -3238,18 +3238,3 @@ def test_block_added_notifications(node_factory, bitcoind):
sync_blockheight(bitcoind, [l2])
ret = l2.rpc.call("blockscatched")
assert len(ret) == 3 and ret[1] == next_l2_base + 1 and ret[2] == next_l2_base + 2
def test_numeric_json_ids(node_factory):
"""Test that we use numeric json IDs when in deprecated mode (unless
plugin says otherwise!)"""
l1 = node_factory.get_node(options={'allow-deprecated-apis': True,
'log-level': 'io'})
# getmanifest and init
l1.daemon.logsearch_start = 0
l1.daemon.wait_for_logs([r"plugin-commando: [0-9]*\[OUT\]"] * 2)
# This is in a plugin.
l1.rpc.commando_rune()
l1.daemon.wait_for_log(r"plugin-commando: [0-9]*\[OUT\]")