修复:审查发现的高优先问题(竞态/初始化/碰撞)
- app.go: profileSvc移入App struct,用a.mu保护 - sqlite.go: InitFast加sync.Once防并发双重初始化 - client.go: Manager.Connect加sync.Mutex防竞态泄漏SSH - service.go: 临时文件用os.CreateTemp防时间戳碰撞 - connection-manager: 密码缺失时不再塞入假WailsTransport
This commit is contained in:
@@ -279,8 +279,12 @@ func (s *Service) DownloadToTemp(connID string, remotePath string) (string, erro
|
||||
}
|
||||
|
||||
tmpDir := os.TempDir()
|
||||
// 用时间戳+随机数避免同名文件覆盖
|
||||
localPath := filepath.Join(tmpDir, fmt.Sprintf("udesk-sftp-preview-%d-%s", time.Now().UnixNano(), filepath.Base(remotePath)))
|
||||
tmpFile, e := os.CreateTemp(tmpDir, "udesk-sftp-*-"+filepath.Base(remotePath))
|
||||
if e != nil {
|
||||
return "", fmt.Errorf("创建临时文件失败: %w", e)
|
||||
}
|
||||
localPath := tmpFile.Name()
|
||||
tmpFile.Close()
|
||||
|
||||
err = c.WithRetry(func(sc *sftpclient.Client) error {
|
||||
src, e := sc.Open(remotePath)
|
||||
|
||||
Reference in New Issue
Block a user