summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-11-30 06:41:21 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2009-11-30 06:41:21 -0800
commitacce40c44d4a0f0ea95ca5ad671ce12dcf24cb7d (patch)
tree1398c866836eb78553665c11becc2a22ac976fff /src
parentdfbfeafaaeeda41242f0a5fc6e1de01e99889684 (diff)
downloadDotNetOpenAuth-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.cs11
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);