fix: macOS server crash when client disconnects abruptly
This commit is contained in:
@ -79,6 +79,10 @@ ArchSocket ArchNetworkBSD::newSocket(AddressFamily family, SocketType type)
|
||||
}
|
||||
try {
|
||||
setBlockingOnSocket(fd, false);
|
||||
#if defined(__APPLE__)
|
||||
int on = 1;
|
||||
setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on));
|
||||
#endif
|
||||
} catch (...) {
|
||||
close(fd);
|
||||
throw;
|
||||
@ -196,6 +200,10 @@ ArchSocket ArchNetworkBSD::acceptSocket(ArchSocket s, ArchNetAddress *addr)
|
||||
|
||||
try {
|
||||
setBlockingOnSocket(fd, false);
|
||||
#if defined(__APPLE__)
|
||||
int on = 1;
|
||||
setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on));
|
||||
#endif
|
||||
} catch (...) {
|
||||
close(fd);
|
||||
delete newSocket;
|
||||
|
||||
@ -384,6 +384,7 @@ void SecureSocket::freeSSL()
|
||||
setJob(nullptr);
|
||||
if (m_ssl) {
|
||||
if (m_ssl->m_ssl != nullptr) {
|
||||
SSL_set_quiet_shutdown(m_ssl->m_ssl, 1);
|
||||
SSL_shutdown(m_ssl->m_ssl);
|
||||
|
||||
SSL_free(m_ssl->m_ssl);
|
||||
|
||||
Reference in New Issue
Block a user