Commit graph

88 commits

Author SHA1 Message Date
Berkay Özdemirci
5a957fd750
Fix EDNS OPT record corruption in DNS cache
The TTL computation and assignment loops treat OPT record's Hdr.Ttl
as a regular TTL, but per RFC 6891 it encodes EDNS0 metadata
(ExtRCode|Version|Flags). This corrupts cached responses causing
systemd-resolved to reject them with EDNS version 255.

Also fix pointer aliasing: storeCache() stored raw *dns.Msg pointer
so subsequent mutations by Exchange() corrupted cached data.

- Skip OPT records in all TTL loops (Exchange + loadResponse)
- Use message.Copy() in storeCache() to isolate cache from mutations
2026-04-10 14:08:24 +08:00
世界
72bc4c1f87
Fix DNS transport returning error for empty AAAA response
Closes #3925
2026-03-23 19:21:55 +08:00
世界
0889ddd001
Fix connector canceled dial cleanup 2026-03-15 17:56:37 +08:00
世界
4d6fb1d38d
Fix legacy DNS client_subnet options not working 2026-03-09 20:18:47 +08:00
世界
aa495fce38
Fix local DNS transport CNAME chain broken with systemd-resolved
Replace D-Bus ResolveRecord API with direct raw DNS queries to upstream
servers obtained from systemd-resolved's per-interface link properties.
2026-03-09 20:06:34 +08:00
世界
e343cec4d5
Fix legacy DNS defaults on final transport 2026-03-09 20:06:34 +08:00
世界
27c5b0b1af
Fix DNS exchange failure and recursion deadlock in connector
Co-authored-by: everyx <lunt.luo@gmail.com>
2026-03-06 15:31:22 +08:00
世界
e62dc7bfa2
Fix rule_set_ip_cidr_accept_empty not working 2026-03-04 11:48:22 +08:00
世界
ab76062a41
Fix fake-ip address allocation 2026-03-03 21:37:24 +08:00
dyhkwong
4c65fea1ac
Fix IPv6 local DNS on Windows 2026-03-01 12:30:43 +08:00
世界
8714c157c9
Fix matching multi predefined 2026-02-15 21:09:06 +08:00
世界
aba8346bd6
Fix DNS cache lock goroutine leak
The cache deduplication in Client.Exchange uses a channel-based lock
per DNS question. Waiting goroutines blocked on <-cond without context
awareness, causing them to accumulate indefinitely when the owning
goroutine's transport call stalls. Add select on ctx.Done() so waiters
respect context cancellation and timeouts.
2026-02-06 22:28:35 +08:00
世界
aa8dd6e44f
Fix DNS transports 2026-01-17 05:48:41 +08:00
世界
a930356b04
Revert "Stop using DHCP on iOS and tvOS" 2026-01-17 05:47:32 +08:00
世界
5bc0dfa9dd
platform: Refactoring libbox to use gRPC-based protocol 2026-01-17 05:47:32 +08:00
世界
fce21607bd
Use a more conservative strategy for resolving with systemd-resolved for local DNS server 2026-01-17 05:46:23 +08:00
世界
ed1ee4c3a4
Update quic-go to v0.55.0 2026-01-17 05:46:13 +08:00
世界
107f92381b
Add support for kTLS
Reference: https://gitlab.com/go-extension/tls
2026-01-17 05:44:42 +08:00
世界
44fafcef73
Fix resolve using resolved 2026-01-17 05:44:29 +08:00
世界
bba92146b1
Stop using DHCP on iOS and tvOS
We do not have the `com.apple.developer.networking.multicast` entitlement and are unable to obtain it for non-technical reasons.
2026-01-17 05:44:28 +08:00
世界
48f84b31d6
Improve local DNS server on darwin
We mistakenly believed that `libresolv`'s `search` function worked correctly in NetworkExtension, but it seems only `getaddrinfo` does.

This commit changes the behavior of the `local` DNS server in NetworkExtension to prefer DHCP, falling back to `getaddrinfo` if DHCP servers are unavailable.

It's worth noting that `prefer_go` does not disable DHCP since it respects Dial Fields, but `getaddrinfo` does the opposite. The new behavior only applies to NetworkExtension, not to all scenarios (primarily command-line binaries) as it did previously.

