fatedier
c7ac12ea0f
server/group: refactor with shared abstractions and fix concurrency issues ( #5222 )
...
* server/group: refactor group package with shared abstractions and fix concurrency issues
Extract common patterns into reusable components:
- groupRegistry[G]: generic concurrent map for group lifecycle management
- baseGroup: shared plumbing for listener-based groups (TCP, HTTPS, TCPMux)
- Listener: unified virtual listener replacing 3 identical implementations
Fix concurrency issues:
- Stale-pointer race: isCurrent check + errGroupStale + controller retry loops
- Worker generation safety: pass realLn and acceptCh as params instead of reading mutable fields
- Connection leak: close conn on worker panic recovery path
- ABBA deadlock in HTTP UnRegister: consistent lock ordering (group.mu -> registry.mu)
- Round-robin overflow in HTTPGroup: use unsigned modulo
Add unit tests (17 tests) for registry, listener, and baseGroup.
Add TCPMux group load balancing e2e test.
* server/group: replace tautological assertion with require.NotPanics
* server/group: remove blank line between doc comment and type declaration
2026-03-08 18:57:21 +08:00
fatedier
f22f7d539c
server/group: fix port leak and incorrect Listen port in TCPGroup ( #5200 )
...
Fix two bugs in TCPGroup.Listen():
- Release acquired port when net.Listen fails to prevent port leak
- Use realPort instead of port for net.Listen to ensure consistency
between port manager records and actual listening port
2026-03-06 02:25:47 +08:00
fatedier
1cf325bb0c
https: add load balancing group support ( #5032 )
2025-10-28 17:37:18 +08:00
fatedier
5e70d5bee0
code optimization ( #3625 )
2023-09-20 15:18:50 +08:00
fatedier
46ff40543a
update github actions ( #3538 )
2023-07-21 10:30:46 +08:00
fatedier
862b1642ba
tcpmux: support authentication ( #3345 )
2023-03-07 19:53:32 +08:00
fatedier
cf66ca10b4
improve http group load balancing ( #3131 )
2022-10-19 12:14:35 +08:00
fatedier
9d077b02cf
lint by golangci-lint ( #3080 )
2022-08-29 01:02:53 +08:00
fatedier
4af85da0c2
type http/tcpmux proxy support route_by_http_user, tcpmux support passthourgh mode ( #2932 )
2022-05-26 23:57:30 +08:00
fatedier
6194273615
use net.JoinHostPort instead of fmt.Sprintf ( #2791 )
2022-02-09 15:19:35 +08:00
fatedier
3fbdea0f6b
rename models to pkg ( #2005 )
2020-09-23 13:49:14 +08:00
fatedier
8b75b8b837
fix by golint ( #1822 )
2020-05-24 17:48:37 +08:00
Guy Lewin
6d78af6144
feat: group TCP mux proxies ( #1765 )
2020-04-20 13:35:47 +08:00
fatedier
649f47c345
change log method
2019-10-12 20:13:12 +08:00
fatedier
b3ed863021
support http load balancing
2019-07-31 00:41:58 +08:00
fatedier
08c17c3247
frpc: support health check
2018-12-07 18:40:17 +08:00
fatedier
495b577819
update group ci
2018-05-23 14:39:12 +08:00