diff --git a/waku/waku.go b/waku/waku.go index ad06fc63f..f2ddc435c 100644 --- a/waku/waku.go +++ b/waku/waku.go @@ -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