VLCkit timeout using Tailscale
Posted: 03 May 2024 03:46
Hello,
I am experiencing a strange behaviour with apps using VLCkit (including VLC’s iOS client) when connected using Tailscale. If I connect to my Plex server, the music won’t start for about 4min. See logs below with 2 timeout and then success. I’m by no means an expert but noticed when comparing the timed out attempt Vs successful one that VLC seems to attempt to connect using HTTP/1.1 twice which fails. It eventually tries using HTTP/1.0 which succeeds right away.
Note that:
- I am using the local IP address as Tailscale translates that into the relevant IP. It works fine with other apps and the same behaviour is experienced if I use the Plex server’s Tailscale IP.
- I do not experience any lag in VLC if using a Samba share, just http so it shouldn’t be a bandwidth issue but smb is obviously a different protocol.
- I am not experiencing this delay when connected to my home network using wifi (not using Tailscale)
- same issue is experienced with Navidrome app using VLCkit (LMP Music) - the issue has been reported but hard to fix at that level as it is likely to be a VLCkit issue
- no issue with Navidrome app NOT using VLCkit (Amperfy/Substreamer)
I am not sure if this is a VLC issue or a Tailscale issue, probably both as I assume that the timeout delay sits within the VLCkit code but there could also be a setting Tailscale to avoid the failure altogether.
Would anyone have any suggestion? It’s a bit painful having to way 4 min for a song to start… and I can raise this on github as my account isn’t getting approved.
I am experiencing a strange behaviour with apps using VLCkit (including VLC’s iOS client) when connected using Tailscale. If I connect to my Plex server, the music won’t start for about 4min. See logs below with 2 timeout and then success. I’m by no means an expert but noticed when comparing the timed out attempt Vs successful one that VLC seems to attempt to connect using HTTP/1.1 twice which fails. It eventually tries using HTTP/1.0 which succeeds right away.
Note that:
- I am using the local IP address as Tailscale translates that into the relevant IP. It works fine with other apps and the same behaviour is experienced if I use the Plex server’s Tailscale IP.
- I do not experience any lag in VLC if using a Samba share, just http so it shouldn’t be a bandwidth issue but smb is obviously a different protocol.
- I am not experiencing this delay when connected to my home network using wifi (not using Tailscale)
- same issue is experienced with Navidrome app using VLCkit (LMP Music) - the issue has been reported but hard to fix at that level as it is likely to be a VLCkit issue
- no issue with Navidrome app NOT using VLCkit (Amperfy/Substreamer)
I am not sure if this is a VLC issue or a Tailscale issue, probably both as I assume that the timeout delay sits within the VLCkit code but there could also be a setting Tailscale to avoid the failure altogether.
Would anyone have any suggestion? It’s a bit painful having to way 4 min for a song to start… and I can raise this on github as my account isn’t getting approved.
Code: Select all
[DBG] looking for keystore module matching "any": 6 candidates
[DBG] no keystore modules matched
[DBG] resolving 192.168.1.101 ...
[DBG] outgoing request:
GET /library/parts/433/1361567384/file.m4a HTTP/1.1
Host: 192.168.1.101:32400
Accept: */*
Accept-Language: en_US
User-Agent: VLC/3.0.19 LibVLC/3.0.19
Range: bytes=0-
[DBG] connection failed
[ERR] HTTP connection failure
[DBG] querying proxy for http://192.168.1.101:32400/library/parts/433/1361567384/file.m4a
[DBG] no proxy
[DBG] http: server='192.168.1.101' port=32400 file='/library/parts/433/1361567384/file.m4a'
[DBG] looking for keystore module matching "any": 6 candidates
[DBG] no keystore modules matched
[DBG] net: connecting to 192.168.1.101 port 32400
[WARN] connection timed out
[DBG] connection succeeded (socket = 17)
[DBG] sending request:
GET /library/parts/433/1361567384/file.m4a HTTP/1.0
Host: 192.168.1.101:32400
User-Agent: VLC/3.0.19 LibVLC/3.0.19
Icy-MetaData: 1
[DBG] HTTP answer code 200
[DBG] Content-Type: audio/mp4
[DBG] auto re-connect enabled
[DBG] using access module "http"
[DBG] looking for stream_filter module matching "prefetch,cache_read": 75 candidates
[DBG] using 4137431 bytes buffer, 4137431 bytes read
[DBG] using stream_filter module "prefetch"
[DBG] looking for stream_filter module matching "any": 75 candidates
[DBG] no stream_filter modules matched
[DBG] looking for stream_directory module matching "any": 3 candidates
[DBG] no stream_directory modules matched
[DBG] attachment of directory-extractor failed for http://192.168.1.101:32400/library/parts/433/1361567384/file.m4a
[DBG] looking for stream_filter module matching "record": 75 candidates
[DBG] using stream_filter module "record"
[DBG] creating demux: access='http' demux='any' location='192.168.1.101:32400/library/parts/433/1361567384/file.m4a' file='(null)'
[DBG] looking for demux module matching "any": 138 candidates
[WARN] unknown box type cpil (incompletely loaded)
[WARN] unknown box type pgap (incompletely loaded)
[WARN] unknown box type tmpo (incompletely loaded)
[WARN] truncated box mdat discarded
[WARN] truncated box mdat discarded
[DBG] dumping root Box "root"
[DBG] | + ftyp size 32 offset 0
[DBG] | + moov size 52694 offset 32
[DBG] | | + mvhd size 108 offset 40
[DBG] | | + trak size 47557 offset 148
…