Audit changes.

This commit is contained in:
jdl
2026-06-13 15:42:40 +02:00
parent 1f7d3151b5
commit 243e75dd09

View File

@@ -7,18 +7,29 @@ import (
"net" "net"
"net/netip" "net/netip"
"time" "time"
"git.crumpington.com/lib/go/ratelimiter"
) )
func Receiver(selfVPNIP netip.Addr, ch chan<- Packet) { 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 { for {
if err := receiver(selfVPNIP, ch); err != nil { if err := receiver(selfVPNIP, limiters, ch); err != nil {
log.Printf("[MCReader] %v", err) log.Printf("[MCReader] %v", err)
} }
time.Sleep(errorTimeout) 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] selfIP := selfVPNIP.As4()[3]
conn, err := net.ListenMulticastUDP("udp", nil, multicastAddr(selfVPNIP)) 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]) packet := unmarshal(buf[:n])
if err := limiters[packet.PeerIP].Limit(); err != nil {
continue
}
if packet.PeerIP == selfIP { if packet.PeerIP == selfIP {
continue continue