From 8eb6937323b0e48183dfbf1bc9a6973dc06ef6dc Mon Sep 17 00:00:00 2001 From: Alexandre Lision <alexandre.lision@savoirfairelinux.com> Date: Mon, 23 Mar 2015 15:36:09 -0400 Subject: [PATCH] audio: fix socket opening on OSX On OSX we need a second call to fcntl to specify O_NON_BLOCK. It's ignored when passed in socket() Refs #69052 Change-Id: I7f9c356423d4d0c35a4dc04deb38b39ad1e0d576 --- src/media/socket_pair.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/media/socket_pair.cpp b/src/media/socket_pair.cpp index 6fd6d5be82..6688104b52 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); -- GitLab