-rw-r--r-- | lib/discovery.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/discovery.cc b/lib/discovery.cc index f8a3988..26f3eed 100644 --- a/lib/discovery.cc +++ b/lib/discovery.cc @@ -463,48 +463,52 @@ namespace opkele { skipping = -1; }else{ assert(!pt_stack.empty()); assert(pt_stack.back()==(NSURI_XRD "\tService")); pt_stack.pop_back(); xrd_service = 0; } }else if(is_qelement(n,NSURI_XRD "\tStatus")) { if(!xrd) { skipping=-1; }else{ if(is_qelement(pt_stack.back().c_str(),n)) { assert(cdata==&status_string); pt_stack.pop_back(); if(status_code!=100) skipping = -1; } } }else if(is_qelement(n,NSURI_XRD "\tExpires")) { if(!xrd) { skipping=-1; }else{ xrd->expires = util::w3c_to_time(cdata_buf); } + }else if(is_qelement(n,NSURI_XRD "\tXRD")) { + assert(!pt_stack.empty()); + assert(pt_stack.back()==(NSURI_XRD "\tXRD")); + pt_stack.pop_back(); }else if((xmode&xmode_html) && is_element(n,"head")) { skipping = -1; } cdata = 0; } void character_data(const XML_Char *s,int l) { if(skipping) return; if(cdata) cdata->append(s,l); } void html_start_element(const XML_Char *n,const XML_Char **a) { if(is_element(n,"meta")) { bool heq = false; string l; for(;*a;a+=2) { if(!( strcasecmp(a[0],"http-equiv") || strcasecmp(a[1],XRDS_HEADER) )) heq = true; else if(!strcasecmp(a[0],"content")) l.assign(a[1]); } if(heq) xrds_location = l; }else if(is_element(n,"link")) { |