mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 12:20:00 +01:00
LibCore: Properly shutdown a socket on Windows
It fixes a bug in which ImageDecoder and RequestServer do not exit because their connections don't close. This makes the shutdown behavior match the Linux version, which receives FD_READ | FD_HANGUP on socket close, and TransportSocket::read_as_much_as_possible_without_blocking calls schedule_shutdown when read from a socket returns 0 bytes. On Windows, we have to explicitly call WIN32 shutdown to receive notification FD_CLOSE.
This commit is contained in:
parent
e1f70d532c
commit
26825b5865
|
|
@ -150,7 +150,7 @@ static int notifier_type_to_network_event(NotificationType type)
|
|||
{
|
||||
switch (type) {
|
||||
case NotificationType::Read:
|
||||
return FD_READ;
|
||||
return FD_READ | FD_CLOSE;
|
||||
case NotificationType::Write:
|
||||
return FD_WRITE;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -122,6 +122,8 @@ void PosixSocketHelper::close()
|
|||
if (m_notifier)
|
||||
m_notifier->set_enabled(false);
|
||||
|
||||
// shutdown is required for another end to receive FD_CLOSE
|
||||
shutdown(m_fd, SD_BOTH);
|
||||
MUST(System::close(m_fd));
|
||||
m_fd = -1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user