In 6e4ff6a7d2 ("offers: add a blinded path
if we have no advertized address") we were overzealous, and set blinded
paths not just for offers and invoicerequests, but for invoices themselves.
This has revealed various interop issues (which is great, but not good
for our users!) so we should disable that. It also reduces the reliability
of payments in general.
Changelog-None: fixes previously overzealous addition
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
98 lines
3.0 KiB
C
98 lines
3.0 KiB
C
#ifndef LIGHTNING_PLUGINS_OFFERS_H
|
|
#define LIGHTNING_PLUGINS_OFFERS_H
|
|
#include "config.h"
|
|
|
|
struct command_result;
|
|
struct command;
|
|
struct onion_message;
|
|
struct plugin;
|
|
|
|
/* This is me. */
|
|
extern struct pubkey id;
|
|
/* --fetchinvoice-noconnect */
|
|
extern bool disable_connect;
|
|
/* --cltv-final */
|
|
extern u16 cltv_final;
|
|
/* Current header_count */
|
|
extern u32 blockheight;
|
|
/* Basis for invoice path_secrets */
|
|
extern struct secret invoicesecret_base;
|
|
/* Base for offers path_secrets */
|
|
extern struct secret offerblinding_base;
|
|
/* Base for node aliases for invoice requests */
|
|
extern struct secret nodealias_base;
|
|
/* --dev-invoice-bpath-scid */
|
|
extern bool dev_invoice_bpath_scid;
|
|
/* --dev-invoice-internal-scid */
|
|
extern struct short_channel_id *dev_invoice_internal_scid;
|
|
/* This is me. */
|
|
extern struct pubkey id;
|
|
|
|
/* Helper to send a reply (connecting if required), and discard result */
|
|
struct command_result *WARN_UNUSED_RESULT
|
|
send_onion_reply(struct command *cmd,
|
|
struct blinded_path *reply_path,
|
|
struct tlv_onionmsg_tlv *payload);
|
|
|
|
/* Helper to send an onion message */
|
|
#define inject_onionmessage(cmd, omsg, success, fail, arg) \
|
|
inject_onionmessage_((cmd), (omsg), \
|
|
typesafe_cb_preargs(struct command_result *, void *, \
|
|
(success), (arg), \
|
|
struct command *, \
|
|
const char *, \
|
|
const char *, \
|
|
const jsmntok_t *), \
|
|
typesafe_cb_preargs(struct command_result *, void *, \
|
|
(fail), (arg), \
|
|
struct command *, \
|
|
const char *, \
|
|
const char *, \
|
|
const jsmntok_t *), \
|
|
(arg))
|
|
|
|
struct command_result *
|
|
inject_onionmessage_(struct command *cmd,
|
|
const struct onion_message *omsg,
|
|
struct command_result *(*cb)(struct command *command,
|
|
const char *method,
|
|
const char *buf,
|
|
const jsmntok_t *result,
|
|
void *arg),
|
|
struct command_result *(*errcb)(struct command *command,
|
|
const char *method,
|
|
const char *buf,
|
|
const jsmntok_t *result,
|
|
void *arg),
|
|
void *arg);
|
|
|
|
/* Get the (latest) gossmap */
|
|
struct gossmap *get_gossmap(struct plugin *plugin);
|
|
|
|
/* Get the best (private) channel */
|
|
struct chaninfo {
|
|
struct pubkey id;
|
|
struct amount_msat capacity, htlc_min, htlc_max;
|
|
u32 feebase, feeppm, cltv;
|
|
};
|
|
|
|
/* Calls listpeerchannels, then cb with best peer (if any!) which has needed_feature */
|
|
struct command_result *find_best_peer_(struct command *cmd,
|
|
int needed_feature,
|
|
struct command_result *(*cb)(struct command *,
|
|
const struct chaninfo *,
|
|
void *),
|
|
void *arg);
|
|
|
|
#define find_best_peer(cmd, needed_feature, cb, arg) \
|
|
find_best_peer_((cmd), (needed_feature), \
|
|
typesafe_cb_preargs(struct command_result *, void *, \
|
|
(cb), (arg), \
|
|
struct command *, \
|
|
const struct chaninfo *), \
|
|
(arg))
|
|
|
|
/* Do we want a blinded path from a peer? */
|
|
bool we_want_blinded_path(struct plugin *plugin, bool for_payment);
|
|
#endif /* LIGHTNING_PLUGINS_OFFERS_H */
|