@@ -413,11 +413,14 @@ static uint64_t receive_offer(struct crypto_state *cs,
413
413
struct feerange {
414
414
enum side higher_side ;
415
415
u64 min , max ;
416
+
417
+ bool allow_mistakes ;
416
418
};
417
419
418
420
static void init_feerange (struct feerange * feerange ,
419
421
u64 commitment_fee ,
420
- const u64 offer [NUM_SIDES ])
422
+ const u64 offer [NUM_SIDES ],
423
+ bool allow_mistakes )
421
424
{
422
425
feerange -> min = 0 ;
423
426
@@ -444,13 +447,17 @@ static void adjust_feerange(struct crypto_state *cs,
444
447
struct feerange * feerange ,
445
448
u64 offer , enum side side )
446
449
{
447
- if (offer < feerange -> min || offer > feerange -> max )
448
- peer_failed (PEER_FD , cs , channel_id ,
449
- "%s offer %" PRIu64
450
- " not between %" PRIu64 " and %" PRIu64 ,
451
- side == LOCAL ? "local" : "remote" ,
452
- offer , feerange -> min , feerange -> max );
450
+ if (offer < feerange -> min || offer > feerange -> max ) {
451
+ if (!feerange -> allow_mistakes || side != REMOTE )
452
+ peer_failed (PEER_FD , cs , channel_id ,
453
+ "%s offer %" PRIu64
454
+ " not between %" PRIu64 " and %" PRIu64 ,
455
+ side == LOCAL ? "local" : "remote" ,
456
+ offer , feerange -> min , feerange -> max );
453
457
458
+ status_trace ("Allowing deprecated out-of-range fee" );
459
+ return ;
460
+ }
454
461
455
462
/* BOLT #2:
456
463
*
@@ -514,6 +521,7 @@ int main(int argc, char *argv[])
514
521
u64 next_index [NUM_SIDES ], revocations_received ;
515
522
u64 gossip_index ;
516
523
enum side whose_turn ;
524
+ bool deprecated_api ;
517
525
518
526
subdaemon_setup (argc , argv );
519
527
@@ -536,7 +544,8 @@ int main(int argc, char *argv[])
536
544
& reconnected ,
537
545
& next_index [LOCAL ],
538
546
& next_index [REMOTE ],
539
- & revocations_received ))
547
+ & revocations_received ,
548
+ & deprecated_api ))
540
549
master_badmsg (WIRE_CLOSING_INIT , msg );
541
550
542
551
status_trace ("satoshi_out = %" PRIu64 "/%" PRIu64 ,
@@ -582,7 +591,7 @@ int main(int argc, char *argv[])
582
591
}
583
592
584
593
/* Now we have first two points, we can init fee range. */
585
- init_feerange (& feerange , commitment_fee , offer );
594
+ init_feerange (& feerange , commitment_fee , offer , deprecated_api );
586
595
587
596
/* Now apply the one constraint from above (other is inside loop). */
588
597
adjust_feerange (& cs , & channel_id , & feerange ,
0 commit comments