diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-11-30 06:41:21 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2009-11-30 06:41:21 -0800 |
commit | acce40c44d4a0f0ea95ca5ad671ce12dcf24cb7d (patch) | |
tree | 1398c866836eb78553665c11becc2a22ac976fff /src | |
parent | dfbfeafaaeeda41242f0a5fc6e1de01e99889684 (diff) | |
download | DotNetOpenAuth-acce40c44d4a0f0ea95ca5ad671ce12dcf24cb7d.zip DotNetOpenAuth-acce40c44d4a0f0ea95ca5ad671ce12dcf24cb7d.tar.gz DotNetOpenAuth-acce40c44d4a0f0ea95ca5ad671ce12dcf24cb7d.tar.bz2 |
Made google:NextAuthority not a mandatory element, per the spec.
Diffstat (limited to 'src')
-rw-r--r-- | src/DotNetOpenAuth/OpenId/HostMetaDiscoveryService.cs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/DotNetOpenAuth/OpenId/HostMetaDiscoveryService.cs b/src/DotNetOpenAuth/OpenId/HostMetaDiscoveryService.cs index e165680..f4b9db2 100644 --- a/src/DotNetOpenAuth/OpenId/HostMetaDiscoveryService.cs +++ b/src/DotNetOpenAuth/OpenId/HostMetaDiscoveryService.cs @@ -174,14 +174,15 @@ namespace DotNetOpenAuth.OpenId { var results = new List<IdentifierDiscoveryResult>(); foreach (var serviceElement in GetDescribedByServices(xrds)) { - var template = serviceElement.Node.SelectSingleNode("google:URITemplate", serviceElement.XmlNamespaceResolver); - var nextAuthority = serviceElement.Node.SelectSingleNode("google:NextAuthority", serviceElement.XmlNamespaceResolver); - if (template != null && nextAuthority != null) { - Uri externalLocation = new Uri(template.Value.Trim().Replace("{%uri}", Uri.EscapeDataString(identifier.Uri.AbsoluteUri))); + var templateNode = serviceElement.Node.SelectSingleNode("google:URITemplate", serviceElement.XmlNamespaceResolver); + var nextAuthorityNode = serviceElement.Node.SelectSingleNode("google:NextAuthority", serviceElement.XmlNamespaceResolver); + if (templateNode != null) { + Uri externalLocation = new Uri(templateNode.Value.Trim().Replace("{%uri}", Uri.EscapeDataString(identifier.Uri.AbsoluteUri))); + string nextAuthority = nextAuthorityNode != null ? nextAuthorityNode.Value.Trim() : identifier.Uri.Host; try { var externalXrdsResponse = GetXrdsResponse(identifier, requestHandler, externalLocation); XrdsDocument externalXrds = new XrdsDocument(XmlReader.Create(externalXrdsResponse.ResponseStream)); - ValidateXmlDSig(externalXrds, identifier, externalXrdsResponse, nextAuthority.Value.Trim()); + ValidateXmlDSig(externalXrds, identifier, externalXrdsResponse, nextAuthority); results.AddRange(GetXrdElements(externalXrds, identifier).CreateServiceEndpoints(identifier, identifier)); } catch (ProtocolException ex) { Logger.Yadis.WarnFormat("HTTP GET error while retrieving described-by XRDS document {0}: {1}", externalLocation.AbsoluteUri, ex); |