static char * soup_auth_domain_basic_accepts (SoupAuthDomain *domain, SoupMessage *msg, const char *header) { SoupAuthDomainBasicPrivate *priv = SOUP_AUTH_DOMAIN_BASIC_GET_PRIVATE (domain); char *username, *password; gboolean ok = FALSE; if (!parse_basic (msg, header, &username, &password)) return NULL; if (priv->auth_callback) { ok = priv->auth_callback (domain, msg, username, password, priv->auth_data); } else { ok = soup_auth_domain_try_generic_auth_callback ( domain, msg, username); } pw_free (password); if (ok) return username; else { g_free (username); return NULL; } }
static char * soup_auth_domain_digest_accepts (SoupAuthDomain *domain, SoupMessage *msg, const char *header) { SoupAuthDomainDigestPrivate *priv = SOUP_AUTH_DOMAIN_DIGEST_GET_PRIVATE (domain); GHashTable *params; const char *username; gboolean accept = FALSE; char *ret_user; if (strncmp (header, "Digest ", 7) != 0) return NULL; params = soup_header_parse_param_list (header + 7); if (!params) return NULL; username = g_hash_table_lookup (params, "username"); if (!username) { soup_header_free_param_list (params); return NULL; } if (priv->auth_callback) { char *hex_urp; hex_urp = priv->auth_callback (domain, msg, username, priv->auth_data); if (hex_urp) { accept = check_hex_urp (domain, msg, params, username, hex_urp); g_free (hex_urp); } else accept = FALSE; } else { accept = soup_auth_domain_try_generic_auth_callback ( domain, msg, username); } ret_user = accept ? g_strdup (username) : NULL; soup_header_free_param_list (params); return ret_user; }