From 26fe4bc0e89e6e2757e34c193e73ebb99a88d040 Mon Sep 17 00:00:00 2001 From: Sergey Prokhorov Date: Mon, 6 Apr 2026 17:43:18 +0200 Subject: [PATCH] bugfix: Clear `.hello_acc` in mtp_handler when no longer needed Before fix accumulator was never cleaned, taking memory. Clear the accumulator on transition to tunnel stage (handshake complete) and on transition to fronting stage (data already forwarded to front_sock). --- src/mtp_handler.erl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mtp_handler.erl b/src/mtp_handler.erl index a3105cd..d05a404 100644 --- a/src/mtp_handler.erl +++ b/src/mtp_handler.erl @@ -427,7 +427,8 @@ parse_upstream_data(<>, dc_id = {RealDcId, Pool}, codec = Codec, policy_state = PState, - stage = tunnel}, + stage = tunnel, + hello_acc = <<>>}, hibernate)); {error, Reason} when is_atom(Reason) -> mtp_metric:count_inc([?APP, protocol_error, total], 1, #{labels => [Listener, Reason]}), @@ -538,7 +539,7 @@ do_front(SniDomain, Config, Data, Ip, Listener, ok = gen_tcp:send(FrontSock, Data), ok = Transport:setopts(Sock, [{active, once}]), ?LOG_INFO("Domain fronting to ~s:~p for SNI ~s", [Host, Port, SniDomain]), - {ok, S#state{stage = fronting, front_sock = FrontSock}}; + {ok, S#state{stage = fronting, front_sock = FrontSock, hello_acc = <<>>}}; {error, Reason} -> ?LOG_WARNING("Domain fronting connect to ~s:~p failed: ~p", [Host, Port, Reason]),