Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
08faa82
Add concurrency control and pipelining for DNS handling
Feb 3, 2026
8d1ea12
fix: validate DNS payload length and handle nil options in DnsController
Feb 3, 2026
058e72f
control: optimize DNS concurrency and connection lifecycle
Feb 13, 2026
be5b6e9
refactor: improve UDP task queue management and enhance test coverage
Feb 14, 2026
d7f6b0c
feat(sniffing): add IsLikelyQuicInitialPacket function for quick QUIC…
Feb 15, 2026
c0d7803
fix: enhance connection handling and add tests for timeout scenarios
Feb 15, 2026
e6e24df
feat(dns): implement DNS forwarder fallback mechanism and add tests f…
Feb 15, 2026
0341673
chore: remove deprecated configuration file and clean up unused settings
Feb 15, 2026
138be60
chore: update changelog with unreleased features, bug fixes, and tests
Feb 15, 2026
fd3d0fa
Merge branch 'main' into optimize/code-quality-fixes
olicesx Feb 15, 2026
c7460ed
feat(pool): enhance concurrency handling with create mutex management
Feb 15, 2026
e8c5b16
fix(dns): address PR936 review feedback on response safety and cache …
Feb 15, 2026
a248f8d
control: shard udp pools and switch ttl to janitor
Feb 16, 2026
1041fa9
control/dns: bypass singleflight on cache hit and reduce hot-path ove…
Feb 16, 2026
0ee51f3
optimize geodata expansion cache and reduce DNS rule retention
Feb 16, 2026
72c13f9
feat: wire local outbound with ss2022 protocol support
Feb 16, 2026
5a114fd
fix: update outbound module reference to new repository location
Feb 16, 2026
9e3abaa
refactor: comment out SS2022 protocol import and replace directive fo…
Feb 16, 2026
688b271
fix(dns,ci): remove invalid kernel-test input and harden dns hot paths
Feb 16, 2026
e70ba5d
feat(ss2022): finalize outbound pin and add matrix coverage
Feb 16, 2026
81f0007
fix(test): stabilize full regression and config marshal round-trip
Feb 16, 2026
08b66be
fix(dns): tolerate stale UDP DNS responses
Feb 16, 2026
489c3d3
fix(control): restore serialized UDP task scheduling
Feb 16, 2026
736b65a
fix(dns): remove singleflight cache bypass path
Feb 16, 2026
15017dc
perf(control): streamline UdpTaskPool hot path
Feb 16, 2026
28c95c9
perf(control): optimize IPv4 hash and DNS cache hot path
Feb 16, 2026
b92e099
perf(dns): reduce unnecessary wait in dual-stack preference path
Feb 17, 2026
4144718
perf(dns): trim avoidable waiting in hot paths
Feb 17, 2026
1d327fb
fix(dialer): preserve alive state when health check is skipped
Feb 17, 2026
e738ce9
test(dialer): cover skip-check avalanche prevention semantics
Feb 17, 2026
b2ed4d3
test(dialer): harden anti-cascade health-check coverage
Feb 17, 2026
ed4ad1d
perf(control): deduplicate real-domain probes in dial target selection
Feb 17, 2026
05d3a60
perf(control,dns): implement P0/P1 no-regret optimizations
Feb 17, 2026
e9815c1
perf(control): reduce domain-probe blocking on web request path
Feb 17, 2026
f0a1de5
perf(control): avoid first-hit page stall with async domain probe warmup
Feb 17, 2026
d78b85b
perf(dns): add non-blocking cache janitors and idle forwarder eviction
Feb 17, 2026
99b8230
feat(control): implement non-blocking task queue with overflow handli…
Feb 17, 2026
a795323
refactor(control): optimize memory alignment and improve task queue m…
Feb 17, 2026
5d3d838
perf(dns): add qtype string cache to reduce allocations in DNS query …
Feb 17, 2026
a3bf927
chore: update outbound to latest commit with ss/ss2022 optimizations
Feb 17, 2026
bef4d10
refactor(control): optimize DNS parameters for improved performance a…
Feb 18, 2026
7b4ecfd
refactor(control): enhance dialSend function to accept responseWriter…
Feb 18, 2026
e4405e8
refactor(control): enhance Close methods to prevent memory leaks and …
Feb 18, 2026
593afbb
feat(control): implement dead flag for UdpEndpoint to manage endpoint…
Feb 18, 2026
a4cc8a5
refactor(control): optimize DNS cache with pre-packed responses for i…
Feb 18, 2026
5c3df8e
refactor(control): optimize DNS cache performance with atomic deadlin…
Feb 18, 2026
760f564
refactor: replace context.TODO() with proper context propagation
Feb 19, 2026
02c4b6d
refactor(control): improve context handling for connection lifecycle …
Feb 19, 2026
0f8a44d
refactor(control): enhance routing tuple handling for UDP and TCP con…
Feb 19, 2026
03b7dc3
Refactor code structure for improved readability and maintainability
Feb 19, 2026
7b0d825
refactor(control): optimize cache handling and add latency testing fo…
Feb 19, 2026
8828b24
fix(dns): improve cache hit logging for CI compatibility
Feb 19, 2026
b9aa600
refactor(control): remove async route updater and optimize BPF update…
Feb 20, 2026
617603f
Enhance DNS Cache Tests: Update TTL Refresh Logic and Add Memory Leak…
Feb 20, 2026
bccfc50
fix: prevent UdpTaskPool convoy goroutine leak
Feb 20, 2026
61920ae
fix: prevent UdpTaskPool convoy goroutine leak
Feb 20, 2026
ee0b86e
feat(bpf): optimize UDP timeout with DNS-specific 17s expiry
Feb 20, 2026
542b282
perf(dns): optimize cache with Copy-on-Write for lock-free reads
Feb 20, 2026
3aa924c
fix(dns): reorder request handling to prioritize reject rules over cache
Feb 20, 2026
106014b
fix(dns): enhance debug logging for cache hits with destination address
Feb 20, 2026
fc49453
feat(cache): implement optimistic caching to improve hit rate and red…
Feb 20, 2026
a48be8c
feat(dns): add optimistic cache TTL and max cache size configuration …
Feb 21, 2026
1649a9d
Merge branch 'main' into optimize/code-quality-fixes
MarksonHon Feb 21, 2026
8d71000
chore: update outbound dependency with performance optimizations
Feb 21, 2026
4452b25
feat(tests): add performance benchmarks for cache eviction and sortin…
Feb 21, 2026
7a65922
perf: integrate UDP cipher cache and TCP splice optimizations
Feb 21, 2026
0bc2b50
fix: correct outbound dependency pseudo-version timestamp
Feb 21, 2026
2d73b9c
chore: update outbound dependency with trojan password hash cache opt…
Feb 21, 2026
de65f12
chore: update outbound dependency to complete optimizations branch
Feb 21, 2026
7a0b778
chore: update artifact upload name to include .zip extension and remo…
Feb 21, 2026
67444aa
perf(udp): increase task queue length from 128 to 4096
Feb 22, 2026
510e0a9
perf(bpf): comprehensive eBPF optimizations (P0, P1, Plan A, Plan B)
Feb 22, 2026
288c867
style(bpf): fix code style issues in tproxy.c
Feb 22, 2026
348514f
fix(bpf): disable LPM cache to fix MacMismatch test
Feb 22, 2026
b4e4b96
feat(bpf): re-enable LPM cache for production with test isolation
Feb 23, 2026
7c2f407
fix(bpf): resolve lint BRACES warning for LPM cache code
Feb 23, 2026
594f449
feat(dns): optimize DNS caching with async write and lock-free upstre…
Feb 23, 2026
56ce1d0
chore: update outbound dependency to af16289542d0
Feb 23, 2026
5138932
fix: replace vulnerable archiver/v3 with modern archives library
Feb 23, 2026
8c9bc13
ci: upgrade to Go 1.26 with optimization flags
Feb 23, 2026
80b9592
ci: manually install Go 1.26 (actions/setup-go not supported)
Feb 23, 2026
f87dc0e
fix(ci): restore dns-resolver config for LVH VMs
Feb 23, 2026
a8b9cec
feat: implement asynchronous BPF updates with improved cache eviction…
Feb 23, 2026
6aff7b0
fix(deps): update outbound to fix nil ecdheKey error with utls v1.8.2
Feb 23, 2026
3f7aeac
fix(wan): fix auto-detection of WAN interface with netlink v1.3.1+
Feb 23, 2026
2853ffa
perf(go): remove runtimefreegc from GOEXPERIMENT to reduce CPU overhead
Feb 24, 2026
589b721
perf(go): further optimize GOEXPERIMENT by removing redundant flags
Feb 24, 2026
cb4b8e7
fix(deps): update outbound dependency to latest version
Feb 24, 2026
46d520f
fix(deps): update outbound dependency to use ss2022-fix version and e…
Feb 24, 2026
2246fbe
style(bpf): fix checkpatch warnings in tproxy.c
Feb 24, 2026
52b392d
Add comprehensive tests for DNS fast path functionality
Feb 24, 2026
05ede66
style(tproxy): simplify debug print statements for DNS cache skipping
Feb 24, 2026
ad8d1f5
refactor(tproxy): optimize UDP handling and update conntrack logic fo…
Feb 24, 2026
c97c813
style: improve code comments for clarity and performance
Feb 25, 2026
a51fb85
fix(go.mod, go.sum): update outbound dependency to latest version
Feb 25, 2026
41d20f2
refactor(control): optimize UDP handling for QUIC packets and enhance…
Feb 25, 2026
e577639
fix(deps): update quic-go and outbound dependencies to latest versions
Feb 25, 2026
c230acb
feat(control): refresh TTL on WriteTo for active UDP connections and …
Feb 25, 2026
ce466c2
feat(connectivity): implement worker pool for connectivity checks and…
Feb 25, 2026
9c74307
fix(control): extend QUIC timeout for slow handshake scenarios
Feb 25, 2026
abdb126
refactor(control): remove QUIC timeout constant and related logic fro…
Feb 25, 2026
00ef418
fix(deps): update quic-go and outbound dependencies to latest versions
Feb 26, 2026
0b03a87
fix: apply GSO single-segment fix to anyfrom UDP full-cone
Feb 26, 2026
9aea772
test: add comprehensive GSO fix verification for juicity
Feb 26, 2026
e8d645b
deps: update outbound to v0.0.0-20260226165827 with hot path optimiza…
Feb 26, 2026
429b1d4
fix: correct outbound pseudo-version with proper UTC timestamp
Feb 26, 2026
66c73f4
fix: improve logging for UDP endpoint lifecycle and clone DNS cache e…
Feb 27, 2026
6c71a20
Refactor and optimize control package
Feb 27, 2026
b70ae8f
feat: add QUIC reassembly pool and related tests; improve QUIC packet…
Feb 27, 2026
657bebc
fix: enhance address family selection logic for UDP connections and a…
Feb 27, 2026
dc96757
fix: add mutex locking in GetMinLatency and enhance UDP error handlin…
Feb 27, 2026
28b57d7
fix: simplify address family selection logic for UDP connections and …
Feb 28, 2026
639e1cd
feat: update go.mod and go.sum for outbound dependency
Feb 28, 2026
98265ee
fix: update comments in conn_sniffer_integration_test.go for clarity …
Feb 28, 2026
2d38eab
fix: enhance convoy exit logic to prevent goroutine leaks and add reg…
Feb 28, 2026
a2de997
feat: implement address family conversion for UDP packets and add com…
Feb 28, 2026
b9bc095
fix: enhance address family handling in QUIC responses and add compre…
Feb 28, 2026
8bc1944
fix: implement cross-family address handling in sendPkt and add tests…
Feb 28, 2026
dc26f43
fix: improve address family handling in sendPkt and enhance related t…
Feb 28, 2026
9dee017
fix: implement cross-family fallback handling in sendPkt and add test…
Feb 28, 2026
3ae7297
Refactor QUIC reassembly pool and related tests
Mar 1, 2026
8d58655
fix: simplify control plane check and map update logic in tproxy
Mar 1, 2026
a3a86f2
refactor: standardize UdpEndpoint key usage across the pool and relat…
Mar 1, 2026
5cf993d
fix: improve fallback handling in ConnSniffer and address family mana…
Mar 1, 2026
fb84421
fix: update NAT timeout values for UDP connections to improve resourc…
Mar 1, 2026
be785ca
fix: enhance UDP socket handling for proxy chains and cross-family sc…
Mar 1, 2026
d4936df
refactor: remove redundant code in UDP path
Mar 1, 2026
7eafc6e
refactor: improve UDP address family handling and normalize sendPkt a…
Mar 2, 2026
6eb8bea
refactor: enhance error handling and logging across multiple components
Mar 2, 2026
4c6148d
refactor: optimize DNS handling and enhance error responses in contro…
Mar 2, 2026
9fa71cd
refactor: streamline dialer logic and enhance HTTP client management
Mar 2, 2026
a8d0e81
refactor: unify TxQLen constant usage for veth setup and binding
Mar 2, 2026
db25f4b
refactor: enhance splice handling by adding skip logic for incompatib…
Mar 2, 2026
e2047ec
refactor: enhance splice handling with transparent fallback and add t…
Mar 2, 2026
ba0a00b
feat: Implement UDP batch reading and optimize ingress buffer handling
Mar 2, 2026
de29c43
fix: restore wan_ingress behavior to match main branch
Mar 2, 2026
05d04ae
Revert "fix: restore wan_ingress behavior to match main branch"
Mar 2, 2026
d7d002c
refactor: remove unused UDP batch reading logic to simplify packet pr…
Mar 2, 2026
f366166
refactor: simplify TCP connection handling and optimize UDP conntrack…
Mar 2, 2026
126973f
feat: Implement eBPF synchronization and validation
Mar 2, 2026
d3f06cd
refactor: clean up environment variables in ebpf-sync target and simp…
Mar 2, 2026
8f2fdc4
refactor: replace sleep with dynamic wait for eBPF program loading an…
Mar 2, 2026
aa4fb10
perf(domain-matcher): precompile bruteforce patterns
olicesx Mar 2, 2026
8c23af6
Merge pull request #2 from olicesx/codex/optimize-code-for-go1.26-bes…
olicesx Mar 2, 2026
089817f
fix: finish interface matcher kernel logic and docs
olicesx Mar 3, 2026
aac5d6c
style(ebpf): satisfy checkpatch declaration spacing
olicesx Mar 3, 2026
e01de00
fix: address review on interface namespace and direction matching
olicesx Mar 3, 2026
6de28a6
fix(netns): restore original namespace in WithHost
olicesx Mar 3, 2026
59020de
fix(control): restore original netns in WithHost
olicesx Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/go-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Go Test

