Revert "Add SSM support to Direct Sockets API (services/network and Blink layers)" [chromium/src : main]

0 views
Skip to first unread message

Yuki Shiino (Gerrit)

unread,
Mar 10, 2026, 9:23:03 PMMar 10
to Yuki Shiino, Rubber Stamper, Muyao Xu, Tom Sepez, Chromium LUCI CQ, Kartik Hegde, Reilly Grant, Omar Ramadan, Jeremy Roman, Andrew Rayskiy, Jordan Bayles, Adam Rice, Vlad Krot, AyeAye, Raphael Kubo da Costa, Simon Hangl, Ian Kilpatrick, chromium...@chromium.org, Nikhil Nayunigari, Chromium IPC Reviews, Kentaro Hara, extension...@chromium.org, chadduffin+w...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, jiajunz+wa...@google.com, jmedle...@chromium.org, jonmann+wa...@chromium.org, net-r...@chromium.org, hsuregan+wa...@chromium.org, stevenjb+wa...@chromium.org, fenced-fra...@chromium.org, jackshira+w...@google.com, blink-...@chromium.org, chromium-a...@chromium.org, khorimoto+w...@chromium.org, ejcaruso+wa...@chromium.org, network-ser...@chromium.org
Attention needed from Adam Rice, Andrew Rayskiy, Jeremy Roman, Jordan Bayles, Kartik Hegde, Muyao Xu, Omar Ramadan, Reilly Grant, Tom Sepez and Vlad Krot

Yuki Shiino voted Owners-Override+1

Owners-Override+1
Open in Gerrit

Related details

Attention is currently required from:
  • Adam Rice
  • Andrew Rayskiy
  • Jeremy Roman
  • Jordan Bayles
  • Kartik Hegde
  • Muyao Xu
  • Omar Ramadan
  • Reilly Grant
  • Tom Sepez
  • Vlad Krot
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I2476b2d2f529f91fefcf98d8db5dbebfeadddab8
Gerrit-Change-Number: 7651295
Gerrit-PatchSet: 1
Gerrit-Owner: Yuki Shiino <yukis...@chromium.org>
Gerrit-Reviewer: Adam Rice <ri...@chromium.org>
Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
Gerrit-Reviewer: Jeremy Roman <jbr...@chromium.org>
Gerrit-Reviewer: Jordan Bayles <jop...@chromium.org>
Gerrit-Reviewer: Kartik Hegde <khe...@chromium.org>
Gerrit-Reviewer: Muyao Xu <muy...@google.com>
Gerrit-Reviewer: Omar Ramadan <om...@blockcast.net>
Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
Gerrit-Reviewer: Rubber Stamper <rubber-...@appspot.gserviceaccount.com>
Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
Gerrit-Reviewer: Vlad Krot <vk...@google.com>
Gerrit-Reviewer: Yuki Shiino <yukis...@chromium.org>
Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-CC: Ian Kilpatrick <ikilp...@chromium.org>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Nikhil Nayunigari <nikh...@google.com>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-CC: Simon Hangl <sim...@google.com>
Gerrit-CC: gwsq
Gerrit-Attention: Muyao Xu <muy...@google.com>
Gerrit-Attention: Tom Sepez <tse...@chromium.org>
Gerrit-Attention: Kartik Hegde <khe...@chromium.org>
Gerrit-Attention: Reilly Grant <rei...@chromium.org>
Gerrit-Attention: Jeremy Roman <jbr...@chromium.org>
Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
Gerrit-Attention: Andrew Rayskiy <green...@google.com>
Gerrit-Attention: Adam Rice <ri...@chromium.org>
Gerrit-Attention: Jordan Bayles <jop...@chromium.org>
Gerrit-Attention: Vlad Krot <vk...@google.com>
Gerrit-Comment-Date: Wed, 11 Mar 2026 01:22:14 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Rubber Stamper (Gerrit)

