update rssdp

This commit is contained in:
Luke Pulverenti 2017-11-27 14:08:55 -05:00
parent 58a7829ecd
commit 808f2f3095
3 changed files with 21 additions and 6 deletions

View File

@ -64,7 +64,7 @@ namespace Rssdp.Infrastructure
if (message == null) throw new ArgumentNullException("message");
var parts = data.Split(' ');
if (parts.Length < 3) throw new ArgumentException("Status line is invalid. Insufficient status parts.", "data");
if (parts.Length < 2) throw new ArgumentException("Status line is invalid. Insufficient status parts.", "data");
message.Method = new HttpMethod(parts[0].Trim());
Uri requestUri;
@ -73,8 +73,11 @@ namespace Rssdp.Infrastructure
else
System.Diagnostics.Debug.WriteLine(parts[1]);
message.Version = ParseHttpVersion(parts[2].Trim());
}
if (parts.Length >= 3)
{
message.Version = ParseHttpVersion(parts[2].Trim());
}
}
/// <summary>
/// Returns a boolean indicating whether the specified HTTP header name represents a content header (true), or a message header (false).

View File

@ -75,7 +75,7 @@ namespace Rssdp.Infrastructure
if (message == null) throw new ArgumentNullException("message");
var parts = data.Split(' ');
if (parts.Length < 3) throw new ArgumentException("data status line is invalid. Insufficient status parts.", "data");
if (parts.Length < 2) throw new ArgumentException("data status line is invalid. Insufficient status parts.", "data");
message.Version = ParseHttpVersion(parts[0].Trim());
@ -84,8 +84,12 @@ namespace Rssdp.Infrastructure
throw new ArgumentException("data status line is invalid. Status code is not a valid integer.", "data");
message.StatusCode = (HttpStatusCode)statusCode;
message.ReasonPhrase = parts[2].Trim();
}
if (parts.Length >= 3)
{
message.ReasonPhrase = parts[2].Trim();
}
}
#endregion

View File

@ -743,6 +743,14 @@ namespace Rssdp
private static void AddCustomProperty(XmlReader reader, SsdpDevice device)
{
// If the property is an empty element, there is no value to read
// Advance the reader and return
if (reader.IsEmptyElement)
{
reader.Read();
return;
}
var newProp = new SsdpDeviceProperty() { Namespace = reader.Prefix, Name = reader.LocalName };
int depth = reader.Depth;
reader.Read();