on:
pull_request:
paths:
- "**/*.go"
- "go.mod"
- "go.sum"
- ".github/workflows/go-test.yml"
- "Makefile"
push:
branches:
- main
paths:
- "**/*.go"
- "go.mod"
- "go.sum"
- ".github/workflows/go-test.yml"
- "Makefile"

permissions: read-all

jobs:
go_test:
name: Go Unit Test
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go 1.26
run: |
wget -q https://go.dev/dl/go1.26.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.26.0.linux-amd64.tar.gz
echo "/usr/local/go/bin" >> $GITHUB_PATH
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV

- name: Go cache
uses: actions/cache@v4
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-

- name: Run tests
run: |
git submodule update --init --recursive
go test ./...
57 changes: 47 additions & 10 deletions .github/workflows/kernel-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,30 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
- name: Set up Go 1.26
run: |
wget -q https://go.dev/dl/go1.26.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.26.0.linux-amd64.tar.gz
echo "/usr/local/go/bin" >> $GITHUB_PATH
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV
echo "GOCACHE=$(go env GOCACHE)" >> $GITHUB_ENV

- name: Go cache
uses: actions/cache@v4
with:
cache-dependency-path: |
go.mod
go.sum
go-version: '1.24'
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-

- name: Generate and build
run: |
git submodule update --init
# Go 1.26 optimization: newinliner and simd (loopvar is automatic with go 1.26, arenas requires code changes)
export GOEXPERIMENT="newinliner,simd"
make GOFLAGS="-buildvcs=false" CC=clang

