oauth: Fix build on platforms without epoll/kqueue

register_socket() missed a variable declaration if neither
HAVE_SYS_EPOLL_H nor HAVE_SYS_EVENT_H was defined.

While we're fixing that, adjust the tests to check pg_config.h for one
of the multiplexer implementations, rather than assuming that Windows is
the only platform without support. (Christoph reported this on
hurd-amd64, an experimental Debian.)

Author: Jacob Champion <jacob.champion@enterprisedb.com>
Reported-by: Christoph Berg <myon@debian.org>
Discussion: https://postgr.es/m/Z-sPFl27Y0ZC-VBl%40msg.df7cb.de
This commit is contained in:
Daniel Gustafsson 2025-04-03 20:37:52 +02:00
parent 945126234b
commit 8ae0a37932
2 changed files with 6 additions and 4 deletions

View File

@ -1172,8 +1172,9 @@ static int
register_socket(CURL *curl, curl_socket_t socket, int what, void *ctx,
void *socketp)
{
#ifdef HAVE_SYS_EPOLL_H
struct async_ctx *actx = ctx;
#ifdef HAVE_SYS_EPOLL_H
struct epoll_event ev = {0};
int res;
int op = EPOLL_CTL_ADD;
@ -1231,7 +1232,6 @@ register_socket(CURL *curl, curl_socket_t socket, int what, void *ctx,
return 0;
#endif
#ifdef HAVE_SYS_EVENT_H
struct async_ctx *actx = ctx;
struct kevent ev[2] = {0};
struct kevent ev_out[2];
struct timespec timeout = {0};

View File

@ -26,9 +26,11 @@ if (!$ENV{PG_TEST_EXTRA} || $ENV{PG_TEST_EXTRA} !~ /\boauth\b/)
'Potentially unsafe test oauth not enabled in PG_TEST_EXTRA';
}
if ($windows_os)
unless (check_pg_config("#define HAVE_SYS_EVENT_H 1")
or check_pg_config("#define HAVE_SYS_EPOLL_H 1"))
{
plan skip_all => 'OAuth server-side tests are not supported on Windows';
plan skip_all =>
'OAuth server-side tests are not supported on this platform';
}
if ($ENV{with_libcurl} ne 'yes')