mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
fix(gateway): clamp a heartbeat ack to the session sequence (#2283)
This commit is contained in:
1 parent
4261cc2ea5
commit
be3e12e60d
2 files changed
+15
-2
No files matched your search
@@ -280,13 +280,14 @@ handle_is_staff(State) ->
|
||||
handle_heartbeat_ack(Seq, #{ack_seq := AckSeq} = State) when Seq < AckSeq ->
|
||||
{reply, true, State};
|
||||
handle_heartbeat_ack(Seq, #{buffer := Buffer} = State) ->
|
||||
NewBuffer = drop_acked_buffer(Seq, Buffer),
|
||||
AckedSeq = min(Seq, maps:get(seq, State, Seq)),
|
||||
NewBuffer = drop_acked_buffer(AckedSeq, Buffer),
|
||||
NewBytes =
|
||||
case is_list(NewBuffer) of
|
||||
true -> session_init:replay_buffer_bytes(NewBuffer);
|
||||
false -> limited_deque:bytes(NewBuffer)
|
||||
end,
|
||||
NewState0 = State#{ack_seq => Seq, buffer => NewBuffer, buffer_bytes => NewBytes},
|
||||
NewState0 = State#{ack_seq => AckedSeq, buffer => NewBuffer, buffer_bytes => NewBytes},
|
||||
NewState = session_connection_guild:repair_stalled_guild_connects(NewState0),
|
||||
{reply, true, NewState}.
|
||||
|
||||
|
||||
Reference in new issue
Block a user