Skip to content

Client loses UDP sessions over long uptime #127

@NitroOxid

Description

@NitroOxid

Environment

TUIC version: 1.8.4
Client: tuic-client
Server: tuic-server
OS: OpenWRT 25.12.4

Client entry point: local SOCKS5 (ProxiFyre → tuic-client)
Note: SOCKS5 is only used as traffic ingress; issue appears in TUIC UDP relay layer.

Description

The connection works normally after startup.

After ~10–12 hours of uptime, UDP reception starts failing intermittently.
The frequency increases over time.

After ~30 hours, RX failures occur approximately every ~5 minutes.
TX remains fully functional throughout the entire period.

The issue is strictly asymmetric:

  • Outgoing traffic (TX) remains stable
  • Incoming traffic (RX) progressively degrades

Restarting the client immediately restores full functionality.

Observed behavior

  • TX (client → server) remains stable at all times
  • RX (server → client) progressively degrades over uptime
  • Discord voice/video stops receiving data while sending still works
  • Game traffic stops receiving server updates but continues sending
  • Issue frequency increases non-linearly with uptime
  • Eventually becomes periodic (~every 5 minutes after ~30h)

Logs

Logs indicate UDP session mapping loss followed by SOCKS UDP associate failure and panic:

[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x0589] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x058a] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x058b] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x058c] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x058d] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x058e] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x058f] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x0590] unable to find UDP session
[26 may 2026 y., 23:39:49 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:49�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x0591] unable to find UDP session
[26 may 2026 y., 23:39:50 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:50�[0m �[33m WARN�[0m �[2mtuic_client::connection::handle_task�[0m�[2m:�[0m [relay] [packet] [0x0909] [from-native] [0x0592] unable to find UDP session
[26 may 2026 y., 23:39:55 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:39:55�[0m �[33m WARN�[0m �[2mtuic_client::socks5::handle_task�[0m�[2m:�[0m [socks5] [192.168.1.168:52110] [associate] [0x0097] associate connection error: Connection reset by peer (os error 104)
[26 may 2026 y., 23:39:55 GMT+3] daemon.err: tuic-client[15418]:
[26 may 2026 y., 23:39:55 GMT+3] daemon.err: tuic-client[15418]: thread 'main' (15418) panicked at tuic-client/src/socks5/handle_task.rs:104:65:
[26 may 2026 y., 23:39:55 GMT+3] daemon.err: tuic-client[15418]: called `Option::unwrap()` on a `None` value
[26 may 2026 y., 23:41:46 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:41:46�[0m �[33m WARN�[0m �[2mtuic_client::socks5::handle_task�[0m�[2m:�[0m [socks5] [192.168.1.168:52276] [associate] [0x05c5] associate connection error: Connection reset by peer (os error 104)
[26 may 2026 y., 23:41:56 GMT+3] daemon.info: tuic-client[15418]: �[2m26-05-26 23:41:56�[0m �[33m WARN�[0m �[2mtuic_client::socks5::handle_task�[0m�[2m:�[0m [socks5] [192.168.1.168:52300] [associate] [0x0279] associate connection error: Connection reset by peer (os error 104)

Reproduction steps

  1. Start tuic-client
  2. Route normal traffic (Discord + game traffic)
  3. Keep connection alive for ~10–12 hours
  4. Observe intermittent RX failures
  5. After ~30 hours, RX failure becomes frequent (~5 min intervals)

Mitigation

  • Restarting tuic-client temporarily restores full functionality
  • RAM usage stable (~20MB), no memory leak observed at OS level
  • CPU usage normal
  • Changing congestion control (BBR/CUBIC), UDP relay mode (Native\QUIC) does not affect issue
  • Issue is reproducible only after long uptime and is progressive

Client config

udp_relay_mode = "quic"
congestion_control = "bbr"
alpn = ["h3"]
zero_rtt_handshake = false
disable_sni = false
timeout = "8s"
startup_mode = "lazy"
heartbeat = "10s"
disable_native_certs = false
send_window = 16777216
receive_window = 8388608
initial_mtu = 1200
min_mtu = 1200
gso = false
pmtu = true
gc_interval = "15s"
gc_lifetime = "60s"
skip_cert_verify = false

[local]
server = "0.0.0.0:2080"
dual_stack = true
max_packet_size = 1500

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions