Commit ade1f34
committed
Fix race condition causing async payment failure
As the LSP of an async sender, when we receive an update_add with the hold_htlc
flag set, after its onion is decoded we transition the pending HTLC to the
ChannelManager::pending_intercepted_htlcs. However, if we receive the
release_held_htlc message from the receiver *before* we've had a chance to make
this transition, we'll fail to release the HTLC and it will sit in the pending
intercepts map until it is failed backwards.
To fix this race condition, if we receive release_held_htlc from the recipient
we'll not only check the pending_intercepted_htlcs map for the presence of this
HTLC but also check the map where we keep HTLCs prior to their onions being
decoded.1 parent d323b9c commit ade1f34
File tree
4 files changed
+131
-9
lines changed- lightning/src
- blinded_path
- ln
- offers
4 files changed
+131
-9
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
587 | 587 | | |
588 | 588 | | |
589 | 589 | | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
590 | 604 | | |
591 | 605 | | |
592 | 606 | | |
| |||
645 | 659 | | |
646 | 660 | | |
647 | 661 | | |
| 662 | + | |
| 663 | + | |
648 | 664 | | |
649 | 665 | | |
650 | 666 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3349 | 3349 | | |
3350 | 3350 | | |
3351 | 3351 | | |
| 3352 | + | |
| 3353 | + | |
| 3354 | + | |
| 3355 | + | |
| 3356 | + | |
| 3357 | + | |
| 3358 | + | |
| 3359 | + | |
| 3360 | + | |
| 3361 | + | |
| 3362 | + | |
| 3363 | + | |
| 3364 | + | |
| 3365 | + | |
| 3366 | + | |
| 3367 | + | |
| 3368 | + | |
| 3369 | + | |
| 3370 | + | |
| 3371 | + | |
| 3372 | + | |
| 3373 | + | |
| 3374 | + | |
| 3375 | + | |
| 3376 | + | |
| 3377 | + | |
| 3378 | + | |
| 3379 | + | |
| 3380 | + | |
| 3381 | + | |
| 3382 | + | |
| 3383 | + | |
| 3384 | + | |
| 3385 | + | |
| 3386 | + | |
| 3387 | + | |
| 3388 | + | |
| 3389 | + | |
| 3390 | + | |
| 3391 | + | |
| 3392 | + | |
| 3393 | + | |
| 3394 | + | |
| 3395 | + | |
| 3396 | + | |
| 3397 | + | |
| 3398 | + | |
| 3399 | + | |
| 3400 | + | |
| 3401 | + | |
| 3402 | + | |
| 3403 | + | |
| 3404 | + | |
| 3405 | + | |
| 3406 | + | |
| 3407 | + | |
| 3408 | + | |
| 3409 | + | |
| 3410 | + | |
| 3411 | + | |
| 3412 | + | |
| 3413 | + | |
| 3414 | + | |
| 3415 | + | |
| 3416 | + | |
| 3417 | + | |
| 3418 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3509 | 3509 | | |
3510 | 3510 | | |
3511 | 3511 | | |
| 3512 | + | |
3512 | 3513 | | |
3513 | 3514 | | |
3514 | 3515 | | |
| |||
3521 | 3522 | | |
3522 | 3523 | | |
3523 | 3524 | | |
3524 | | - | |
| 3525 | + | |
3525 | 3526 | | |
3526 | 3527 | | |
3527 | 3528 | | |
| |||
5623 | 5624 | | |
5624 | 5625 | | |
5625 | 5626 | | |
5626 | | - | |
| 5627 | + | |
| 5628 | + | |
5627 | 5629 | | |
5628 | 5630 | | |
5629 | 5631 | | |
5630 | | - | |
| 5632 | + | |
| 5633 | + | |
| 5634 | + | |
| 5635 | + | |
| 5636 | + | |
| 5637 | + | |
5631 | 5638 | | |
5632 | 5639 | | |
5633 | 5640 | | |
| |||
11302 | 11309 | | |
11303 | 11310 | | |
11304 | 11311 | | |
| 11312 | + | |
11305 | 11313 | | |
11306 | 11314 | | |
11307 | 11315 | | |
11308 | 11316 | | |
11309 | 11317 | | |
11310 | 11318 | | |
11311 | 11319 | | |
11312 | | - | |
| 11320 | + | |
11313 | 11321 | | |
11314 | 11322 | | |
11315 | 11323 | | |
| |||
11786 | 11794 | | |
11787 | 11795 | | |
11788 | 11796 | | |
| 11797 | + | |
11789 | 11798 | | |
11790 | 11799 | | |
11791 | 11800 | | |
11792 | 11801 | | |
11793 | | - | |
| 11802 | + | |
11794 | 11803 | | |
11795 | 11804 | | |
11796 | 11805 | | |
| |||
15029 | 15038 | | |
15030 | 15039 | | |
15031 | 15040 | | |
15032 | | - | |
| 15041 | + | |
| 15042 | + | |
| 15043 | + | |
| 15044 | + | |
| 15045 | + | |
| 15046 | + | |
| 15047 | + | |
| 15048 | + | |
| 15049 | + | |
| 15050 | + | |
| 15051 | + | |
| 15052 | + | |
| 15053 | + | |
| 15054 | + | |
| 15055 | + | |
| 15056 | + | |
| 15057 | + | |
| 15058 | + | |
| 15059 | + | |
| 15060 | + | |
| 15061 | + | |
| 15062 | + | |
| 15063 | + | |
| 15064 | + | |
| 15065 | + | |
| 15066 | + | |
| 15067 | + | |
| 15068 | + | |
15033 | 15069 | | |
15034 | 15070 | | |
15035 | 15071 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1227 | 1227 | | |
1228 | 1228 | | |
1229 | 1229 | | |
1230 | | - | |
| 1230 | + | |
1231 | 1231 | | |
1232 | 1232 | | |
1233 | 1233 | | |
1234 | 1234 | | |
1235 | 1235 | | |
1236 | | - | |
1237 | | - | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
1238 | 1241 | | |
1239 | 1242 | | |
1240 | 1243 | | |
| |||
0 commit comments