diff --git a/host.c b/host.c index 32573e5..c51780b 100644 --- a/host.c +++ b/host.c @@ -64,6 +64,7 @@ enet_host_create (int addressFamily, const ENetAddress * address, size_t peerCou enet_socket_set_option (host -> socket, ENET_SOCKOPT_NONBLOCK, 1); enet_socket_set_option (host -> socket, ENET_SOCKOPT_RCVBUF, ENET_HOST_RECEIVE_BUFFER_SIZE); enet_socket_set_option (host -> socket, ENET_SOCKOPT_SNDBUF, ENET_HOST_SEND_BUFFER_SIZE); + enet_socket_set_option (host -> socket, ENET_SOCKOPT_QOS, 1); if (address != NULL && enet_socket_get_address (host -> socket, & host -> address) < 0) host -> address = * address; diff --git a/include/enet/enet.h b/include/enet/enet.h index fc231c5..0794b38 100644 --- a/include/enet/enet.h +++ b/include/enet/enet.h @@ -62,6 +62,7 @@ typedef enum _ENetSocketOption ENET_SOCKOPT_SNDTIMEO, ENET_SOCKOPT_ERROR, ENET_SOCKOPT_NODELAY, + ENET_SOCKOPT_QOS, } ENetSocketOption; typedef enum _ENetSocketShutdown diff --git a/unix.c b/unix.c index a32a7a9..7a17d50 100644 --- a/unix.c +++ b/unix.c @@ -319,6 +319,14 @@ enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value) result = setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, (char *) & value, sizeof (int)); break; + case ENET_SOCKOPT_QOS: +#if defined(SO_NET_SERVICE_TYPE) + // iOS/macOS + value = value ? NET_SERVICE_TYPE_VO : NET_SERVICE_TYPE_BE; + result = setsockopt (socket, SOL_SOCKET, SO_NET_SERVICE_TYPE, (char *) & value, sizeof (int)); +#endif + break; + default: break; }