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);