php / php/php-src

ext/sockets/tests/bug63000.phpt fails when multicast disabled

Ouverte
#11,662 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug Category: Tests Extension: sockets Status: Verified
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

This test tries to set a multicast socket option,

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

but even on Linux, the ability to do so is not guaranteed. For example, if you run the test in its own network namespace,

$ unshare -n sapi/cli/php ./run-tests.php ext/sockets/tests/bug63000.phpt

you'll get an error,

---- EXPECTED OUTPUT
bool(true)
---- ACTUAL OUTPUT
Warning: socket_set_option(): Unable to set socket option [19]: No such device in ...bug63000.php on line 5
bool(false)
---- FAILED

The reason is that multicast first has to be enabled on a "new" network interface. Specifically, both of the following seem necessary,

$ ifconfig lo multicast
$ route add -net 224.0.0.0 netmask 224.0.0.0 lo

before the test will work.

I'm not really sure what the best way around this is. A simpler test for basic multicast support in SKIPIF?

PHP Version

php-8.2.8

Operating System

No response

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par ext/sockets/tests/bug63000.phpt et exécutez-le avec sapi/cli/php via run-tests.php, y compris le cas unshare -n décrit dans l’issue. Examinez le comportement actuel du test et faites en sorte que son résultat soit approprié lorsque multicast n’est pas disponible, tout en conservant la couverture lorsque multicast est pris en charge.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
networking, testing-qa
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.