sweep: prevent default fee preference fallback
We want to make sure clients are aware of their own fee preferences, rather than relying on defaults.
This commit is contained in:
parent
5485101f9f
commit
c70858dc46
@ -46,6 +46,10 @@ var (
|
|||||||
// for the configured max number of attempts.
|
// for the configured max number of attempts.
|
||||||
ErrTooManyAttempts = errors.New("sweep failed after max attempts")
|
ErrTooManyAttempts = errors.New("sweep failed after max attempts")
|
||||||
|
|
||||||
|
// ErrNoFeePreference is returned when we attempt to satisfy a sweep
|
||||||
|
// request from a client whom did not specify a fee preference.
|
||||||
|
ErrNoFeePreference = errors.New("no fee preference specified")
|
||||||
|
|
||||||
// ErrSweeperShuttingDown is an error returned when a client attempts to
|
// ErrSweeperShuttingDown is an error returned when a client attempts to
|
||||||
// make a request to the UtxoSweeper, but it is unable to handle it as
|
// make a request to the UtxoSweeper, but it is unable to handle it as
|
||||||
// it is/has already been stoppepd.
|
// it is/has already been stoppepd.
|
||||||
@ -394,6 +398,12 @@ func (s *UtxoSweeper) SweepInput(input input.Input,
|
|||||||
func (s *UtxoSweeper) feeRateForPreference(
|
func (s *UtxoSweeper) feeRateForPreference(
|
||||||
feePreference FeePreference) (lnwallet.SatPerKWeight, error) {
|
feePreference FeePreference) (lnwallet.SatPerKWeight, error) {
|
||||||
|
|
||||||
|
// Ensure a type of fee preference is specified to prevent using a
|
||||||
|
// default below.
|
||||||
|
if feePreference.FeeRate == 0 && feePreference.ConfTarget == 0 {
|
||||||
|
return 0, ErrNoFeePreference
|
||||||
|
}
|
||||||
|
|
||||||
feeRate, err := DetermineFeePerKw(s.cfg.FeeEstimator, feePreference)
|
feeRate, err := DetermineFeePerKw(s.cfg.FeeEstimator, feePreference)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
|
@ -372,6 +372,12 @@ func assertTxFeeRate(t *testing.T, tx *wire.MsgTx,
|
|||||||
func TestSuccess(t *testing.T) {
|
func TestSuccess(t *testing.T) {
|
||||||
ctx := createSweeperTestContext(t)
|
ctx := createSweeperTestContext(t)
|
||||||
|
|
||||||
|
// Sweeping an input without a fee preference should result in an error.
|
||||||
|
_, err := ctx.sweeper.SweepInput( spendableInputs[0], FeePreference{})
|
||||||
|
if err != ErrNoFeePreference {
|
||||||
|
t.Fatalf("expected ErrNoFeePreference, got %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
resultChan, err := ctx.sweeper.SweepInput(
|
resultChan, err := ctx.sweeper.SweepInput(
|
||||||
spendableInputs[0], defaultFeePref,
|
spendableInputs[0], defaultFeePref,
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user