summaryrefslogtreecommitdiffabout
path: root/lib/openid_message.cc
Side-by-side diff
Diffstat (limited to 'lib/openid_message.cc') (more/less context) (show whitespace changes)
-rw-r--r--lib/openid_message.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/openid_message.cc b/lib/openid_message.cc
index 588bd62..75e59b3 100644
--- a/lib/openid_message.cc
+++ b/lib/openid_message.cc
@@ -204,28 +204,30 @@ namespace opkele {
fields,fnc,fields.size()-fnc);
else
signeds.append(fields,fnc,fields.size()-fnc);
}
}
}catch(failed_lookup&) {
signeds.assign(fields,fnc,fields.size()-fnc);
}
set_field("signed",signeds);
}
string basic_openid_message::find_ns(const string& uri,const char *pfx) const {
- if(has_field("ns"))
+ try {
return get_ns(uri);
+ }catch(failed_lookup&) {
return pfx;
}
+ }
string basic_openid_message::allocate_ns(const string& uri,const char *pfx) {
if(!has_field("ns"))
return pfx;
if(has_ns(uri))
throw bad_input(OPKELE_CP_ "OpenID message already contains namespace");
string rv = pfx;
if(has_field("ns."+rv)) {
string::reference c=rv[rv.length()];
for(c='a';c<='z' && has_field("ns."+rv);++c);
if(c=='z')
throw exception(OPKELE_CP_ "Failed to allocate namespace");
}