Зеркало Leadaxe/wireguard-go-awg2-lx — сабмодуль ядра sing-box-lx (AmneziaWG). GPLv3.
API introduced in a927a66e has two cases of state determination happening out of critical section for the state value: (1) expiredSession loads sessionExpiresNano, then releases all locks and calls noteSessionState(Expired). So a concurrent refresh that lands in that gap gets clobbered by a stale Expired -- and sticks until the next re-key. (2) Likewise in noteSessionHandshakeStopped, hasKeyMaterial check happens out of the session state lock and races with ZeroAndFlushAll. Both lead to a wrong state emitted via the device.sessionState.fn, but are otherwise benign. This moves the expiry timestamp under a lock to address the former, and provides a noteSessionStateLocked helper for the latter. Also changes API semantics to serialize events per-peer, to avoid sharing a single lock for all timestamps. Updates tailscale/corp#42874 Signed-off-by: Alex Valiushko <alexvaliushko@tailscale.com> Change-Id: Iee2cdf135375519e58a8e84362349d966a6a6964 |
||
|---|---|---|
| conn | ||
| device | ||
| ipc | ||
| ratelimiter | ||
| replay | ||
| rwcancel | ||
| tai64n | ||
| tun | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| reformat.sh | ||
| remove-unused.sh | ||
| rename-module.sh | ||
| version.go | ||