- name: Store executable
Expand Down Expand Up @@ -168,7 +181,13 @@ jobs:

chmod 600 ./conf.dae
nohup docker exec dae /host/dae/dae run -c /host/conf.dae &> dae.log &
sleep 5s
for i in {1..30}; do
if grep -q 'Loaded eBPF programs and maps' dae.log; then
break
fi
sleep 1
done
grep -q 'Loaded eBPF programs and maps' dae.log
cat dae.log

- name: Check WAN IPv4 TCP
Expand Down Expand Up @@ -224,7 +243,13 @@ jobs:
docker restart -t0 dae v2ray
nohup docker exec v2ray v2ray -c /host/v2ray.json &> v2ray.log &
nohup docker exec dae /host/dae/dae run -c /host/conf.dae &> dae.log &
sleep 5s
for i in {1..30}; do
if grep -q 'Loaded eBPF programs and maps' dae.log; then
break
fi
sleep 1
done
grep -q 'Loaded eBPF programs and maps' dae.log
nohup docker exec dae nc -lu 53 &> nc.log &

- name: Check WAN IPv4 UDP with port conflict
Expand Down Expand Up @@ -321,7 +346,13 @@ jobs:

chmod 600 ./conf.dae
nohup docker exec dae /host/dae/dae run -c /host/conf.dae &> dae.log &
sleep 5s
for i in {1..30}; do
if grep -q 'Loaded eBPF programs and maps' dae.log; then
break
fi
sleep 1
done
grep -q 'Loaded eBPF programs and maps' dae.log
cat dae.log

