fix(core): take over agent, reuse callbacks

- Kill running agents before replace
- Retry copy with backoff while locked
- Reuse syscall callbacks at package scope
- Add callback regression test
This commit is contained in:
2026-09-02 00:00:24 +03:00
parent ac31e52a8c
commit 536ea9a53e
10 changed files with 281 additions and 29 deletions
+13 -12
View File
@@ -45,23 +45,24 @@ func SyncInstalledPath() error {
}
func Disable() error {
var regErr error
k, err := registry.OpenKey(registry.CURRENT_USER, config.StartupRunKey, registry.SET_VALUE)
if err != nil {
if errors.Is(err, registry.ErrNotExist) {
return nil
if !errors.Is(err, registry.ErrNotExist) {
regErr = err
}
} else {
err = k.DeleteValue(config.StartupValueName)
_ = k.Close()
if err != nil && !errors.Is(err, registry.ErrNotExist) {
regErr = err
}
return err
}
defer k.Close()
err = k.DeleteValue(config.StartupValueName)
if errors.Is(err, registry.ErrNotExist) {
_ = disableWatchdog()
return nil
taskErr := disableWatchdog()
if regErr != nil {
return regErr
}
if err != nil {
return err
}
return disableWatchdog()
return taskErr
}
func installedCommandLine() (string, error) {