Search code examples
indy10delphi-5

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


I use Indy 10 build 5438 under Delphi 5 with OpenSSL 1.0.2m.

There is some problem with TLS v1.2 e-mail sending with some (not all) e-mail accounts, and I want to try to upgrade the OpenSSL DLL files for Indy 10, but I do not know which one is compatible.

Which is the latest(!) OpenSSL version that is compatible with Indy 10 build 5438?

I already tried to install the latest Indy 10 build 5519 under Delphi 5 with fulld_5.bat, but it failed:

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!

Solution

  • Indy 10 uses standard OpenSSL DLLs. Any 1.0.2 version of OpenSSL is compatible with Indy (Indy does not support OpenSSL 1.1.x yet). However, pre-built versions of OpenSSL 1 (built without MS Visual C++ runtime dependencies) are available on Indy's Fulgan mirror:

    https://indy.fulgan.com/SSL

    1: At the time of this writing, the latest version available there is 1.0.2t.

    As for the IdIMAP4.pas error, that was a typo in a recent code checkin. On line 2958, the reference to LLTextBuf needs to be changed to LTextBuf instead.

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

    I have now fixed that in the official Indy code (SVN revision 5520).