Better pkg destroyer

This commit is contained in:
pzoli
2023-04-17 14:37:51 +02:00
committed by Zoltan Papp
parent c392fe44e4
commit 1bf3e6feec
+17 -12
View File
@@ -171,15 +171,18 @@ func (s *ICEBind) receiveIPv4(buffs [][]byte, sizes []int, eps []wgConn.Endpoint
} }
for i := 0; i < numMsgs; i++ { for i := 0; i < numMsgs; i++ {
msg := &(*msgs)[i] msg := &(*msgs)[i]
sizes[i] = msg.N
// todo: handle err
ok, _ := s.filterOutStunMessages(msg.Buffers, msg.N, msg.Addr)
if ok {
sizes[i] = 0
} else {
sizes[i] = msg.N
}
addrPort := msg.Addr.(*net.UDPAddr).AddrPort() addrPort := msg.Addr.(*net.UDPAddr).AddrPort()
ep := asEndpoint(addrPort) ep := asEndpoint(addrPort)
getSrcFromControl(msg.OOB, ep) getSrcFromControl(msg.OOB, ep)
// todo: handle err
_ = s.filterOutStunMessages(msg.Buffers, msg.N, msg.Addr)
eps[i] = ep eps[i] = ep
} }
return numMsgs, nil return numMsgs, nil
@@ -325,23 +328,25 @@ func (s *ICEBind) send6(conn *ipv6.PacketConn, ep wgConn.Endpoint, buffs [][]byt
return err return err
} }
func (s *ICEBind) filterOutStunMessages(buffers [][]byte, n int, addr net.Addr) error { func (s *ICEBind) filterOutStunMessages(buffers [][]byte, n int, addr net.Addr) (bool, error) {
for i, buffer := range buffers { for _, buffer := range buffers {
if !stun.IsMessage(buffer) { if !stun.IsMessage(buffer) {
continue continue
} }
msg, err := parseSTUNMessage(buffer[:n]) msg, err := parseSTUNMessage(buffer[:n])
if err != nil { if err != nil {
return err buffer = []byte{}
return true, err
} }
err = s.udpMux.HandleSTUNMessage(msg, addr) muxErr := s.udpMux.HandleSTUNMessage(msg, addr)
if err != nil { if muxErr != nil {
log.Warnf("failed to handle packet") log.Warnf("failed to handle packet")
} }
buffers[i] = []byte{} buffer = []byte{}
return true, nil
} }
return nil return false, nil
} }
// endpointPool contains a re-usable set of mapping from netip.AddrPort to Endpoint. // endpointPool contains a re-usable set of mapping from netip.AddrPort to Endpoint.