147 Commits
Author SHA1 Message Date
omarandClaude Opus 5 daaa0fda41 fix(wireguard): stop holding AmneziaWG down behind a WireGuard hop
The guard refused to start an AmneziaWG endpoint whose detour chain reached a
WireGuard one, and refused silently: not an error, just started=false, after
which every dial failed with "WireGuard is not ready yet". A selector hook went
further and suspended an already-working node the moment its group switched to a
WireGuard member.

It existed because AmneziaWG inside WireGuard hung the kernel on Android. We do
not ship Android, upstream dropped the guard once the cause was gone, and the
cure landed here yesterday — the ClientBind reserved-gate plus the submodule pin
that carries its twin. So the tree held both the cure and the prohibition on
using it, and the configuration simply did not come up while looking like a node
that "just does not work".

Also takes the two fixes that belong with it. ClientBind.conn was read on a
lock-free fast path and written under a mutex; upstream found that race with the
same end-to-end test we wrote yesterday, so we had taken one half of a pair
again. And the outer WireGuard UDP socket forced DF, unlike direct, hysteria and
tuic — with encapsulation the datagram regularly exceeds the path MTU and the
kernel drops it instead of fragmenting, a symptom indistinguishable from the bug
we spent yesterday on.

The race needed its own test: the existing e2e run did not flag it under -race
even at -count=15. Eight goroutines over both connect branches reproduce it
deterministically, naming the lock-free read and the guarded write.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 04:53:32 +03:00
世界 19bdedec29 dialer: Dial directly when only one interface is available 2026-07-04 22:51:38 +08:00
世界 dd454bf0c6 dns: Add timeout configuration 2026-06-25 17:38:08 +08:00
世界 b04b235661 Fix legacy rule-set download_detour blocked by empty direct check 2026-06-25 17:38:01 +08:00
世界 cfe83a5dcc Refactor: HTTP clients, unified HTTP2/QUIC options, Apple engines 2026-06-25 17:37:59 +08:00
世界 ecd07e2f85 Add optimistic DNS cache 2026-06-25 17:37:59 +08:00
世界 761b7f4e12 Handle TUN loopback in direct outbound 2026-06-03 12:56:36 +08:00
世界 5e7fd7ad78 Fix lint errors 2026-05-13 23:39:27 +08:00
世界 71f6a2ab4e Fix process search skipped for TUN 2026-04-21 15:45:05 +08:00
TargetLocked 7c3d8cf8db Fix disable tcp keep alive 2026-04-10 13:29:15 +08:00
世界 7623bcd19e Fix DialerForICMPDestination 2026-03-23 13:58:55 +08:00
世界 d2fa21d07b Deprecate Socksaddr.IsFqdn: do not reject potentially valid domain names 2026-03-16 09:37:59 +08:00
世界 1803471e02 endpoint: Fix UDP resolved destination 2026-03-02 13:55:26 +08:00
世界 9bd9e9a58b dialer: use KeepAliveConfig for TCP keepalive 2026-02-27 14:58:06 +08:00
世界 9c2cdc7203 Fix per-outbound bind_interface 2026-02-27 14:58:06 +08:00
世界 cf4791f1ad platform: Improve iOS OOM killer 2026-02-26 14:13:32 +08:00
世界 8d88c6532f Add dial option bind_address_no_port 2026-01-17 05:49:56 +08:00
世界 5bc0dfa9dd platform: Refactoring libbox to use gRPC-based protocol 2026-01-17 05:47:32 +08:00
世界 cd56eaaba2 Add more tcp keep alive options
Also update default TCP keep-alive initial period from 10 minutes to 5 minutes.
2026-01-17 05:47:04 +08:00
世界 ab0869c972 Update tfo-go to latest 2026-01-17 05:46:21 +08:00
世界 9ac0539ffd Remove compatibility codes 2026-01-17 05:46:14 +08:00
世界 7f3ea8dbd8 Update WireGuard and Tailscale 2026-01-17 05:46:02 +08:00
世界 f84129ca79 Add proxy support for ICMP echo request 2026-01-17 05:44:41 +08:00
世界 0ef7e8eca2 Fix route.default_interface not taking effect 2025-09-02 18:00:02 +08:00
世界 031f25c1c1 Deprecate common/atomic 2025-08-25 19:49:12 +08:00
世界 acda4ce985 Fix bind_interface not working with auto_redirect 2025-08-17 14:48:01 +08:00
世界 fdc181106d Fix atomic pointer usages 2025-08-15 15:05:34 +08:00
世界 378e39f70c Update golangci-lint to v2 2025-08-13 23:37:40 +08:00
世界 ef0004400d Fix legacy domain resolver deprecated warning incorrectly suppressed for direct outbound 2025-08-07 13:56:35 +08:00
世界 d5432b4c27 prevent creation of bind and mark controls on unsupported platforms 2025-07-08 13:14:40 +08:00
世界 6a211f6ed6 Fix missing handling of legacy domain_strategy options 2025-07-08 13:12:32 +08:00
世界 5b363c347f Fix DNS dialer 2025-07-08 13:12:31 +08:00
世界 ac7bc587cb Allow direct outbounds without domain_resolver 2025-07-08 13:12:30 +08:00
世界 4e11a3585a Fix Tailscale dialer 2025-07-08 13:12:30 +08:00
世界 fb622ccbdf Explicitly reject detour to empty direct outbounds 2025-07-08 13:12:28 +08:00
世界 d2dc3ddf72 Add netns support 2025-07-08 13:12:28 +08:00
世界 7c923209ad Fix unhandled DNS loop 2025-07-08 13:12:27 +08:00
世界 390e30ae7b Make domain_resolver optional when only one DNS server is configured 2025-07-08 13:12:26 +08:00
世界 b97947e8ac Move predefined DNS server to rule action 2025-07-08 13:12:23 +08:00
世界 dfcd9fb8c3 Fix domain resolver on direct outbound 2025-07-08 13:12:22 +08:00
世界 6f793a0273 Add Tailscale endpoint 2025-07-08 13:12:16 +08:00
世界 988ac62a1b refactor: Outbound domain resolver 2025-07-08 13:12:14 +08:00
世界 3016338e34 refactor: DNS 2025-07-08 13:12:14 +08:00
世界 d511698f3f Fix slowOpenConn 2025-06-12 08:05:04 +08:00
世界 cb435ea232 Fix default network strategy 2025-06-12 08:05:04 +08:00
世界 987899f94a Fix usages of wireguard listener 2025-04-27 21:29:23 +08:00
世界 619fa671d7 Skip binding to the default interface as it will fail on some Android devices 2025-02-26 07:25:35 +08:00
世界 96fdf59ee4 Fix default dialer on legacy xiaomi systems 2025-01-13 15:14:30 +08:00
世界 9a1efbe54d Fix domain strategy 2025-01-13 15:14:30 +08:00
世界 0c66888691 Fix lint 2025-01-13 15:14:30 +08:00