mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-09 04:21:20 +00:00
ff2e763a98
Added no disconnecting with metadata requests, and we answer now with a bogus status call and proper prefix for both status and metadata request. This changes allows for nimbus nodes to connect to us and actually stay connected.
57 lines
1.7 KiB
Go
57 lines
1.7 KiB
Go
package handlers
|
|
|
|
import (
|
|
"github.com/ledgerwatch/erigon/cmd/lightclient/sentinel/communication"
|
|
"github.com/ledgerwatch/erigon/cmd/lightclient/sentinel/communication/p2p"
|
|
"github.com/ledgerwatch/erigon/cmd/lightclient/utils"
|
|
"github.com/ledgerwatch/log/v3"
|
|
)
|
|
|
|
// These below are the handlers for heartbeat functions
|
|
|
|
func (c *ConsensusHandlers) goodbyeHandler(ctx *communication.StreamContext, dat *p2p.Goodbye) error {
|
|
//log.Info("[Lightclient] Received", "goodbye", dat.Reason)
|
|
defer c.peers.DisconnectPeer(ctx.Stream.Conn().RemotePeer())
|
|
_, err := ctx.Codec.WritePacket(dat, SuccessfullResponsePrefix)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// type safe handlers which all have access to the original stream & decompressed data
|
|
// ping handler
|
|
func pingHandler(ctx *communication.StreamContext, dat *p2p.Ping) error {
|
|
// since packets are just structs, they can be resent with no issue
|
|
_, err := ctx.Codec.WritePacket(dat, SuccessfullResponsePrefix)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *ConsensusHandlers) metadataHandlerV1(ctx *communication.StreamContext, dat *communication.EmptyPacket) error {
|
|
_, err := ctx.Codec.WritePacket(c.metadataV1, SuccessfullResponsePrefix)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// TODO: Actually respond with proper status
|
|
func statusHandler(ctx *communication.StreamContext, dat *p2p.Status) error {
|
|
log.Debug("[ReqResp] Status",
|
|
"epoch", dat.FinalizedEpoch,
|
|
"final root", utils.BytesToHex(dat.FinalizedRoot),
|
|
"head root", utils.BytesToHex(dat.HeadRoot),
|
|
"head slot", dat.HeadSlot,
|
|
"fork digest", utils.BytesToHex(dat.ForkDigest),
|
|
)
|
|
_, err := ctx.Codec.WritePacket(dat, SuccessfullResponsePrefix)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|