pgsql: oauth: Ensure unused socket registrations are removed

From: Jacob Champion <jchampion(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: oauth: Ensure unused socket registrations are removed
Date: 2025-08-08 16:07:27
Message-ID: E1ukPct-001PK4-0i@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

oauth: Ensure unused socket registrations are removed

If Curl needs to switch the direction of a socket's registration (e.g.
from CURL_POLL_IN to CURL_POLL_OUT), it expects the old registration to
be discarded. For epoll, this happened via EPOLL_CTL_MOD, but for
kqueue, the old registration would remain if it was not explicitly
removed by Curl.

Explicitly remove the opposite-direction event during registrations. (If
that event doesn't exist, we'll just get an ENOENT, which will be
ignored by the same code that handles CURL_POLL_REMOVE.) A few
assertions are also added to strengthen the relationship between the
number of events added, the number of events pulled off the queue, and
the lengths of the kevent arrays.

Reviewed-by: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
Backpatch-through: 18
Discussion: https://postgr.es/m/CAOYmi+nDZxJHaWj9_jRSyf8uMToCADAmOfJEggsKW-kY7aUwHA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/3d9c03429a82c199a77563ae5d57c4c9cefa3d41

Modified Files
--------------
src/interfaces/libpq-oauth/oauth-curl.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Jacob Champion 2025-08-08 16:34:57 Re: pgsql: oauth: Add unit tests for multiplexer handling
Previous Message Thomas Munro 2025-08-08 13:46:57 pgsql: Remove obsolete comment.