sgcWebSockets verwendet ZLib für die WebSocket-Komprimierung/-Dekomprimierung. Kürzlich hat ZLib eine neue Version veröffentlicht, die folgende Probleme behebt:
- Behebt einen Deflate-Fehler bei Verwendung der Strategie Z_FIXED, der zu Out-of-bound-Zugriffen führen kann.
- Behebt einen Deflate-Fehler, wenn das Fenster in deflate_stored() voll ist.
- Beschleunigt CRC-32-Berechnungen um den Faktor 1,5 bis 3.
- Nutzt die Hardware-CRC-32-Anweisung auf ARMv8-Prozessoren.
- Beschleunigt crc32_combine() mit Potenztabellen von x.
- Fügt crc32_combine_gen() und crc32_combine_op() für schnelle Kombinationen hinzu.
ZLib statisch gelinkt
sgcWebSockets Enterprise Edition enthält eine angepasste Indy-Version, die ZLib nutzt, um die .obj-Dateien statisch zu linken. Diese Dateien wurden auf die neueste ZLib-Version aktualisiert, du musst also nur die neueste sgcWebSockets-Version herunterladen, um diesen Fix anzuwenden.
Das ist die Standardoption, daher genügt für 99 % der Nutzer einfach das Aktualisieren der sgcWebSockets-Version (sgcWebSockets 2022.4+).
ZLib als dynamische Bibliothek
Ab sgcWebSockets 2022.4.0 kannst du die ZLib-Bibliothek dynamisch laden, statt die .obj-Dateien statisch in dein Binary zu linken.
Füge dazu das folgende Conditional Define zu deinem Projekt hinzu:
SGC_DYNAMICLOAD_ZLIB
Alternativ kannst du die Datei sgcIndy.inc (im Source-Ordner) bearbeiten und die folgende Zeile ergänzen
{$DEFINE SGC_DYNAMICLOAD_ZLIB}
Zum Schluss musst du den Ort angeben, an dem sich die ZLib-Bibliothek befindet. Verwende dazu die folgende Methode und übergebe den vollständigen Pfad (ohne den Bibliotheksnamen), in dem sie liegt
sgcIdZLibHeaders.IdZLibSetLibPath('c:\software\zlib');
*Diese Konfiguration ist nur für sgcWebSockets Enterprise Edition mit Quellcode gültig. Die kompilierte ZLib-DLL kann aus dem privaten Konto heruntergeladen werden.
