Просмотр исходного кода

Fail over when primary DNS returns empty response; log error

Rod Hynes 10 лет назад
Родитель
Сommit
95bbdce6ce
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      psiphon/LookupIP.go

+ 6 - 1
psiphon/LookupIP.go

@@ -39,8 +39,13 @@ func LookupIP(host string, config *DialConfig) (addrs []net.IP, err error) {
 	if config.DeviceBinder != nil {
 	if config.DeviceBinder != nil {
 		addrs, err = bindLookupIP(host, config.DnsServerGetter.GetPrimaryDnsServer(), config)
 		addrs, err = bindLookupIP(host, config.DnsServerGetter.GetPrimaryDnsServer(), config)
 		if err == nil {
 		if err == nil {
-			return addrs, err
+			if len(addrs) == 0 {
+				err = errors.New("empty address list")
+			} else {
+				return addrs, err
+			}
 		}
 		}
+		NoticeAlert("retry resolve host %s: %s", host, err)
 		dnsServer := config.DnsServerGetter.GetSecondaryDnsServer()
 		dnsServer := config.DnsServerGetter.GetSecondaryDnsServer()
 		if dnsServer == "" {
 		if dnsServer == "" {
 			return addrs, err
 			return addrs, err