Rusty Russell
1be4d42ca3
fetchinvoice: don't abort() if we try to fetch an invoice from ourselves.
blindedpath.c does:
```
size_t num = tal_count(route);
if (!num)
abort();
```
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
001b5d6416
offers: make it a runtime option.
The fetchinvoice and offers plugins disable themselves if the option
isn't enabled (it's enabled by default on EXPERIMENTAL_FEATURES).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Added: `experimental-offers` enables fetch, payment and creation of (early draft) offers.
4 years ago
Rusty Russell
27c006f7aa
libplugin: make init return a string.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Added: libplugin: init can return a non-NULL string to disable the plugin.
4 years ago
Rusty Russell
af46a4f57d
fetchinvoice: allow amounts to be specified.
As per lastest revision of the spec, we can specify amounts in invoice
requests even if the offer already specifies it, as long as we exceed
the amount given. This allows for tipping, and amount obfuscation.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
030a19a8af
sendinvoice: don't allow separate invoice and command timeouts.
It was too confusing, and can be added later if desired.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
d867fab3a7
sendinvoice: call waitinvoice directly to on invoice payment.
Suggested-by: Christian Decker
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
55983827b6
fetchinvoice: try direct peers if we can't route.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
bdfcec3eb6
fetchinvoice: check we're in the period before attempting to fetch.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
dae477175c
fetchinvoice: implement timeout.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
075c25fc08
plugins/fetchinvoice: handle sendinvoice timeout, error or payment.
If they pay the invoice, they don't bother replying; that's just for
errors.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
dc2ba6f9d9
plugins/fetchinvoice: implement `sendinvoice` command.
As fetchinvoice handles normal offers, sendinvoice handles
send_invoice offers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
09b18bf64f
libplugin: replace rpc_delve with rpc_scan.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
52af729641
plugins/offer and plugins/fetchinvoice: send and recv errors.
This also lets us extend our testing to cover error cases.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
96caf9f4ab
fetchinvoice: return the next period for recurring offers.
This is useful for the caller to know when to call again.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
69ddf818c7
plugins/fetchinvoice: catch invoice_request reply.
Using onionmessage hook, we get the response and either present it
to the user (invoice) or return the error to the user.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago
Rusty Russell
3eada358e9
plugins/fetchinvoice: plugin to send an invoice_request for a given offer
Doesn't catch the reply yet, but prepares the invoice request based on
the offer and sends it.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
4 years ago