Repository navigation
Correção
Corrige ERangeError no cálculo do hash de headers no FPC quando range checking está ativado. Headers comuns, como Content-Type e Authorization, podiam impedir a extração de headers e as operações do dicionário. Correção integrada no #620.
O DJB2 utiliza agora um intermediário QWord e redução explícita módulo 2³² antes da conversão para DWord. Preserva os hashes anteriores, a equivalência entre maiúsculas/minúsculas ASCII e o contrato de IEqualityComparer<string>, sem desabilitar as verificações de range/overflow e sem introduzir alocações de strings no cálculo.
Proteção contra regressões
- Adiciona quatro grupos com 63 verificações: hashes conhecidos, chave vazia, equivalência de caixa ASCII, entrada de 4.096 caracteres, inserção/busca/atualização/remoção no dicionário e extração de headers de uma requisição FPC.
- Os quatro grupos reproduziram o erro antes da correção e passaram integralmente depois dela.
- O script recompila o teste e as units do Horse com
-B -Cr -Co; o programa recusa compilação sem range e overflow checking ativados. - A regressão passa a integrar os jobs de FPC estável e FPC trunk no GitHub Actions, em configurações padrão e Epoll.
Validação
-
Versão preparada 3.3.15: FPC 3.2.2/Linux x86_64, padrão e Epoll, 63 verificações por configuração, zero falhas e nenhum vazamento reportado pelo
heaptrc. -
Delphi 13 Florence, padrão: 91 testes de parâmetros e API HTTP, sem falhas ou erros.
-
HORSE_VERSIONeTHorse.Versionconferidos como 3.3.15 no Delphi 10 Seattle, Delphi 13 Florence e FPC 3.2.2. -
No FPC 3.2.2/Linux x86_64, a falha foi reproduzida com
-Cre com-Cr -Co; apenas-Conão provocou a exceção observada. -
GitHub Actions da versão (#621): os checks
testefpc-trunk-keepalivepassaram, incluindo a regressão de hash no FPC estável e no trunk. Execução: https://github.com/HashLoad/horse/actions/runs/39455854727.
Os testes FPC de hash exercitam diretamente as classes, sem abrir servidor HTTP. A validação HTTP foi realizada em Delphi. A mudança de implementação é exclusiva do caminho FPC.
Comparação: 3.3.14...3.3.15