summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2008-02-15 23:21:05 (UTC)
committer Michael Krelin <hacker@klever.net>2008-02-15 23:21:05 (UTC)
commitccdfc6eacec435a59d773127762ad0b6bce07149 (patch) (unidiff)
tree0a653ff550db04a65f6bbda418725c6c966d294f
parent2048be862b8619ddec90163af05e6472bf5175e4 (diff)
downloadlibopkele-ccdfc6eacec435a59d773127762ad0b6bce07149.zip
libopkele-ccdfc6eacec435a59d773127762ad0b6bce07149.tar.gz
libopkele-ccdfc6eacec435a59d773127762ad0b6bce07149.tar.bz2
small fix to openid message find_ns method
it foolishly failed in presence of ns field and absence of namespace in question. Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (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 {
204 fields,fnc,fields.size()-fnc); 204 fields,fnc,fields.size()-fnc);
205 else 205 else
206 signeds.append(fields,fnc,fields.size()-fnc); 206 signeds.append(fields,fnc,fields.size()-fnc);
207 } 207 }
208 } 208 }
209 }catch(failed_lookup&) { 209 }catch(failed_lookup&) {
210 signeds.assign(fields,fnc,fields.size()-fnc); 210 signeds.assign(fields,fnc,fields.size()-fnc);
211 } 211 }
212 set_field("signed",signeds); 212 set_field("signed",signeds);
213 } 213 }
214 214
215 string basic_openid_message::find_ns(const string& uri,const char *pfx) const { 215 string basic_openid_message::find_ns(const string& uri,const char *pfx) const {
216 if(has_field("ns")) 216 try {
217 return get_ns(uri); 217 return get_ns(uri);
218 }catch(failed_lookup&) {
218 return pfx; 219 return pfx;
219 } 220 }
221 }
220 string basic_openid_message::allocate_ns(const string& uri,const char *pfx) { 222 string basic_openid_message::allocate_ns(const string& uri,const char *pfx) {
221 if(!has_field("ns")) 223 if(!has_field("ns"))
222 return pfx; 224 return pfx;
223 if(has_ns(uri)) 225 if(has_ns(uri))
224 throw bad_input(OPKELE_CP_ "OpenID message already contains namespace"); 226 throw bad_input(OPKELE_CP_ "OpenID message already contains namespace");
225 string rv = pfx; 227 string rv = pfx;
226 if(has_field("ns."+rv)) { 228 if(has_field("ns."+rv)) {
227 string::reference c=rv[rv.length()]; 229 string::reference c=rv[rv.length()];
228 for(c='a';c<='z' && has_field("ns."+rv);++c); 230 for(c='a';c<='z' && has_field("ns."+rv);++c);
229 if(c=='z') 231 if(c=='z')
230 throw exception(OPKELE_CP_ "Failed to allocate namespace"); 232 throw exception(OPKELE_CP_ "Failed to allocate namespace");
231 } 233 }