sgcWebSockets gebruikt ZLib voor WebSocket-compressie/-decompressie. Recent heeft Zlib een nieuwe versie uitgebracht die de volgende problemen oplost:
- Fix van een deflate-bug bij het gebruik van de Z_FIXED-strategie die kan leiden tot out-of-bound-toegangen.
- Fix van een deflate-bug wanneer het venster vol is in deflate_stored().
- CRC-32-berekeningen 1,5 tot 3 keer sneller.
- Gebruik van de hardware-CRC-32-instructie op ARMv8-processors.
- crc32_combine() versneld met machten van x-tabellen.
- crc32_combine_gen() en crc32_combine_op() toegevoegd voor snelle combinaties.
ZLib statisch gelinkt
sgcWebSockets Enterprise Edition bevat een aangepaste Indy-versie die ZLib gebruikt om de .obj-bestanden statisch te linken. Deze bestanden zijn bijgewerkt naar de laatste ZLib-versie, dus je hoeft alleen de laatste sgcWebSockets-versie te downloaden om deze fix toe te passen.
Dit is standaard de optie, dus voor 99% van de gebruikers is alleen het bijwerken van de sgcWebSockets-versie voldoende (sgcWebSockets 2022.4+).
ZLib dynamische bibliotheek
Vanaf sgcWebSockets 2022.4.0 kun je de zlib-bibliotheek dynamisch laden in plaats van de .obj-bestanden statisch te linken in je binary.
Voeg hiervoor de volgende Conditional Define toe aan je project:
SGC_DYNAMICLOAD_ZLIB
Als alternatief kun je het bestand sgcIndy.inc bewerken (in de source-map) en de volgende regel toevoegen
{$DEFINE SGC_DYNAMICLOAD_ZLIB}
Tot slot moet je de locatie van de ZLib-bibliotheek instellen. Gebruik hiervoor de volgende methode en geef het volledige pad (zonder de naam van de bibliotheek) mee waar deze zich bevindt
sgcIdZLibHeaders.IdZLibSetLibPath('c:\software\zlib');
*Deze configuratie is alleen geldig voor sgcWebSockets Enterprise Edition met broncode. De gecompileerde ZLib-dll kan worden gedownload vanuit het privé-account.
