diff --git a/transport/internet/system_dialer.go b/transport/internet/system_dialer.go index 658382f7..c0c8c403 100644 --- a/transport/internet/system_dialer.go +++ b/transport/internet/system_dialer.go @@ -60,10 +60,14 @@ func (d *DefaultSystemDialer) Dial(ctx context.Context, src net.Address, dest ne } } var lc net.ListenConfig + destAddr, err := net.ResolveUDPAddr("udp", dest.NetAddr()) + if err != nil { + return nil, err + } lc.Control = func(network, address string, c syscall.RawConn) error { return c.Control(func(fd uintptr) { if sockopt != nil { - if err := applyOutboundSocketOptions(network, dest.NetAddr(), fd, sockopt); err != nil { + if err := applyOutboundSocketOptions(network, destAddr.String(), fd, sockopt); err != nil { errors.LogInfo(ctx, err, "failed to apply socket options") } } @@ -73,10 +77,6 @@ func (d *DefaultSystemDialer) Dial(ctx context.Context, src net.Address, dest ne if err != nil { return nil, err } - destAddr, err := net.ResolveUDPAddr("udp", dest.NetAddr()) - if err != nil { - return nil, err - } return &PacketConnWrapper{ Conn: packetConn, Dest: destAddr,