Re: BUG #17391: While using --with-ssl=openssl and PG_TEST_EXTRA='ssl' options, SSL tests fail on OpenBSD 7.0

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Daniel Gustafsson <daniel@yesql.se>, Thomas Munro <thomas.munro@gmail.com>, byavuz81@gmail.com, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>, Heikki Linnakangas <heikki.linnakangas@iki.fi>, Michael Paquier <michael@paquier.xyz>
Date: 2022-02-11T01:54:55Z
Lists: pgsql-bugs
Hi,

On 2022-02-10 20:25:28 -0500, Tom Lane wrote:
> I was staring at that for awhile too.  It's my own code (from 1f39a1c0641)
> but it sure confuses me now; at the very least the code is not in sync
> with the comment.  However, it's been that way for a couple years now and
> we've not had complaints suggesting it's broken, so maybe it's the comment
> that's wrong.

I wonder if it could be part of the whole "walreceiver on windows not noticing
connection death" business. Libpq internally gets a write failure, defers
reporting it, we end up in libpqrcv_PQgetResult(), which will call PQisBusy()
returning true due to write_failure, which then causes us to wait for incoming
socket IO. But WaitEventForMultipleObjects() will not be signalled again due
to the the edge triggered nature of FD_CLOSE.

Greetings,

Andres Freund



Commits

  1. Move libpq's write_failed mechanism down to pqsecure_raw_write().

  2. Fix thinko in PQisBusy().

  3. Set SNI ClientHello extension to localhost in tests

  4. Improve worst-case performance of text_position_get_match_pos()