Jens-G opened a new pull request, #3829:
URL: https://github.com/apache/thrift/pull/3829

   OpenSSL 3.0 removed `ERR_put_error` and made `SSL_get_peer_certificate` a 
macro
   for `SSL_get1_peer_certificate`, so the OpenSSL-dependent modules in `lib/d`
   failed to link against the OpenSSL 3.x that current distributions ship. On
   Ubuntu 22.04 / 24.04 the first SSL unittest binary fails at link with 
undefined
   references to both symbols, so `make -C lib/d check` cannot pass there — and 
the
   same failure hits anyone using the D binding with TLS on a current 
distribution.
   
   This adds a `use_openssl_3` build identifier that calls
   `SSL_get1_peer_certificate` and the `ERR_new` / `ERR_set_debug` / 
`ERR_set_error`
   sequence, declaring the handful of symbols the pinned deimos 1.1.0h bindings 
do
   not yet carry (so no deimos bump is required). `configure` selects it
   automatically when OpenSSL is 3.0 or newer; earlier OpenSSL keeps the 
identifier
   the modules used before.
   
   `make -C lib/d check` now builds and passes all five OpenSSL-dependent 
modules
   (`async/ssl`, `internal/ssl`, `internal/ssl_bio`, `transport/ssl`,
   `server/transport/ssl`) in both debug and release against OpenSSL 3.0.2. A
   round-trip unit test in `internal/ssl_bio` covers the new error path. The
   `lib-d` CI job installs the deimos OpenSSL bindings and asserts that the SSL
   tests are actually enabled, so the modules are no longer silently dropped 
for a
   missing dependency.
   
   ---
   Investigated and written with AI assistance (Claude Opus 4.8); reviewed and 
submitted by Jens Geyer.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to