|
|
@@ -10,6 +10,7 @@ import (
|
|
|
"sort"
|
|
|
"strings"
|
|
|
"syscall"
|
|
|
+ "time"
|
|
|
|
|
|
"github.com/sagernet/sing-box"
|
|
|
"github.com/sagernet/sing-box/common/badjsonmerge"
|
|
|
@@ -177,7 +178,10 @@ func run() error {
|
|
|
}
|
|
|
}
|
|
|
cancel()
|
|
|
+ closeCtx, closed := context.WithCancel(context.Background())
|
|
|
+ go closeMonitor(closeCtx)
|
|
|
instance.Close()
|
|
|
+ closed()
|
|
|
if osSignal != syscall.SIGHUP {
|
|
|
return nil
|
|
|
}
|
|
|
@@ -185,3 +189,13 @@ func run() error {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func closeMonitor(ctx context.Context) {
|
|
|
+ time.Sleep(3 * time.Second)
|
|
|
+ select {
|
|
|
+ case <-ctx.Done():
|
|
|
+ return
|
|
|
+ default:
|
|
|
+ }
|
|
|
+ log.Fatal("sing-box did not close!")
|
|
|
+}
|