- name: Check LAN IPv4 TCP
Expand Down Expand Up @@ -383,7 +414,13 @@ jobs:

nohup docker exec v2ray v2ray -c /host/v2ray.json &> v2ray.log &
nohup docker exec dae /host/dae/dae run -c /host/conf.dae &> dae.log &
sleep 5s
for i in {1..30}; do
if grep -q 'Loaded eBPF programs and maps' dae.log; then
break
fi
sleep 1
done
grep -q 'Loaded eBPF programs and maps' dae.log
nohup docker exec dae nc -lu 53 &> nc.log &

- name: Check LAN IPv4 UDP with port conflict
Expand Down
24 changes: 18 additions & 6 deletions .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,23 @@ jobs:
echo "ASSET_NAME=$_NAME" >> $GITHUB_OUTPUT
echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV

- name: Set up Go
uses: actions/setup-go@v5
- name: Set up Go 1.26
run: |
wget -q https://go.dev/dl/go1.26.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.26.0.linux-amd64.tar.gz
echo "/usr/local/go/bin" >> $GITHUB_PATH
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV

- name: Go cache
uses: actions/cache@v4
with:
cache-dependency-path: |
go.mod
go.sum
go-version: '1.24'
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-

- name: Install Dependencies
run: |
Expand All @@ -104,6 +114,8 @@ jobs:
run: |
export CGO_ENABLED=0
export GOFLAGS="-trimpath -modcacherw"
# Go 1.26 optimization: newinliner and simd (loopvar is automatic with go 1.26, arenas requires code changes)
export GOEXPERIMENT="newinliner,simd"
export OUTPUT=pkgdir/usr/bin/dae
export VERSION=${{ env.VERSION }}
export CLANG=clang-15
Expand Down
24 changes: 18 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,23 @@ jobs:
echo "ASSET_NAME=$_NAME" >> $GITHUB_OUTPUT
echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV

