@ -230,7 +230,7 @@ namespace MediaBrowser.Server.Implementations.Library
private void SetKeyProperties ( IMediaSourceProvider provider , MediaSourceInfo mediaSource )
{
var prefix = provider . GetType ( ) . FullName . GetMD5 ( ) . ToString ( "N" ) + "|" ;
var prefix = provider . GetType ( ) . FullName . GetMD5 ( ) . ToString ( "N" ) + LiveStreamIdDelimeter ;
if ( ! string . IsNullOrWhiteSpace ( mediaSource . OpenToken ) & & ! mediaSource . OpenToken . StartsWith ( prefix , StringComparison . OrdinalIgnoreCase ) )
{
@ -463,10 +463,13 @@ namespace MediaBrowser.Server.Implementations.Library
_liveStreamSemaphore . Release ( ) ;
}
}
// Do not use a pipe here because Roku http requests to the server will fail, without any explicit error message.
private const char LiveStreamIdDelimeter = '_' ;
private Tuple < IMediaSourceProvider , string > GetProvider ( string key )
{
var keys = key . Split ( new [ ] { '|' } , 2 ) ;
var keys = key . Split ( new [ ] { LiveStreamIdDelimeter } , 2 ) ;
var provider = _providers . FirstOrDefault ( i = > string . Equals ( i . GetType ( ) . FullName . GetMD5 ( ) . ToString ( "N" ) , keys [ 0 ] , StringComparison . OrdinalIgnoreCase ) ) ;