php / php/php-src

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

Offen
#11,662 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Category: Tests Extension: sockets Status: Verified
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit ext/sockets/tests/bug63000.phpt und führe es mit sapi/cli/php über run-tests.php aus, einschließlich des im Issue beschriebenen Falls unshare -n. Überprüfe das bestehende Testverhalten und passe sein Ergebnis an, wenn Multicast nicht verfügbar ist, wobei die Abdeckung erhalten bleibt, wenn Multicast unterstützt wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
networking, testing-qa
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.