aboutsummaryrefslogtreecommitdiff
path: root/RSSDP/SsdpDevicePublisherBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'RSSDP/SsdpDevicePublisherBase.cs')
-rw-r--r--RSSDP/SsdpDevicePublisherBase.cs43
1 files changed, 11 insertions, 32 deletions
diff --git a/RSSDP/SsdpDevicePublisherBase.cs b/RSSDP/SsdpDevicePublisherBase.cs
index b3c28aab7..7737733f7 100644
--- a/RSSDP/SsdpDevicePublisherBase.cs
+++ b/RSSDP/SsdpDevicePublisherBase.cs
@@ -6,6 +6,7 @@ using System.Text;
using System.Threading.Tasks;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Threading;
+using RSSDP;
namespace Rssdp.Infrastructure
{
@@ -344,7 +345,7 @@ namespace Rssdp.Infrastructure
values["USN"] = uniqueServiceName;
values["LOCATION"] = rootDevice.Location.ToString();
- var message = BuildMessage(header, values);
+ var message = SsdpHelper.BuildMessage(header, values);
try
{
@@ -384,19 +385,15 @@ namespace Rssdp.Infrastructure
return isDuplicateRequest;
}
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "t", Justification = "Capturing task to local variable avoids compiler warning, but value is otherwise not required.")]
private void CleanUpRecentSearchRequestsAsync()
{
- var t = Task.Run(() =>
+ lock (_RecentSearchRequests)
{
- lock (_RecentSearchRequests)
+ foreach (var requestKey in (from r in _RecentSearchRequests where r.Value.IsOld() select r.Key).ToArray())
{
- foreach (var requestKey in (from r in _RecentSearchRequests where r.Value.IsOld() select r.Key).ToArray())
- {
- _RecentSearchRequests.Remove(requestKey);
- }
+ _RecentSearchRequests.Remove(requestKey);
}
- });
+ }
}
#endregion
@@ -481,31 +478,13 @@ namespace Rssdp.Infrastructure
values["NT"] = notificationType;
values["USN"] = uniqueServiceName;
- var message = BuildMessage(header, values);
+ var message = SsdpHelper.BuildMessage(header, values);
- _CommsServer.SendMulticastMessage(System.Text.UTF8Encoding.UTF8.GetBytes(message));
+ _CommsServer.SendMulticastMessage(message);
WriteTrace(String.Format("Sent alive notification"), device);
}
- private string BuildMessage(string header, Dictionary<string, string> values)
- {
- var builder = new StringBuilder();
-
- const string argFormat = "{0}: {1}\r\n";
-
- builder.AppendFormat("{0}\r\n", header);
-
- foreach (var pair in values)
- {
- builder.AppendFormat(argFormat, pair.Key, pair.Value);
- }
-
- builder.Append("\r\n");
-
- return builder.ToString();
- }
-
#endregion
#region ByeBye
@@ -543,9 +522,9 @@ namespace Rssdp.Infrastructure
values["NT"] = notificationType;
values["USN"] = uniqueServiceName;
- var message = BuildMessage(header, values);
+ var message = SsdpHelper.BuildMessage(header, values);
- return _CommsServer.SendMulticastMessage(System.Text.UTF8Encoding.UTF8.GetBytes(message));
+ return _CommsServer.SendMulticastMessage(message);
//WriteTrace(String.Format("Sent byebye notification"), device);
}
@@ -686,7 +665,7 @@ namespace Rssdp.Infrastructure
{
if (this.IsDisposed) return;
- if (e.Message.Method.Method == SsdpConstants.MSearchMethod)
+ if (string.Equals(e.Message.Method.Method, SsdpConstants.MSearchMethod, StringComparison.OrdinalIgnoreCase))
{
//According to SSDP/UPnP spec, ignore message if missing these headers.
// Edit: But some devices do it anyway