summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2009-01-28 20:54:09 (UTC)
committer Michael Krelin <hacker@klever.net>2009-01-28 20:56:27 (UTC)
commitbfd588fc4793fc22834845eeb172b8e217c80dd1 (patch) (unidiff)
treeef484f6175c38c50f413e23e79fb5eca47544062
parent485a0816b78fcf53a717e8e7cbeabee0b83091e7 (diff)
downloadlibopkele-bfd588fc4793fc22834845eeb172b8e217c80dd1.zip
libopkele-bfd588fc4793fc22834845eeb172b8e217c80dd1.tar.gz
libopkele-bfd588fc4793fc22834845eeb172b8e217c80dd1.tar.bz2
XRD discovery fix.
Added omitted popping of the XRD element out of stack when it ends. Thanks to our usual suspect - Joseph for spotting it ;-) Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--lib/discovery.cc4
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
@@ -475,24 +475,28 @@ namespace opkele {
475 assert(cdata==&status_string); 475 assert(cdata==&status_string);
476 pt_stack.pop_back(); 476 pt_stack.pop_back();
477 if(status_code!=100) 477 if(status_code!=100)
478 skipping = -1; 478 skipping = -1;
479 } 479 }
480 } 480 }
481 }else if(is_qelement(n,NSURI_XRD "\tExpires")) { 481 }else if(is_qelement(n,NSURI_XRD "\tExpires")) {
482 if(!xrd) { 482 if(!xrd) {
483 skipping=-1; 483 skipping=-1;
484 }else{ 484 }else{
485 xrd->expires = util::w3c_to_time(cdata_buf); 485 xrd->expires = util::w3c_to_time(cdata_buf);
486 } 486 }
487 }else if(is_qelement(n,NSURI_XRD "\tXRD")) {
488 assert(!pt_stack.empty());
489 assert(pt_stack.back()==(NSURI_XRD "\tXRD"));
490 pt_stack.pop_back();
487 }else if((xmode&xmode_html) && is_element(n,"head")) { 491 }else if((xmode&xmode_html) && is_element(n,"head")) {
488 skipping = -1; 492 skipping = -1;
489 } 493 }
490 cdata = 0; 494 cdata = 0;
491 } 495 }
492 void character_data(const XML_Char *s,int l) { 496 void character_data(const XML_Char *s,int l) {
493 if(skipping) return; 497 if(skipping) return;
494 if(cdata) cdata->append(s,l); 498 if(cdata) cdata->append(s,l);
495 } 499 }
496 500
497 void html_start_element(const XML_Char *n,const XML_Char **a) { 501 void html_start_element(const XML_Char *n,const XML_Char **a) {
498 if(is_element(n,"meta")) { 502 if(is_element(n,"meta")) {