@@ -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+
116142func 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