sgcWebSockets usa o ZLib para compressão/descompressão WebSocket. Recentemente, o Zlib lançou uma nova versão com as seguintes correções:
- Corrige um bug no deflate ao usar a estratégia Z_FIXED que pode resultar em acessos fora dos limites.
- Corrige um bug no deflate quando a janela está cheia em deflate_stored().
- Acelera os cálculos de CRC-32 por um fator de 1,5 a 3.
- Usa a instrução de hardware CRC-32 em processadores ARMv8.
- Acelera crc32_combine() com tabelas de potências de x.
- Adiciona crc32_combine_gen() e crc32_combine_op() para combinações rápidas.
ZLib Statically Linked
A sgcWebSockets Enterprise Edition inclui uma versão customizada do Indy que usa o ZLib para vincular estaticamente os arquivos .obj. Esses arquivos foram atualizados para a versão mais recente do ZLib, portanto basta baixar a versão mais recente do sgcWebSockets para aplicar esta correção.
Esta é a opção padrão, então para 99% dos usuários, apenas atualizar a versão do sgcWebSockets será suficiente (sgcWebSockets 2022.4+).
ZLib Dynamic Library
A partir do sgcWebSockets 2022.4.0, em vez de vincular estaticamente os arquivos .obj no seu binário, você pode carregar a biblioteca zlib dinamicamente.
Para isso, adicione o seguinte Conditional Define ao seu projeto:
SGC_DYNAMICLOAD_ZLIB
Como alternativa, você pode editar o arquivo sgcIndy.inc (localizado na pasta de fontes) e adicionar a seguinte linha:
{$DEFINE SGC_DYNAMICLOAD_ZLIB}
Por fim, você deve definir o caminho onde está a biblioteca ZLib. Para isso, use o seguinte método e passe o caminho completo (sem o nome da biblioteca) onde ela está localizada:
sgcIdZLibHeaders.IdZLibSetLibPath('c:\software\zlib');
*Esta configuração é válida apenas para a sgcWebSockets Enterprise Edition com código-fonte. A dll ZLib compilada pode ser baixada da conta privada.
