peer: Add custommsg hook and wire it into channeld and openingd

This commit is contained in:
Christian Decker
2019-12-05 00:11:28 +01:00
parent 9fd84169bb
commit ccec64d63c
5 changed files with 46 additions and 2 deletions

View File

@@ -2375,6 +2375,45 @@ void peer_dev_memleak(struct command *cmd)
peer_memleak_req_next(cmd, NULL);
}
struct custommsg_payload {
struct node_id peer_id;
const u8 *msg;
};
static void custommsg_callback(struct custommsg_payload *payload,
const char *buffer, const jsmntok_t *toks)
{
tal_free(payload);
}
static void custommsg_payload_serialize(struct custommsg_payload *payload,
struct json_stream *stream)
{
json_add_hex_talarr(stream, "message", payload->msg);
json_add_node_id(stream, "peer_id", &payload->peer_id);
}
REGISTER_PLUGIN_HOOK(custommsg, custommsg_callback, struct custommsg_payload *,
custommsg_payload_serialize, struct custommsg_payload *);
void handle_custommsg_in(struct lightningd *ld, const struct node_id *peer_id,
const u8 *msg)
{
struct custommsg_payload *p = tal(NULL, struct custommsg_payload);
u8 *custommsg;
if (!fromwire_custommsg_in(NULL, msg, &custommsg)) {
log_broken(ld->log, "Malformed custommsg from peer %s: %s",
type_to_string(tmpctx, struct node_id, peer_id),
tal_hex(tmpctx, msg));
return;
}
p->peer_id = *peer_id;
p->msg = tal_steal(p, custommsg);
plugin_hook_call_custommsg(ld, p, p);
}
static struct command_result *json_sendcustommsg(struct command *cmd,
const char *buffer,
const jsmntok_t *obj UNNEEDED,