aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-02-13 21:27:13 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-02-13 21:27:13 -0500
commitfe9d58687c3b4e0bc60cbcbf7577499fe4ece7db (patch)
treea083818f210855ff68a92b474dd5459922ec7e3c
parent83ab940f73e04ac4f3dec70a67a630834d0708c2 (diff)
fix dlna header parsing
-rw-r--r--MediaBrowser.Dlna/DlnaManager.cs10
-rw-r--r--MediaBrowser.Dlna/Ssdp/SsdpHandler.cs2
2 files changed, 9 insertions, 3 deletions
diff --git a/MediaBrowser.Dlna/DlnaManager.cs b/MediaBrowser.Dlna/DlnaManager.cs
index 2a688fa54..63a36744f 100644
--- a/MediaBrowser.Dlna/DlnaManager.cs
+++ b/MediaBrowser.Dlna/DlnaManager.cs
@@ -210,6 +210,10 @@ namespace MediaBrowser.Dlna
throw new ArgumentNullException("headers");
}
+ //_logger.Debug("GetProfile. Headers: " + _jsonSerializer.SerializeToString(headers));
+ // Convert to case insensitive
+ headers = new Dictionary<string, string>(headers, StringComparer.OrdinalIgnoreCase);
+
var profile = GetProfiles().FirstOrDefault(i => i.Identification != null && IsMatch(headers, i.Identification));
if (profile != null)
@@ -221,7 +225,7 @@ namespace MediaBrowser.Dlna
string userAgent = null;
headers.TryGetValue("User-Agent", out userAgent);
- var msg = "No matching device profile found. The default will be used. ";
+ var msg = "No matching device profile via headers found. The default will be used. ";
if (!string.IsNullOrEmpty(userAgent))
{
msg += "User-agent: " + userAgent + ". ";
@@ -249,7 +253,9 @@ namespace MediaBrowser.Dlna
case HeaderMatchType.Equals:
return string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase);
case HeaderMatchType.Substring:
- return value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1;
+ var isMatch = value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1;
+ //_logger.Debug("IsMatch-Substring value: {0} testValue: {1} isMatch: {2}", value, header.Value, isMatch);
+ return isMatch;
case HeaderMatchType.Regex:
// Reports of IgnoreCase not working on linux so try it a couple different ways.
return Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase) || Regex.IsMatch(value.ToUpper(), header.Value.ToUpper(), RegexOptions.IgnoreCase);
diff --git a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs b/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs
index 6c3fe82b7..82fc5e466 100644
--- a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs
+++ b/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs
@@ -177,7 +177,7 @@ namespace MediaBrowser.Dlna.Ssdp
{
if (i > 0)
{
- await Task.Delay(500).ConfigureAwait(false);
+ await Task.Delay(200).ConfigureAwait(false);
}
var dgram = new Datagram(endpoint, localAddress, _logger, msg, isBroadcast, enableDebugLogging);