Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão de alteração de carregamento OpenSSL


  • Este tópico foi criado há 3139 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde.

 

Devido a uma necessidade em particular de uma aplicação, foi necessário fazer uma modificação na libeay32.pas que carrega as dlls do OpenSSL para evitar as mesmas fossem carregadas em memória logo no inicio da aplicação e sim quando forem realmente necessárias.

Problema: A aplicação que usa a AcBr é quem extrai todos os arquivos necessários para execução. Mas como o carregamento das dlls openssl (libeay32.dll, ssleay32.dll, e por tabela msvcr100.dll/120.dll dependendo da versão do open ssl) é executada antes da execução dos unit initializers* o executável nunca viria a carregar pela, ainda ,inexistencia da dlls fisicamente no diretório.

* codigo "initialization" de uma unit, que é onde , no caso, se extrai os arquivos.

Solução: Utilizando de uma feature ("delayed") que foi inserida no Delphi 2010 que faz o carregamento atrasado das dependências externas.

 

Segue em anexo a unit com a modificação sugerida.

libeay32.pas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Continua funcionando como ja estava funcionando antes.

Só que infelizmente não carregando por demanda como no caso de ser compilada em Delphi 2010 pra cima. Ou seja, não ha quebra de compatibilidade e sim melhoria.

Veja que a existe um check de versão por diretiva de compilação no código que só utiliza a feature se for num compilador com suporte, caso contrario compila como estava anteriormente sem nenhuma modificação a mais. Só trocar o .pas e reinstalar (recompilando) a acbr.

Editado por Valdecir Luciano Carvalho
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Mas um pouco delayed

http://blogs.embarcadero.com/abauer/2009/08/25/38894

http://www.drbob42.com/examine/examinC1.htm

 

 

Editado por hleorj
  • Curtir 1
Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Então.. tenho um projeto em XE6 e essa implementação só gerou dor de cabeça!

pois o mesmo não funciona, recebi relatos após gerar o build que ele não consegue carregar a dll em questão!

então o que me dizem os especialistas no delay?

ps: não é dll faltando, nem colocada em local errado, muito menos conflito entre versões

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3139 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...