threadsafe accept on windows, linux
* Windows has WSAAccept() which will create sockets inheriting flags from the server socket * Linux has accept4() which has a flags argument supporting SOCK_CLOEXEC
This commit is contained in:
parent
50fce538c6
commit
fb739dbaec
@ -6484,7 +6484,15 @@ inline bool Server::listen_internal() {
|
|||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined _WIN32
|
||||||
|
// sockets conneced via WASAccept inherit flags NO_HANDLE_INHERIT, OVERLAPPED
|
||||||
|
socket_t sock = WSAAccept(svr_sock_, nullptr, nullptr, nullptr, 0);
|
||||||
|
#elif defined __linux__
|
||||||
|
socket_t sock = accept4(svr_sock_, nullptr, nullptr, SOCK_CLOEXEC);
|
||||||
|
#else
|
||||||
socket_t sock = accept(svr_sock_, nullptr, nullptr);
|
socket_t sock = accept(svr_sock_, nullptr, nullptr);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (sock == INVALID_SOCKET) {
|
if (sock == INVALID_SOCKET) {
|
||||||
if (errno == EMFILE) {
|
if (errno == EMFILE) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user