diff --git a/client/internal/engine.go b/client/internal/engine.go index f64c820b4..02062929b 100644 --- a/client/internal/engine.go +++ b/client/internal/engine.go @@ -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, diff --git a/client/internal/peer/conn.go b/client/internal/peer/conn.go index 7d1065c28..18f491ad8 100644 --- a/client/internal/peer/conn.go +++ b/client/internal/peer/conn.go @@ -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 { diff --git a/iface/bind/udp_mux.go b/iface/bind/udp_mux.go index 980f7eba5..bcb7b3b7f 100644 --- a/iface/bind/udp_mux.go +++ b/iface/bind/udp_mux.go @@ -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 } diff --git a/iface/bind/udp_mux_universal.go b/iface/bind/udp_mux_universal.go index f29210819..5732019cf 100644 --- a/iface/bind/udp_mux_universal.go +++ b/iface/bind/udp_mux_universal.go @@ -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) {