Repository navigation
Request-FP v1.2.0 Release Notes
Release Date: January 1, 2026
This is a minor feature release that adds architecture mismatch detection and dynamic DLL discovery to improve Windows OpenSSL diagnostics, including support for vendors with non-standard DLL naming conventions.
🎯 What's New
Architecture Mismatch Detection
After v1.1.0 release, we discovered that some users were still having OpenSSL failures even after following the installation instructions correctly. The root cause? They had 64-bit executables but 32-bit OpenSSL DLLs (or vice versa).
v1.2.0 makes this obvious:
When you run ssl_debug.exe, you now see:
=== OpenSSL Debug Information ===
Executable architecture: 64-bit
Required DLL names: libssl-*-x64.dll and libcrypto-*-x64.dll
If initialization fails, the error message now explicitly states:
OpenSSL initialization failed: Error loading library
This is a 64-bit executable. You need 64-bit DLLs:
OpenSSL 1.1.x: libssl-1_1-x64.dll and libcrypto-1_1-x64.dll
OpenSSL 3.x: libssl-3-x64.dll and libcrypto-3-x64.dll
IMPORTANT: Ensure DLL architecture (32-bit vs 64-bit) matches your executable!
📦 Changes
Enhanced Diagnostics
- ssl_debug Example - Shows executable architecture upfront
- Architecture-Specific Error Messages - Error messages now detect and display whether you need 32-bit or 64-bit DLLs
- Dynamic DLL Detection - New
FindSSLDLLPathfunction shows which OpenSSL DLL FPC actually loaded - ReadLn Pause - ssl_debug now pauses before exit when run from IDE (community contribution)
🔄 Upgrading from v1.1.0
Breaking Changes: None
Migration Required: No
Simply update your repository:
git pull origin mainAll v1.1.0 code continues to work without modification.
📊 Changes Summary
- Files Modified: 4 (CHANGELOG.md, README.md, src/Request.pas, examples/ssl_debug/ssl_debug.pas)
- Library Features: Architecture detection in error messages, dynamic DLL discovery for debug mode
- Bug Fixes: Better diagnostics for architecture mismatch, vendor version disguise detection
- Breaking Changes: 0
🐛 What This Fixes
Problem 1: Users with mismatched executable/DLL architectures got cryptic "Error loading library" messages with no hint about the real issue.
Solution:
- Detect executable architecture at runtime
- Display required DLL names based on architecture
- Provide explicit warnings about architecture matching
Problem 2: No visibility when vendors disguise OpenSSL versions (e.g., naming 3.x DLLs as 1.1.x).
Solution:
- Dynamic module enumeration finds loaded DLLs containing "libssl" or "libcrypto"
- Displays both filename AND actual version string to reveal mismatches
Problem 3: No visibility into which OpenSSL version FPC actually loaded.
Solution:
- Dynamic DLL detection shows exact DLL paths loaded by FPC
- Shows actual version string from the loaded DLL
Impact: Users can now instantly diagnose OpenSSL issues and verify which version FPC loaded, even when vendors disguise DLL versions.
📝 Full Changelog
See CHANGELOG.md for complete details.
🔗 Quick Links
- Documentation: README.md
- Troubleshooting: README.md#-troubleshooting
- SSL Debug Tool: examples/ssl_debug/
💡 For Users Still Having Issues
If you're still experiencing OpenSSL failures after upgrading to v1.2.0:
-
Run the debug tool:
cd examples/ssl_debug lazbuild --build-mode=Debug ssl_debug.lpi ssl_debug.exe -
Check the architecture line - Does it say 64-bit or 32-bit?
-
Verify your DLLs match - If you have a 64-bit exe, you MUST have DLLs with
-x64in the filename -
Check the installer you downloaded - Make sure it matches your architecture (Win64 vs Win32)
Understanding OpenSSL DLL Dependencies
Important discovery from community testing: FPC's openssl.pas tries multiple OpenSSL DLL names in priority order:
- FPC tries (64-bit):
libssl-3-x64→libssl-1_1-x64→ssleay32→libssl32 - FPC tries (32-bit):
libssl-3→libssl-1_1→ssleay32→libssl32
FPC correctly prioritizes OpenSSL 3.x first! However, Windows DLL search order may override this. If multiple versions exist in System32 or Known DLLs registry, Windows may load an older version despite FPC preferring newer ones. This is why dynamic DLL detection is valuable—it shows which version actually loaded.
This is a Windows-specific complexity - Linux uses dynamic library linking and works flawlessly.
v1.2.0's dynamic DLL detection uses EnumProcessModules to show users exactly which OpenSSL DLL Windows actually loaded from FPC's search list. This eliminates guesswork about which version is running.
Note for fpcupdeluxe Users
FYI: fpcupdeluxe with default settings installs 32-bit FPC, even on 64-bit Windows. This is a common choice for lower memory footprint and smaller executables.
If you're using 32-bit FPC, you need 32-bit OpenSSL:
- Download:
Win32OpenSSL_Light-3_6_0.exe(the Win32 installer) - Use DLLs:
libssl-3.dllandlibcrypto-3.dll(without-x64suffix)
The v1.2.0 debug output shows your executable architecture (32-bit or 64-bit) upfront, making it easy to verify which OpenSSL version you need.
💝 Thank You
Special thanks to:
- The community member who suggested adding
ReadLnto prevent console auto-close in the IDE! - Gus for pointing out the hardcoded DLL name issue
Download: v1.2.0 Release
Previous Release: v1.1.0
Happy coding! 🚀