mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-23 22:09:09 +02:00
Better pkg destroyer
This commit is contained in:
+17
-12
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user