htlcswitch: as exit node check for invoice and HTLC value match after existence
This commit is contained in:
parent
a29210f089
commit
e02af3f877
@ -1174,6 +1174,22 @@ func (l *channelLink) processLockedInHtlcs(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we're not currently in debug mode, and
|
||||||
|
// the extended htlc doesn't meet the value
|
||||||
|
// requested, then we'll fail the htlc.
|
||||||
|
// Otherwise, we settle this htlc within our
|
||||||
|
// local state update log, then send the update
|
||||||
|
// entry to the remote party.
|
||||||
|
if !l.cfg.DebugHTLC && pd.Amount < invoice.Terms.Value {
|
||||||
|
log.Errorf("rejecting htlc due to incorrect "+
|
||||||
|
"amount: expected %v, received %v",
|
||||||
|
invoice.Terms.Value, pd.Amount)
|
||||||
|
failure := lnwire.FailIncorrectPaymentAmount{}
|
||||||
|
l.sendHTLCError(pd.RHash, failure, obfuscator)
|
||||||
|
needUpdate = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// As we're the exit hop, we'll double check
|
// As we're the exit hop, we'll double check
|
||||||
// the hop-payload included in the HTLC to
|
// the hop-payload included in the HTLC to
|
||||||
// ensure that it was crafted correctly by the
|
// ensure that it was crafted correctly by the
|
||||||
@ -1196,6 +1212,8 @@ func (l *channelLink) processLockedInHtlcs(
|
|||||||
|
|
||||||
// We'll also ensure that our time-lock value
|
// We'll also ensure that our time-lock value
|
||||||
// has been computed correctly.
|
// has been computed correctly.
|
||||||
|
//
|
||||||
|
// TODO(roasbeef): also accept global default?
|
||||||
expectedHeight := heightNow + l.cfg.FwrdingPolicy.TimeLockDelta
|
expectedHeight := heightNow + l.cfg.FwrdingPolicy.TimeLockDelta
|
||||||
if !l.cfg.DebugHTLC {
|
if !l.cfg.DebugHTLC {
|
||||||
switch {
|
switch {
|
||||||
@ -1227,22 +1245,6 @@ func (l *channelLink) processLockedInHtlcs(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we're not currently in debug mode, and
|
|
||||||
// the extended htlc doesn't meet the value
|
|
||||||
// requested, then we'll fail the htlc.
|
|
||||||
// Otherwise, we settle this htlc within our
|
|
||||||
// local state update log, then send the update
|
|
||||||
// entry to the remote party.
|
|
||||||
if !l.cfg.DebugHTLC && pd.Amount < invoice.Terms.Value {
|
|
||||||
log.Errorf("rejecting htlc due to incorrect "+
|
|
||||||
"amount: expected %v, received %v",
|
|
||||||
invoice.Terms.Value, pd.Amount)
|
|
||||||
failure := lnwire.FailIncorrectPaymentAmount{}
|
|
||||||
l.sendHTLCError(pd.RHash, failure, obfuscator)
|
|
||||||
needUpdate = true
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if l.cfg.DebugHTLC && l.cfg.HodlHTLC {
|
if l.cfg.DebugHTLC && l.cfg.HodlHTLC {
|
||||||
log.Warnf("hodl HTLC mode enabled, " +
|
log.Warnf("hodl HTLC mode enabled, " +
|
||||||
"will not attempt to settle " +
|
"will not attempt to settle " +
|
||||||
|
Loading…
Reference in New Issue
Block a user