diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-11-27 14:08:55 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-11-27 14:08:55 -0500 |
| commit | 808f2f3095c18c18be7a6fd957ddeda2c4c97693 (patch) | |
| tree | 075924563ebee092d3359b219e9e10841b9c3a4e | |
| parent | 58a7829ecd773dbc3c875d3f0d4438b847fd54b5 (diff) | |
update rssdp
| -rw-r--r-- | RSSDP/HttpRequestParser.cs | 9 | ||||
| -rw-r--r-- | RSSDP/HttpResponseParser.cs | 10 | ||||
| -rw-r--r-- | RSSDP/SsdpDevice.cs | 8 |
3 files changed, 21 insertions, 6 deletions
diff --git a/RSSDP/HttpRequestParser.cs b/RSSDP/HttpRequestParser.cs index 0923f291f..bedbbe675 100644 --- a/RSSDP/HttpRequestParser.cs +++ b/RSSDP/HttpRequestParser.cs @@ -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). diff --git a/RSSDP/HttpResponseParser.cs b/RSSDP/HttpResponseParser.cs index ba85a1657..5f297ca9a 100644 --- a/RSSDP/HttpResponseParser.cs +++ b/RSSDP/HttpResponseParser.cs @@ -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 diff --git a/RSSDP/SsdpDevice.cs b/RSSDP/SsdpDevice.cs index cda11f0a4..65d9be139 100644 --- a/RSSDP/SsdpDevice.cs +++ b/RSSDP/SsdpDevice.cs @@ -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(); |
