fix(tunnel/psiphon): don't overwrite config.WorkDir (#291)

Part of https://github.com/ooni/probe/issues/985
This commit is contained in:
Simone Basso 2021-04-03 21:34:19 +02:00 committed by GitHub
parent d9aff19be5
commit dae53cb2a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,10 +20,19 @@ type psiphonTunnel struct {
duration time.Duration duration time.Duration
} }
// makeworkingdir creates the working directory // TODO(bassosimone): _always_ wiping the state directory
func makeworkingdir(config *Config) (string, error) { // here is absolutely wrong. This prevents us from reusing
// an existing psiphon cache existing on disk. We want to
// delete the directory _only_ in the psiphon nettest.
// psiphonMakeWorkingDir creates the working directory
func psiphonMakeWorkingDir(config *Config) (string, error) {
const testdirname = "oonipsiphon" const testdirname = "oonipsiphon"
workdir := filepath.Join(config.WorkDir, testdirname) baseWorkDir := config.WorkDir
if baseWorkDir == "" {
baseWorkDir = config.Session.TempDir()
}
workdir := filepath.Join(baseWorkDir, testdirname)
if err := config.removeAll(workdir); err != nil { if err := config.removeAll(workdir); err != nil {
return "", err return "", err
} }
@ -40,14 +49,11 @@ func psiphonStart(ctx context.Context, config *Config) (Tunnel, error) {
return nil, ctx.Err() // simplifies unit testing this code return nil, ctx.Err() // simplifies unit testing this code
default: default:
} }
if config.WorkDir == "" {
config.WorkDir = config.Session.TempDir()
}
configJSON, err := config.Session.FetchPsiphonConfig(ctx) configJSON, err := config.Session.FetchPsiphonConfig(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
workdir, err := makeworkingdir(config) workdir, err := psiphonMakeWorkingDir(config)
if err != nil { if err != nil {
return nil, err return nil, err
} }