Files
indra/pkg/relay/handler-session.go
2023-02-25 19:09:28 +00:00

27 lines
863 B
Go

package relay
import (
"git-indra.lan/indra-labs/indra/pkg/messages/session"
"git-indra.lan/indra-labs/indra/pkg/types"
"git-indra.lan/indra-labs/indra/pkg/util/slice"
)
func (eng *Engine) session(on *session.Layer, b slice.Bytes,
c *slice.Cursor, prev types.Onion) {
log.D.Ln(prev == nil)
log.T.F("incoming session %s", on.ID)
pi := eng.FindPendingPreimage(on.PreimageHash())
if pi != nil {
// We need to delete this first in case somehow two such messages arrive
// at the same time, and we end up with duplicate sessions.
eng.DeletePendingPayment(pi.Preimage)
log.D.F("Adding session %s to %s", pi.ID, eng.GetLocalNodeAddress())
eng.AddSession(NewSession(pi.ID,
eng.GetLocalNode(), pi.Amount, on.Header, on.Payload, on.Hop))
eng.handleMessage(BudgeUp(b, *c), on)
} else {
log.E.Ln("dropping session message without payment")
}
}