unread,
Mar 10, 2026, 9:23:15 PMMar 10
to Yuki Shiino, Muyao Xu, Tom Sepez, Chromium LUCI CQ, Kartik Hegde, Reilly Grant, Omar Ramadan, Jeremy Roman, Andrew Rayskiy, Jordan Bayles, Adam Rice, Vlad Krot, AyeAye, Raphael Kubo da Costa, Simon Hangl, Ian Kilpatrick, chromium...@chromium.org, Nikhil Nayunigari, Chromium IPC Reviews, Kentaro Hara, extension...@chromium.org, chadduffin+w...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, jiajunz+wa...@google.com, jmedle...@chromium.org, jonmann+wa...@chromium.org, net-r...@chromium.org, hsuregan+wa...@chromium.org, stevenjb+wa...@chromium.org, fenced-fra...@chromium.org, jackshira+w...@google.com, blink-...@chromium.org, chromium-a...@chromium.org, khorimoto+w...@chromium.org, ejcaruso+wa...@chromium.org, network-ser...@chromium.org
Attention needed from Adam Rice, Andrew Rayskiy, Jeremy Roman, Jordan Bayles, Kartik Hegde, Muyao Xu, Omar Ramadan, Reilly Grant, Tom Sepez and Vlad Krot

Rubber Stamper voted

Bot-Commit+1
Commit-Queue+2
Open in Gerrit

Related details

