The universal proxy platform sing-box.sagernet.org/
Go to file
世界 00a2704ecf
usbip: defer darwin RET_UNLINK until completion; route VHCI through primary; close lease-consume race
Three independent correctness bugs that all violated "decide before
publishing": each surface (wire reply, sysfs path, broadcast state)
committed to a state the code later had to contradict.

darwin: switch IOUSBHostPipe abort to IOUSBHostAbortOptionSynchronous and
add the EP-0 path via abortDeviceRequestsWithOption (previously a silent
no-op for control transfers). After abort returns, await a per-pending
drained channel before writing RET_UNLINK so the late RetSubmit
suppression in finishSubmit has actually taken effect — the drained
channel is allocated lazily by markSubmitUnlinked, so the hot submit
path is unchanged.

linux: collapse the per-controller VHCI abstraction. The kernel exposes
attach/detach/status/status.N only on vhci_hcd.0 with globally unique
port numbers; the previous code wrote vhci_hcd.N/attach for N>0 and
silently failed past the primary controller's port range. Glob status*
on the primary, key reservations on bare port int, and carry the
status-suffix as a diagnostic-only secondary index for Description().

export_ledger: ConsumeLeaseAndReserve no longer publishes busy=true and
then conditionally rolls it back. Read seq under fast first, then make
every decision (including the lease.Generation check) inside one slow
critical section before any busy mutation. This removes the window
where a concurrent BroadcastIfChanged could observe transient busy and
poison l.state with no corrective broadcast on rollback.
2026-05-15 17:32:30 +08:00
.github usbip: address review findings 2026-05-15 13:36:43 +08:00
adapter Update hysteria2 realm 2026-05-15 07:43:29 +08:00
clients Bump version 1.13.12 2026-05-14 15:11:09 +08:00
cmd Preserve comments between formatting 2026-05-14 21:56:21 +08:00
common Fix lint errors 2026-05-15 07:58:46 +08:00
constant Add Linux usbip client and server services 2026-05-15 13:36:39 +08:00
daemon tools: Tailscale status 2026-05-14 21:56:20 +08:00
dns Fix lint errors 2026-05-15 07:58:46 +08:00
docs Bump version 2026-05-15 13:19:21 +08:00
experimental Fix lint errors 2026-05-15 07:58:46 +08:00
include Add Linux usbip client and server services 2026-05-15 13:36:39 +08:00
log Fix lint errors 2026-05-13 23:39:27 +08:00
option Cleanup codes 2026-05-15 13:36:45 +08:00
protocol Fix hysteria2 realm server 2026-05-15 07:43:30 +08:00
release Add cloudflared inbound 2026-05-14 21:56:20 +08:00
route Fix lint errors 2026-05-15 07:58:46 +08:00
service usbip: defer darwin RET_UNLINK until completion; route VHCI through primary; close lease-consume race 2026-05-15 17:32:30 +08:00
test Remove overdue deprecated features 2026-03-01 12:30:43 +08:00
transport Fix lint errors 2026-05-13 23:39:27 +08:00
.fpm_openwrt Add kmod-nft-queue dependency for openwrt package 2026-01-17 05:48:59 +08:00
.fpm_pacman release: Fix pacman package 2026-02-27 14:58:06 +08:00
.fpm_systemd fix(rpm): add vendor field to fpm config to avoid (none) vendor 2026-03-30 22:09:54 +08:00
.gitignore platform: Add windows build 2026-02-15 21:10:44 +08:00
.gitmodules platform: Unify client versions 2024-02-24 13:20:27 +08:00
.golangci.yml Add TLS spoof support 2026-05-14 21:56:20 +08:00
box.go Refactor: HTTP clients, unified HTTP2/QUIC options, Apple engines 2026-05-14 21:56:20 +08:00
debug_http.go Fix hysteria bytes format 2025-04-29 20:45:19 +08:00
debug_stub.go Fix pprof URL path 2023-12-29 18:00:40 +08:00
debug_unix.go Fix pprof URL path 2023-12-29 18:00:40 +08:00
debug.go platform: Improve iOS OOM killer 2026-02-26 14:13:32 +08:00
Dockerfile release: Unify default build tags and linker flags into shared files 2026-03-03 21:21:09 +08:00
Dockerfile.binary release: Fix Docker build for loong64 and mipsle 2026-02-23 16:31:19 +08:00
go.mod realm: Add stun retry and lazy server start 2026-05-15 07:43:30 +08:00
go.sum realm: Add stun retry and lazy server start 2026-05-15 07:43:30 +08:00
LICENSE Update LICENSE 2023-03-27 08:20:51 +08:00
Makefile Fix lint errors 2026-05-13 23:39:27 +08:00
mkdocs.yml Add hysteria2 realm service and support 2026-05-15 07:43:29 +08:00
README.md documentation: Remove warp ads 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.