Browse Source

Record call teardown regression coverage and verified builds

master
evgeny 5 days ago
parent
commit
39c5274819
  1. 18
      doc/tasks.md
  2. 2
      tests/test_call.c

18
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, смена камеры/разрешения/кодека/битрейта во время звонка.

2
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"

Loading…
Cancel
Save