plugins/libplugin-pay.c: Describe the bits of unrecognized failure codes.

This commit is contained in:
ZmnSCPxj jxPCSnmZ 2020-08-15 17:56:41 +08:00 committed by Christian Decker
parent 0d2d85ab5f
commit d89c77c0ce
1 changed files with 27 additions and 4 deletions

View File

@ -806,6 +806,29 @@ failure_is_blockheight_disagreement(const struct payment *p,
return true;
}
static char *describe_failcode(const tal_t *ctx, enum onion_type failcode)
{
char *rv = tal_strdup(ctx, "");
if (failcode & BADONION) {
tal_append_fmt(&rv, "BADONION|");
failcode &= ~BADONION;
}
if (failcode & PERM) {
tal_append_fmt(&rv, "PERM|");
failcode &= ~PERM;
}
if (failcode & NODE) {
tal_append_fmt(&rv, "NODE|");
failcode &= ~NODE;
}
if (failcode & UPDATE) {
tal_append_fmt(&rv, "UPDATE|");
failcode &= ~UPDATE;
}
tal_append_fmt(&rv, "%u", failcode);
return rv;
}
static struct command_result *
handle_final_failure(struct command *cmd,
struct payment *p,
@ -893,9 +916,9 @@ handle_final_failure(struct command *cmd,
strange_error:
paymod_log(p, LOG_UNUSUAL,
"Final node %s reported strange error code %u",
"Final node %s reported strange error code %04x (%s)",
type_to_string(tmpctx, struct node_id, final_id),
failcode);
failcode, describe_failcode(tmpctx, failcode));
error:
p->result->code = PAY_DESTINATION_PERM_FAIL;
@ -983,9 +1006,9 @@ handle_intermediate_failure(struct command *cmd,
strange_error:
paymod_log(p, LOG_UNUSUAL,
"Intermediate node %s reported strange error code %u",
"Intermediate node %s reported strange error code %04x (%s)",
type_to_string(tmpctx, struct node_id, errnode),
failcode);
failcode, describe_failcode(tmpctx, failcode));
error:
payment_fail(p, "%s", p->result->message);