diff --git a/src/media/socket_pair.cpp b/src/media/socket_pair.cpp index 6fd6d5be829c68da25c46665758c356e7413d62b..6688104b5206792d4bf876f9debad197aa0e5240 100644 --- a/src/media/socket_pair.cpp +++ b/src/media/socket_pair.cpp @@ -55,7 +55,6 @@ extern "C" { #ifdef __APPLE__ #include <fcntl.h> -#define SOCK_NONBLOCK O_NONBLOCK #endif namespace ring { @@ -153,10 +152,17 @@ udp_socket_create(sockaddr_storage *addr, socklen_t *addr_len, int local_port) if (res0 == 0) return -1; for (res = res0; res; res=res->ai_next) { +#ifdef __APPLE__ + udp_fd = socket(res->ai_family, SOCK_DGRAM, 0); + if (udp_fd != -1 && fcntl(udp_fd, F_SETFL, O_NONBLOCK) != -1) { +#else udp_fd = socket(res->ai_family, SOCK_DGRAM | SOCK_NONBLOCK, 0); - if (udp_fd != -1) break; + if (udp_fd != -1) { +#endif + break; + } RING_ERR("socket error"); - } + } if (udp_fd < 0) { freeaddrinfo(res0);