htlcswitch: encapsulate exposed packet info
This commit is contained in:
parent
607927634d
commit
74db43282c
@ -115,15 +115,15 @@ type interceptedForward struct {
|
||||
}
|
||||
|
||||
// Packet returns the intercepted htlc packet.
|
||||
func (f *interceptedForward) Packet() lnwire.UpdateAddHTLC {
|
||||
return *f.htlc
|
||||
}
|
||||
|
||||
// CircuitKey returns the circuit key for the intercepted htlc.
|
||||
func (f *interceptedForward) CircuitKey() channeldb.CircuitKey {
|
||||
return channeldb.CircuitKey{
|
||||
ChanID: f.packet.incomingChanID,
|
||||
HtlcID: f.packet.incomingHTLCID,
|
||||
func (f *interceptedForward) Packet() InterceptedPacket {
|
||||
return InterceptedPacket{
|
||||
IncomingCircuit: channeldb.CircuitKey{
|
||||
ChanID: f.packet.incomingChanID,
|
||||
HtlcID: f.packet.incomingHTLCID,
|
||||
},
|
||||
Hash: f.htlc.PaymentHash,
|
||||
OutgoingExpiry: f.htlc.Expiry,
|
||||
OutgoingAmount: f.htlc.Amount,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -200,17 +200,32 @@ type InterceptableHtlcForwarder interface {
|
||||
// and resolve it later or let the switch execute its default behavior.
|
||||
type ForwardInterceptor func(InterceptedForward) bool
|
||||
|
||||
// InterceptedPacket contains the relevant information for the interceptor about
|
||||
// an htlc.
|
||||
type InterceptedPacket struct {
|
||||
// IncomingCircuit contains the incoming channel and htlc id of the
|
||||
// packet.
|
||||
IncomingCircuit channeldb.CircuitKey
|
||||
|
||||
// Hash is the payment hash of the htlc.
|
||||
Hash lntypes.Hash
|
||||
|
||||
// OutgoingExpiry is the absolute block height at which the outgoing
|
||||
// htlc expires.
|
||||
OutgoingExpiry uint32
|
||||
|
||||
// OutgoingAmount is the amount to forward.
|
||||
OutgoingAmount lnwire.MilliSatoshi
|
||||
}
|
||||
|
||||
// InterceptedForward is passed to the ForwardInterceptor for every forwarded
|
||||
// htlc. It contains all the information about the packet which accordingly
|
||||
// the interceptor decides if to hold or not.
|
||||
// In addition this interface allows a later resolution by calling either
|
||||
// Resume, Settle or Fail.
|
||||
type InterceptedForward interface {
|
||||
// CircuitKey returns the intercepted packet.
|
||||
CircuitKey() channeldb.CircuitKey
|
||||
|
||||
// Packet returns the intercepted packet.
|
||||
Packet() lnwire.UpdateAddHTLC
|
||||
Packet() InterceptedPacket
|
||||
|
||||
// Resume notifies the intention to resume an existing hold forward. This
|
||||
// basically means the caller wants to resume with the default behavior for
|
||||
|
@ -148,18 +148,18 @@ func (r *forwardInterceptor) holdAndForwardToClient(
|
||||
forward htlcswitch.InterceptedForward) error {
|
||||
|
||||
htlc := forward.Packet()
|
||||
inKey := forward.CircuitKey()
|
||||
inKey := htlc.IncomingCircuit
|
||||
|
||||
// First hold the forward, then send to client.
|
||||
r.holdForwards[forward.CircuitKey()] = forward
|
||||
r.holdForwards[inKey] = forward
|
||||
interceptionRequest := &ForwardHtlcInterceptRequest{
|
||||
IncomingCircuitKey: &CircuitKey{
|
||||
ChanId: inKey.ChanID.ToUint64(),
|
||||
HtlcId: inKey.HtlcID,
|
||||
},
|
||||
PaymentHash: htlc.PaymentHash[:],
|
||||
OutgoingAmountMsat: uint64(htlc.Amount),
|
||||
OutgoingExpiry: htlc.Expiry,
|
||||
PaymentHash: htlc.Hash[:],
|
||||
OutgoingAmountMsat: uint64(htlc.OutgoingAmount),
|
||||
OutgoingExpiry: htlc.OutgoingExpiry,
|
||||
}
|
||||
|
||||
return r.stream.Send(interceptionRequest)
|
||||
|
Loading…
Reference in New Issue
Block a user