哪个 Openssl 版本与 Indy 10 版本 5519 和 5438 兼容?

Which Openssl version compatible with Indy 10 version 5519 and 5438?

我在 Delphi 5 下使用 Indy 10 build 5438 和 OpenSSL 1.0.2m。

使用一些(不是所有)电子邮件帐户发送 TLS v1.2 电子邮件时出现一些问题,我想尝试为 Indy 10 升级 OpenSSL DLL 文件,但我不知道哪个一个兼容。

哪个是与 Indy 10 build 5438 兼容的最新(!)OpenSSL 版本?

我已经尝试使用 fulld_5.bat 在 Delphi 5 下安装最新的 Indy 10 build 5519,但失败了:

IdIMAP4.pas(2958) Error: Undeclared identifier: 'LLTextBuf'

IdIMAP4.pas(2958) Error: Incompatible types

IdIMAP4.pas(3185) 
IdIMAP4.pas(3697) 
IdIMAP4.pas(4209) 
IdIMAP4.pas(4721) 
IdIMAP4.pas(5233) 
IdIMAP4.pas(5745) 
IdIMAP4.pas(6257) 
IdIMAP4.pas(6769) 
IdIMAP4.pas(7251) 

IndyProtocols50.dpk(267) Fatal: Could not compile used unit 'IdIMAP4.pas'
Error!

Indy 10 使用标准的 OpenSSL DLL。任何 1.0.2 版本的 OpenSSL 都与 Indy 兼容 (Indy does not support OpenSSL 1.1.x yet)。但是,预构建版本的 OpenSSL 1(在没有 MS Visual C++ 运行时依赖项的情况下构建)在 Indy 的 Fulgan 镜像上可用:

https://indy.fulgan.com/SSL

1:在撰写本文时,可用的最新版本是 1.0.2t。

至于 IdIMAP4.pas 错误,那是最近一次代码签入中的错字。在第 2958 行,对 LLTextBuf 的引用需要改为 LTextBuf

LUseNonSyncLiteral := LCanUseNonSyncLiteral and ((not LNonSyncLiteralIsLimited) or (Length({LLTextBuf}LTextBuf) <= 4096)); // <-- change LLTextBuf to LTextBuf

我现在已经在官方 Indy 代码(SVN 修订版 5520)中修复了这个问题。