diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-03 18:57:34 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-03 18:57:34 -0500 |
| commit | 7ed6c67db0f28c5776d972668a438369c3b96aef (patch) | |
| tree | 234d4878911b9fa9f18aed5a3166e301e572ec3d /Emby.Dlna/Service/BaseControlHandler.cs | |
| parent | 83ad945015541aefbe2a0cd2a00ed6e0c151f72c (diff) | |
update xml parsing
Diffstat (limited to 'Emby.Dlna/Service/BaseControlHandler.cs')
| -rw-r--r-- | Emby.Dlna/Service/BaseControlHandler.cs | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/Emby.Dlna/Service/BaseControlHandler.cs b/Emby.Dlna/Service/BaseControlHandler.cs index 8f91626d48..4ce047172e 100644 --- a/Emby.Dlna/Service/BaseControlHandler.cs +++ b/Emby.Dlna/Service/BaseControlHandler.cs @@ -16,7 +16,7 @@ namespace Emby.Dlna.Service public abstract class BaseControlHandler { private const string NS_SOAPENV = "http://schemas.xmlsoap.org/soap/envelope/"; - + protected readonly IServerConfigurationManager Config; protected readonly ILogger Logger; protected readonly IXmlReaderSettingsFactory XmlReaderSettingsFactory; @@ -109,7 +109,7 @@ namespace Emby.Dlna.Service } var xml = builder.ToString().Replace("xmlns:m=", "xmlns:u="); - + var controlResponse = new ControlResponse { Xml = xml, @@ -136,12 +136,20 @@ namespace Emby.Dlna.Service switch (reader.LocalName) { case "Body": - { - using (var subReader = reader.ReadSubtree()) { - return ParseBodyTag(subReader); + if (!reader.IsEmptyElement) + { + using (var subReader = reader.ReadSubtree()) + { + return ParseBodyTag(subReader); + } + } + else + { + reader.Read(); + } + break; } - } default: { reader.Skip(); @@ -173,11 +181,18 @@ namespace Emby.Dlna.Service result.LocalName = reader.LocalName; result.NamespaceURI = reader.NamespaceURI; - using (var subReader = reader.ReadSubtree()) + if (!reader.IsEmptyElement) { - result.Headers = ParseFirstBodyChild(subReader); + using (var subReader = reader.ReadSubtree()) + { + result.Headers = ParseFirstBodyChild(subReader); - return result; + return result; + } + } + else + { + reader.Read(); } } else |
