Christian Decker
f5a3f1f0a2
plugin: Add a test for timeout and broken manifest
...
Both of these plugins will fail in interesting ways, and we should
still handle them correctly.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Christian Decker
bd6ce102e6
plugin: Better cleanup when a plugin fails
...
This used to be a use-after-free bug in which we'd free the plugin and
then still have two connections that expect to be able to operate on
the plugin. This now signals the connections to exit and cleans up
once they do.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Christian Decker
b23a33ec7a
jsonrpc: Use tal_arr_remove instead of leaving NULL in the commands
...
Suggested-by: Rusty Russell <@rustyrussell>
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Christian Decker
230730eca4
plugin: Migrate request creation to json_stream
...
We can use the internal buffering of the json_stream instead of
manually building JSON-RPC calls. This makes it a lot easier to handle
these requests.
Notice that we do not flush concurrently and still buffer all the
things, but it avoids double-buffering things.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Christian Decker
dc4fb650dc
plugin: Add a timeout to the getmanifest
call
...
If the plugin fails to respond to we may end up hanging indefinitely,
so we limit the time we're willing to wait to 10 seconds.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Christian Decker
9ce3e960ec
common: Add tal_arr_remove helper
...
Suggested-by: Rusty Russell <@rustyrussell>
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Christian Decker
906bfef4fd
changelog: Add plugin JSON-RPC passthrough
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-05 23:15:59 +00:00
Christian Decker
83ecb61890
plugin: Ignore directories in the plugin-directory
...
They pass the executable test, but aren't really executable.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Michael Hawkins
561a66354b
Man page for lightning-disconnect created
2018-12-05 01:26:01 +00:00
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>
2018-12-05 01:22:55 +01:00
Rusty Russell
aa4284a35e
docs: document plugin options.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
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>
2018-12-05 01:22:55 +01:00
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>
2018-12-05 01:22:55 +01:00
Rusty Russell
a4287f99fd
lightningd: add --plugin-dir option to load directory full of plugins.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
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>
2018-12-05 01:22:55 +01:00
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>
2018-12-02 22:55:47 +00:00
Christian Decker
b8a1445317
plugin: Make plugin_kill a printf-like function
...
Suggested-by: Rusty Russell <@rustyrussell>
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
82393036e3
plugin: Update documentation of the rpcmethods
...
Suggested-by: Lisa Neigut <@niftynei>
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
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>
2018-12-02 22:55:47 +00:00
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>
2018-12-02 22:55:47 +00:00
Christian Decker
7c93cf00bb
plugin: Dispatch incoming RPC calls to appropriate plugin
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
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>
2018-12-02 22:55:47 +00:00
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>
2018-12-02 22:55:47 +00:00
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>
2018-12-02 22:55:47 +00:00
Christian Decker
7de4c40b77
plugin: Add plugin rpcmethods to the JSON-RPC interface
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
3e1138951b
plugin: Add pointer to jsonrpc so we can add new methods
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
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>
2018-12-02 22:55:47 +00:00
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.
2018-12-02 22:55:47 +00:00
Christian Decker
0f72e0bce8
plugin: The example plugin can now return errors
...
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
1e139e412b
plugin: Allow both array as well as object params in example plugin
...
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
a4ded47d34
plugin: Fix memory leak when requests are done
...
We weren't cleaning the requests we fulfilled, so this does that :-)
2018-12-02 22:55:47 +00:00
arowser
3ba751797b
add needed include file
2018-11-29 23:42:50 +00:00
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>
2018-11-29 23:01:11 +00:00
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>
2018-11-29 23:01:11 +00:00
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`
2018-11-29 23:01:11 +00:00
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>
2018-11-29 23:01:11 +00:00
Christian Decker
cc7a523cab
git: Add codeowners file to automatically request code reviews
2018-11-29 23:01:11 +00:00
Christian Decker
da465f0fdd
plugin: Exit if we fail to start a plugin
...
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
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>
2018-11-26 22:53:37 +00:00
Christian Decker
e27b2ea69b
pytest: Add a test for the plugin option passthrough
...
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
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>
2018-11-26 22:53:37 +00:00
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>
2018-11-26 22:53:37 +00:00
Christian Decker
bef1812b9b
changelog: Add missing Changelog entry from PR #2075
...
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
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>
2018-11-26 22:53:37 +00:00
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>
2018-11-26 22:53:37 +00:00
arowser
77832c9400
enable add_steal_notifiers only support backtrace library
2018-11-26 22:48:39 +00:00
ZmnSCPxj
e74349c506
doc/lightning-pay.7.txt: Clarify randomization by pay
command.
2018-11-26 22:25:25 +00:00
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>
2018-11-23 00:47:05 +01:00
Jonas Nick
da431333b8
Fix default lightning datadir in lightningd-config doc
2018-11-23 00:46:14 +01:00
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>
2018-11-22 05:15:42 +00:00