webrtc: solve domains in webrtcAdditionalHosts on server-side (#4817) (#4866)

This commit is contained in:
Alessandro Ros
2025-08-12 15:49:38 +02:00
committed by GitHub
parent b627128d0f
commit c80220eb7c

View File

@@ -491,6 +491,22 @@ func (co *PeerConnection) addAdditionalCandidates(firstMedia *sdp.MediaDescripti
}
for _, host := range co.AdditionalHosts {
var ips []string
if net.ParseIP(host) != nil {
ips = []string{host}
} else {
tmp, err := net.LookupIP(host)
if err != nil {
return err
}
ips = make([]string, len(tmp))
for i, e := range tmp {
ips[i] = e.String()
}
}
for _, ip := range ips {
newAttrs := append([]sdp.Attribute(nil), firstMedia.Attributes[:i]...)
if co.ICEUDPMux != nil {
@@ -504,11 +520,11 @@ func (co *PeerConnection) addAdditionalCandidates(firstMedia *sdp.MediaDescripti
newAttrs = append(newAttrs, sdp.Attribute{
Key: "candidate",
Value: id + " 1 udp 2130706431 " + host + " " + port + " typ host",
Value: id + " 1 udp 2130706431 " + ip + " " + port + " typ host",
})
newAttrs = append(newAttrs, sdp.Attribute{
Key: "candidate",
Value: id + " 2 udp 2130706431 " + host + " " + port + " typ host",
Value: id + " 2 udp 2130706431 " + ip + " " + port + " typ host",
})
}
@@ -523,17 +539,18 @@ func (co *PeerConnection) addAdditionalCandidates(firstMedia *sdp.MediaDescripti
newAttrs = append(newAttrs, sdp.Attribute{
Key: "candidate",
Value: id + " 1 tcp 1671430143 " + host + " " + port + " typ host tcptype passive",
Value: id + " 1 tcp 1671430143 " + ip + " " + port + " typ host tcptype passive",
})
newAttrs = append(newAttrs, sdp.Attribute{
Key: "candidate",
Value: id + " 2 tcp 1671430143 " + host + " " + port + " typ host tcptype passive",
Value: id + " 2 tcp 1671430143 " + ip + " " + port + " typ host tcptype passive",
})
}
newAttrs = append(newAttrs, firstMedia.Attributes[i:]...)
firstMedia.Attributes = newAttrs
}
}
return nil
}