Skip to content

Commit 80e300e

Browse files
committed
添加dns解析失败重试10次,解决刚开机时没网的情况
1 parent 8554ce8 commit 80e300e

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

conf/dnsresolver_windows.go

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,16 @@ func resolveSrvRecord(name string) (resolvedIPString string, resolvedPort uint16
9393
maxTries *= 4
9494
}
9595
var resolvedTargetString string
96-
resolvedTargetString, resolvedPort, err = resolveSrvRecordOnce(name)
97-
if err != nil {
98-
return
96+
for i := 0; i < maxTries; i++ {
97+
if i > 0 {
98+
time.Sleep(time.Second * 4)
99+
}
100+
resolvedTargetString, resolvedPort, err = resolveSrvRecordOnce(name)
101+
if err != nil {
102+
continue
103+
} else if resolvedTargetString != "" && resolvedPort != 0 {
104+
break
105+
}
99106
}
100107
resolvedIPString, err = resolveHostname(resolvedTargetString)
101108
return resolvedIPString, resolvedPort, err
@@ -113,6 +120,25 @@ func resolveSrvRecordOnce(name string) (resolvedTargetString string, resolvedPor
113120
return
114121
}
115122

123+
func resolveTxtRecord(name string) (resolvedTargetString string, resolvedPort uint16, err error) {
124+
maxTries := 10
125+
if services.StartedAtBoot() {
126+
maxTries *= 4
127+
}
128+
for i := 0; i < maxTries; i++ {
129+
if i > 0 {
130+
time.Sleep(time.Second * 4)
131+
}
132+
resolvedTargetString, resolvedPort, err = resolveTxtRecordOnce(name)
133+
if err != nil {
134+
continue
135+
} else if resolvedTargetString != "" && resolvedPort != 0 {
136+
break
137+
}
138+
}
139+
return
140+
}
141+
116142
func resolveTxtRecordOnce(name string) (resolvedTargetString string, resolvedPort uint16, err error) {
117143
records, err := net.LookupTXT(name)
118144
if err != nil {
@@ -151,7 +177,7 @@ func (config *Config) ResolveEndpoints() error {
151177
} else if config.Peers[i].Endpoint.Port == 1 {
152178
// txt记录
153179
log.Printf("TXT record start resolve...")
154-
config.Peers[i].Endpoint.Host, config.Peers[i].Endpoint.Port, err = resolveTxtRecordOnce(config.Peers[i].Endpoint.Host)
180+
config.Peers[i].Endpoint.Host, config.Peers[i].Endpoint.Port, err = resolveTxtRecord(config.Peers[i].Endpoint.Host)
155181
} else {
156182
config.Peers[i].Endpoint.Host, err = resolveHostname(config.Peers[i].Endpoint.Host)
157183
}

0 commit comments

Comments
 (0)