core-lightning/plugins/spender
ZmnSCPxj jxPCSnmZ d4690358d9 plugins/libplugin.c: Allow freeing notification struct command *.
We always allocate a new `struct command` when we get a full JSON
object from stdin:

b2df01dc73/plugins/libplugin.c (L1229-L1233)

If it happens to be a notification, we pass the `struct command` to
the handler, and not free it ourselves:

b2df01dc73/plugins/libplugin.c (L1270-L1275)

There are only nine points in `plugins/libplugin.c` where we `tal_free`
anything, and only one of them frees a `struct command`:

b2df01dc73/plugins/libplugin.c (L224-L234)

The above function `command_complete` is not appropriate for
notification handlers; the above function sends out a response
to our stdout, which a notification handler should not do.

However, as-is, it does mean that notification handling leaks
`struct command` objects, which can be problematic if we ever
have future built-in plugins which are significantly more
dependent on notifications.

This commit changes notification handlers to return
`struct command_result *`, because possibly in the future
notification handlers may want to perform `send_outreq`, so we
might as well use our standard convention for callbacks, and
to encourage future developers to check how to properly
terminate notification handlers (and free up the
`struct command`).

We also now provide a `notification_handled` function which a
notification handler must eventually call, as well as a
`notification_handler_pending` which is just a snowclone of
`command_still_pending`.
2021-10-08 14:40:04 +10:30
..
fundchannel.c cleanup: remove unneeded includes in C files. 2021-09-17 09:43:22 +09:30
fundchannel.h plugins/spender/fundchannel.c: Make fundchannel a thin layer around multifundchannel. 2020-09-10 15:28:50 +09:30
main.c cleanup: remove unneeded includes in C files. 2021-09-17 09:43:22 +09:30
multifundchannel.c cleanup: remove unneeded includes in C files. 2021-09-17 09:43:22 +09:30
multifundchannel.h channel leases: pass expected lease rates around in compat form 2021-07-20 13:28:38 -04:00
multiwithdraw.c cleanup: remove unneeded includes in C files. 2021-09-17 09:43:22 +09:30
multiwithdraw.h plugins/spender/multiwithdraw.c: Implement multiwithdraw command. 2020-09-09 20:36:08 +09:30
openchannel.c plugins/libplugin.c: Allow freeing notification struct command *. 2021-10-08 14:40:04 +10:30
openchannel.h mfc-df: after sigs are collected, go sign the psbt 2020-11-23 12:41:05 -06:00