- name: Set up Go
uses: actions/setup-go@v5
- name: Set up Go 1.26
run: |
wget -q https://go.dev/dl/go1.26.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.26.0.linux-amd64.tar.gz
echo "/usr/local/go/bin" >> $GITHUB_PATH
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV

- name: Go cache
uses: actions/cache@v4
with:
cache-dependency-path: |
go.mod
go.sum
go-version: '1.24'
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-

- name: Install Dependencies
run: |
Expand All @@ -104,6 +114,8 @@ jobs:
run: |
export CGO_ENABLED=0
export GOFLAGS="-trimpath -modcacherw"
# Go 1.26 optimization: newinliner and simd (loopvar is automatic with go 1.26, arenas requires code changes)
export GOEXPERIMENT="newinliner,simd"
export OUTPUT=pkgdir/usr/bin/dae
export VERSION=${{ env.VERSION }}
export CLANG=clang-15
Expand Down
26 changes: 19 additions & 7 deletions .github/workflows/seed-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,23 @@ jobs:
echo "ASSET_NAME=$_NAME" >> $GITHUB_OUTPUT
echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV

- name: Set up Go
uses: actions/setup-go@v5
- name: Set up Go 1.26
run: |
wget -q https://go.dev/dl/go1.26.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.26.0.linux-amd64.tar.gz
echo "/usr/local/go/bin" >> $GITHUB_PATH
echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV

