Record reproduced media block receive and completion defects
This commit is contained in:
1 parent
3a703d1093
commit
108dfae82b
1 file changed
+24
@@ -101,6 +101,30 @@
|
||||
Неиспользуемые chunk/rtt удалены из нового формата QUERY_RESP. Блок однозначно задаётся block_id,
|
||||
а его номер загрузчик берёт из сохранённых метаданных; позиция в выборочной пачке не считается номером блока.
|
||||
|
||||
[ ] **media_delivery CHUNK: прогресс только после проверенного приёма и записи** — воспроизведено 22.10.2026:
|
||||
Реальные router callbacks/SQLite, корректные подпись блока и ключ автора. CHUNK с data_len=1 без payload
|
||||
оставляет файл пустым, но устанавливает bytes_received=1, RECV и обновляет last_progress_tb.
|
||||
То же при внедрённом fwrite=0/ENOSPC. Текущий unit-тест допускает 456 байт при expected_size=100.
|
||||
Проверять полный payload, геометрию/непрерывность, текущего держателя и попытку до файловых операций;
|
||||
не считать дубли и неудачную запись прогрессом. Нужна привязка пакетов к отдельной попытке передачи блока.
|
||||
Стенд /tmp/media-block-audit.c; логи /tmp/media-block-audit-truncated.log, /tmp/media-block-audit-write.log.
|
||||
|
||||
[ ] **media_delivery DONE: проверка ключа и конечный результат ошибки хеша** — воспроизведено 22.10.2026:
|
||||
Для настоящей Ed25519 пары с pubkey[0]=0 корректно подписанный блок отвергается: наличие ключа определяется
|
||||
первым байтом. При отсутствии ключа проверка заменяется сравнением wire block_sig с метаданными.
|
||||
Отдельно: при верной подписи блока и несовпадающем хеше файла state=DONE, validated=0/1, active=1;
|
||||
три проверки watchdog возвращают 0, done не вызывается. Итоговая ошибка должна завершать загрузку,
|
||||
а публикация назначения и регистрация допустимы только после проверенных чтения/записи/close/SHA256.
|
||||
Логи /tmp/media-block-audit-keyzero.log, /tmp/media-block-audit-hash.log; реализация не менялась.
|
||||
|
||||
[ ] **media_delivery progress_cb: отмена освобождает dl внутри обработчика DONE** — подтверждено ASAN 22.10.2026:
|
||||
progress_cb вызывает media_download_cancel, md_dl_finish освобождает dl; media_download_handle_done затем
|
||||
вызывает md_dl_send_have_block с освобождённым указателем. ASAN heap-use-after-free, чтение 8 байт.
|
||||
Уведомление должно быть последним обращением обработчика к внешнему коду; финализация имеет собственный
|
||||
отменяемый шаг, done вызывается ровно один раз после снятия timers/CM/relay/waiters и удаления из индекса.
|
||||
Проверить также отмену с повторным start того же media_id, отмену на последнем progress и поздние пакеты.
|
||||
Лог /tmp/media-block-audit-cancel-asan.log; стенд вне репозитория /tmp/media-block-audit.c.
|
||||
|
||||
[+] **test_stream_service: убрать зависимость bootstrap-проверки от гонки TCP-handshake** — исправлено 22.10.2026:
|
||||
Падение на строке 409: REINIT=0 при probes=1/subflows=1/failures=0 и доставленной первой пачке.
|
||||
Встречный TCP-линк успевает сообщить peer_reset_id до ETCP CONFIRM: начальная эпоха уже известна,
|
||||
|
||||
Reference in new issue
Block a user