Attention is currently required from:
  • Adam Rice
  • Andrew Rayskiy
  • Jeremy Roman
  • Jordan Bayles
  • Kartik Hegde
  • Muyao Xu
  • Omar Ramadan
  • Reilly Grant
  • Tom Sepez
  • Vlad Krot
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement satisfiedReview-Enforcement
    Gerrit-Comment-Date: Wed, 11 Mar 2026 01:23:05 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Chromium LUCI CQ (Gerrit)

    unread,
    Mar 10, 2026, 9:23:38 PMMar 10
    to Yuki Shiino, Rubber Stamper, Muyao Xu, Tom Sepez, Kartik Hegde, Reilly Grant, Omar Ramadan, Jeremy Roman, Andrew Rayskiy, Jordan Bayles, Adam Rice, Vlad Krot, AyeAye, Raphael Kubo da Costa, Simon Hangl, Ian Kilpatrick, chromium...@chromium.org, Nikhil Nayunigari, Chromium IPC Reviews, Kentaro Hara, extension...@chromium.org, chadduffin+w...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, jiajunz+wa...@google.com, jmedle...@chromium.org, jonmann+wa...@chromium.org, net-r...@chromium.org, hsuregan+wa...@chromium.org, stevenjb+wa...@chromium.org, fenced-fra...@chromium.org, jackshira+w...@google.com, blink-...@chromium.org, chromium-a...@chromium.org, khorimoto+w...@chromium.org, ejcaruso+wa...@chromium.org, network-ser...@chromium.org

    Chromium LUCI CQ submitted the change

    Change information

    Commit message:
    Revert "Add SSM support to Direct Sockets API (services/network and Blink layers)"

    This reverts commit 030237772913cd7805c13962d9a50b145c7ba90d.

    Reason for revert: Suspicious about causing test failures of
    ChromeDirectSocketsUdpIsolatedWebAppMulticastTest.MulticastJoinGroupSSMSameGroupDifferentSources
    https://ci.chromium.org/ui/p/chromium/builders/ci/mac15-x64-rel-tests/15107/overview

    Original change's description:
    > Add SSM support to Direct Sockets API (services/network and Blink layers)
    >
    > https://chromestatus.com/feature/6208452397498368
    >
    > Intent to prototype: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/692dffe2.050a0220.17ec37.0673.GAE%40google.com
    >
    > Implement Source-Specific Multicast (SSM) support in the Network Service
    > and Blink renderer layers, building on the net/socket foundation to
    > expose SSM capabilities to isolated web applications through the Direct
    > Sockets API.
    >
    > Network Service Layer (services/network):
    > - Extend the RestrictedUDPSocket Mojo interface with an optional source_address
    > - Update UDPSocket and RestrictedUDPSocket to pass source filtering parameters
    > - Add SSM support to test mocks (TestRestrictedUDPSocket)
    >
    > Blink Renderer Layer (third_party/blink):
    > - Add MulticastController interface for managing group memberships
    > - Implement joinGroup()/leaveGroup() with optional source filtering
    > - Add MulticastMembership dictionary for SSM (group, source) pairs
    > - Validate multicast addresses (IPv4: 224.0.0.0/4, IPv6: ff00::/8)
    > - Prevent mixing ASM and SSM for the same group
    > - Track active memberships with automatic cleanup on socket close
    > - Add joinedGroups() attribute for introspection
    >
    > Testing:
    > - Add 15 MulticastController unit tests (8 ASM + 7 SSM)
    >
    > ---
    >
    > Previous CI failures and fixes (PS99 → current PS):
    >
    > Platforms: fuchsia-x64-cast-receiver-rel, linux-chromeos-rel, linux-rel,
    > linux_chromium_asan_rel_ng, linux_chromium_tsan_rel_ng, mac-rel, win-rel
    >
    > Root cause: FakeRestrictedUDPSocket in multicast_controller_unittest.cc did
    > not track source_address in JoinGroup(), so last_join_source_address()
    > .has_value() was always false.
    >
    > Fix: FakeRestrictedUDPSocket::JoinGroup now stores source_address in
    > last_join_source_address_. Full Blink->Mojo plumbing:
    > - multicast_controller.idl/.h/.cc: joinGroup() accepts
    > MulticastGroupOptions.sourceAddress, parses it, passes it to
    > RestrictedUDPSocket::JoinGroup
    > - restricted_udp_socket.mojom: JoinGroup gains net.IPAddress? source_address
    > - restricted_udp_socket.cc: forwards source_address to UDPSocket::JoinGroup
    > - udp_socket.cc: calls JoinSourceGroup() (SSM) vs JoinGroup() (ASM) based
    > on source_address
    >
    > Tests: MulticastJoinGroupSSMSameGroupDifferentSources, MulticastJoinLeaveGroupSSM
    > Platforms: linux-chromeos-rel, linux-rel, linux-js-coverage-rel
    >
    > Root cause: MCAST_JOIN_SOURCE_GROUP / MCAST_LEAVE_SOURCE_GROUP were not in
    > the BPF setsockopt allowlist for the network service sandbox. Any SSM
    > setsockopt call hit CrashSIGSYSSockopt(), killing the process.
    >
    > Fix: crrev.com/c/7641869 -- MCAST_JOIN_SOURCE_GROUP and
    > MCAST_LEAVE_SOURCE_GROUP added to both the IPv4 and IPv6 setsockopt case
    > lists in RestrictSetSockoptForNetworkService().
    >
    > Tests: JoinGroupSSM, JoinGroupSSMSameGroupDifferentSources,
    > JoinGroupSSMTwiceWithSameSource, LeaveGroupSSMMustMatchSource
    > Platforms: linux-chromeos-rel, linux-rel
    >
    > Root cause: Same seccomp crash as above. content_browsertests reports the
    > process kill as "failed" rather than "crashed".
    >
    > Fix: Same -- crrev.com/c/7641869.
    >
    > Root cause: Old patchset used a non-locally-routable address (192.0.2.1,
    > TEST-NET-1) as the second source. macOS's GetInterfaceForDestination uses
    > connect() to find the outgoing interface; with a non-routable destination it
    > returns interface index 0, causing MCAST_JOIN_SOURCE_GROUP to fail.
    >
    > Fix: direct_sockets_udp_browsertest.cc -- source2 is now constructed by
    > toggling the last byte of source1 (a real local address), giving a
    > same-subnet address that IS routable via the same interface. The stale
    >
    > Platforms: linux-chromeos-rel, linux-rel, linux_chromium_asan_rel_ng,
    > mac-rel, win-rel
    >
    > Root cause: Old patchset added ERR_INVALID_ARGUMENT -> NotSupportedError to
    > CreateDOMExceptionCodeAndMessageFromNetErrorCode in socket.cc (intended for
    > SSM IP-version mismatch). Port 0 is rejected by MockUDPSocket with
    > ERR_INVALID_ARGUMENT, so the test received "NotSupportedError" but expected
    > HasSubstr("NetworkError").
    >
    > Fix: socket.cc -- the ERR_INVALID_ARGUMENT case is removed. Port 0 now
    > falls through to default -> NetworkError. IP-version mismatch for SSM is
    > caught at the Blink validation layer in multicast_controller.cc before
    > reaching the network service, so the removed case was effectively dead.
    >
    > Bug: 461262401
    > Change-Id: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7186747
    > Reviewed-by: Reilly Grant <rei...@chromium.org>
    > Reviewed-by: Tom Sepez <tse...@chromium.org>
    > Reviewed-by: Muyao Xu <muy...@google.com>
    > Commit-Queue: Reilly Grant <rei...@chromium.org>
    > Reviewed-by: Andrew Rayskiy <green...@google.com>
    > Reviewed-by: Jordan Bayles <jop...@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#1597329}
    Bug: 461262401
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Change-Id: I2476b2d2f529f91fefcf98d8db5dbebfeadddab8
    Commit-Queue: Rubber Stamper <rubber-...@appspot.gserviceaccount.com>
    Bot-Commit: Rubber Stamper <rubber-...@appspot.gserviceaccount.com>
    Auto-Submit: Yuki Shiino <yukis...@chromium.org>
    Owners-Override: Yuki Shiino <yukis...@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1597454}
    Files:
    • M chrome/browser/ash/net/network_diagnostics/fake_udp_socket.cc
    • M chrome/browser/ash/net/network_diagnostics/fake_udp_socket.h
    • M chrome/browser/direct_sockets/direct_sockets_apitest.cc
    • M chrome/test/BUILD.gn
    • M components/openscreen_platform/udp_socket.cc
    • M content/browser/direct_sockets/direct_sockets_service_impl.cc
    • M content/browser/direct_sockets/direct_sockets_test_utils.cc
    • M content/browser/direct_sockets/direct_sockets_test_utils.h
    • M content/browser/direct_sockets/direct_sockets_udp_browsertest.cc
    • M content/test/data/direct_sockets/udp.js
    • M extensions/browser/api/socket/udp_socket.cc
    • M net/base/ip_address.cc
    • M net/base/ip_address.h
    • M net/base/ip_address_unittest.cc
    • M services/network/network_context.cc
    • M services/network/network_context.h
    • M services/network/network_context_unittest.cc
    • M services/network/public/mojom/network_context.mojom
    • M services/network/public/mojom/restricted_udp_socket.mojom
    • M services/network/public/mojom/udp_socket.mojom
    • M services/network/restricted_udp_socket.cc
    • M services/network/restricted_udp_socket.h
    • M services/network/socket_factory.cc
    • M services/network/socket_factory.h
    • M services/network/test/test_network_context.h
    • M services/network/test/test_restricted_udp_socket.cc
    • M services/network/test/test_restricted_udp_socket.h
    • M services/network/test/test_udp_socket.cc
    • M services/network/test/test_udp_socket.h
    • M services/network/test/udp_socket_test_util.cc
    • M services/network/test/udp_socket_test_util.h
    • M services/network/udp_socket.cc
    • M services/network/udp_socket.h
    • M services/network/udp_socket_unittest.cc
    • M third_party/blink/renderer/bindings/generated_in_modules.gni
    • M third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
    • M third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
    • M third_party/blink/renderer/modules/direct_sockets/multicast_controller.idl
    • M third_party/blink/renderer/modules/direct_sockets/multicast_controller_unittest.cc
    • M third_party/blink/renderer/modules/direct_sockets/socket.cc
    • M third_party/blink/renderer/modules/direct_sockets/udp_readable_stream_wrapper_unittest.cc
    • M third_party/blink/renderer/modules/direct_sockets/udp_writable_stream_wrapper_unittest.cc
    • M third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
    Change size: XL
    Delta: 43 files changed, 153 insertions(+), 1499 deletions(-)
    Branch: refs/heads/main
    Submit Requirements:
    • requirement satisfiedCode-Review: Bot-Commit+1 by Rubber Stamper
    Open in Gerrit
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: merged
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I2476b2d2f529f91fefcf98d8db5dbebfeadddab8
    Gerrit-Change-Number: 7651295
    Gerrit-PatchSet: 2
    open
    diffy
    satisfied_requirement
    Reply all
    Reply to author
    Forward
    0 new messages