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

Fix: DialConfig.ResolveIP is called even when the destination is an IP address

Rod Hynes 1 год назад
Родитель
Сommit
3b012448e2
1 измененных файлов с 11 добавлено и 18 удалено
  1. 11 18
      psiphon/inproxy.go

+ 11 - 18
psiphon/inproxy.go

@@ -972,26 +972,19 @@ func (brokerDialParams *InproxyBrokerDialParameters) prepareDialConfigs(
 		p, equivilentTunnelProtocol, brokerDialParams.FragmentorSeed)
 
 	// Resolver
+	//
+	// DialConfig.ResolveIP is required and called even when the destination
+	// is an IP address.
 
-	var resolveIP func(ctx context.Context, hostname string) ([]net.IP, error)
-
-	if net.ParseIP(brokerDialParams.FrontingDialAddress) == nil {
-
-		resolver := config.GetResolver()
-		if resolver == nil {
-			return errors.TraceNew("missing resolver")
-		}
-
-		resolveIP = func(ctx context.Context, hostname string) ([]net.IP, error) {
-			IPs, err := resolver.ResolveIP(
-				ctx, networkID, brokerDialParams.ResolveParameters, hostname)
-			return IPs, errors.Trace(err)
-		}
+	resolver := config.GetResolver()
+	if resolver == nil {
+		return errors.TraceNew("missing resolver")
+	}
 
-	} else {
-		resolveIP = func(ctx context.Context, hostname string) ([]net.IP, error) {
-			return nil, errors.TraceNew("unexpected resolve")
-		}
+	resolveIP := func(ctx context.Context, hostname string) ([]net.IP, error) {
+		IPs, err := resolver.ResolveIP(
+			ctx, networkID, brokerDialParams.ResolveParameters, hostname)
+		return IPs, errors.Trace(err)
 	}
 
 	// DialConfig