mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-05-26 23:19:47 +00:00
fix(session): apply custom DNS before connect
This commit is contained in:
2
go.sum
2
go.sum
@@ -235,8 +235,6 @@ github.com/xtaci/smux v1.5.57/go.mod h1:IGQ9QYrBphmb/4aTnLEcJby0TNr3NV+OslIOMrX8
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/zarazaex69/gr v0.0.0-20260430043628-45b595f4fef0 h1:dMjHX/YPV3ZD/KJKFjQdlMBwj2/rZIuOVKOvGv26m9k=
|
||||
github.com/zarazaex69/gr v0.0.0-20260430043628-45b595f4fef0/go.mod h1:7vALI2tjaLTOGiDKV7V2JkVU9bA1YADBDQA6uvpp1ac=
|
||||
github.com/zarazaex69/j v0.0.0-20260515222039-806b50503e36 h1:0MNDFrI0gsXivKHSK1YSLqTkrOzYk5QXZeii04Bx714=
|
||||
github.com/zarazaex69/j v0.0.0-20260515222039-806b50503e36/go.mod h1:7/ypJTenOIPx23fpo5uF7l4u+rxZqg9cFbTL/N77Ktc=
|
||||
github.com/zarazaex69/j v0.0.0-20260516013155-bffcfe38e7d9 h1:hsD5J10K8xUJ1AOg2A5SLYDSCz/tw7WOOoaiO69KafY=
|
||||
github.com/zarazaex69/j v0.0.0-20260516013155-bffcfe38e7d9/go.mod h1:7/ypJTenOIPx23fpo5uF7l4u+rxZqg9cFbTL/N77Ktc=
|
||||
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
|
||||
|
||||
@@ -600,6 +600,7 @@ func isLoopbackListenHost(host string) bool {
|
||||
func Run(ctx context.Context, cfg Config) error {
|
||||
cfg = ApplyTransportDefaults(cfg)
|
||||
cfg = ApplyLivenessDefaults(cfg)
|
||||
configureDefaultResolver(cfg.DNSServer)
|
||||
roomURL := cfg.RoomID
|
||||
liveness, err := livenessConfig(cfg)
|
||||
if err != nil {
|
||||
@@ -623,6 +624,19 @@ func Run(ctx context.Context, cfg Config) error {
|
||||
return run(ctx)
|
||||
}
|
||||
|
||||
func configureDefaultResolver(dnsServer string) {
|
||||
if dnsServer == "" {
|
||||
return
|
||||
}
|
||||
net.DefaultResolver = &net.Resolver{
|
||||
PreferGo: true,
|
||||
Dial: func(ctx context.Context, network, _ string) (net.Conn, error) {
|
||||
d := net.Dialer{Timeout: 3 * time.Second}
|
||||
return d.DialContext(ctx, network, dnsServer)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func runOnce(
|
||||
ctx context.Context,
|
||||
cfg Config,
|
||||
@@ -775,6 +789,7 @@ func genRetry(ctx context.Context, fn func(context.Context) error) error {
|
||||
|
||||
// Gen creates cfg.Amount rooms for the configured auth provider and writes each room ID to out.
|
||||
func Gen(ctx context.Context, cfg Config, out func(string)) error {
|
||||
configureDefaultResolver(cfg.DNSServer)
|
||||
p, err := auth.Get(cfg.Auth)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%w: %s", ErrUnsupportedCarrier, cfg.Auth)
|
||||
@@ -787,7 +802,7 @@ func Gen(ctx context.Context, cfg Config, out func(string)) error {
|
||||
var roomID string
|
||||
err := genRetry(ctx, func(ctx context.Context) error {
|
||||
var genErr error
|
||||
roomID, genErr = creator.CreateRoom(ctx, auth.Config{Name: names.Generate()})
|
||||
roomID, genErr = creator.CreateRoom(ctx, auth.Config{Name: names.Generate(), DNSServer: cfg.DNSServer})
|
||||
if genErr != nil {
|
||||
return fmt.Errorf("CreateRoom: %w", genErr)
|
||||
}
|
||||
|
||||
@@ -247,13 +247,13 @@ func (s *Server) bringUpLink(
|
||||
})
|
||||
|
||||
logger.Infof("Connecting transport=%s carrier=%s ...", cfg.Transport, cfg.Carrier)
|
||||
s.installSession()
|
||||
|
||||
if err := ln.Connect(ctx); err != nil {
|
||||
return fmt.Errorf("failed to connect link: %w", err)
|
||||
}
|
||||
logger.Infof("Link connected")
|
||||
|
||||
s.installSession()
|
||||
|
||||
s.wg.Add(1)
|
||||
go func() {
|
||||
defer s.wg.Done()
|
||||
@@ -517,11 +517,11 @@ func (s *Server) Status() control.Status {
|
||||
return s.health.Status()
|
||||
}
|
||||
|
||||
func (s *Server) recordSession(sessionID string) { s.health.RecordSession(sessionID) }
|
||||
func (s *Server) recordPong(h control.Health) { s.health.RecordPong(h) }
|
||||
func (s *Server) recordMissed(missed int) { s.health.RecordMissed(missed) }
|
||||
func (s *Server) recordUnhealthy(missed int) { s.health.RecordUnhealthy(missed) }
|
||||
func (s *Server) recordReconnect() { s.health.RecordReconnect() }
|
||||
func (s *Server) recordSession(sessionID string) { s.health.RecordSession(sessionID) }
|
||||
func (s *Server) recordPong(h control.Health) { s.health.RecordPong(h) }
|
||||
func (s *Server) recordMissed(missed int) { s.health.RecordMissed(missed) }
|
||||
func (s *Server) recordUnhealthy(missed int) { s.health.RecordUnhealthy(missed) }
|
||||
func (s *Server) recordReconnect() { s.health.RecordReconnect() }
|
||||
|
||||
func (s *Server) shutdown() {
|
||||
s.closeSession()
|
||||
|
||||
Reference in New Issue
Block a user