diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
index 7fd7c8c1c..96c207b7b 100644
--- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
@@ -113,11 +113,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
AddRequestHeaders(request, options);
request.AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None;
-
+
request.CachePolicy = options.CachePolicy == Net.HttpRequestCachePolicy.None ?
new RequestCachePolicy(RequestCacheLevel.BypassCache) :
new RequestCachePolicy(RequestCacheLevel.Revalidate);
-
+
request.ConnectionGroupName = GetHostFromUrl(options.Url);
request.KeepAlive = true;
request.Method = method;
@@ -270,18 +270,18 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
var httpResponse = (HttpWebResponse)response;
- EnsureSuccessStatusCode(httpResponse);
+ EnsureSuccessStatusCode(httpResponse, options);
options.CancellationToken.ThrowIfCancellationRequested();
return GetResponseInfo(httpResponse, httpResponse.GetResponseStream(), GetContentLength(httpResponse));
}
-
+
using (var response = await httpWebRequest.GetResponseAsync().ConfigureAwait(false))
{
var httpResponse = (HttpWebResponse)response;
- EnsureSuccessStatusCode(httpResponse);
+ EnsureSuccessStatusCode(httpResponse, options);
options.CancellationToken.ThrowIfCancellationRequested();
@@ -345,29 +345,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
{
_logger.ErrorException("Error getting response from " + options.Url, ex);
- if (options.LogErrorResponseBody)
- {
- try
- {
- using (var stream = ex.Response.GetResponseStream())
- {
- if (stream != null)
- {
- using (var reader = new StreamReader(stream))
- {
- var msg = reader.ReadToEnd();
-
- _logger.Error(msg);
- }
- }
- }
- }
- catch
- {
-
- }
- }
-
return new HttpException(ex.Message, ex);
}
@@ -496,7 +473,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
{
var httpResponse = (HttpWebResponse)response;
- EnsureSuccessStatusCode(httpResponse);
+ EnsureSuccessStatusCode(httpResponse, options);
options.CancellationToken.ThrowIfCancellationRequested();
@@ -686,13 +663,35 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
return exception;
}
- private void EnsureSuccessStatusCode(HttpWebResponse response)
+ private void EnsureSuccessStatusCode(HttpWebResponse response, HttpRequestOptions options)
{
var statusCode = response.StatusCode;
var isSuccessful = statusCode >= HttpStatusCode.OK && statusCode <= (HttpStatusCode)299;
if (!isSuccessful)
{
+ if (options.LogErrorResponseBody)
+ {
+ try
+ {
+ using (var stream = response.GetResponseStream())
+ {
+ if (stream != null)
+ {
+ using (var reader = new StreamReader(stream))
+ {
+ var msg = reader.ReadToEnd();
+
+ _logger.Error(msg);
+ }
+ }
+ }
+ }
+ catch
+ {
+
+ }
+ }
throw new HttpException(response.StatusDescription) { StatusCode = response.StatusCode };
}
}
diff --git a/MediaBrowser.Dlna/PlayTo/Device.cs b/MediaBrowser.Dlna/PlayTo/Device.cs
index 12d4b41d1..08ea4f550 100644
--- a/MediaBrowser.Dlna/PlayTo/Device.cs
+++ b/MediaBrowser.Dlna/PlayTo/Device.cs
@@ -577,6 +577,11 @@ namespace MediaBrowser.Dlna.PlayTo
var trackString = (string) track;
+ if (string.IsNullOrWhiteSpace(trackString) || string.Equals(trackString, "NOT_IMPLEMENTED", StringComparison.OrdinalIgnoreCase))
+ {
+ return false;
+ }
+
XElement uPnpResponse;
try
@@ -586,7 +591,7 @@ namespace MediaBrowser.Dlna.PlayTo
catch
{
_logger.Error("Unable to parse xml {0}", trackString);
- throw;
+ return false;
}
var e = uPnpResponse.Element(uPnpNamespaces.items);
diff --git a/MediaBrowser.Dlna/PlayTo/DidlBuilder.cs b/MediaBrowser.Dlna/PlayTo/DidlBuilder.cs
index 80235740f..95622f3f7 100644
--- a/MediaBrowser.Dlna/PlayTo/DidlBuilder.cs
+++ b/MediaBrowser.Dlna/PlayTo/DidlBuilder.cs
@@ -24,8 +24,8 @@ namespace MediaBrowser.Dlna.PlayTo
const string DIDL_RELEASEDATE = @" {0}" + CRLF;
const string DIDL_GENRE = @" {0}" + CRLF;
const string DESCRIPTION = @" {0}" + CRLF;
- const string DIDL_VIDEO_RES = @" {4}" + CRLF;
- const string DIDL_AUDIO_RES = @" {3}" + CRLF;
+ const string DIDL_VIDEO_RES = @" {4}" + CRLF;
+ const string DIDL_AUDIO_RES = @" {3}" + CRLF;
const string DIDL_IMAGE_RES = @" {0}" + CRLF;
const string DIDL_ALBUMIMAGE_RES = @" {0}" + CRLF;
const string DIDL_RATING = @" {0}" + CRLF;