Bug #63000 [Com]: MCAST_JOIN_GROUP on OSX is broken
| From: | reeze dot xia at gmail dot com | Date: | Mon, 03 Sep 2012 02:53:16 +0000 |
| Subject: | Bug #63000 [Com]: MCAST_JOIN_GROUP on OSX is broken | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-173128@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=63000&edit=1
ID: 63000
Comment by: reeze dot xia at gmail dot com
Reported by: igor at wiedler dot ch
Summary: MCAST_JOIN_GROUP on OSX is broken
Status: Open
Type: Bug
Package: Sockets related
Operating System: Mac OSX 10.7, 10.8
PHP Version: 5.4.6
Block user comment: N
Private report: N
New Comment:
I haven't use this option before, if it's an important feature,
if your patch didn't apply the only impact is the warning issued ?
that maybe need to be fixed, but if not...
eg this bug https://bugs.php.net/bug.php?id=62881 I reported.
maybe the bug reported may set to won't fix :(
more conversation see: https://github.com/php/php-src/pull/176
anyway I prefer it get fixed :)
Previous Comments:
------------------------------------------------------------------------
[2012-09-03 02:47:47] reeze dot xia at gmail dot com
Ah, you mention which version the bug exist, both 10.7&10.8 right ?
Is there any way to detect whether is broken or not
disable it seems not a better choice.
------------------------------------------------------------------------
[2012-09-02 21:41:13] igor at wiedler dot ch
See also: http://trac.videolan.org/vlc/ticket/6104#comment:19
------------------------------------------------------------------------
[2012-09-02 21:38:36] igor at wiedler dot ch
Description:
------------
The multicast support in PHP 5.4 makes use of MCAST_JOIN_GROUP if it is present.
The problem is that OSX 10.7 added the constant, but did not correctly implement
the feature. This causes the setsockopt call to fail.
The solution to the problem is to not use MCAST_JOIN_GROUP on OSX.
Test script:
---------------
<?php
if (!extension_loaded('sockets')) {
die('skip sockets extension not available.');
}
if (PHP_OS !== 'Darwin') {
die('is not OSX.');
}
$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);
Expected result:
----------------
bool(true)
Actual result:
--------------
PHP Warning: socket_set_option(): unable to set socket option [22]: Invalid
argument in /Users/igor/code/react-mdns-userland/src/React/Mdns/Client.php on
line 27
PHP Stack trace:
PHP 1. {main}() /Users/igor/code/react-mdns-userland/examples/client.php:0
PHP 2. React\Mdns\Client->query() /Users/igor/code/react-mdns-
userland/examples/client.php:10
PHP 3. socket_set_option() /Users/igor/code/react-mdns-
userland/src/React/Mdns/Client.php:27
bool(false)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=63000&edit=1