- name: Go cache
uses: actions/cache@v4
with:
cache-dependency-path: |
go.mod
go.sum
go-version: '1.24'
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-

- name: Install Dependencies
run: |
Expand All @@ -120,6 +130,8 @@ jobs:
run: |
mkdir -p ./build/
export GOFLAGS="-trimpath -modcacherw"
# Go 1.26 optimization: newinliner and simd (loopvar is automatic with go 1.26, arenas requires code changes)
export GOEXPERIMENT="newinliner,simd"
export OUTPUT=build/dae-$ASSET_NAME
export VERSION=${{ steps.get_version.outputs.VERSION }}
export CLANG=clang-15
Expand All @@ -137,7 +149,7 @@ jobs:
- name: Upload files to Artifacts
uses: actions/upload-artifact@v4
with:
name: dae-${{ steps.get_filename.outputs.ASSET_NAME }}
name: dae-${{ steps.get_filename.outputs.ASSET_NAME }}.zip
path: build/*

- name: Report result
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOGS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ curl --silent "https://api.github.com/repos/daeuniverse/dae/releases" | jq -r '.

<!-- BEGIN NEW TOC ENTRY -->

- [Unreleased](#unreleased)
- [v1.1.0rc1 (Pre-release)](#v110rc1-pre-release)
- [v1.0.0 (Latest)](#v100-latest)
- [v0.9.0)](#v090)
Expand Down Expand Up @@ -48,6 +49,21 @@ curl --silent "https://api.github.com/repos/daeuniverse/dae/releases" | jq -r '.
- [v0.1.0](#v010)
<!-- BEGIN NEW CHANGELOGS -->

### Unreleased

#### Features

- feat(dns): add robust DNS forward fallback path for `tcp+udp` upstream (UDP-first with TCP fallback on request failure).

#### Bug Fixes

- fix(dns): report DNS forward failures to dialer health feedback path to improve failover quality.
- fix(control): harden DNS/UDP connection lifecycle handling in high-concurrency paths.

#### Others

- test(control): add regression tests for DNS fallback, timeout cleanup, and pool concurrency safety.

### v1.1.0rc1 (Pre-release)

> Release date: 2025/11/03
Expand Down
Loading