5.9.0
Handing an HLS playlist URL to the generic live path no longer hangs forever; it now fails closed with a typed error. Minor release (adds one public API symbol).
Fixed
-
load(url: m3u8, options: LoadOptions(isLive: true))withoutnativeRemoteHLSno longer hangs at.loadingwith no error. That call bypasses the documented HLS entry points (LoadOptions.nativeRemoteHLSandHLSLiveIngestReader) and routes the playlist URL onto the raw-byte live reader. A live origin serves the finite#EXTM3Ubody at HTTP 200 and closes the connection; the endless-feed reader read that as a dropped live stream and reconnected, re-fetching the same body forever. The reconnects looked productive (a full body at 200, and everyfind_stream_infoprobe seek reset the unproductive-reconnect streak), so the reconnect give-up counters (#71) never tripped,avformat_open_inputnever returned, and no terminal state was reached (reporter observed 262 reconnect cycles over 5.75 minutes).The raw-byte reader now inspects the first bytes of a live source and fails closed when they are an HLS playlist tag (
#EXTM3U, tolerating a UTF-8 BOM and leading whitespace), before the reconnect loop is ever entered. A raw media container never opens with#(TS syncs on0x47; MP4 / MKV open with binary box / EBML markers), so the prefix is an unambiguous misroute. Reported by cmcpherson274 (#140).
Added
AetherEngineError.hlsPlaylistOnRawLivePath.load()throws this typed, catchable error (with an actionableLocalizedErrordescription) when an.m3u8playlist is misrouted onto the raw live path, pointing the caller atLoadOptions.nativeRemoteHLS/HLSLiveIngestReaderinstead of looping silently.
Consumers on 5.8.9 should bump.