Files
drhider/History/code-fixes/2026-08-20-broken-files.md
T

1.5 KiB

2026-08-20 — Устойчивость к битым файлам (v0.0.53)

Root cause (найден по логу /tmp/drhider.log)

SSE "connection failed" при обработке НЕ был обрывом шлюза. Воркер падал целиком:

worker: exception: PdfminerException(PDFSyntaxError('No /Root object! - Is this really a PDF?'))

на битом PDF (миниатюра 142 байта). Исключение в extract_text не было обёрнуто по-файлово → воркер ронялся → SSE слал error → фронт показывал "SSE connection failed".

Фикс (drhider/obfuscator.py)

Проход 1: extract_text обёрнут в try/except. При ошибке файл добавляется в skipped, логируется warning, файл пропускается, остальные обрабатываются. Проход 2: файлы из skipped пропускаются (не попадают в результат).

Проверено на flat/ (10 файлов: 5 валидных + 5 битых миниатюр):

  • битые PDF/docx пропущены (PDFSyntaxError/BadZipFile), валидные 5 → в zip.
  • воркер не падает, complete доходит.

Примечание

Миниатюры 54-142 B в /mnt/y/T/flat — НЕ валидные PDF/docx (мусор из корзины). Их можно удалить из тестового набора (или оставить как кейс устойчивости).