diff options
Diffstat (limited to 'libsoup/soup-auth.c')
-rw-r--r-- | libsoup/soup-auth.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libsoup/soup-auth.c b/libsoup/soup-auth.c index dd282925..1ffc8b83 100644 --- a/libsoup/soup-auth.c +++ b/libsoup/soup-auth.c @@ -673,7 +673,8 @@ static AuthScheme known_auth_schemes [] = { }; SoupAuth * -soup_auth_new_from_header_list (const GSList *vals) +soup_auth_new_from_header_list (const SoupUri *uri, + const GSList *vals) { gchar *header = NULL; AuthScheme *scheme = NULL, *iter; @@ -682,9 +683,14 @@ soup_auth_new_from_header_list (const GSList *vals) g_return_val_if_fail (vals != NULL, NULL); while (vals) { - for (iter = known_auth_schemes; iter->scheme; iter++) { - gchar *tryheader = vals->data; + gchar *tryheader = vals->data; + for (iter = known_auth_schemes; iter->scheme; iter++) { + if (uri->authmech && + g_strncasecmp (uri->authmech, + iter->scheme, + strlen (iter->scheme)) != 0) + continue; if (!g_strncasecmp (tryheader, iter->scheme, strlen (iter->scheme))) { |