Handle rateLimitingCode packet (#1852)

This commit is contained in:
Adam Babik 2020-02-18 10:33:39 +01:00 committed by GitHub
parent 9c2c08d44c
commit 46b05c7478
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 1 deletions

View File

@ -955,7 +955,8 @@ func (w *Waku) runMessageLoop(p *Peer, rw p2p.MsgReadWriter) error {
}
case batchAcknowledgedCode:
if err := w.handleBatchAcknowledgeCode(p, packet, logger); err != nil {
logger.Warn("failed to handle batchAcknowledgedCode message, peer will be disconnected", zap.Binary("peer", peerID[:]), zap.Error(err))
return err
}
case powRequirementCode:
if err := w.handlePowRequirementCode(p, packet, logger); err != nil {
@ -967,6 +968,10 @@ func (w *Waku) runMessageLoop(p *Peer, rw p2p.MsgReadWriter) error {
logger.Warn("failed to decode bloom filter exchange message, peer will be disconnected", zap.Binary("peer", peerID[:]), zap.Error(err))
return err
}
case rateLimitingCode:
if err := w.handleRateLimitingCode(p, packet, logger); err != nil {
logger.Warn("failed to decode rate limits, peer will be disconnected", zap.Binary("peer", peerID[:]), zap.Error(err))
}
case p2pMessageCode:
if err := w.handleP2PMessageCode(p, packet, logger); err != nil {
logger.Warn("failed to decode direct message, peer will be disconnected", zap.Binary("peer", peerID[:]), zap.Error(err))
@ -1073,6 +1078,16 @@ func (w *Waku) handleBloomFilterExCode(p *Peer, packet p2p.Msg, logger *zap.Logg
return nil
}
func (w *Waku) handleRateLimitingCode(p *Peer, packet p2p.Msg, logger *zap.Logger) error {
var rateLimits RateLimits
if err := packet.Decode(&rateLimits); err != nil {
logger.Warn("invalid rate limits information", zap.Binary("peerID", p.peer.ID().Bytes()), zap.Error(err))
return errors.New("invalid rate limits exchange message")
}
p.setRateLimits(rateLimits)
return nil
}
func (w *Waku) handleP2PMessageCode(p *Peer, packet p2p.Msg, logger *zap.Logger) error {
// peer-to-peer message, sent directly to peer bypassing PoW checks, etc.
// this message is not supposed to be forwarded to other peers, and