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]
