Skip to content

Commit f6d9f02

Browse files
author
Matthias van de Meent
committed
Allow WES's events to listen to no events at all
This enables/simplifies Neon's dynamic socket switching.
1 parent 57a53c6 commit f6d9f02

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/backend/storage/ipc/waiteventset.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -757,9 +757,10 @@ WaitEventAdjustEpoll(WaitEventSet *set, WaitEvent *event, int action)
757757
else
758758
{
759759
Assert(event->fd != PGINVALID_SOCKET);
760-
Assert(event->events & (WL_SOCKET_READABLE |
761-
WL_SOCKET_WRITEABLE |
762-
WL_SOCKET_CLOSED));
760+
Assert((event->events & (WL_SOCKET_READABLE |
761+
WL_SOCKET_WRITEABLE |
762+
WL_SOCKET_CLOSED)) ||
763+
event->events == 0);
763764

764765
if (event->events & WL_SOCKET_READABLE)
765766
epoll_ev.events |= EPOLLIN;
@@ -805,9 +806,12 @@ WaitEventAdjustPoll(WaitEventSet *set, WaitEvent *event)
805806
}
806807
else
807808
{
808-
Assert(event->events & (WL_SOCKET_READABLE |
809-
WL_SOCKET_WRITEABLE |
810-
WL_SOCKET_CLOSED));
809+
Assert(event->fd >= 0);
810+
Assert((event->events & (WL_SOCKET_READABLE |
811+
WL_SOCKET_WRITEABLE |
812+
WL_SOCKET_CLOSED)) ||
813+
event->events == 0);
814+
811815
pollfd->events = 0;
812816
if (event->events & WL_SOCKET_READABLE)
813817
pollfd->events |= POLLIN;
@@ -891,7 +895,8 @@ WaitEventAdjustKqueue(WaitEventSet *set, WaitEvent *event, int old_events)
891895
event->events == WL_POSTMASTER_DEATH ||
892896
(event->events & (WL_SOCKET_READABLE |
893897
WL_SOCKET_WRITEABLE |
894-
WL_SOCKET_CLOSED)));
898+
WL_SOCKET_CLOSED)) ||
899+
(event->fd >= 0 && event->events == 0));
895900

896901
if (event->events == WL_POSTMASTER_DEATH)
897902
{

0 commit comments

Comments
 (0)