Rusty Russell
111d6df442
plugins: make log prefix the basename.
It's not perfect if they have multiple with same name, but better than number.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
aa4284a35e
docs: document plugin options.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
eb03b33655
plugins: add and install built-in plugin dir, add clear and disable options.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
ac5002a79e
pytest: add hack to force options into a given order.
Needed for testing plugin options which are order-senditive.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
a4287f99fd
lightningd: add --plugin-dir option to load directory full of plugins.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
31830ea6bb
doc: Use subsections for option types.
And drive-by fix "if it's seems" to "if it seems".
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Christian Decker
d7e94a9386
plugin: Iterate over the options from a plugin using the tok->size
I had this really contorted way of iterating over options that could
cause valgrind to choke. This is the much more intuitive way to
iterate.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
b8a1445317
plugin: Make plugin_kill a printf-like function
Suggested-by: Rusty Russell <@rustyrussell>
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
82393036e3
plugin: Update documentation of the rpcmethods
Suggested-by: Lisa Neigut <@niftynei>
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
1d75a70995
pytest: Add a test for the JSON-RPC passthrough
Tests JSON-RPC registration, as well as success and failures.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
e625fd7e82
plugin: Map results back to the incoming JSON-RPC request
The final step in the JSON-RPC passthrough: map the result we got from
the plugin back to the original request we got from the client.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
7c93cf00bb
plugin: Dispatch incoming RPC calls to appropriate plugin
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
a0f6a82a0b
plugin: Make memleak happy
List element structs must have the list_node as their first element.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
bf89d86ba8
plugin: Plugins need a list of methods they registered
This will be used in the next commit to dispatch calls to the correct
plugin.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
a71208b2a0
plugin: Remove added JSON-RPC methods if a plugin gets killed
Removes the method from the dispatch table, leaving a NULL entry
currently.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
7de4c40b77
plugin: Add plugin rpcmethods to the JSON-RPC interface
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
3e1138951b
plugin: Add pointer to jsonrpc so we can add new methods
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
83775e7cea
jsonrpc: Split the jsonrpc object creation from starting to listen
This is needed in order to be able to add methods while initializing
the plugins, but before actually moving to the config dir and starting
to listen.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
01c7bc5884
jsonrpc: Make an explicit jsonrpc struct
This wraps the listener, a separate log and the registered
commands. This is mainly needed once we dynamically add
sjson_command`s to the JSON-RPC.
6 years ago
Christian Decker
0f72e0bce8
plugin: The example plugin can now return errors
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
1e139e412b
plugin: Allow both array as well as object params in example plugin
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
a4ded47d34
plugin: Fix memory leak when requests are done
We weren't cleaning the requests we fulfilled, so this does that :-)
6 years ago
arowser
3ba751797b
add needed include file
6 years ago
Christian Decker
4d95bb0539
pytest: Mark test_reserve_enforcement as flaky
It has been causing a lot of Travis failures due to a presumed memory
leak:
```
Exception: Node /tmp/ltests-fhjg26a2/test_reserve_enforcement_1/lightning-2/ has memory leaks: [{'label': 'lightningd/json_stream.c:48:struct json_stream', 'backtrace': ['ccan/ccan/tal/tal.c:435 (tal_alloc_)', 'lightningd/json_stream.c:48 (new_json_stream)', 'lightningd/jsonrpc.c:90 (jcon_new_json_stream)', 'lightningd/jsonrpc.c:444 (attach_json_stream)', 'lightningd/jsonrpc.c:455 (json_start)', 'lightningd/jsonrpc.c:464 (json_stream_success)', 'lightningd/pay.c:932 (json_sendpay_on_resolve)', 'lightningd/pay.c:444 (payment_store)', 'lightningd/pay.c:540 (payment_failed)', 'lightningd/peer_htlcs.c:143 (fail_out_htlc)', 'lightningd/peer_htlcs.c:360 (destroy_hout_subd_died)', 'ccan/ccan/tal/tal.c:235 (notify)', 'ccan/ccan/tal/tal.c:395 (del_tree)', 'ccan/ccan/tal/tal.c:405 (del_tree)', 'ccan/ccan/tal/tal.c:405 (del_tree)', 'ccan/ccan/tal/tal.c:479 (tal_free)', 'ccan/ccan/io/io.c:451 (io_close)', 'lightningd/subd.c:500 (sd_msg_read)', 'lightningd/subd.c:302 (read_fds)', 'ccan/ccan/io/io.c:59 (next_plan)', 'ccan/ccan/io/io.c:395 (do_plan)', 'ccan/ccan/io/io.c:405 (io_ready)', 'ccan/ccan/io/poll.c:310 (io_loop)', 'lightningd/lightningd.c:769 (main)'], 'parents': ['lightningd/jsonrpc.c:681:struct json_connection', 'common/configdir.c:29:char[]'], 'value': '0x125be08'}]
```
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
522c3039ec
pytest: Pretty print the memleak output in tests
It wasn't JSON formatted either so there was no nice pretty-printing
way. This jsonifies and pretty prints it.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
45e1f09714
tools: Added .clang-format for formatting
This is the `.clang-format` file I've been using for a while now. I
think that we might save on formatting nits if we tell new
contributors to use `clang-format`
6 years ago
Christian Decker
685a76e714
pytest: test_closing_different_fees no longer requires DEVELOPER=1
We no longer use `dev-override-fees` to set the fees, rather we
instrument the `bitcoind` proxy to return the desired feerates.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
cc7a523cab
git: Add codeowners file to automatically request code reviews
6 years ago
Christian Decker
da465f0fdd
plugin: Exit if we fail to start a plugin
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
879f9b7986
plugin: Make a common directory of plugins in contrib
No need to create a directory each.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
e27b2ea69b
pytest: Add a test for the plugin option passthrough
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
c3d2caafa2
pytest: Use the pytest-timeout plugin to kill tasks
This will kill a test that was running for 550 seconds, so that we
get a traceback before the travis inactivity timeout of 600 seconds
kicks in. The traceback should show us which test got stuck and where
it got stuck.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
f520052b95
pytest: Add two more dependencies
pytest was an indirect dependency so far, making that one
explicit, and the timeout plugin should allow us to kill a stuck test
before travis kills it, and thus allow us to see where it got stuck.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
bef1812b9b
changelog: Add missing Changelog entry from PR #2075
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
0040673e90
docker: Update pytest dependencies in the builder image
Adds timeout and progress to the output.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
c90be02372
docs: Replace example method params with a long description
This matches the `verbose` field in `struct json_command`.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
arowser
77832c9400
enable add_steal_notifiers only support backtrace library
6 years ago
ZmnSCPxj
e74349c506
doc/lightning-pay.7.txt: Clarify randomization by `pay` command.
6 years ago
Rusty Russell
95e47cdac2
channeld: accept update_fee before funding_locked.
As long as they don't try to send commitment_signed, it's OK. Just a bit
weird.
Closes : #2100
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Jonas Nick
da431333b8
Fix default lightning datadir in lightningd-config doc
6 years ago
Rusty Russell
1d7b287439
pytest: speed up test_restart_many_payments when !DEVELOPER.
Because gossip in this case takes up to a minute, this test took 10
minutes. The workaround is to do the waiting-for-gossip all at once.
Now it takes 362 seconds.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
d9d762170a
memleak: don't get stuck if per-peer daemons die.
Instead, continue with the next phase. I would guess this is the cause
of timeouts under Travis.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
8fb1b609ce
closingd: handle our own memleak detection.
Unlike other daemons, closingd doesn't listen to the master, but runs
simply to its own beat. So instead of responding to the JSON dev_memleak
command, we always check for memory leaks, and make sure that the
python tests fail if they see MEMLEAK in the logs.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
55306fc3eb
onchaind: wire up dev_memleak.
For onchaind we need to remove globals from memleak consideration;
we also change the htlc pointer to an htlc copy, which simplifies
things as well.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
d3ea9bf8bf
channeld: wire up dev_memleak.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
6094a95132
channeld: don't leak messages, and free init-only variables.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
a42c8bfb38
openingd: wire up dev_memleak.
This is a bit different from the other cases: we need to iterate through
the peers and ask all the ones in openingd.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
6da379631f
hsmd: wire up dev_memleak.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
1430036684
connectd: wire up dev_memleak.
We need several notleak() annotations here:
1. The temporary structure which is handed to retry_peer_connected().
It's waiting for the master to respond to our connect_reconnected
message.
2. We don't keep a pointer to the io_conn for a peer, so we need to
mark those as not being a leak.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
a1c675edb3
connectd: free proxyaddr after use.
Otherwise the next patch gives:
MEMLEAK: 0x895b3ac
label=connectd/gen_connect_wire.c:65:struct wireaddr
backtrace:
ccan/ccan/tal/tal.c:435 (tal_alloc_)
connectd/gen_connect_wire.c:65 (fromwire_connectctl_init)
connectd/connectd.c:1103 (connect_init)
connectd/connectd.c:1414 (recv_req)
common/daemon_conn.c:31 (handle_read)
ccan/ccan/io/io.c:59 (next_plan)
ccan/ccan/io/io.c:395 (do_plan)
ccan/ccan/io/io.c:405 (io_ready)
ccan/ccan/io/poll.c:310 (io_loop)
connectd/connectd.c:1499 (main)
parents:
connectd/connectd.c:1485:struct daemon
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago