Skip to content

Commit 3d8b86c

Browse files
committed
Call stun on each dns reg
Call stun to update cilent's ip address on each registration instead of in the constructor.
1 parent e77aeb6 commit 3d8b86c

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

pkg/registrars/registration/dns-registrar.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)