-rw-r--r-- | .gitignore | 33 | ||||
-rw-r--r-- | COPYING | 2 | ||||
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | NEWS.xml | 6 | ||||
-rwxr-xr-x | autogen.sh | 2 | ||||
-rw-r--r-- | autoregen.sh | 2 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | include/opkele/expat.h | 3 | ||||
-rw-r--r-- | lib/basic_rp.cc | 3 | ||||
-rw-r--r-- | lib/discovery.cc | 53 | ||||
-rw-r--r-- | lib/expat.cc | 9 | ||||
-rw-r--r-- | test/RP.cc | 1 |
12 files changed, 82 insertions, 39 deletions
@@ -1,21 +1,16 @@ | |||
1 | configure | 1 | /configure |
2 | Makefile.in | 2 | Makefile.in |
3 | Doxyfile | 3 | /Doxyfile |
4 | config.log | 4 | /config.log |
5 | depcomp | 5 | /config.h |
6 | config.guess | 6 | /INSTALL |
7 | config.h | 7 | /NEWS |
8 | config.sub | ||
9 | ltmain.sh | ||
10 | INSTALL | ||
11 | NEWS | ||
12 | Makefile | 8 | Makefile |
13 | config.status | 9 | /config.status |
14 | stamp-h1 | 10 | /stamp-h1 |
15 | config.h.in | 11 | /config.h.in |
16 | libtool | 12 | /autom4te.cache |
17 | autom4te.cache | 13 | /libopkele.pc |
18 | libopkele.pc | 14 | /aclocal.m4 |
19 | missing | 15 | /aclocal.d |
20 | aclocal.m4 | 16 | /aux.d |
21 | install-sh | ||
@@ -1,2 +1,2 @@ | |||
1 | Copyright (c) 2005-2008 Klever Group (http://www.klever.net/) | 1 | Copyright (c) 2005-2009 Klever Group (http://www.klever.net/) |
2 | 2 | ||
diff --git a/Makefile.am b/Makefile.am index 3227bdb..7726dad 100644 --- a/Makefile.am +++ b/Makefile.am | |||
@@ -1,2 +1 @@ | |||
1 | |||
2 | SUBDIRS=include lib test | SUBDIRS=include lib test | |
@@ -4,2 +3,4 @@ EXTRA_DIST= NEWS NEWS.xml NEWS.xsl | |||
4 | 3 | ||
4 | ACLOCAL_AMFLAGS=-I aclocal.d | ||
5 | |||
5 | pkgconfigdir=${libdir}/pkgconfig | 6 | pkgconfigdir=${libdir}/pkgconfig |
@@ -2,2 +2,8 @@ | |||
2 | <news> | 2 | <news> |
3 | <version version="2.0.2" date="April 11th, 2009"> | ||
4 | <ni>Handling of unknown encodings during discovery</ni> | ||
5 | <ni>Discovery robustness improvements</ni> | ||
6 | <ni>Workaround for OPs (e.g. livejournal.com) breaking specs</ni> | ||
7 | <ni>Build fixes and improvements</ni> | ||
8 | </version> | ||
3 | <version version="2.0.1" date="November 22nd, 2008"> | 9 | <version version="2.0.1" date="November 22nd, 2008"> |
@@ -6,3 +6,3 @@ fi | |||
6 | "$tool_libtoolize" -f \ | 6 | "$tool_libtoolize" -f \ |
7 | && aclocal \ | 7 | && aclocal -I aclocal.d \ |
8 | && autoheader \ | 8 | && autoheader \ |
diff --git a/autoregen.sh b/autoregen.sh new file mode 100644 index 0000000..ce75a08 --- a/dev/null +++ b/autoregen.sh | |||
@@ -0,0 +1,2 @@ | |||
1 | #!/bin/bash | ||
2 | eval sh autogen.sh $(./config.status --version | grep '^ with options "'|sed -e 's/^[^"]\+"//' -e 's/"$//') "$@" | ||
diff --git a/configure.ac b/configure.ac index a7b56ff..2ded490 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -1,4 +1,6 @@ | |||
1 | AC_INIT([libopkele], [2.0.1], [libopkele-bugs@klever.net]) | 1 | AC_INIT([libopkele], [2.0.2], [libopkele-bugs@klever.net]) |
2 | AC_CONFIG_SRCDIR([include/opkele/opkele-config.h]) | 2 | AC_CONFIG_SRCDIR([include/opkele/opkele-config.h]) |
3 | AC_CONFIG_HEADERS([config.h include/opkele/acconfig.h]) | 3 | AC_CONFIG_HEADERS([config.h include/opkele/acconfig.h]) |
4 | AC_CONFIG_MACRO_DIR([aclocal.d]) | ||
5 | AC_CONFIG_AUX_DIR([aux.d]) | ||
4 | AM_INIT_AUTOMAKE([dist-bzip2]) | 6 | AM_INIT_AUTOMAKE([dist-bzip2]) |
diff --git a/include/opkele/expat.h b/include/opkele/expat.h index 3ab1630..21be003 100644 --- a/include/opkele/expat.h +++ b/include/opkele/expat.h | |||
@@ -28,2 +28,5 @@ namespace opkele { | |||
28 | 28 | ||
29 | virtual int unknown_encoding(const XML_Char * /* n */,XML_Encoding * /* i */) { return XML_STATUS_ERROR; } | ||
30 | void set_unknown_encoding_handler(); | ||
31 | |||
29 | virtual void start_element(const XML_Char * /* n */,const XML_Char ** /* a */) { } | 32 | virtual void start_element(const XML_Char * /* n */,const XML_Char ** /* a */) { } |
diff --git a/lib/basic_rp.cc b/lib/basic_rp.cc index 3cad71c..9c7113b 100644 --- a/lib/basic_rp.cc +++ b/lib/basic_rp.cc | |||
@@ -220,3 +220,4 @@ namespace opkele { | |||
220 | bool o2 = om.has_field("ns") | 220 | bool o2 = om.has_field("ns") |
221 | && om.get_field("ns")==OIURI_OPENID20; | 221 | && om.get_field("ns")==OIURI_OPENID20 |
222 | && om.has_field("op_endpoint") && !om.get_field("op_endpoint").empty(); | ||
222 | if( (!o2) && om.has_field("user_setup_url")) | 223 | if( (!o2) && om.has_field("user_setup_url")) |
diff --git a/lib/discovery.cc b/lib/discovery.cc index bd1f917..b4ed3b6 100644 --- a/lib/discovery.cc +++ b/lib/discovery.cc | |||
@@ -285,2 +285,3 @@ namespace opkele { | |||
285 | set_character_data_handler(); | 285 | set_character_data_handler(); |
286 | set_unknown_encoding_handler(); | ||
286 | 287 | ||
@@ -455,21 +456,36 @@ namespace opkele { | |||
455 | if(is_qelement(n,NSURI_XRD "\tType")) { | 456 | if(is_qelement(n,NSURI_XRD "\tType")) { |
456 | assert(xrd); assert(xrd_service); assert(cdata==&cdata_buf); | 457 | if(xrd && xrd_service) { |
457 | xrd_service->types.insert(cdata_buf); | 458 | assert(cdata==&cdata_buf); |
459 | xrd_service->types.insert(cdata_buf); | ||
460 | } | ||
458 | }else if(is_qelement(n,NSURI_XRD "\tService")) { | 461 | }else if(is_qelement(n,NSURI_XRD "\tService")) { |
459 | assert(xrd); assert(xrd_service); | 462 | if(!(xrd && xrd_service)) { |
460 | assert(!pt_stack.empty()); | 463 | skipping = -1; |
461 | assert(pt_stack.back()==(NSURI_XRD "\tService")); | 464 | }else{ |
462 | pt_stack.pop_back(); | 465 | assert(!pt_stack.empty()); |
463 | xrd_service = 0; | 466 | assert(pt_stack.back()==(NSURI_XRD "\tService")); |
464 | }else if(is_qelement(n,NSURI_XRD "\tStatus")) { | ||
465 | assert(xrd); | ||
466 | if(is_qelement(pt_stack.back().c_str(),n)) { | ||
467 | assert(cdata==&status_string); | ||
468 | pt_stack.pop_back(); | 467 | pt_stack.pop_back(); |
469 | if(status_code!=100) | 468 | xrd_service = 0; |
470 | skipping = -1; | 469 | } |
470 | }else if(is_qelement(n,NSURI_XRD "\tStatus")) { | ||
471 | if(!xrd) { | ||
472 | skipping=-1; | ||
473 | }else{ | ||
474 | if(is_qelement(pt_stack.back().c_str(),n)) { | ||
475 | assert(cdata==&status_string); | ||
476 | pt_stack.pop_back(); | ||
477 | if(status_code!=100) | ||
478 | skipping = -1; | ||
479 | } | ||
471 | } | 480 | } |
472 | }else if(is_qelement(n,NSURI_XRD "\tExpires")) { | 481 | }else if(is_qelement(n,NSURI_XRD "\tExpires")) { |
473 | assert(xrd); | 482 | if(!xrd) { |
474 | xrd->expires = util::w3c_to_time(cdata_buf); | 483 | skipping=-1; |
484 | }else{ | ||
485 | xrd->expires = util::w3c_to_time(cdata_buf); | ||
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(); | ||
475 | }else if((xmode&xmode_html) && is_element(n,"head")) { | 491 | }else if((xmode&xmode_html) && is_element(n,"head")) { |
@@ -571,2 +587,9 @@ namespace opkele { | |||
571 | 587 | ||
588 | int unknown_encoding(const XML_Char* /* n */,XML_Encoding *i) { | ||
589 | for(unsigned int ii=0;ii < sizeof(i->map)/sizeof(i->map[0]);++ii) | ||
590 | i->map[ii] = ii; | ||
591 | i->convert = 0; i->release = 0; | ||
592 | return XML_STATUS_OK; | ||
593 | } | ||
594 | |||
572 | }; | 595 | }; |
diff --git a/lib/expat.cc b/lib/expat.cc index c4dab7e..fb58a9a 100644 --- a/lib/expat.cc +++ b/lib/expat.cc | |||
@@ -94,2 +94,11 @@ namespace opkele { | |||
94 | 94 | ||
95 | static int _unknown_encoding(void *ehd,const XML_Char *n,XML_Encoding *i) { | ||
96 | return ((expat_t*)ehd)->unknown_encoding(n,i); | ||
97 | } | ||
98 | |||
99 | void expat_t::set_unknown_encoding_handler() { | ||
100 | assert(_x); | ||
101 | XML_SetUnknownEncodingHandler(_x,_unknown_encoding,this); | ||
102 | } | ||
103 | |||
95 | } | 104 | } |
@@ -3,2 +3,3 @@ | |||
3 | #include <cassert> | 3 | #include <cassert> |
4 | #include <cstdlib> | ||
4 | #include <stdexcept> | 5 | #include <stdexcept> |