世界 05b34a4b11 usbip: drain darwin watcher callbacks and wait for active sessions on close
`darwinExportHost.Events` closed its producer channel after destroying
the IOKit notification port, but `IONotificationPortDestroy` does not
synchronously drain the dispatch queue: a callback block already
executing or enqueued could still call `signal()` on the closed
channel, or resolve the `cgo.Handle` after `ref.Delete()`. Retain the
serial dispatch queue inside the watcher and `dispatch_sync` an empty
block before releasing it, so no native callback is in flight when
the Go side proceeds.

`ServerService.Close` cancelled the context and immediately closed the
`ExportHost`. On Darwin that calls `IOUSBHostDevice destroy` for every
capture while `darwinServerDataSession.handleSubmit` goroutines may
still be inside `IOUSBHostPipe` requests on the same device. Track
active sessions, close them explicitly, and wait for the per-session
cleanup goroutines via a WaitGroup before tearing down the host.
2026-06-09 10:42:29 +08:00
2026-06-09 10:42:24 +08:00
2026-06-03 16:33:44 +08:00
2026-06-08 08:51:45 +08:00
2026-06-08 08:52:25 +08:00
2026-05-13 23:39:27 +08:00
2026-06-09 10:42:25 +08:00
2026-06-08 08:51:38 +08:00
2026-03-01 12:30:43 +08:00
2026-06-03 12:56:36 +08:00
2026-02-27 14:58:06 +08:00
2026-02-15 21:10:44 +08:00
2024-02-24 13:20:27 +08:00
2026-06-08 08:51:41 +08:00
2025-04-29 20:45:19 +08:00
2023-12-29 18:00:40 +08:00
2023-12-29 18:00:40 +08:00
2026-02-26 14:13:32 +08:00
2026-06-08 08:51:51 +08:00
2026-06-08 08:51:51 +08:00
2023-03-27 08:20:51 +08:00
2026-06-03 12:56:36 +08:00
2026-04-20 09:49:39 +08:00

sing-box

The universal proxy platform.

Packaging status

Documentation

https://sing-box.sagernet.org

License

Copyright (C) 2022 by nekohasekai <contact-sagernet@sekai.icu>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

In addition, no derivative work may use the name or imply association
with this application without prior consent.
S
Description
No description provided
Readme 52 MiB
Languages
Go 97.2%
Shell 1.6%
Objective-C 0.8%
Makefile 0.2%
C 0.2%