@@ -25,7 +25,7 @@ type DNSRegistrar struct {
2525 maxRetries int
2626 connectionDelay time.Duration
2727 bidirectional bool
28- ip [] byte
28+ stun string
2929 logger logrus.FieldLogger
3030}
3131
@@ -73,14 +73,13 @@ func NewDNSRegistrar(config *Config) (*DNSRegistrar, error) {
7373 return nil , fmt .Errorf ("error adding fragmentation layer: %v" , err )
7474 }
7575
76- ip , err := getPublicIp (config .STUNAddr )
77- if err != nil {
78- return nil , fmt .Errorf ("failed to get public IP: %v" , err )
76+ if config .STUNAddr == "" {
77+ return nil , fmt .Errorf ("STUN address not set" )
7978 }
8079
8180 return & DNSRegistrar {
8281 req : tworeq ,
83- ip : ip ,
82+ stun : config . STUNAddr ,
8483 maxRetries : config .MaxRetries ,
8584 bidirectional : config .Bidirectional ,
8685 connectionDelay : config .Delay ,
@@ -105,7 +104,12 @@ func (r *DNSRegistrar) registerUnidirectional(ctx context.Context, cjSession *ta
105104 }
106105 }
107106
108- protoPayload .RegistrationAddress = r .ip
107+ ip , err := getPublicIp (r .stun )
108+ if err != nil {
109+ return nil , fmt .Errorf ("failed to get public IP: %v" , err )
110+ }
111+
112+ protoPayload .RegistrationAddress = ip
109113
110114 payload , err := proto .Marshal (protoPayload )
111115 if err != nil {
@@ -151,7 +155,12 @@ func (r *DNSRegistrar) registerBidirectional(ctx context.Context, cjSession *tap
151155 }
152156 }
153157
154- protoPayload .RegistrationAddress = r .ip
158+ ip , err := getPublicIp (r .stun )
159+ if err != nil {
160+ return nil , fmt .Errorf ("failed to get public IP: %v" , err )
161+ }
162+
163+ protoPayload .RegistrationAddress = ip
155164
156165 payload , err := proto .Marshal (protoPayload )
157166 if err != nil {
0 commit comments