Mercurial > openid
diff src/c/openid.c @ 42:1068de1623a5
Announce when provider only supports old OpenID version
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 12 Jun 2011 18:12:47 -0400 |
parents | a77f4cd1336d |
children | 00c8f43be8b7 |
line wrap: on
line diff
--- a/src/c/openid.c Sun Jun 12 17:49:43 2011 -0400 +++ b/src/c/openid.c Sun Jun 12 18:12:47 2011 -0400 @@ -72,7 +72,7 @@ uw_context ctx; uw_OpenidFfi_discovery *d; xrds_mode mode; - int cur_priority, max_priority; + int cur_priority, max_priority, found_old_version; } endpoint; static void XMLCALL startElement(void *userData, const XML_Char *name, const XML_Char **atts) { @@ -89,6 +89,9 @@ if (!strcmp(attp[0], "rel") && !strcmp(attp[1], "openid2.provider")) { found = 1; break; + } else if (!strcmp(attp[0], "rel") && !strcmp(attp[1], "openid.server")) { + ep->found_old_version = 1; + return; } } @@ -182,7 +185,7 @@ CURL *c = curl(ctx); curl_discovery_data cd = {}; uw_OpenidFfi_discovery *dy = uw_malloc(ctx, sizeof(uw_OpenidFfi_discovery)); - endpoint ep = {ctx, dy, NONE, 0, INT_MAX}; + endpoint ep = {ctx, dy, NONE, 0, INT_MAX, 0}; CURLcode code; struct curl_slist *headers = NULL; @@ -222,8 +225,12 @@ uw_Basis_debug(ctx, "CURL error:"); uw_Basis_debug(ctx, (char*)curl_easy_strerror(code)); } - else if (!dy->endpoint) - uw_Basis_debug(ctx, "Couldn't parse endpoint from page"); + else if (!dy->endpoint) { + if (ep.found_old_version) + uw_Basis_debug(ctx, "Provider doesn't support OpenID version 2.0 but does support an older version"); + else + uw_Basis_debug(ctx, "Couldn't parse endpoint from page"); + } if (code || !dy->endpoint) return NULL;