MCPcopy Create free account
hub / github.com/ElementsProject/lightning / plugin_response_handle

Function plugin_response_handle

lightningd/plugin.c:669–694  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

667}
668
669static void plugin_response_handle(struct plugin *plugin,
670 const char *buffer,
671 const jsmntok_t *toks,
672 const jsmntok_t *idtok)
673{
674 struct jsonrpc_request *request;
675 const tal_t *ctx;
676
677 request = strmap_getn(&plugin->pending_requests,
678 json_tok_full(buffer, idtok),
679 json_tok_full_len(idtok));
680 /* Can happen if request was freed before plugin responded */
681 if (!request) {
682 return;
683 }
684
685
686 /* Request callback often frees request: if not, we do. */
687 ctx = tal(tmpctx, char);
688 tal_steal(ctx, request);
689 /* Don't keep track of this request; we will terminate it */
690 tal_del_destructor2(request, destroy_request, plugin);
691 destroy_request(request, plugin);
692 request->response_cb(buffer, toks, idtok, request->response_cb_arg);
693 tal_free(ctx);
694}
695
696/* Try to parse complete messages from the plugin's buffer. */
697static struct io_plan *plugin_read_json(struct io_conn *conn,

Callers 2

plugin_read_jsonFunction · 0.85

Calls 4

destroy_requestFunction · 0.85
tal_freeFunction · 0.85
json_tok_fullFunction · 0.50
json_tok_full_lenFunction · 0.50

Tested by

no test coverage detected