ginuerzh
722dde5cfc
fix(handler/forward): split readTimeout from pipe idleTimeout to prevent 15s download abort
...
The readTimeout field (default 15s) was being applied via xnet.Pipe to both
directions of a bidirectional proxy connection. During asymmetric transfers
(e.g. HTTP file download), the direction reading from the tunnel sees no
data after the initial request is forwarded, causing SetReadDeadline to fire
after 15s and abort the entire transfer.
Fix: add a separate idleTimeout field (default 0=disabled) to the metadata
structs in both forward/local and forward/remote handlers, and switch
xnet.Pipe to use idleTimeout instead of readTimeout. The readTimeout field
now only applies to the initial protocol sniffing/handshake phase.
Also document readTimeout vs idleTimeout semantics across all 24 locations
in the x/ module where these timeouts appear:
- readTimeout: handshake sniffing deadline (handlers), upstream response
header timeout (http.Transport), or transport-level read deadline
- idleTimeout: idle read deadline per Pipe direction (0=disabled)
- ReadTimeout on Sniffer/SnifferBuilder: upstream response header/TLS
handshake read timeout during sniffing
2026-05-31 17:05:21 +08:00
ginuerzh
c7d16962ec
add service option for plugin
2025-08-29 23:36:31 +08:00
Denis Galeev
a12ed27dfa
fix handler/socks5: UDP IP address filtering
2025-08-28 16:54:03 +08:00
ginuerzh
52289bea6c
add network param for sniffing
2025-08-13 21:25:35 +08:00
ginuerzh
b597467858
add context for conn
2025-08-04 19:29:38 +08:00
ginuerzh
a5309eee97
add buffer size option for udp connection
2025-07-30 21:40:53 +08:00
ginuerzh
208d18125c
replace xnet.Transport by xnet.Pipe
2025-07-28 20:52:15 +08:00
ginuerzh
281295d02f
fix tun device
2025-07-23 22:44:02 +08:00
ginuerzh
afcf4a5252
parse real client IP
2025-07-15 19:59:10 +08:00
ginuerzh
d9a2f44a78
add src field for logger and recorder
2025-07-02 21:35:02 +08:00
ginuerzh
2495b13053
fix traffic logging for socks5 udp
2025-02-18 17:30:36 +08:00
ginuerzh
fc12e33786
router handler: add cache for sd service
2025-02-09 16:16:44 +08:00
ginuerzh
379d9a73ad
service: add limiter.scope option
2025-01-20 23:22:58 +08:00
ginuerzh
06d993023f
add traffic reset for stats
2024-12-24 20:11:22 +08:00
ginuerzh
79b6b9138e
add limiterRefreshInterval option for limiter
2024-11-14 20:16:09 +08:00
ginuerzh
6b932e35bf
sniffing websocket frame
2024-10-19 19:36:06 +08:00
ginuerzh
a0cbee8817
use http.transport for non-connect http tunnel
2024-10-17 21:57:20 +08:00
ginuerzh
7e51404ae5
fix handler sniffing
2024-10-16 23:01:12 +08:00
ginuerzh
618d042001
add input/ouput fields for log
2024-10-16 22:16:34 +08:00
ginuerzh
24547b4332
add ClientAddr for websocket conn
2024-10-16 20:46:45 +08:00
ginuerzh
27242d0b66
recorder: add input/output traffic stats for handler recorder object
2024-10-11 20:32:56 +08:00
ginuerzh
8f994ab632
add handle options for sniffer
2024-10-10 22:49:56 +08:00
ginuerzh
c42a44abb6
add sniffer utility
2024-10-02 22:51:23 +08:00
ginuerzh
3c8add4b82
add traffic sniffing for handler
2024-09-27 15:55:28 +08:00
ginuerzh
e22aa91571
add route for recorder
2024-09-24 20:20:15 +08:00
ginuerzh
ce2da421fa
fix recorder clientIP
2024-09-15 18:37:49 +08:00
ginuerzh
b39aa63f75
add clientIP for handler recorder object
2024-09-15 18:28:24 +08:00
ginuerzh
69455ace9d
add handler recorder
2024-09-14 23:21:25 +08:00
ginuerzh
31c482c649
add scope param for traffic limiter
2024-08-31 09:30:04 +08:00
ginuerzh
1a776dc759
fix connection state in tunnel entrypoint
2024-08-01 20:52:08 +08:00
ginuerzh
c1d0887a9b
add port range support for service
2024-07-08 22:38:21 +08:00
ginuerzh
22537ff0d2
mv observer/stats to core
2024-07-04 23:05:35 +08:00
ginuerzh
f9bfca76ed
fix netns for socks5 and relay handler
2024-06-24 21:18:04 +08:00
ginuerzh
6d819a0c06
add observePeriod option for observer
2024-06-13 21:22:29 +08:00
ginuerzh
3d2a7b7d3b
move x/internal/ctx to x/ctx
2024-01-30 18:19:39 +08:00
ginuerzh
c959fc2f73
add observer
2024-01-03 20:55:06 +08:00
ginuerzh
88cc6ff4d5
add traffic limiter for proxy handler
2023-11-18 18:28:09 +08:00
ginuerzh
d7b7ac6357
add range port support for forwarder node
2023-11-14 19:41:57 +08:00
ginuerzh
cc4310106b
fix race condition
2023-10-19 23:47:47 +08:00
ginuerzh
1759c95e78
add mux config
2023-10-17 21:55:07 +08:00
ginuerzh
9d46255a18
fix socks5 selector
2023-09-30 17:52:18 +08:00
ginuerzh
836cf6eade
add network for bypass
2023-09-30 17:51:55 +08:00
ginuerzh
ddc3c9392e
add client addr for auth plugin
2023-09-21 19:59:56 +08:00
ginuerzh
1760151500
add HTTP plugin
2023-09-20 22:56:43 +08:00
ginuerzh
674a70cd23
add client ID for plugin service
2023-09-19 22:31:37 +08:00
Charles Xu
7833ca8bc6
replace deprecated method
2023-09-18 10:16:48 +00:00
ginuerzh
46db8480fa
add timeout for sniffing
2023-05-21 15:47:51 +08:00
ginuerzh
32c8188351
add plugin system
2023-04-18 20:52:56 +08:00
ginuerzh
416405b1f0
add UDP support for reverse proxy tunnel
2023-02-02 19:18:10 +08:00
ginuerzh
a1255e52d8
fix proxy protocol
2022-09-28 11:47:56 +08:00