[PR #191] [MERGED] Moonlight patches and upgrades #388

Closed
opened 2026-10-15 13:00:13 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/wolf/pull/191
Author: @ABeltramo
Created: 4/2/2025
Status: ✅ Merged
Merged: 4/21/2025
Merged by: @ABeltramo

Base: stable ← Head: dev-moonlight-fixes


📝 Commits (10+)

  • 6145293 [rtp] make RTP session stream to the IP that sent the ping
  • 7f65e61 [api/v1/sessions/add] call start_rtp_ping
  • 06ab970 [api/v1/sessions/add] add aes_key and aes_iv fields
  • 668ac09 add envar for "WILDCARD" client IP
  • f161233 [rtp] extend UDP ping timeout
  • 4b286d3 Merge pull request #181 from alexzielenski/direwolf-patches
  • 4410f36 feat: implemented IP-less sessions
  • cb0e168 feat: implemented IP-less RTSP support
  • 4b8a773 fix: pin down Rust version to avoid breaking upgrades
  • ff2a4b4 Committing clang-format changes

📊 Changes

32 files changed (+776 additions, -375 deletions)

View changed files

📝 .github/workflows/clang-format.yml (+3 -1)
📝 .github/workflows/linux-build-test.yml (+6 -2)
📝 docker/wolf.Dockerfile (+9 -5)
📝 docs/modules/user/pages/quickstart.adoc (+14 -4)
📝 src/moonlight-protocol/moonlight.cpp (+10 -1)
📝 src/moonlight-protocol/moonlight/data-structures.hpp (+10 -0)
📝 src/moonlight-protocol/moonlight/protocol.hpp (+2 -0)
📝 src/moonlight-server/api/endpoints.cpp (+8 -4)
📝 src/moonlight-server/control/control.cpp (+55 -22)
📝 src/moonlight-server/control/control.hpp (+4 -3)
📝 src/moonlight-server/control/input_handler.cpp (+17 -25)
📝 src/moonlight-server/control/input_handler.hpp (+3 -3)
📝 src/moonlight-server/events/events.hpp (+18 -0)
📝 src/moonlight-server/events/reflectors.hpp (+8 -0)
📝 src/moonlight-server/rest/custom-https.cpp (+1 -1)
📝 src/moonlight-server/rest/endpoints.hpp (+23 -38)
📝 src/moonlight-server/rest/servers.cpp (+4 -3)
📝 src/moonlight-server/rtp/udp-ping.cpp (+56 -49)
📝 src/moonlight-server/rtp/udp-ping.hpp (+24 -15)
📝 src/moonlight-server/rtsp/commands.hpp (+19 -11)

...and 12 more files

📄 Description

This PR adds support for matching Moonlight clients without relying solely on the IP. This will help when users are running behind CGNAT and it's required in order to "proxy" between multiple Wolf instances in Fenrir.
Main features:

  • implements X-SS-* protocol extensions as defined in https://github.com/LizardByte/Sunshine/pull/1945
  • For HTTPs -> RTSP IP-less matching we send a fake unique IP as the sessionUrl0 in /launch or /resume. Moonlight doesn't seem to actually use that IP and it'll just parrot it back as the Host when sending back RTSP requests.
  • With all the above we are now able to stream to multiple clients with just one port open so now 48100/udp for Video and 48200/udp for audio is all you need for as many client as possible!

Continues https://github.com/games-on-whales/wolf/pull/181

fixes #184
fixes #54
fixes #116
fixes #19


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/wolf/pull/191 **Author:** [@ABeltramo](https://github.com/ABeltramo) **Created:** 4/2/2025 **Status:** ✅ Merged **Merged:** 4/21/2025 **Merged by:** [@ABeltramo](https://github.com/ABeltramo) **Base:** `stable` ← **Head:** `dev-moonlight-fixes` --- ### 📝 Commits (10+) - [`6145293`](https://github.com/games-on-whales/wolf/commit/614529300a05ef87549dfb99709d829f99fb924a) [rtp] make RTP session stream to the IP that sent the ping - [`7f65e61`](https://github.com/games-on-whales/wolf/commit/7f65e61b488346ac6ec9c98117ca03360d1df5d7) [api/v1/sessions/add] call start_rtp_ping - [`06ab970`](https://github.com/games-on-whales/wolf/commit/06ab9706e21e38d7c11443dcedd477b1d8543150) [api/v1/sessions/add] add aes_key and aes_iv fields - [`668ac09`](https://github.com/games-on-whales/wolf/commit/668ac09097746aeafad016fd8c0cc0f22aaafa67) add envar for "WILDCARD" client IP - [`f161233`](https://github.com/games-on-whales/wolf/commit/f16123362d0af43a776c6a37feabdeb3a3519bdb) [rtp] extend UDP ping timeout - [`4b286d3`](https://github.com/games-on-whales/wolf/commit/4b286d39c26fbaf5deb021fc5c0820986ee0cc2d) Merge pull request #181 from alexzielenski/direwolf-patches - [`4410f36`](https://github.com/games-on-whales/wolf/commit/4410f36dd9a3eae4a81627c286db6421331f6aa2) feat: implemented IP-less sessions - [`cb0e168`](https://github.com/games-on-whales/wolf/commit/cb0e168e0b4a29556c3451d52669ed13fb502eba) feat: implemented IP-less RTSP support - [`4b8a773`](https://github.com/games-on-whales/wolf/commit/4b8a7736a93bdab91a1b97de77a194bb336bdab7) fix: pin down Rust version to avoid breaking upgrades - [`ff2a4b4`](https://github.com/games-on-whales/wolf/commit/ff2a4b438a48beabf7acbcdc3fd212679d4e52d7) Committing clang-format changes ### 📊 Changes **32 files changed** (+776 additions, -375 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/clang-format.yml` (+3 -1) 📝 `.github/workflows/linux-build-test.yml` (+6 -2) 📝 `docker/wolf.Dockerfile` (+9 -5) 📝 `docs/modules/user/pages/quickstart.adoc` (+14 -4) 📝 `src/moonlight-protocol/moonlight.cpp` (+10 -1) 📝 `src/moonlight-protocol/moonlight/data-structures.hpp` (+10 -0) 📝 `src/moonlight-protocol/moonlight/protocol.hpp` (+2 -0) 📝 `src/moonlight-server/api/endpoints.cpp` (+8 -4) 📝 `src/moonlight-server/control/control.cpp` (+55 -22) 📝 `src/moonlight-server/control/control.hpp` (+4 -3) 📝 `src/moonlight-server/control/input_handler.cpp` (+17 -25) 📝 `src/moonlight-server/control/input_handler.hpp` (+3 -3) 📝 `src/moonlight-server/events/events.hpp` (+18 -0) 📝 `src/moonlight-server/events/reflectors.hpp` (+8 -0) 📝 `src/moonlight-server/rest/custom-https.cpp` (+1 -1) 📝 `src/moonlight-server/rest/endpoints.hpp` (+23 -38) 📝 `src/moonlight-server/rest/servers.cpp` (+4 -3) 📝 `src/moonlight-server/rtp/udp-ping.cpp` (+56 -49) 📝 `src/moonlight-server/rtp/udp-ping.hpp` (+24 -15) 📝 `src/moonlight-server/rtsp/commands.hpp` (+19 -11) _...and 12 more files_ </details> ### 📄 Description This PR adds support for matching Moonlight clients without relying solely on the IP. This will help when users are running behind CGNAT and it's required in order to "proxy" between multiple Wolf instances in [Fenrir](https://github.com/games-on-whales/fenrir). Main features: - implements `X-SS-*` protocol extensions as defined in https://github.com/LizardByte/Sunshine/pull/1945 - For `HTTPs` -> `RTSP` IP-less matching we send a fake unique IP as the `sessionUrl0` in `/launch` or `/resume`. Moonlight [doesn't seem to actually use that IP](https://github.com/moonlight-stream/moonlight-common-c/blob/master/src/RtspConnection.c#L954-L970) and it'll just parrot it back as the `Host` when sending back RTSP requests. - With all the above we are now able to **stream to multiple clients with just one port open** so now `48100/udp` for Video and `48200/udp` for audio is all you need for as many client as possible! Continues https://github.com/games-on-whales/wolf/pull/181 fixes #184 fixes #54 fixes #116 fixes #19 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 13:00:13 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/wolf#388
No description provided.