summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2007-12-15 15:04:01 (UTC)
committer Michael Krelin <hacker@klever.net>2007-12-15 15:04:40 (UTC)
commit52c81fff0274c6bb54f6f9be414432ee6388e723 (patch) (unidiff)
treedc950b3f640bd7db8fc3f9f331f51a724a84f440
parent58383f07af80dfd5b5c18e5158291c3d8caefbe7 (diff)
downloadlibopkele-52c81fff0274c6bb54f6f9be414432ee6388e723.zip
libopkele-52c81fff0274c6bb54f6f9be414432ee6388e723.tar.gz
libopkele-52c81fff0274c6bb54f6f9be414432ee6388e723.tar.bz2
fixed handling of openid:Delegate in discovery
which was mistakenly added to the list of endpoint URIs instead of local ids. Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--lib/discovery.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/discovery.cc b/lib/discovery.cc
index 1f23ff1..9503b5d 100644
--- a/lib/discovery.cc
+++ b/lib/discovery.cc
@@ -225,97 +225,97 @@ namespace opkele {
225 pt_stack.push_back(n); 225 pt_stack.push_back(n);
226 }else if(xmode&xmode_html) { 226 }else if(xmode&xmode_html) {
227 html_start_element(n,a); 227 html_start_element(n,a);
228 }else{ 228 }else{
229 skipping = -1; 229 skipping = -1;
230 } 230 }
231 }else{ 231 }else{
232 int pt_s = pt_stack.size(); 232 int pt_s = pt_stack.size();
233 if(pt_s==1) { 233 if(pt_s==1) {
234 /* TODO: xrd:XRD/xrd:Expires */ 234 /* TODO: xrd:XRD/xrd:Expires */
235 if(is_qelement(n,NSURI_XRD "\tCanonicalID")) { 235 if(is_qelement(n,NSURI_XRD "\tCanonicalID")) {
236 assert(xrd); 236 assert(xrd);
237 cdata = &(xrd->canonical_ids.add(element_priority(a),string())); 237 cdata = &(xrd->canonical_ids.add(element_priority(a),string()));
238 }else if(is_qelement(n,NSURI_XRD "\tLocalID")) { 238 }else if(is_qelement(n,NSURI_XRD "\tLocalID")) {
239 assert(xrd); 239 assert(xrd);
240 cdata = &(xrd->local_ids.add(element_priority(a),string())); 240 cdata = &(xrd->local_ids.add(element_priority(a),string()));
241 }else if(is_qelement(n,NSURI_XRD "\tService")) { 241 }else if(is_qelement(n,NSURI_XRD "\tService")) {
242 assert(xrd); 242 assert(xrd);
243 xrd_service = &(xrd->services.add(element_priority(a), 243 xrd_service = &(xrd->services.add(element_priority(a),
244 service_t())); 244 service_t()));
245 pt_stack.push_back(n); 245 pt_stack.push_back(n);
246 }else if(is_qelement(n,NSURI_XRD "\tStatus")) { 246 }else if(is_qelement(n,NSURI_XRD "\tStatus")) {
247 for(;*a;) { 247 for(;*a;) {
248 if(!strcasecmp(*(a++),"code")) { 248 if(!strcasecmp(*(a++),"code")) {
249 if(sscanf(*(a++),"%ld",&status_code)==1 && status_code!=100) { 249 if(sscanf(*(a++),"%ld",&status_code)==1 && status_code!=100) {
250 cdata = &status_string; 250 cdata = &status_string;
251 pt_stack.push_back(n); 251 pt_stack.push_back(n);
252 break; 252 break;
253 } 253 }
254 } 254 }
255 } 255 }
256 }else if(xmode&xmode_html) { 256 }else if(xmode&xmode_html) {
257 html_start_element(n,a); 257 html_start_element(n,a);
258 }else{ 258 }else{
259 skipping = 1; 259 skipping = 1;
260 } 260 }
261 }else if(pt_s==2) { 261 }else if(pt_s==2) {
262 if(is_qelement(pt_stack.back().c_str(), NSURI_XRD "\tService")) { 262 if(is_qelement(pt_stack.back().c_str(), NSURI_XRD "\tService")) {
263 if(is_qelement(n,NSURI_XRD "\tType")) { 263 if(is_qelement(n,NSURI_XRD "\tType")) {
264 assert(xrd); assert(xrd_service); 264 assert(xrd); assert(xrd_service);
265 cdata_buf.clear(); 265 cdata_buf.clear();
266 cdata = &cdata_buf; 266 cdata = &cdata_buf;
267 }else if(is_qelement(n,NSURI_XRD "\tURI")) { 267 }else if(is_qelement(n,NSURI_XRD "\tURI")) {
268 assert(xrd); assert(xrd_service); 268 assert(xrd); assert(xrd_service);
269 cdata = &(xrd_service->uris.add(element_priority(a),string())); 269 cdata = &(xrd_service->uris.add(element_priority(a),string()));
270 }else if(is_qelement(n,NSURI_XRD "\tLocalID") 270 }else if(is_qelement(n,NSURI_XRD "\tLocalID")
271 || is_qelement(n,NSURI_OPENID10 "\tDelegate") ) { 271 || is_qelement(n,NSURI_OPENID10 "\tDelegate") ) {
272 assert(xrd); assert(xrd_service); 272 assert(xrd); assert(xrd_service);
273 cdata = &(xrd_service->uris.add(element_priority(a),string())); 273 cdata = &(xrd_service->local_ids.add(element_priority(a),string()));
274 }else{ 274 }else{
275 skipping = 1; 275 skipping = 1;
276 } 276 }
277 }else 277 }else
278 skipping = 1; 278 skipping = 1;
279 }else if(xmode&xmode_html) { 279 }else if(xmode&xmode_html) {
280 html_start_element(n,a); 280 html_start_element(n,a);
281 }else{ 281 }else{
282 skipping = 1; 282 skipping = 1;
283 } 283 }
284 } 284 }
285 } 285 }
286 void end_element(const XML_Char *n) { 286 void end_element(const XML_Char *n) {
287 if(skipping<0) return; 287 if(skipping<0) return;
288 if(skipping) { 288 if(skipping) {
289 --skipping; return; 289 --skipping; return;
290 } 290 }
291 if(is_qelement(n,NSURI_XRD "\tType")) { 291 if(is_qelement(n,NSURI_XRD "\tType")) {
292 assert(xrd); assert(xrd_service); assert(cdata==&cdata_buf); 292 assert(xrd); assert(xrd_service); assert(cdata==&cdata_buf);
293 xrd_service->types.insert(cdata_buf); 293 xrd_service->types.insert(cdata_buf);
294 }else if(is_qelement(n,NSURI_XRD "\tService")) { 294 }else if(is_qelement(n,NSURI_XRD "\tService")) {
295 assert(xrd); assert(xrd_service); 295 assert(xrd); assert(xrd_service);
296 assert(!pt_stack.empty()); 296 assert(!pt_stack.empty());
297 assert(pt_stack.back()==(NSURI_XRD "\tService")); 297 assert(pt_stack.back()==(NSURI_XRD "\tService"));
298 pt_stack.pop_back(); 298 pt_stack.pop_back();
299 xrd_service = 0; 299 xrd_service = 0;
300 }else if(is_qelement(n,NSURI_XRD "\tStatus")) { 300 }else if(is_qelement(n,NSURI_XRD "\tStatus")) {
301 assert(xrd); 301 assert(xrd);
302 if(is_qelement(pt_stack.back().c_str(),n)) { 302 if(is_qelement(pt_stack.back().c_str(),n)) {
303 assert(cdata==&status_string); 303 assert(cdata==&status_string);
304 pt_stack.pop_back(); 304 pt_stack.pop_back();
305 if(status_code!=100) 305 if(status_code!=100)
306 skipping = -1; 306 skipping = -1;
307 } 307 }
308 }else if((xmode&xmode_html) && is_element(n,"head")) { 308 }else if((xmode&xmode_html) && is_element(n,"head")) {
309 skipping = -1; 309 skipping = -1;
310 } 310 }
311 cdata = 0; 311 cdata = 0;
312 } 312 }
313 void character_data(const XML_Char *s,int l) { 313 void character_data(const XML_Char *s,int l) {
314 if(skipping) return; 314 if(skipping) return;
315 if(cdata) cdata->append(s,l); 315 if(cdata) cdata->append(s,l);
316 } 316 }
317 317
318 void html_start_element(const XML_Char *n,const XML_Char **a) { 318 void html_start_element(const XML_Char *n,const XML_Char **a) {
319 if(is_element(n,"meta")) { 319 if(is_element(n,"meta")) {
320 bool heq = false; 320 bool heq = false;
321 string l; 321 string l;