View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0022498 | MMW 5 | Casting (Google Cast / UPnP) | public | 2026-10-27 13:45 | 2026-10-27 13:50 |
| Reporter | martin | Assigned To | |||
| Priority | urgent | Severity | minor | Reproducibility | have not tried |
| Status | assigned | Resolution | open | ||
| Product Version | 2024.2.3 | ||||
| Target Version | 2027.0 | ||||
| Summary | 0022498: SyncList DIDL contains server's public IP instead of the address the client connected to (sync fails over VPN/Tailscale) | ||||
| Description | MMA connects to the MMW sync server through a VPN (Tailscale) address, e.g. http://100.117.195.101:12768/DeviceDescription.xml. All requests (upload POST, Browse actions) go to this address and succeed (HTTP 200). However, the DIDL response to Browse "SyncList:DeviceID:<deviceId>" contains the server's PUBLIC IP in all links (res, upnp:albumArtURI, lyricsURI), e.g.: res: http://136.53.178.206:12768/DeviceID=<deviceId>_ItemID=10627.mp3 albumArtURI: http://136.53.178.206:12768/100010627.jpg lyricsURI: http://136.53.178.206:12768/50540.txt The public IP is not reachable from the phone (no port forward / NAT hairpin), so every download and lyrics request ends with a 20 s connect timeout. Sync runs ~16 minutes and no file is downloaded ("failed to download"). On the same connection, browsing the Playlists container returns correct links with the address the client used: http://100.117.195.101:12768/%5CPlaylists%5C<guid>%5CItemID=50793.mp3 http://100.117.195.101:12768/50793.jpg These play back without problems. So the same server builds item URLs differently for the SyncList response than for regular browsing. Expected: the SyncList DIDL should use the host from the incoming request (Host header / local address of the connection), the same way regular browsing does. Please check where MMW takes the address for SyncList URLs (detected public IP, remote access / external address setting?) | ||||
| Tags | No tags attached. | ||||
| Fixed in build | |||||