| 
														
															@@ -219,7 +219,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetMute"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "SetMute"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return false; 
														 | 
														
														 | 
														
															                 return false; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -259,7 +259,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return; 
														 | 
														
														 | 
														
															                 return; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -290,7 +290,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Seek"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "Seek"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return; 
														 | 
														
														 | 
														
															                 return; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -323,7 +323,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _logger.LogDebug("{0} - SetAvTransport Uri: {1} DlnaHeaders: {2}", Properties.Name, url, header); 
														 | 
														
														 | 
														
															             _logger.LogDebug("{0} - SetAvTransport Uri: {1} DlnaHeaders: {2}", Properties.Name, url, header); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetAVTransportURI"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "SetAVTransportURI"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return; 
														 | 
														
														 | 
														
															                 return; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -403,6 +403,10 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         public async Task SetPlay(CancellationToken cancellationToken) 
														 | 
														
														 | 
														
															         public async Task SetPlay(CancellationToken cancellationToken) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (avCommands == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             await SetPlay(avCommands, cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             await SetPlay(avCommands, cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -413,7 +417,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Stop"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "Stop"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return; 
														 | 
														
														 | 
														
															                 return; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -437,7 +441,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var avCommands = await GetAVProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = avCommands.ServiceActions.FirstOrDefault(c => c.Name == "Pause"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = avCommands?.ServiceActions.FirstOrDefault(c => c.Name == "Pause"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return; 
														 | 
														
														 | 
														
															                 return; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -565,7 +569,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "GetVolume"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "GetVolume"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return; 
														 | 
														
														 | 
														
															                 return; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -615,7 +619,7 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            var command = rendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "GetMute"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            var command = rendererCommands?.ServiceActions.FirstOrDefault(c => c.Name == "GetMute"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (command == null) 
														 | 
														
														 | 
														
															             if (command == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             { 
														 | 
														
														 | 
														
															             { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 return; 
														 | 
														
														 | 
														
															                 return; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -702,6 +706,10 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (rendererCommands == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync( 
														 | 
														
														 | 
														
															             var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 Properties.BaseUrl, 
														 | 
														
														 | 
														
															                 Properties.BaseUrl, 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -770,6 +778,11 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (rendererCommands == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return (false, null); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync( 
														 | 
														
														 | 
														
															             var result = await new SsdpHttpClient(_httpClientFactory).SendCommandAsync( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 Properties.BaseUrl, 
														 | 
														
														 | 
														
															                 Properties.BaseUrl, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 service, 
														 | 
														
														 | 
														
															                 service, 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -951,6 +964,10 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var httpClient = new SsdpHttpClient(_httpClientFactory); 
														 | 
														
														 | 
														
															             var httpClient = new SsdpHttpClient(_httpClientFactory); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (document == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             AvCommands = TransportCommands.Create(document); 
														 | 
														
														 | 
														
															             AvCommands = TransportCommands.Create(document); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             return AvCommands; 
														 | 
														
														 | 
														
															             return AvCommands; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -979,6 +996,10 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var httpClient = new SsdpHttpClient(_httpClientFactory); 
														 | 
														
														 | 
														
															             var httpClient = new SsdpHttpClient(_httpClientFactory); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             _logger.LogDebug("Dlna Device.GetRenderingProtocolAsync"); 
														 | 
														
														 | 
														
															             _logger.LogDebug("Dlna Device.GetRenderingProtocolAsync"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (document == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             RendererCommands = TransportCommands.Create(document); 
														 | 
														
														 | 
														
															             RendererCommands = TransportCommands.Create(document); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             return RendererCommands; 
														 | 
														
														 | 
														
															             return RendererCommands; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1010,6 +1031,10 @@ namespace Emby.Dlna.PlayTo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var ssdpHttpClient = new SsdpHttpClient(httpClientFactory); 
														 | 
														
														 | 
														
															             var ssdpHttpClient = new SsdpHttpClient(httpClientFactory); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var document = await ssdpHttpClient.GetDataAsync(url.ToString(), cancellationToken).ConfigureAwait(false); 
														 | 
														
														 | 
														
															             var document = await ssdpHttpClient.GetDataAsync(url.ToString(), cancellationToken).ConfigureAwait(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (document == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var friendlyNames = new List<string>(); 
														 | 
														
														 | 
														
															             var friendlyNames = new List<string>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 |