15 Commits

Author SHA1 Message Date
zarazaex69 98c6dec4a0 docs: normalize em dash to hyphen in Russian documentation and code comments 2026-05-24 05:31:55 +03:00
zarazaex69 d8139a7178 refactor(muxconn): recycle plaintext buffers via sync.Pool 2026-05-22 20:37:17 +03:00
zarazaex69 99a7b12538 refactor(muxconn): replace mutex/cond buffer with channel pipeline 2026-05-22 19:55:13 +03:00
zarazaex69 4b7185f411 fix(client): survive liveness loss without killing SOCKS listener 2026-05-21 13:42:22 +03:00
zarazaex69 143f6dd8a6 feat: add peer-addressed routing across transport and engine layers 2026-05-18 02:38:45 +03:00
zarazaex69 e7657b2619 refactor: remove link layer
internal/link and internal/link/direct were a single-implementation
abstraction layer where directLink mechanically proxied every method to
transport.Transport — only Features() lived above transport.Transport,
and even that was a Features() alias. Six layers of plumbing for zero
behavioural value.

Drop the layer entirely:
- muxconn.Conn now takes a transport.Transport directly.
- server.Server and client.Client store transport.Transport, call
  transport.New, and expose Features() through transport.Transport's
  built-in method.
- server.Config and client.Config lose their Link string field.
- session.Config loses Link + validateLink + ErrLinkRequired/ErrUnsupportedLink.
- config.File and config.Profile lose the link YAML key.
- pkg/olcrtc/tunnel.Config loses Link.
- mobile drops defaultLink, SetLink, and mobileConfig.link.

Two e2e tests that exercised link.New directly are renamed to call
transport.New (TestTransportCreatesAllProviderTransportCombinations and
TestTransportConnectsFastProviderTransportMatrix); behaviour is unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 13:51:02 +03:00
zarazaex69 20f2c1397c feat: add timeout to openControlStream function 2026-05-13 22:07:34 +03:00
zarazaex69 0723ddf2f5 fix: golangci errors 2026-05-11 02:21:41 +03:00
zarazaex69 f6b82da099 feat: remove nolint 2026-05-10 23:02:00 +03:00
zarazaex69 0ae6721ee2 fix: panic in seichannel 2026-05-09 22:22:34 +03:00
zarazaex69 87a546605c fix: golangci 2026-05-07 16:36:30 +03:00
zarazaex69 aa49808e68 feat(test): init base test 2026-05-06 22:33:29 +03:00
zarazaex69 a2234b6a2a perf: optimize write polling and kcp interval for lower latency 2026-05-03 16:10:32 +03:00
zarazaex69 dd606ddfb2 fix: fix all golangci errors 2026-05-03 06:10:48 +03:00
zarazaex69 5bb8178e50 feat(smux): replace internal/mux with smux over KCP
Replace the hand-rolled multiplexer (internal/mux) with xtaci/smux v2
running on top of the existing KCP-reliable vp8channel transport.

- Add internal/muxconn: io.ReadWriteCloser adapter bridging link.Link
  (message-oriented) into the byte-stream smux expects; applies AEAD
  on every write and inverts it on every received message
- Rewrite client: smux.Client session over muxconn; OpenStream per
  SOCKS5 connection; reconnect handler tears down and rebuilds session
- Rewrite server: smux.Server session; AcceptStream loop dispatches
  each stream to a proxy handler; tolerates session bounces on reconnect
- Delete internal/mux: all sequence/reorder/buffer logic is now
  handled by smux + KCP
2026-05-03 00:45:58 +03:00