а також в ти темах лічильник "Кількості прочитань" на хоче рохувать.
---
Чому помилки виникають, звідки вони взагалі беруться?
Постиралися поля з даними про повідомлення. Напевно один потік писав у файл а інший читав з нього в цей момент.
Там код приблизно такого вигляду:
fopen(CTBFILE, "$datadir/$ctbid.ctb");
@ctbfile = <CTBFILE>;
fclose(CTBFILE);
$ctbfile[5] = "$thisstatus\n";
fopen(CTBFILE, ">$datadir/$ctbid.ctb");
fclose(CTBFILE);
Тобто файл читається повністю у масив рядків, шостий рядок заміняється на потрібне значення, далі файл перезаписується повністю назад.
Потрібно перевіряти чи файл не порожній після прочитання і повторювати спробу декілька раз (оптимістичний підхід). Нажаль автори широко використовували Ctrl-C/Ctrl-V, тому код розкиданий по десяткам місць. Треба написати функцію, яка для читання файлів з очікуваним не-нульовим розміром і повставляти її в потрібних місцях.