summaryrefslogtreecommitdiff
path: root/ext/sockets
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2012-10-25 16:01:25 +0200
committerOndřej Surý <ondrej@sury.org>2012-10-25 16:01:25 +0200
commitb57a2691d5b72c3894e2d4e0f945cecc6b3a1953 (patch)
tree012a1408ce8a738d45ae429ca7d7f5389c159915 /ext/sockets
parent45c0aa447e02c80bd21a23245574231a110cf5a1 (diff)
downloadphp-b57a2691d5b72c3894e2d4e0f945cecc6b3a1953.tar.gz
Imported Upstream version 5.4.8upstream/5.4.8
Diffstat (limited to 'ext/sockets')
-rw-r--r--ext/sockets/multicast.h5
-rw-r--r--ext/sockets/tests/bug63000.phpt22
2 files changed, 25 insertions, 2 deletions
diff --git a/ext/sockets/multicast.h b/ext/sockets/multicast.h
index ccd9b1d2a..5619c9c7f 100644
--- a/ext/sockets/multicast.h
+++ b/ext/sockets/multicast.h
@@ -19,11 +19,12 @@
/* $Id$ */
#if defined(MCAST_JOIN_GROUP) && \
- (!defined(PHP_WIN32) || (_WIN32_WINNT >= 0x600 && SOCKETS_ENABLE_VISTA_API))
+ (!defined(PHP_WIN32) || (_WIN32_WINNT >= 0x600 && SOCKETS_ENABLE_VISTA_API)) && \
+ !defined(__APPLE__)
#define RFC3678_API 1
/* has block/unblock and source membership, in this case for both IPv4 and IPv6 */
#define HAS_MCAST_EXT 1
-#elif defined(IP_ADD_SOURCE_MEMBERSHIP)
+#elif defined(IP_ADD_SOURCE_MEMBERSHIP) && !defined(__APPLE__)
/* has block/unblock and source membership, but only for IPv4 */
#define HAS_MCAST_EXT 1
#endif
diff --git a/ext/sockets/tests/bug63000.phpt b/ext/sockets/tests/bug63000.phpt
new file mode 100644
index 000000000..c806ba4c0
--- /dev/null
+++ b/ext/sockets/tests/bug63000.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #63000: Multicast on OSX
+--SKIPIF--
+<?php
+if (!extension_loaded('sockets')) {
+ die('skip sockets extension not available.');
+}
+if (PHP_OS !== 'Darwin') {
+ die('is not OSX.');
+}
+--FILE--
+<?php
+$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
+socket_bind($socket, '0.0.0.0', 31057);
+
+$so = socket_set_option($socket, IPPROTO_IP, MCAST_JOIN_GROUP, array(
+ "group" => '224.0.0.251',
+ "interface" => 0,
+));
+var_dump($so);
+--EXPECTF--
+bool(true)