carla-simulator/carla

port(streaming): ServerSession::CloseNow idempotency fix to ue5-dev

已关闭

#9,759 创建于 2026年5月27日

 (0 条评论) (0 个反应) (0 位负责人)C++ (3,227 个派生)batch import
Good community contribgood first issue

仓库指标

星标
 (10,105 个星标)
PR 合并指标
 (平均合并 17天 10小时) (30 天内合并 21 个 PR)

描述

Context

PR #9740 fixed a double-close race in ServerSession::CloseNow() on ue4-dev when two async paths (deadline timer + a failing write) both triggered a close for the same session, _on_closed() -> DisconnectSession() was called twice, silently evicting a still-alive subscriber from the world-snapshot stream.

The fix adds std::atomic_bool _is_closed{false} to ServerSession and guards CloseNow() with _is_closed.exchange(true) so the close path runs exactly once.

Task

Port the fix from ue4-dev to ue5-dev.

Files to update:

  • LibCarla/source/carla/streaming/detail/tcp/ServerSession.h
  • LibCarla/source/carla/streaming/detail/tcp/ServerSession.cpp

References

  • Fix: #9740

贡献者指南