On 27.06.25 19:24, Daniel Gustafsson wrote:
The OpenSSL code in libpq have two issues for multithreading: the verify_cb
callback use a global variable to pass back error detail state and there is one
use of strerror().

Slightly misleading title: This is actually about the *backend* libpq code.

The attached fixes both, with no functional change, in order to pave the way
for multithreading:

   * Rather than using a global variable the callback use a new member in the
   Port struct for passing the string, and the Port struct is in turn passed as
   private data in the SSL object

Couldn't this also be done by making that global variable thread-local? But getting rid of it is even nicer.

   * The strerror call is replaced with a strerror_r call using the already
   existing errorbuffer

This one was already discussed some time ago at <https://www.postgresql.org/message-id/flat/daa87d79-c044-46c4-8458-8d77241ed7b0%40eisentraut.org>:

> But the bigger issue is that the use of a static buffer makes
> this not thread-safe, so having it use strerror_r to fill that
> buffer is just putting lipstick on a pig.

It looks like your patch doesn't address that?



Reply via email to