016-fix-unexpected-exit-does-not-apply-stop-steps.patch 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. From 153b72ed623876ad73b731c2ec2344e9057d3c35 Mon Sep 17 00:00:00 2001
  2. From: mzz2017 <[email protected]>
  3. Date: Wed, 21 Sep 2022 16:50:24 +0800
  4. Subject: [PATCH] fix: unexpected exit does not apply stop steps
  5. ---
  6. service/core/v2ray/process.go | 4 ++--
  7. service/core/v2ray/processManager.go | 8 +++-----
  8. 2 files changed, 5 insertions(+), 7 deletions(-)
  9. --- a/core/v2ray/process.go
  10. +++ b/core/v2ray/process.go
  11. @@ -35,7 +35,7 @@ type Process struct {
  12. tag2WhichIndex map[string]int
  13. }
  14. -func NewProcess(tmpl *Template, prestart func() error, poststart func() error) (process *Process, err error) {
  15. +func NewProcess(tmpl *Template, prestart func() error, poststart func() error, stopfunc func(p *Process)) (process *Process, err error) {
  16. process = &Process{
  17. template: tmpl,
  18. }
  19. @@ -111,7 +111,7 @@ func NewProcess(tmpl *Template, prestart
  20. // canceled by v2rayA
  21. return
  22. }
  23. - defer ProcessManager.Stop(false)
  24. + defer stopfunc(process)
  25. var t []string
  26. if p != nil {
  27. if p.Success() {
  28. --- a/core/v2ray/processManager.go
  29. +++ b/core/v2ray/processManager.go
  30. @@ -245,16 +245,14 @@ func (m *CoreProcessManager) Start(t *Te
  31. return m.beforeStart(t)
  32. }, func() error {
  33. return m.afterStart(t)
  34. + }, func(p *Process) {
  35. + m.p = p
  36. + ProcessManager.Stop(false)
  37. })
  38. if err != nil {
  39. return err
  40. }
  41. m.p = process
  42. - defer func() {
  43. - if err != nil {
  44. - m.stop(true)
  45. - }
  46. - }()
  47. configure.SetRunning(true)
  48. return nil