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

Restore TransformHostNames support

- Convert config field to client parameter.

- This fixes TestUnfrontedMeekUserAgent,
  which failed intermittently due to not
  using non-CONNECT exclusively.

- Simplifies controllerRun setup.
Rod Hynes 7 лет назад
Родитель
Сommit
8ea313391d
3 измененных файлов с 16 добавлено и 17 удалено
  1. 7 0
      psiphon/config.go
  2. 8 16
      psiphon/controller_test.go
  3. 1 1
      psiphon/userAgent_test.go

+ 7 - 0
psiphon/config.go

@@ -732,6 +732,13 @@ func (config *Config) makeConfigParameters() map[string]interface{} {
 		applyParameters[parameters.FetchUpgradeRetryPeriod] = fmt.Sprintf("%dms", *config.FetchUpgradeRetryPeriodMilliseconds)
 	}
 
+	switch config.TransformHostNames {
+	case "always":
+		applyParameters[parameters.TransformHostNameProbability] = 1.0
+	case "never":
+		applyParameters[parameters.TransformHostNameProbability] = 0.0
+	}
+
 	if !config.DisableRemoteServerListFetcher {
 
 		if config.RemoteServerListURLs != nil {

+ 8 - 16
psiphon/controller_test.go

@@ -446,6 +446,8 @@ func controllerRun(t *testing.T, runConfig *controllerRunConfig) {
 		t.Skipf("error loading configuration file: %s", err)
 	}
 
+	// Note: a successful tactics request may modify config parameters.
+
 	// These fields must be filled in before calling LoadConfig
 	var modifyConfig map[string]interface{}
 	json.Unmarshal(configJSON, &modifyConfig)
@@ -468,6 +470,12 @@ func controllerRun(t *testing.T, runConfig *controllerRunConfig) {
 		modifyConfig["UpgradeDownloadClientVersionHeader"] = "invalid-value"
 	}
 
+	if runConfig.transformHostNames {
+		modifyConfig["TransformHostNames"] = "always"
+	} else {
+		modifyConfig["TransformHostNames"] = "never"
+	}
+
 	configJSON, _ = json.Marshal(modifyConfig)
 
 	config, err := LoadConfig(configJSON)
@@ -508,22 +516,6 @@ func controllerRun(t *testing.T, runConfig *controllerRunConfig) {
 	// that the tactics request succeeds.
 	config.NetworkIDGetter = &testNetworkGetter{}
 
-	// The following values can only be applied through client parameters.
-	// TODO: a successful tactics request can reset these parameters.
-
-	applyParameters := make(map[string]interface{})
-
-	if runConfig.transformHostNames {
-		applyParameters[parameters.TransformHostNameProbability] = 1.0
-	} else {
-		applyParameters[parameters.TransformHostNameProbability] = 0.0
-	}
-
-	err = config.SetClientParameters("", true, applyParameters)
-	if err != nil {
-		t.Fatalf("SetClientParameters failed: %s", err)
-	}
-
 	os.Remove(config.UpgradeDownloadFilename)
 	os.Remove(config.RemoteServerListDownloadFilename)
 

+ 1 - 1
psiphon/userAgent_test.go

@@ -246,7 +246,7 @@ func attemptConnectionsWithUserAgent(
 
 	// repeat attempts for long enough to select each user agent
 
-	time.Sleep(20 * time.Second)
+	time.Sleep(30 * time.Second)
 
 	cancelFunc()