author | Michael Krelin <hacker@klever.net> | 2009-01-28 20:54:09 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2009-01-28 20:56:27 (UTC) |
commit | bfd588fc4793fc22834845eeb172b8e217c80dd1 (patch) (unidiff) | |
tree | ef484f6175c38c50f413e23e79fb5eca47544062 | |
parent | 485a0816b78fcf53a717e8e7cbeabee0b83091e7 (diff) | |
download | libopkele-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>
-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 | |||
@@ -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")) { |