MicrosoftEdge / MicrosoftEdge/WebView2Feedback

[Problem/Bug]: WebRTC ICE fails on Windows when no network interfaces are available (offline)

Open
#5,360 1 comment 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
PowerShell
Stars
526
Forks
67
PR merge metrics
No merged PRs in 30d

Description

What happened?

WebRTC peer connections fail to establish on Windows when the machine is offline (no network interfaces available), even for local loopback connections (127.0.0.1). This appears due to WebRTC's BasicNetworkManager::CreateNetworks() implementation on Windows only processing network adapters with IfOperStatusUp status.

When Windows is offline, all network adapters (including loopback) report IfOperStatusDown causing:

  • GetNetworks() returns empty list
  • BasicPortAllocatorSession::DoAllocate() logs "Machine has no networks; no ports will be allocated"
  • No ICE candidates are gathered
  • ICE connection state remains "new" indefinitely
  • Local peer connections are impossible
Importance

Important. My app's user experience is significantly compromised.

Runtime Channel

Stable release (WebView2 Runtime)

Runtime Version

140.0.3485.54

Operating System

Windows 11

OS Version

Version 24H2 26100.4946

Repro steps
  1. Create a simple WebRTC peer connection between two WebView2 instances (or tabs)
  2. Disconnect all network connections (WiFi off, Ethernet unplugged, airplane mode on)
  3. Attempt to establish RTCPeerConnection with local signaling
  4. Observe: ICE gathering never completes, no candidates generated
Repros in Edge Browser

Yes, issue can be reproduced in the corresponding Edge version

Regression

No, this never worked

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked WebRTC BasicNetworkManager::CreateNetworks() implementation and trace how GetNetworks() reaches BasicPortAllocatorSession::DoAllocate(). Reproduce the two-peer-connection case on Windows with all network connections disabled, then verify whether loopback candidates are gathered and ICE leaves the new state.

Written by the indexing model from the issue text.

Assessment

Tech stack
web-dev
Domain
audio-video-rtc, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.