Distinguish UDPMux and UDPMuxUniversal

This commit is contained in:
braginini
2023-03-30 15:13:14 +02:00
parent 430f92094e
commit ea44c1b723
4 changed files with 18 additions and 15 deletions

View File

@@ -799,7 +799,7 @@ func (e Engine) createPeerConn(pubKey string, allowedIPs string) (*peer.Conn, er
InterfaceBlackList: e.config.IFaceBlackList,
DisableIPv6Discovery: e.config.DisableIPv6Discovery,
Timeout: timeout,
UDPMux: e.udpMux,
UDPMux: e.udpMux.UDPMuxDefault,
UDPMuxSrflx: e.udpMux,
ProxyConfig: proxyConfig,
LocalWgPort: e.config.WgPort,

View File

@@ -173,21 +173,17 @@ func (conn *Conn) reCreateAgent() error {
if err != nil {
log.Warnf("failed to create pion's stdnet: %s", err)
}
hostWait := 500 * time.Millisecond
srflxWait := 1000 * time.Millisecond
agentConfig := &ice.AgentConfig{
MulticastDNSMode: ice.MulticastDNSModeDisabled,
NetworkTypes: []ice.NetworkType{ice.NetworkTypeUDP4, ice.NetworkTypeUDP6},
// Urls: conn.config.StunTurn,
CandidateTypes: []ice.CandidateType{ice.CandidateTypeHost},
FailedTimeout: &failedTimeout,
InterfaceFilter: interfaceFilter(conn.config.InterfaceBlackList),
UDPMux: conn.config.UDPMux,
UDPMuxSrflx: conn.config.UDPMuxSrflx,
NAT1To1IPs: conn.config.NATExternalIPs,
Net: transportNet,
HostAcceptanceMinWait: &hostWait,
SrflxAcceptanceMinWait: &srflxWait,
Urls: conn.config.StunTurn,
CandidateTypes: []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive},
FailedTimeout: &failedTimeout,
InterfaceFilter: interfaceFilter(conn.config.InterfaceBlackList),
UDPMux: conn.config.UDPMux,
UDPMuxSrflx: conn.config.UDPMuxSrflx,
NAT1To1IPs: conn.config.NATExternalIPs,
Net: transportNet,
}
if conn.config.DisableIPv6Discovery {

View File

@@ -51,7 +51,8 @@ type UDPMuxParams struct {
// Required for gathering local addresses
// in case a un UDPConn is passed which does not
// bind to a specific local address.
Net transport.Net
Net transport.Net
InterfaceFilter func(interfaceName string) bool
}
func localInterfaces(n transport.Net, interfaceFilter func(string) bool, ipFilter func(net.IP) bool, networkTypes []ice.NetworkType, includeLoopback bool) ([]net.IP, error) { //nolint:gocognit
@@ -176,7 +177,7 @@ func NewUDPMuxDefault(params UDPMuxParams) *UDPMuxDefault {
}
}
ips, err := localInterfaces(params.Net, nil, nil, networks, true)
ips, err := localInterfaces(params.Net, params.InterfaceFilter, nil, networks, true)
if err == nil {
for _, ip := range ips {
localAddrsForUnspecified = append(localAddrsForUnspecified, &net.UDPAddr{IP: ip, Port: addr.Port})
@@ -210,6 +211,7 @@ func (m *UDPMuxDefault) LocalAddr() net.Addr {
// GetListenAddresses returns the list of addresses that this mux is listening on
func (m *UDPMuxDefault) GetListenAddresses() []net.Addr {
log.Infof("---------------------------------")
if len(m.localAddrsForUnspecified) > 0 {
return m.localAddrsForUnspecified
}

View File

@@ -70,6 +70,11 @@ type udpConn struct {
logger logging.LeveledLogger
}
func (m *UniversalUDPMuxDefault) GetListenAddresses() []net.Addr {
log.Infof("================================")
return []net.Addr{m.LocalAddr()}
}
// GetRelayedAddr creates relayed connection to the given TURN service and returns the relayed addr.
// Not implemented yet.
func (m *UniversalUDPMuxDefault) GetRelayedAddr(turnAddr net.Addr, deadline time.Duration) (*net.Addr, error) {