Известные проблемы - gogafefe/StAlGoLM GitHub Wiki
Известные проблемы
Исправлено
Разделитель сообщения не распознавался, если приходил слитно с текстом команды
Где:mytcpserver.cpp, slotServerRead()
Проявление: авторизация с верным логином и паролем иногда отклонялась (auth-), хотя данные были верными
Причина: код проверял array == "\x01" — то есть требовал, чтобы разделитель конца сообщения пришёл отдельным, самостоятельным чтением из сокета. На практике (особенно на localhost) текст команды и разделитель почти всегда приходят слитно за одно чтение, и байт 0x01 оставался приклеенным к последнему аргументу команды. Для auth последний аргумент — пароль, поэтому его хэш не совпадал с сохранённым.
Исправление: разделитель теперь ищется через indexOf('\x01') внутри пришедших байт, а не сравнивается с ними целиком. Добавлен буфер QMap<long, QByteArray> mBuffers на каждого клиента — на случай, если сообщение придёт по частям в нескольких чтениях.
Подробности и протокол проверки:V_test_case_task2.xlsx, лист «Дефект 1»
Статистика нового задания не сохранялась — про неё забыли в четырёх местах
Где:databasemanager.cpp, server_functions.cpp
Проявление: ответы на задание проверялись правильно, но значения в его таблице статистики всегда оставались нулями; mystats показывал нули даже после ответов
Причина: в черновой версии задание жило под отдельным номером (5-я таблица статистики), и при его добавлении не обновили четыре места, которые работают с таблицами статистики:
createStatisticRows() заводила пользователю строку статистики только в старых таблицах — в новой строки не было, и UPDATE ... WHERE login молча не находил, что обновлять;
getStatisticRow() возвращала нули для новой таблицы;
deleteStatisticRows() не чистила её при удалении аккаунта;
cmd_mystats() не показывала статистику этого задания.
Исправление: задание перенесено на место заглушки Task2 (все операции со статистикой уже покрывают таблицы 1–4), а вывод cmd_mystats учитывает, что в Task2 десять шаблонов (10 ячеек), а в остальных — по 40.
Проверка:reg → auth → task2 → верный и неверный ответ → mystats 2 показывает ненулевые значения (1:1 2:-1); математика задания покрыта модульным тестом в tests/.
Не наши, но замечены в Тесты.xlsx (для сведения, не проверялось повторно)
Пароль при входе нечувствителен к регистру (auth lol LOL проходит) — отмечено как критический баг
При ответе на задание состояние сессии иногда прерывается без явной причины
Команда users показывает дату/время регистрации, не совпадающие с системными