@@ -343,11 +343,14 @@ static uint64_t receive_offer(struct crypto_state *cs,
343
343
struct feerange {
344
344
enum side higher_side ;
345
345
u64 min , max ;
346
+
347
+ bool allow_mistakes ;
346
348
};
347
349
348
350
static void init_feerange (struct feerange * feerange ,
349
351
u64 commitment_fee ,
350
- const u64 offer [NUM_SIDES ])
352
+ const u64 offer [NUM_SIDES ],
353
+ bool allow_mistakes )
351
354
{
352
355
feerange -> min = 0 ;
353
356
@@ -374,13 +377,17 @@ static void adjust_feerange(struct crypto_state *cs,
374
377
struct feerange * feerange ,
375
378
u64 offer , enum side side )
376
379
{
377
- if (offer < feerange -> min || offer > feerange -> max )
378
- peer_failed (PEER_FD , cs , channel_id ,
379
- "%s offer %" PRIu64
380
- " not between %" PRIu64 " and %" PRIu64 ,
381
- side == LOCAL ? "local" : "remote" ,
382
- offer , feerange -> min , feerange -> max );
380
+ if (offer < feerange -> min || offer > feerange -> max ) {
381
+ if (!feerange -> allow_mistakes || side != REMOTE )
382
+ peer_failed (PEER_FD , cs , channel_id ,
383
+ "%s offer %" PRIu64
384
+ " not between %" PRIu64 " and %" PRIu64 ,
385
+ side == LOCAL ? "local" : "remote" ,
386
+ offer , feerange -> min , feerange -> max );
383
387
388
+ status_trace ("Allowing deprecated out-of-range fee" );
389
+ return ;
390
+ }
384
391
385
392
/* BOLT #2:
386
393
*
@@ -444,6 +451,7 @@ int main(int argc, char *argv[])
444
451
u64 next_index [NUM_SIDES ], revocations_received ;
445
452
u64 gossip_index ;
446
453
enum side whose_turn ;
454
+ bool deprecated_api ;
447
455
448
456
subdaemon_setup (argc , argv );
449
457
@@ -466,7 +474,8 @@ int main(int argc, char *argv[])
466
474
& reconnected ,
467
475
& next_index [LOCAL ],
468
476
& next_index [REMOTE ],
469
- & revocations_received ))
477
+ & revocations_received ,
478
+ & deprecated_api ))
470
479
master_badmsg (WIRE_CLOSING_INIT , msg );
471
480
472
481
status_trace ("satoshi_out = %" PRIu64 "/%" PRIu64 ,
@@ -512,7 +521,7 @@ int main(int argc, char *argv[])
512
521
}
513
522
514
523
/* Now we have first two points, we can init fee range. */
515
- init_feerange (& feerange , commitment_fee , offer );
524
+ init_feerange (& feerange , commitment_fee , offer , deprecated_api );
516
525
517
526
/* Now apply the one constraint from above (other is inside loop). */
518
527
adjust_feerange (& cs , & channel_id , & feerange ,
0 commit comments