From 39c527481992c0ec5a31756bd5e667bb7973dcb2 Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 15 Oct 2026 12:28:54 +0200 Subject: [PATCH] Record call teardown regression coverage and verified builds --- doc/tasks.md | 18 ++++++++++-------- tests/test_call.c | 2 ++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/tasks.md b/doc/tasks.md index 68b01840..3fbcf452 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,14 +4,16 @@ ## Текущие задачи -[ ] **Проверить HANGUP B → A после восстановления транспорта в test_call** — 15.10.2026: - Регрессия завершения видеопорта выявила: после искусственного DOWN/UP в P_SEND_MEDIA - B завершает звонок локально, но A получает ENDED по NO_TRAFFIC через 20с вместо REMOTE_HANGUP. - Проверка причин завершения теперь явная; простой факт двух ENDED не означает доставку HANGUP. - Отмена ожидающих TX/configure и позднего open в call_video_port проверена; до строгой проверки - также прошли новый звонок, защита от старого close и detach с ожидающим post. - Причина потери сигналинга пока не установлена: проверить router epochs/control после DOWN/UP - и корректность тестового сценария. Сборки core/desktop/APK проходят; обновление не установлено. +[x] **Завершение звонка и видеопорта после обрыва транспорта** — 15.10.2026: + Трасса test_call доказала потерю HANGUP при смене эпохи сигналинга: router reset удалял старую очередь. + HANGUP/CANCEL/DECLINE теперь подтверждаются END_ACK и повторяются каждые 300мс, максимум 20с. + Медиа/локальная TX-очередь освобождаются сразу, CM и завершённая запись — после ACK или deadline. + Проверены причины ENDED, потеря двух ACK, повторный HANGUP после удаления записи во время нового звонка, + одновременное завершение, DECLINE и освобождение без подтверждения. Поздние видеокоманды отменяются; + старый close не закрывает новый видеопорт, detach отменяет ожидающий post. + Core/desktop/APK собраны, 154 теста ядра, test_call_video_clock и 97 Android unit-тестов прошли. + Обновление установлено на Samsung RZ8R72MG64B; ChatGUI требует перезапуска для нового протокола. + Проверка реального звонка после обновления обеих сторон остаётся ручной. [ ] **Видеозвонки Android и ChatGUI** — 14.10.2026: H.265 с fallback H.264, смена камеры/разрешения/кодека/битрейта во время звонка. diff --git a/tests/test_call.c b/tests/test_call.c index 9484fcf6..4ec56eee 100644 --- a/tests/test_call.c +++ b/tests/test_call.c @@ -9,6 +9,8 @@ // → B hangup с ожидающими видеокомандами → обе ENDED, поздние команды отменены. // 3. Новый звонок: поздний close старого порта не закрывает новый, detach отменяет post. // 4. decline из PM: A call_start → B INCOMING → B decline → обе ENDED(DECLINE). +// HANGUP переживает смену router epoch и потерю END_ACK; повторы не затрагивают новый звонок. +// Одновременное завершение и deadline без ACK освобождают записи и не дублируют ENDED. #include "chat_core.h" #include "chat_sync.h"