summaryrefslogtreecommitdiffabout
path: root/lib
authorMichael Krelin <hacker@klever.net>2007-12-30 21:08:55 (UTC)
committer Michael Krelin <hacker@klever.net>2008-01-04 18:22:43 (UTC)
commitb7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97 (patch) (unidiff)
treec898f449b4238a239f491a62bd77ac7c75663bb1 /lib
parent4b75ac58aa9baaf611df8ef694fd585529823c66 (diff)
downloadlibopkele-b7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97.zip
libopkele-b7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97.tar.gz
libopkele-b7cec6ccef5d4178cf02c4cc240fd39ab7c8fe97.tar.bz2
parse ProviderID while doing discovery
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (limited to 'lib') (more/less context) (ignore whitespace changes)
-rw-r--r--lib/discovery.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/discovery.cc b/lib/discovery.cc
index bc7d6fb..81727c0 100644
--- a/lib/discovery.cc
+++ b/lib/discovery.cc
@@ -227,24 +227,27 @@ namespace opkele {
227 }else{ 227 }else{
228 skipping = -1; 228 skipping = -1;
229 } 229 }
230 }else{ 230 }else{
231 int pt_s = pt_stack.size(); 231 int pt_s = pt_stack.size();
232 if(pt_s==1) { 232 if(pt_s==1) {
233 if(is_qelement(n,NSURI_XRD "\tCanonicalID")) { 233 if(is_qelement(n,NSURI_XRD "\tCanonicalID")) {
234 assert(xrd); 234 assert(xrd);
235 cdata = &(xrd->canonical_ids.add(element_priority(a),string())); 235 cdata = &(xrd->canonical_ids.add(element_priority(a),string()));
236 }else if(is_qelement(n,NSURI_XRD "\tLocalID")) { 236 }else if(is_qelement(n,NSURI_XRD "\tLocalID")) {
237 assert(xrd); 237 assert(xrd);
238 cdata = &(xrd->local_ids.add(element_priority(a),string())); 238 cdata = &(xrd->local_ids.add(element_priority(a),string()));
239 }else if(is_qelement(n,NSURI_XRD "\tProviderID")) {
240 assert(xrd);
241 cdata = &(xrd->provider_id);
239 }else if(is_qelement(n,NSURI_XRD "\tService")) { 242 }else if(is_qelement(n,NSURI_XRD "\tService")) {
240 assert(xrd); 243 assert(xrd);
241 xrd_service = &(xrd->services.add(element_priority(a), 244 xrd_service = &(xrd->services.add(element_priority(a),
242 service_t())); 245 service_t()));
243 pt_stack.push_back(n); 246 pt_stack.push_back(n);
244 }else if(is_qelement(n,NSURI_XRD "\tStatus")) { 247 }else if(is_qelement(n,NSURI_XRD "\tStatus")) {
245 for(;*a;) { 248 for(;*a;) {
246 if(!strcasecmp(*(a++),"code")) { 249 if(!strcasecmp(*(a++),"code")) {
247 if(sscanf(*(a++),"%ld",&status_code)==1 && status_code!=100) { 250 if(sscanf(*(a++),"%ld",&status_code)==1 && status_code!=100) {
248 cdata = &status_string; 251 cdata = &status_string;
249 pt_stack.push_back(n); 252 pt_stack.push_back(n);
250 break; 253 break;
@@ -264,24 +267,27 @@ namespace opkele {
264 if(is_qelement(pt_stack.back().c_str(), NSURI_XRD "\tService")) { 267 if(is_qelement(pt_stack.back().c_str(), NSURI_XRD "\tService")) {
265 if(is_qelement(n,NSURI_XRD "\tType")) { 268 if(is_qelement(n,NSURI_XRD "\tType")) {
266 assert(xrd); assert(xrd_service); 269 assert(xrd); assert(xrd_service);
267 cdata_buf.clear(); 270 cdata_buf.clear();
268 cdata = &cdata_buf; 271 cdata = &cdata_buf;
269 }else if(is_qelement(n,NSURI_XRD "\tURI")) { 272 }else if(is_qelement(n,NSURI_XRD "\tURI")) {
270 assert(xrd); assert(xrd_service); 273 assert(xrd); assert(xrd_service);
271 cdata = &(xrd_service->uris.add(element_priority(a),string())); 274 cdata = &(xrd_service->uris.add(element_priority(a),string()));
272 }else if(is_qelement(n,NSURI_XRD "\tLocalID") 275 }else if(is_qelement(n,NSURI_XRD "\tLocalID")
273 || is_qelement(n,NSURI_OPENID10 "\tDelegate") ) { 276 || is_qelement(n,NSURI_OPENID10 "\tDelegate") ) {
274 assert(xrd); assert(xrd_service); 277 assert(xrd); assert(xrd_service);
275 cdata = &(xrd_service->local_ids.add(element_priority(a),string())); 278 cdata = &(xrd_service->local_ids.add(element_priority(a),string()));
279 }else if(is_qelement(n,NSURI_XRD "\tProviderID")) {
280 assert(xrd); assert(xrd_service);
281 cdata = &(xrd_service->provider_id);
276 }else{ 282 }else{
277 skipping = 1; 283 skipping = 1;
278 } 284 }
279 }else 285 }else
280 skipping = 1; 286 skipping = 1;
281 }else if(xmode&xmode_html) { 287 }else if(xmode&xmode_html) {
282 html_start_element(n,a); 288 html_start_element(n,a);
283 }else{ 289 }else{
284 skipping = 1; 290 skipping = 1;
285 } 291 }
286 } 292 }
287 } 293 }