diff --git a/lightningd/peer_htlcs.c b/lightningd/peer_htlcs.c index 265146bb7..bfac59955 100644 --- a/lightningd/peer_htlcs.c +++ b/lightningd/peer_htlcs.c @@ -150,7 +150,11 @@ static void fail_in_htlc(struct htlc_in *hin, htlc_in_check(hin, __func__); #if EXPERIMENTAL_FEATURES - /* In a blinded path, all failures become invalid_onion_blinding */ + /* BOLT-route-blinding #4: + * - If `blinding_point` is set in the incoming `update_add_htlc`: + * - MUST return `invalid_onion_blinding` on any error, including + * downstream errors received from forwarding HTLCs. + */ if (hin->blinding) { failed_htlc = mk_failed_htlc_badonion(tmpctx, hin, WIRE_INVALID_ONION_BLINDING); diff --git a/plugins/libplugin-pay.c b/plugins/libplugin-pay.c index 354a18646..1602b8a8e 100644 --- a/plugins/libplugin-pay.c +++ b/plugins/libplugin-pay.c @@ -1222,9 +1222,7 @@ handle_final_failure(struct command *cmd, case WIRE_PERMANENT_NODE_FAILURE: case WIRE_TEMPORARY_NODE_FAILURE: case WIRE_REQUIRED_NODE_FEATURE_MISSING: -#if EXPERIMENTAL_FEATURES case WIRE_INVALID_ONION_BLINDING: -#endif case WIRE_INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS: case WIRE_MPP_TIMEOUT: goto error; @@ -1325,9 +1323,7 @@ handle_intermediate_failure(struct command *cmd, case WIRE_REQUIRED_NODE_FEATURE_MISSING: case WIRE_INVALID_ONION_PAYLOAD: case WIRE_INVALID_REALM: -#if EXPERIMENTAL_FEATURES case WIRE_INVALID_ONION_BLINDING: -#endif tal_arr_expand(&root->excluded_nodes, *errnode); goto error; @@ -2239,9 +2235,7 @@ static bool payment_can_retry(struct payment *p) case WIRE_PERMANENT_CHANNEL_FAILURE: case WIRE_REQUIRED_CHANNEL_FEATURE_MISSING: case WIRE_TEMPORARY_CHANNEL_FAILURE: -#if EXPERIMENTAL_FEATURES case WIRE_INVALID_ONION_BLINDING: -#endif return true; } diff --git a/wire/extracted_onion_05_route-blinding_error.patch b/wire/extracted_onion_05_route-blinding_error.patch new file mode 100644 index 000000000..fba74e702 --- /dev/null +++ b/wire/extracted_onion_05_route-blinding_error.patch @@ -0,0 +1,8 @@ +--- wire/onion_wire.csv 2022-08-10 16:09:32.851789435 +0930 ++++ wire/onion_wire.csv.raw 2022-08-10 16:18:47.411275132 +0930 +@@ -95,3 +81,5 @@ + msgdata,invalid_onion_payload,type,bigsize, + msgdata,invalid_onion_payload,offset,u16, + msgtype,mpp_timeout,23 ++msgtype,invalid_onion_blinding,BADONION|PERM|24 ++msgdata,invalid_onion_blinding,sha256_of_onion,sha256, diff --git a/wire/extracted_onion_exp_badonion_blinding.patch b/wire/extracted_onion_exp_badonion_blinding.patch deleted file mode 100644 index 057e741a8..000000000 --- a/wire/extracted_onion_exp_badonion_blinding.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff --git a/wire/extracted_onion_wire_csv b/wire/extracted_onion_wire_csv -index 58f278f38..253a50012 100644 ---- a/wire/extracted_onion_wire_csv -+++ b/wire/extracted_onion_wire_csv -@@ -71,3 +71,4 @@ msgtype,invalid_onion_payload,PERM|22 - msgdata,invalid_onion_payload,type,bigsize, - msgdata,invalid_onion_payload,offset,u16, - msgtype,mpp_timeout,23 -+msgtype,invalid_onion_blinding,BADONION|PERM|24 diff --git a/wire/onion_wire.csv b/wire/onion_wire.csv index 60cb85109..5f18603ee 100644 --- a/wire/onion_wire.csv +++ b/wire/onion_wire.csv @@ -96,3 +96,5 @@ msgtype,invalid_onion_payload,PERM|22 msgdata,invalid_onion_payload,type,bigsize, msgdata,invalid_onion_payload,offset,u16, msgtype,mpp_timeout,23 +msgtype,invalid_onion_blinding,BADONION|PERM|24 +msgdata,invalid_onion_blinding,sha256_of_onion,sha256,