[webkit-changes] [WebKit/WebKit] 15833c: Allow WebRTC UDP traffic to use interfaces already...

youennf noreply at github.com
Thu Jun 22 09:27:45 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 15833c2f7cc627678879ff0ef206e481a0d2a605
      https://github.com/WebKit/WebKit/commit/15833c2f7cc627678879ff0ef206e481a0d2a605
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-06-22 (Thu, 22 Jun 2023)

  Changed paths:
    M Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp
    M Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp
    M Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h
    M Source/WebKit/Configurations/WebKit.xcconfig
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCMonitor.cpp
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCMonitor.h
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCMonitor.messages.in
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.h
    M Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm
    M Source/WebKit/Platform/spi/Cocoa/NWSPI.h
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.h
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.messages.in
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.h
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.h
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp
    M Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.h
    M Source/WebKit/WebProcess/Network/webrtc/WebRTCMonitor.cpp
    M Source/WebKit/WebProcess/Network/webrtc/WebRTCMonitor.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  Allow WebRTC UDP traffic to use interfaces already used by TCP traffic
https://bugs.webkit.org/show_bug.cgi?id=258278
rdar://problem/111000448

Reviewed by Eric Carlson.

Detect WebRTC TCP connection interface to TCP TURN servers.
Enable these interfaces for ICE as a heuristic to detect partial duplex VPNs.
These interfaces will only be used in case mDNS candidates are not used (i.e. when getUserMedia access is granted).
To support this, we are now sending all interfaces to WebProcess and are doing the filtering there instead of within network process.

This ability is behind an internal feature flag, off by default for now.

Manually tested.

* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.exp:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
(WebCore::LibWebRTCMediaEndpoint::setConfiguration):
* Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
(WebCore::LibWebRTCProvider::enableEnumeratingVisibleNetworkInterfaces):
(WebCore::LibWebRTCProvider::createSocketFactory):
* Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* Source/WebKit/Configurations/WebKit.xcconfig:
* Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.h:
* Source/WebKit/NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm:
(WebKit::NetworkRTCTCPSocketCocoa::NetworkRTCTCPSocketCocoa):
* Source/WebKit/Platform/spi/Cocoa/NWSPI.h:
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.cpp:
(WebKit::LibWebRTCNetwork::signalUsedInterface):
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.h:
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.messages.in:
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.cpp:
(WebKit::LibWebRTCNetworkManager::signalUsedInterface):
(WebKit::LibWebRTCNetworkManager::setEnumeratingAllNetworkInterfacesEnabled):
(WebKit::LibWebRTCNetworkManager::setEnumeratingVisibleNetworkInterfacesEnabled):
(WebKit::LibWebRTCNetworkManager::networksChanged):
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetworkManager.h:
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
(WebKit::LibWebRTCProvider::createPeerConnection):
(WebKit::RTCSocketFactory::RTCSocketFactory):
(WebKit::RTCSocketFactory::CreateUdpSocket):
(WebKit::RTCSocketFactory::CreateClientTcpSocket):
(WebKit::RTCSocketFactory::suspend):
(WebKit::RTCSocketFactory::resume):
(WebKit::LibWebRTCProvider::createSocketFactory):
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h:
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
(WebKit::LibWebRTCSocket::LibWebRTCSocket):
(WebKit::LibWebRTCSocket::signalClose):
(WebKit::LibWebRTCSocket::signalUsedInterface):
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.h:
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:
(WebKit::LibWebRTCSocketFactory::createUdpSocket):
(WebKit::LibWebRTCSocketFactory::createClientTcpSocket):
(WebKit::LibWebRTCSocketFactory::createNewConnectionSocket):
(WebKit::LibWebRTCSocketFactory::forSocketInGroup):
* Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.h:
* Source/WebKit/WebProcess/Network/webrtc/WebRTCMonitor.cpp:
(WebKit::WebRTCMonitor::startUpdating):
(WebKit::WebRTCMonitor::networksChanged):
(WebKit::WebRTCMonitor::setEnumeratingAllNetworkInterfacesEnabled): Deleted.
* Source/WebKit/WebProcess/Network/webrtc/WebRTCMonitor.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_appHighlightsVisible):

Canonical link: https://commits.webkit.org/265407@main




More information about the webkit-changes mailing list