-rw-r--r-- | lib/openid_service_resolver.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/openid_service_resolver.cc b/lib/openid_service_resolver.cc index 5f82955..505e5b2 100644 --- a/lib/openid_service_resolver.cc +++ b/lib/openid_service_resolver.cc @@ -245,5 +245,4 @@ namespace opkele { || auth_info.auth_SEP.xrd_Type.empty() ) throw opkele::failed_lookup(OPKELE_CP_ "no OpenID service for XRI found"); - return auth_info; }else{ const char *np = nid.c_str(); @@ -272,5 +271,5 @@ namespace opkele { if(auth_info.auth_SEP.xrd_Type.empty()) { if(html_SEP.xrd_URI.empty()) - throw opkele::failed_lookup(OPKELE_CP_ "no OpenID service discovered"); + throw opkele::failed_lookup(OPKELE_CP_ "no OpenID 1.0 service discovered"); auth_info.auth_SEP = html_SEP; auth_info.auth_SEP.xrd_Type.clear(); auth_info.auth_SEP.xrd_Type.insert( STURI_OPENID10 ); @@ -280,14 +279,19 @@ namespace opkele { auth_info.canonical_id = canonicalized_id; } - return auth_info; }else{ discover_service(xrds_location); - if(auth_info.auth_SEP.xrd_Type.empty()) - throw opkele::failed_lookup(OPKELE_CP_ "no OpenID service found in Yadis document"); - if(auth_info.canonical_id.empty()) + if(auth_info.auth_SEP.xrd_Type.empty()) { + if(html_SEP.xrd_URI.empty()) + throw opkele::failed_lookup(OPKELE_CP_ "no OpenID 1.0 service discovered"); + auth_info.auth_SEP = html_SEP; + auth_info.auth_SEP.xrd_Type.clear(); auth_info.auth_SEP.xrd_Type.insert( STURI_OPENID10 ); auth_info.canonical_id = canonicalized_id; - return auth_info; + }else{ + if(auth_info.canonical_id.empty()) + auth_info.canonical_id = canonicalized_id; + } } } + return auth_info; } |