In addition, this commit also improves the DHCP DNS server to use the same robust query logic as `local`.
2026-01-17 05:44:28 +08:00
世界
1c846df903
Use resolved in local DNS server if available 2026-01-17 05:44:28 +08:00
neletor
1f03080540
Add support for ech retry configs 2026-01-17 05:44:26 +08:00
Gavin Luo
fffe9fc566
Fix reset buffer in dhcp response loop
Previously, the buffer was not reset within the response loop. If a packet
handle failed or completed, the buffer retained its state. Specifically,
if `ReadPacketFrom` returned `io.ErrShortBuffer`, the error was ignored
via `continue`, but the buffer remained full. This caused the next
read attempt to immediately fail with the same error, creating a tight
busy-wait loop that consumed 100% CPU.

Validates `buffer.Reset()` is called at the start of each iteration to
ensure a clean state for 'ReadPacketFrom'.
2026-01-05 17:46:59 +08:00
世界
1ebff74c21
Fix DNS cache not working when domain strategy is set
The cache lookup was performed before rule matching, using the caller's
strategy (usually AsIS/0) instead of the resolved strategy. This caused
cache misses when ipv4_only was configured globally but the cache lookup
expected both A and AAAA records.

Remove LookupCache and ExchangeCache from Router, as the cache checks
inside client.Lookup and client.Exchange already handle caching correctly
after rule matching with the proper strategy and transport.
2025-12-21 16:59:10 +08:00
世界
5658830077
Fix trailing dot handling in local DNS transport 2025-10-16 21:43:12 +08:00
世界
06791470c9
Fix DNS reject panic 2025-10-14 23:40:19 +08:00
世界
36dc883c7c
Fix DNS negative caching to comply with RFC 2308 2025-10-09 23:45:23 +08:00
Mahdi
6557bd7029
Fix dns cache in lookup 2025-10-09 23:45:23 +08:00
世界
41b30c91d9
Improve HTTPS DNS transport 2025-10-09 23:45:23 +08:00
Mahdi
886be6414d
Fix dns truncate 2025-10-05 17:58:21 +08:00
世界
510bf05e36
Fix UDP exchange for local/dhcp DNS servers 2025-09-13 12:26:48 +08:00
世界
1955002ed8
Do not cache DNS responses with empty answers 2025-09-13 03:04:08 +08:00
世界
5d1d1a1456
Fix TCP exchange for local/dhcp DNS servers 2025-09-12 21:58:48 +08:00
世界
e81a76fdf9
Fix DNS exchange 2025-09-12 18:05:02 +08:00
世界
e42b818c2a
Fix dhcp fetch 2025-09-12 11:03:13 +08:00
世界
c331ee3d5c
Fix timeout check 2025-09-10 22:42:40 +08:00
世界
f98a3a4f65
Treat requests with OPT extra but no options as simple requests 2025-09-08 09:12:30 +08:00
世界
b14cecaeb2
Fix DNS packet size 2025-09-08 09:12:30 +08:00
世界
2594745ef8
Fix DNS client 2025-09-08 09:12:30 +08:00
世界
cc3041322e
Fix DNS cache 2025-09-08 09:12:30 +08:00
世界
2edfed7d91
Improve DHCP DNS server 2025-09-02 17:55:26 +08:00
世界
30c069f5b7
Fix local DNS server on legacy windows 2025-09-02 17:55:26 +08:00
世界
cef3e538ba
Fix failed DNS responses being incorrectly rejected 2025-08-19 11:14:46 +08:00
世界
378e39f70c
Update golangci-lint to v2 2025-08-13 23:37:40 +08:00
Youfu Zhang
fba802effd
Fix libresolv initialization
Fixes: 9533031891 ("Update libresolv usage")

Signed-off-by: Youfu Zhang <zhangyoufu@gmail.com>
2025-08-10 20:06:28 +08:00
世界
5533094984
Fix UDP DNS buffer size 2025-07-18 12:20:33 +08:00
世界
c0dd4a3f07
Fix DNS reject check 2025-07-08 13:14:46 +08:00
世界
455e5de74d
Fixed DoH server recover from conn freezes 2025-07-08 13:14:45 +08:00
世界
9533031891
Update libresolv usage 2025-07-08 13:14:45 +08:00