Re: libpq OpenSSL and multithreading

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: Peter Eisentraut <peter@eisentraut.org>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-10-22T08:59:35Z
Lists: pgsql-hackers

Attachments

> On 1 Sep 2025, at 07:27, Peter Eisentraut <peter@eisentraut.org> wrote:

> I suggest that instead of adding the context to the Port structure, make a separate context struct for this purpose, for example:

Fair enough, done in the attached.

> This seems like an extremely inconvenient solution, as can be seen by the amount of changes your patch introduces.  We could just make errbuf thread-local and be done, without having to change the API.  (This is how glibc's strerror() works internally.)

I assume you mean simply leaving it be for now awaiting more thread primitives
to be added to fully support thread local storage?  (sidenote; if our thread
local store code will use TLS then be-secure-openssl.c will be challenging to
read =)).

I've left out this portion in the attached and only left the callback private
data change.

--
Daniel Gustafsson

Commits

  1. libpq: threadsafety for SSL certificate callback