php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #63000 MCAST_JOIN_GROUP on OSX is broken
Submitted: 2012-09-02 21:38 UTC Modified: 2012-09-19 20:36 UTC
From: igor at wiedler dot ch Assigned:
Status: Closed Package: Sockets related
PHP Version: 5.4.6 OS: Mac OSX 10.7, 10.8
Private report: No CVE-ID:
 [2012-09-02 21:38 UTC] 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)

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-09-02 21:41 UTC] igor at wiedler dot ch
See also: http://trac.videolan.org/vlc/ticket/6104#comment:19
 [2012-09-03 02:47 UTC] 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-03 02:53 UTC] reeze dot xia at gmail dot com
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 :)
 [2012-09-03 05:42 UTC] laruence@php.net
reeze, this one is not like that one you reported.

that one is trivial, and in some situation it's not a bug ( empty user name is 
allowed in theory).

but this is a bug. (I didn't test with this, just judge by the reporting)
 [2012-09-03 20:08 UTC] cataphract@php.net
What's the situation in OS X 10.8? I'd prefer not to disable this in versions where it's working.
 [2012-09-04 00:09 UTC] igor at wiedler dot ch
It's still broken on 10.8, also returning EINVAL.
 [2012-09-19 20:36 UTC] lstrojny@php.net
-Status: Open +Status: To be documented
 [2012-09-19 20:36 UTC] lstrojny@php.net
The fix for this bug has been committed.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Thu Apr 17 09:02:29 2014 UTC