Solve comments and clean code

Solve comments and clean code
This commit is contained in:
cnderrauber
2022-10-10 20:22:30 +08:00
committed by cnderrauber
parent 41b77f19a5
commit 227b290b77
10 changed files with 34 additions and 56 deletions
+1 -7
View File
@@ -35,17 +35,11 @@ func TestMuxAgent(t *testing.T) {
require.NoError(t, err)
loggerFactory := logging.NewDefaultLoggerFactory()
udpMux, err := NewUDPMuxDefault(UDPMuxParams{
udpMux := NewUDPMuxDefault(UDPMuxParams{
Logger: loggerFactory.NewLogger("ice"),
UDPConn: c,
})
require.NoError(t, err)
defer func() {
_ = udpMux.Close()
_ = c.Close()
}()
muxedA, err := NewAgent(&AgentConfig{
UDPMux: udpMux,
CandidateTypes: []CandidateType{CandidateTypeHost},
+4 -1
View File
@@ -140,6 +140,9 @@ var (
errNotImplemented = errors.New("not implemented yet")
errNoUDPMuxAvailable = errors.New("no UDP mux is available")
errNoTCPMuxAvailable = errors.New("no TCP mux is available")
errInvalidAddress = errors.New("invalid address")
// UDPMuxDefault should not listen on unspecified address, but to keep backward compatibility, don't return error now.
// will be used in the future.
// errListenUnspecified = errors.New("can't listen on unspecified address")
errInvalidAddress = errors.New("invalid address")
)
+1 -2
View File
@@ -507,8 +507,7 @@ func TestMultiUDPMuxUsage(t *testing.T) {
}()
expectedPorts = append(expectedPorts, port)
muxDefault, err := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn})
assert.NoError(t, err)
muxDefault := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn})
udpMuxInstances = append(udpMuxInstances, muxDefault)
idx := i
defer func() {
+1 -1
View File
@@ -6,7 +6,7 @@ package ice
import "net"
// AllConnsGetter allows multiple fixed TCP ports to be used,
// each which is multiplexed like TCPMux. AllConnsGetter also acts as
// each of which is multiplexed like TCPMux. AllConnsGetter also acts as
// a TCPMux, in which case it will return a single connection for one
// of the ports.
type AllConnsGetter interface {
+14 -12
View File
@@ -52,16 +52,15 @@ type UDPMuxParams struct {
}
// NewUDPMuxDefault creates an implementation of UDPMux
func NewUDPMuxDefault(params UDPMuxParams) (*UDPMuxDefault, error) {
func NewUDPMuxDefault(params UDPMuxParams) *UDPMuxDefault {
if params.Logger == nil {
params.Logger = logging.NewDefaultLoggerFactory().NewLogger("ice")
}
var localAddrsForUnspecified []net.Addr
if addr, ok := params.UDPConn.LocalAddr().(*net.UDPAddr); !ok {
return nil, errInvalidAddress
params.Logger.Errorf("LocalAddr is not a net.UDPAddr, got %T", params.UDPConn.LocalAddr())
} else if ok && addr.IP.IsUnspecified() {
// return nil, errListenUnspecified
// For unspecified addresses, the correct behavior is to return errListenUnspecified, but
// it will break the applications that are already using unspecified UDP connection
// with UDPMuxDefault, so print a warn log and create a local address list for mux.
@@ -75,15 +74,18 @@ func NewUDPMuxDefault(params UDPMuxParams) (*UDPMuxDefault, error) {
networks = []NetworkType{NetworkTypeUDP4, NetworkTypeUDP6}
default:
return nil, errInvalidAddress
params.Logger.Errorf("LocalAddr expected IPV4 or IPV6, got %T", params.UDPConn.LocalAddr())
}
muxNet := vnet.NewNet(nil)
ips, err := localInterfaces(muxNet, nil, nil, networks)
if err != nil {
return nil, err
}
for _, ip := range ips {
localAddrsForUnspecified = append(localAddrsForUnspecified, &net.UDPAddr{IP: ip, Port: addr.Port})
if len(networks) > 0 {
muxNet := vnet.NewNet(nil)
ips, err := localInterfaces(muxNet, nil, nil, networks)
if err == nil {
for _, ip := range ips {
localAddrsForUnspecified = append(localAddrsForUnspecified, &net.UDPAddr{IP: ip, Port: addr.Port})
}
} else {
params.Logger.Errorf("failed to get local interfaces for unspecified addr: %v", err)
}
}
}
@@ -103,7 +105,7 @@ func NewUDPMuxDefault(params UDPMuxParams) (*UDPMuxDefault, error) {
go m.connWorker()
return m, nil
return m
}
// LocalAddr returns the listening address of this UDPMuxDefault
+1 -12
View File
@@ -111,21 +111,10 @@ func NewMultiUDPMuxFromPort(port int, opts ...UDPMuxFromPortOption) (*MultiUDPMu
muxs := make([]UDPMux, 0, len(conns))
for _, conn := range conns {
mux, muxErr := NewUDPMuxDefault(UDPMuxParams{Logger: params.logger, UDPConn: conn})
if muxErr != nil {
err = muxErr
break
}
mux := NewUDPMuxDefault(UDPMuxParams{Logger: params.logger, UDPConn: conn})
muxs = append(muxs, mux)
}
if err != nil {
for _, mux := range muxs {
_ = mux.Close()
}
return nil, err
}
return NewMultiUDPMuxDefault(muxs...), nil
}
+3 -6
View File
@@ -34,15 +34,12 @@ func TestMultiUDPMux(t *testing.T) {
}
muxes := []UDPMux{}
muxV41, err := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn1})
require.NoError(t, err)
muxV41 := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn1})
muxes = append(muxes, muxV41)
muxV42, err := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn2})
require.NoError(t, err)
muxV42 := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn2})
muxes = append(muxes, muxV42)
if conn3 != nil {
muxV6, v6err := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn3})
require.NoError(t, v6err)
muxV6 := NewUDPMuxDefault(UDPMuxParams{UDPConn: conn3})
muxes = append(muxes, muxV6)
}
+1 -3
View File
@@ -62,13 +62,11 @@ func TestUDPMux(t *testing.T) {
continue
}
t.Run(subTest.name, func(t *testing.T) {
udpMux, err := NewUDPMuxDefault(UDPMuxParams{
udpMux := NewUDPMuxDefault(UDPMuxParams{
Logger: nil,
UDPConn: conn,
})
require.NoError(t, err)
defer func() {
_ = udpMux.Close()
_ = conn.Close()
+7 -10
View File
@@ -38,7 +38,7 @@ type UniversalUDPMuxParams struct {
}
// NewUniversalUDPMuxDefault creates an implementation of UniversalUDPMux embedding UDPMux
func NewUniversalUDPMuxDefault(params UniversalUDPMuxParams) (*UniversalUDPMuxDefault, error) {
func NewUniversalUDPMuxDefault(params UniversalUDPMuxParams) *UniversalUDPMuxDefault {
if params.Logger == nil {
params.Logger = logging.NewDefaultLoggerFactory().NewLogger("ice")
}
@@ -64,13 +64,9 @@ func NewUniversalUDPMuxDefault(params UniversalUDPMuxParams) (*UniversalUDPMuxDe
Logger: params.Logger,
UDPConn: m.params.UDPConn,
}
muxDefault, err := NewUDPMuxDefault(udpMuxParams)
if err != nil {
return nil, err
}
m.UDPMuxDefault = muxDefault
m.UDPMuxDefault = NewUDPMuxDefault(udpMuxParams)
return m, nil
return m
}
// udpConn is a wrapper around UDPMux conn that overrides ReadFrom and handles STUN/TURN packets
@@ -107,7 +103,8 @@ func (c *udpConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
if err = msg.Decode(); err != nil {
c.logger.Warnf("Failed to handle decode ICE from %s: %v", addr.String(), err)
return n, addr, nil
err = nil
return
}
udpAddr, ok := addr.(*net.UDPAddr)
@@ -120,12 +117,12 @@ func (c *udpConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
err = c.mux.handleXORMappedResponse(udpAddr, msg)
if err != nil {
c.logger.Debugf("%w: %v", errGetXorMappedAddrResponse, err)
return n, addr, nil
err = nil
}
return
}
}
return n, addr, err
return
}
// isXORMappedResponse indicates whether the message is a XORMappedAddress and is coming from the known STUN server.
+1 -2
View File
@@ -17,12 +17,11 @@ func TestUniversalUDPMux(t *testing.T) {
conn, err := net.ListenUDP(udp, &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)})
require.NoError(t, err)
udpMux, err := NewUniversalUDPMuxDefault(UniversalUDPMuxParams{
udpMux := NewUniversalUDPMuxDefault(UniversalUDPMuxParams{
Logger: nil,
UDPConn: conn,
})
require.NoError(t, err)
defer func() {
_ = udpMux.Close()
_ = conn.Close()