Hey guys,
I’m setting up a custom Wowza module that uses the IMediaStreamNameAliasProvider2 interface to authenticate playback through stream aliases. This works excellently, but I’m having problem blocking access to a stream in progress because resolvePlayAlias() isn’t called consistenly for playlist.m3u8, chunklist* and *.ts files within the stream.
The use case is simple: I need to switch the stream from public to private while it’s still broadcasting, and the strategy is to change the stream’s alias when this happens. This means that users watching the public stream should no longer get access to the any playlist, chunklist or chunk on the prior stream names.
The problem though manifests like:
-
The stream is made available through http://mydomain.com/live/live:public-stream.mp4/playlist.m3u8. Internally, this stream is mapped to a dynamically created amlst:* stream through resolvePlayAlias().
-
From here users have access to files such as http://mydomain.com/live/live:public-stream.mp4/chunklist_b928000.m3u8 and http://mydomain.com/live/live:public-stream.mp4/media-udbok3ein_b928000_30.ts.
-
Only a small subset these requests though are routed through resolvePlayAlias(). Often with minutes passing between requests to the alias methods and this is the case even when the contents of the chunklist changes.
-
At a given point, I’m defining “live:public-stream.mp4” to no longer be a valid stream name within resolvePlayAlias().
-
However, since requests do not consistently hit resolvePlayAlias(), users can keep watching the now private stream.
A few notes:
-
I’m testing this on 4.0.3 build10989, with HTTP Origin Mode activated.
-
I’m testing this on HTTP directly against Wowza, with no proxies or CDN in front of it.
-
This doesn’t seem to be a caching issue: While testing in Safari, the browser would hit resolvePlayAlias() seemingly at random and receive a 404 – only to restart the stream with the public stream name and receive HTTP 200 statuses with playlists, chunklists and chunks.
-
For what it’s worth, my very, very limited testing hasn’t revealed the same problem with HDS. At least not yet.
So. I’m clearly missing something – I hope you guys can point me in the right direction?
Steffen