mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
fix WebSocket deadlock on slow client + mobile TX controls visibility
Deadlock: BroadcastBinary held FClientLock during blocking SockSend; slow/stalled client caused Stop() to wait forever. Fix: set SO_SNDTIMEO=1s on each accepted socket so SockSend returns error instead of hanging, mark client wsClosed on send failure so subsequent ticks skip it. Mobile: move TONE/TX-slider/MOX to front of toolbar via CSS order so they are immediately visible without horizontal scroll on phones. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -145,6 +145,9 @@ begin
|
||||
P := @Data;
|
||||
Result := SendRaw(P^, Len);
|
||||
end;
|
||||
// Ошибка отправки (таймаут SO_SNDTIMEO, разрыв) — немедленно закрываем
|
||||
// клиент чтобы BroadcastBinary не держал FClientLock на следующих тиках.
|
||||
if not Result then FState := wsClosed;
|
||||
finally
|
||||
FLock.Leave;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user