File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -285,8 +285,11 @@ type sshExecutable struct {
285
285
ModTime time.Time
286
286
}
287
287
288
- // sshVersions caches the parsed version of each ssh executable, if it is needed again.
289
- var sshVersions = map [sshExecutable ]* semver.Version {}
288
+ var (
289
+ // sshVersions caches the parsed version of each ssh executable, if it is needed again.
290
+ sshVersions = map [sshExecutable ]* semver.Version {}
291
+ sshVersionsRW sync.RWMutex
292
+ )
290
293
291
294
func DetectOpenSSHVersion (ssh string ) semver.Version {
292
295
var (
@@ -300,7 +303,10 @@ func DetectOpenSSHVersion(ssh string) semver.Version {
300
303
} else {
301
304
st , _ := os .Stat (path )
302
305
exe = sshExecutable {Path : path , Size : st .Size (), ModTime : st .ModTime ()}
303
- if ver := sshVersions [exe ]; ver != nil {
306
+ sshVersionsRW .RLock ()
307
+ ver := sshVersions [exe ]
308
+ sshVersionsRW .RUnlock ()
309
+ if ver != nil {
304
310
return * ver
305
311
}
306
312
}
@@ -311,7 +317,9 @@ func DetectOpenSSHVersion(ssh string) semver.Version {
311
317
} else {
312
318
v = * ParseOpenSSHVersion (stderr .Bytes ())
313
319
logrus .Debugf ("OpenSSH version %s detected" , v )
320
+ sshVersionsRW .Lock ()
314
321
sshVersions [exe ] = & v
322
+ sshVersionsRW .Unlock ()
315
323
}
316
324
return v
317
325
}
You can’t perform that action at this time.
0 commit comments