В мониторинге заметил странную особенность, у некоторых CSS серверов напрочь не хотела отображаться страница с подробной информацией.
Разобраться дошли руки только сейчас. Все оказалось в том что сервера отвечали сжатыми данными (BZip), а LGSL их не очень правильно воспринимал.
Если быть более точным то, LGSL стандартно принимает все пакеты, обнаруживает по первому пакету что это 4й тип (BZip данные) и режет, тут то собака и зарыта. От серверов чаще всего приходило 2 пакета, начало и продолжение. А LGSL воспринимал это как 2 разных пакета и обрезал в начале по 18 байт. Хотя если пакет «продолжение» у него нужно обрезать 10 байт.
Не буду дальше продолжать и углубляться в мат. часть предоставлю сразу исправления:
Открыть: ./lgsl_files/lgsl_protocol.php
Найти:
elseif ($packet_type == 4) { $packet_order = ord($packet[9]); $packet = substr($packet, 18); }
Заменить на:
elseif ($packet_type == 4)
{
$packet_order = ord($packet[9]);
if ($packet_order == 0)
{
list(, $packet_checksum) = unpack('V', substr($packet, 14, 4)); // CRC32 checksum
$packet = substr($packet, 18);
}
else
{
$packet = substr($packet, 10);
}
}
Найти:
$buffer = bzdecompress($buffer);
Добавить ниже:
if (crc32($buffer) != $packet_checksum)
{
$server['e']['bzip2'] = "unavailable"; $lgsl_need['e'] = FALSE;
return TRUE;
}
Закрыть и загрузить на сервер.
Все.