Files
dotfiles/modules/applications/discord/vesktop-webrtc-ip-handling-policy.patch
T
moons-14 8086c9a7f3 fix(vesktop): avoid DTLS stalls with multiple interfaces (#66)
* fix(vesktop): add WebRTC IP handling support

* fix(vesktop): constrain WebRTC interface selection
2026-08-21 04:31:24 +09:00

37 lines
1.5 KiB
Diff

diff --git a/src/main/index.ts b/src/main/index.ts
index 2f4c399a4..0c81512a4 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -158,3 +158,15 @@ app.on("open-url", (_, url) => {
app.on("window-all-closed", () => {
if (process.platform !== "darwin") app.quit();
});
+
+// Sets the WebRTC IP handling policy for all current and future windows.
+// Switching to "default_public_and_private_interfaces" may fix calls stuck at "DTLS Connecting" when using VPNs, Tailscale, etc.
+// https://github.com/Vencord/Vesktop/issues/876
+app.on("web-contents-created", (_event, contents) => {
+ contents.setWebRTCIPHandlingPolicy(Settings.store.webRTCIPHandlingPolicy ?? "default");
+});
+Settings.addChangeListener("webRTCIPHandlingPolicy", () => {
+ for (const win of BrowserWindow.getAllWindows()) {
+ win.webContents.setWebRTCIPHandlingPolicy(Settings.store.webRTCIPHandlingPolicy ?? "default");
+ }
+});
diff --git a/src/shared/settings.d.ts b/src/shared/settings.d.ts
index 5b8fd6fff..b127f6def 100644
--- a/src/shared/settings.d.ts
+++ b/src/shared/settings.d.ts
@@ -9,6 +9,11 @@ import type { Rectangle } from "electron";
export interface Settings {
discordBranch?: "stable" | "canary" | "ptb";
transparencyOption?: "none" | "mica" | "tabbed" | "acrylic";
+ webRTCIPHandlingPolicy?:
+ | "default"
+ | "default_public_interface_only"
+ | "default_public_and_private_interfaces"
+ | "disable_non_proxied_udp";
tray?: boolean;
minimizeToTray?: boolean;
autoStartMinimized?: boolean;