summaryrefslogtreecommitdiff
path: root/openid/yadis
diff options
context:
space:
mode:
authorKevin Turner <kevin@janrain.com>2008-06-13 17:57:05 +0000
committerKevin Turner <kevin@janrain.com>2008-06-13 17:57:05 +0000
commit7384d0b27350c9bfba6285ed80cfdbc7545f730c (patch)
treec8e2ef4789dad2d274fd69f8b38ac80b427bb5da /openid/yadis
parent6ea3dc791af790e64105df1c89781e2b8732a033 (diff)
downloadopenid-7384d0b27350c9bfba6285ed80cfdbc7545f730c.tar.gz
[project @ etxrd.getCanonicalID: case-insensitive comparsions, patch from =wil]
1. There should only be a single CanonicalID in each XRD (in the latest XRI resolution spec), so I made it use the first CID found instead of the last. 2. Use case-insensitive comparison when comparing CanonicalIDs.
Diffstat (limited to 'openid/yadis')
-rw-r--r--openid/yadis/etxrd.py11
1 files changed, 5 insertions, 6 deletions
diff --git a/openid/yadis/etxrd.py b/openid/yadis/etxrd.py
index 1242b01..ef5cadf 100644
--- a/openid/yadis/etxrd.py
+++ b/openid/yadis/etxrd.py
@@ -172,19 +172,18 @@ def getCanonicalID(iname, xrd_tree):
xrd_list.reverse()
try:
- canonicalID = xri.XRI(xrd_list[0].findall(canonicalID_tag)[-1].text)
+ canonicalID = xri.XRI(xrd_list[0].findall(canonicalID_tag)[0].text)
except IndexError:
return None
- childID = canonicalID
+ childID = canonicalID.lower()
for xrd in xrd_list[1:]:
# XXX: can't use rsplit until we require python >= 2.4.
parent_sought = childID[:childID.rindex('!')]
- parent_list = [xri.XRI(c.text) for c in xrd.findall(canonicalID_tag)]
- if parent_sought not in parent_list:
- raise XRDSFraud("%r can not come from any of %s" % (parent_sought,
- parent_list))
+ parent = xri.XRI(xrd.findtext(canonicalID_tag))
+ if parent_sought != parent.lower():
+ raise XRDSFraud("%r can not come from %s" % (childID, parent))
childID = parent_sought