sgcWebSockets używa ZLib do kompresji i dekompresji WebSocket. Niedawno Zlib wydało nową wersję z poprawkami następujących problemów:
- Naprawa błędu deflate przy użyciu strategii Z_FIXED, który mógł powodować dostępy poza zakres.
- Naprawa błędu deflate, gdy okno jest pełne w funkcji deflate_stored().
- Przyspieszenie obliczeń CRC-32 o współczynnik 1,5 do 3.
- Użycie sprzętowej instrukcji CRC-32 na procesorach ARMv8.
- Przyspieszenie crc32_combine() dzięki tablicom potęg x.
- Dodanie crc32_combine_gen() i crc32_combine_op() do szybkich łączeń.
ZLib linkowane statycznie
sgcWebSockets Enterprise Edition zawiera niestandardową wersję Indy, która używa ZLib do statycznego linkowania plików .obj. Pliki te zostały zaktualizowane do najnowszej wersji ZLib, więc wystarczy pobrać najnowszą wersję sgcWebSockets, aby zastosować tę poprawkę.
Jest to opcja domyślna, więc dla 99% użytkowników wystarczy zaktualizować wersję sgcWebSockets (sgcWebSockets 2022.4+).
ZLib jako biblioteka dynamiczna
Począwszy od wersji sgcWebSockets 2022.4.0, zamiast statycznie linkować pliki .obj w swoim pliku binarnym, możesz ładować bibliotekę zlib dynamicznie.
Aby to zrobić, dodaj następującą dyrektywę warunkową do swojego projektu:
SGC_DYNAMICLOAD_ZLIB
Alternatywnie możesz edytować plik sgcIndy.inc (znajdujący się w folderze źródłowym) i dodać następującą linię:
{$DEFINE SGC_DYNAMICLOAD_ZLIB}
Na koniec musisz ustawić lokalizację biblioteki ZLib — użyj poniższej metody i przekaż pełną ścieżkę (bez nazwy biblioteki) do miejsca, gdzie się znajduje:
sgcIdZLibHeaders.IdZLibSetLibPath('c:\software\zlib');
*Ta konfiguracja jest prawidłowa tylko dla sgcWebSockets Enterprise Edition z kodem źródłowym. Skompilowaną bibliotekę DLL ZLib można pobrać z prywatnego konta.
