Audit changes.
This commit is contained in:
@@ -7,18 +7,29 @@ import (
|
||||
"net"
|
||||
"net/netip"
|
||||
"time"
|
||||
|
||||
"git.crumpington.com/lib/go/ratelimiter"
|
||||
)
|
||||
|
||||
func Receiver(selfVPNIP netip.Addr, ch chan<- Packet) {
|
||||
limiters := make([]*ratelimiter.Limiter, 256)
|
||||
for i := range limiters {
|
||||
limiters[i] = ratelimiter.New(ratelimiter.Config{
|
||||
BurstLimit: 1,
|
||||
FillPeriod: broadcastInterval / 2,
|
||||
MaxWaitCount: 0,
|
||||
})
|
||||
}
|
||||
|
||||
for {
|
||||
if err := receiver(selfVPNIP, ch); err != nil {
|
||||
if err := receiver(selfVPNIP, limiters, ch); err != nil {
|
||||
log.Printf("[MCReader] %v", err)
|
||||
}
|
||||
time.Sleep(errorTimeout)
|
||||
}
|
||||
}
|
||||
|
||||
func receiver(selfVPNIP netip.Addr, ch chan<- Packet) error {
|
||||
func receiver(selfVPNIP netip.Addr, limiters []*ratelimiter.Limiter, ch chan<- Packet) error {
|
||||
selfIP := selfVPNIP.As4()[3]
|
||||
|
||||
conn, err := net.ListenMulticastUDP("udp", nil, multicastAddr(selfVPNIP))
|
||||
@@ -44,6 +55,9 @@ func receiver(selfVPNIP netip.Addr, ch chan<- Packet) error {
|
||||
}
|
||||
|
||||
packet := unmarshal(buf[:n])
|
||||
if err := limiters[packet.PeerIP].Limit(); err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if packet.PeerIP == selfIP {
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user