Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libsoup for openSUSE:Factory checked in at 2021-10-29 22:33:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libsoup (Old) and /work/SRC/openSUSE:Factory/.libsoup.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsoup" Fri Oct 29 22:33:44 2021 rev:129 rq:927470 version:3.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libsoup/libsoup.changes 2021-10-04 18:39:32.998017075 +0200 +++ /work/SRC/openSUSE:Factory/.libsoup.new.1890/libsoup.changes 2021-10-29 22:34:35.911690399 +0200 @@ -1,0 +2,13 @@ +Sun Oct 24 17:46:33 UTC 2021 - Bj??rn Lie <bjorn....@gmail.com> + +- Update to version 3.0.2: + + Add support for multiple auth challenges in one response. + + Fix SoupCache test failures on 32bit + + Don't treat `-Wincompatible-pointer-types` as error. The + `glib-mkenums` tool sometimes triggered this. + + Improve `gssapi` dependency handling. + + Fix undefined `ssize_t` on Windows. + + Updated translations. +- No longer ignore test failure on 32-bit arches, fixed upstream. + +------------------------------------------------------------------- Old: ---- libsoup-3.0.1.tar.xz New: ---- libsoup-3.0.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libsoup.spec ++++++ --- /var/tmp/diff_new_pack.oVfbOl/_old 2021-10-29 22:34:36.343690562 +0200 +++ /var/tmp/diff_new_pack.oVfbOl/_new 2021-10-29 22:34:36.347690564 +0200 @@ -18,7 +18,7 @@ %define api_version 3.0 Name: libsoup -Version: 3.0.1 +Version: 3.0.2 Release: 0 Summary: HTTP client/server library for GNOME License: LGPL-2.1-or-later @@ -136,12 +136,7 @@ %check # Run the regression tests using GnuTLS NORMAL priority export G_TLS_GNUTLS_PRIORITY=NORMAL -# Ignore test failure on 32-bit - https://gitlab.gnome.org/GNOME/libsoup/-/issues/236 -%meson_test \ -%ifarch %ix86 %{arm} - || : -%endif -%nil +%meson_test %post 3_0-0 -p /sbin/ldconfig %postun 3_0-0 -p /sbin/ldconfig ++++++ libsoup-3.0.1.tar.xz -> libsoup-3.0.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-3.0.1/NEWS new/libsoup-3.0.2/NEWS --- old/libsoup-3.0.1/NEWS 2021-09-26 18:25:13.753087300 +0200 +++ new/libsoup-3.0.2/NEWS 2021-10-24 18:27:01.521673400 +0200 @@ -1,3 +1,18 @@ +Changes in libsoup from 3.0.1 to 3.0.2: + +* Add support for multiple auth challenges in one response [Patrick Griffis] + +* Fix SoupCache test failures on 32bit [Patrick Griffis] + +* Don't treat `-Wincompatible-pointer-types` as error + The `glib-mkenums` tool sometimes triggered this [Patrick Griffis] + +* Improve `gssapi` dependency handling [Nirbheek Chauhan] + +* Fix undefined `ssize_t` on Windows [Chun-wei Fan] + +* Updated translations: Hebrew + Changes in libsoup from 3.0.0 to 3.0.1: * Move python overrides to upstream pygobject [Patrick Griffis] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-3.0.1/libsoup/auth/soup-auth-manager.c new/libsoup-3.0.2/libsoup/auth/soup-auth-manager.c --- old/libsoup-3.0.1/libsoup/auth/soup-auth-manager.c 2021-09-26 18:25:13.755087100 +0200 +++ new/libsoup-3.0.2/libsoup/auth/soup-auth-manager.c 2021-10-24 18:27:01.523673500 +0200 @@ -311,41 +311,49 @@ return NULL; } -static char * -soup_auth_manager_extract_challenge (const char *challenges, const char *scheme) +static GStrv +soup_auth_manager_extract_challenges (const char *challenges, const char *scheme) { + GPtrArray *challenge_list = g_ptr_array_new (); GSList *items, *i, *next; int schemelen = strlen (scheme); char *item; GString *challenge; - items = soup_header_parse_list (challenges); + i = items = soup_header_parse_list (challenges); - /* First item will start with the scheme name, followed by - * either nothing, or else a space and then the first - * auth-param. - */ - for (i = items; i; i = next_challenge_start (i->next)) { - item = i->data; - if (!g_ascii_strncasecmp (item, scheme, schemelen) && - (!item[schemelen] || g_ascii_isspace (item[schemelen]))) - break; - } - if (!i) { - soup_header_free_list (items); - return NULL; - } - - next = next_challenge_start (i->next); - challenge = g_string_new (item); - for (i = i->next; i != next; i = i->next) { - item = i->data; - g_string_append (challenge, ", "); - g_string_append (challenge, item); - } + /* We need to split this list into individual challenges. */ + while (i) { + /* First item will start with the scheme name, followed by + * either nothing, or else a space and then the first + * auth-param. + */ + for (; i; i = next_challenge_start (i->next)) { + item = i->data; + if (!g_ascii_strncasecmp (item, scheme, schemelen) && + (!item[schemelen] || g_ascii_isspace (item[schemelen]))) + break; + } + if (!i) + break; + + next = next_challenge_start (i->next); + challenge = g_string_new (item); + for (i = i->next; i != next; i = i->next) { + item = i->data; + g_string_append (challenge, ", "); + g_string_append (challenge, item); + } + + i = next; + g_ptr_array_add (challenge_list, g_string_free (challenge, FALSE)); + }; soup_header_free_list (items); - return g_string_free (challenge, FALSE); + + if (challenge_list->len) + g_ptr_array_add (challenge_list, NULL); /* Trailing NULL for GStrv. */ + return (GStrv)g_ptr_array_free (challenge_list, FALSE); } static SoupAuth * @@ -353,7 +361,7 @@ { const char *header; SoupAuthClass *auth_class; - char *challenge = NULL; + GStrv challenges; SoupAuth *auth = NULL; int i; @@ -363,38 +371,56 @@ for (i = priv->auth_types->len - 1; i >= 0; i--) { auth_class = priv->auth_types->pdata[i]; - challenge = soup_auth_manager_extract_challenge (header, auth_class->scheme_name); - if (!challenge) - continue; - auth = soup_auth_new (G_TYPE_FROM_CLASS (auth_class), msg, challenge); - g_free (challenge); - if (auth) - break; + challenges = soup_auth_manager_extract_challenges (header, auth_class->scheme_name); + if (!challenges) + continue; + + for (int j = 0; challenges[j]; j++) { + /* TODO: We use the first successfully parsed auth, in the future this should + * prioritise more secure ones when they are supported. */ + auth = soup_auth_new (G_TYPE_FROM_CLASS (auth_class), msg, challenges[j]); + if (auth) { + g_strfreev (challenges); + return auth; + } + } + + g_strfreev (challenges); } - return auth; + return NULL; } static gboolean check_auth (SoupMessage *msg, SoupAuth *auth) { const char *header, *scheme; - char *challenge = NULL; + GStrv challenges = NULL; gboolean ok = TRUE; + gboolean a_challenge_was_ok = FALSE; scheme = soup_auth_get_scheme_name (auth); header = auth_header_for_message (msg); if (header) - challenge = soup_auth_manager_extract_challenge (header, scheme); - if (!challenge) { - ok = FALSE; - challenge = g_strdup (scheme); + challenges = soup_auth_manager_extract_challenges (header, scheme); + if (!challenges) { + challenges = g_new0 (char*, 2); + challenges[0] = g_strdup (scheme); + ok = FALSE; } - if (!soup_auth_update (auth, msg, challenge)) - ok = FALSE; - g_free (challenge); + for (int i = 0; challenges[i]; i++) { + if (soup_auth_update (auth, msg, challenges[i])) { + a_challenge_was_ok = TRUE; + break; + } + } + + if (!a_challenge_was_ok) + ok = FALSE; + + g_strfreev (challenges); return ok; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-3.0.1/libsoup/cache/soup-cache.c new/libsoup-3.0.2/libsoup/cache/soup-cache.c --- old/libsoup-3.0.1/libsoup/cache/soup-cache.c 2021-09-26 18:25:13.758087200 +0200 +++ new/libsoup-3.0.2/libsoup/cache/soup-cache.c 2021-10-24 18:27:01.523673500 +0200 @@ -412,7 +412,7 @@ date = soup_message_headers_get_one_common (entry->headers, SOUP_HEADER_DATE); if (expires && date) { GDateTime *expires_d, *date_d; - time_t expires_t, date_t; + gint64 expires_t, date_t; expires_d = soup_date_time_new_from_http_string (expires); if (expires_d) { @@ -456,7 +456,7 @@ last_modified = soup_message_headers_get_one_common (entry->headers, SOUP_HEADER_LAST_MODIFIED); if (last_modified) { GDateTime *soup_date; - time_t now, last_modified_t; + gint64 now, last_modified_t; soup_date = soup_date_time_new_from_http_string (last_modified); last_modified_t = g_date_time_to_unix (soup_date); @@ -504,7 +504,7 @@ if (date) { GDateTime *soup_date; const char *age; - time_t date_value, apparent_age, corrected_received_age, response_delay, age_value = 0; + gint64 date_value, apparent_age, corrected_received_age, response_delay, age_value = 0; soup_date = soup_date_time_new_from_http_string (date); date_value = g_date_time_to_unix (soup_date); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-3.0.1/libsoup/meson.build new/libsoup-3.0.2/libsoup/meson.build --- old/libsoup-3.0.1/libsoup/meson.build 2021-09-26 18:25:13.763087300 +0200 +++ new/libsoup-3.0.2/libsoup/meson.build 2021-10-24 18:27:01.526673600 +0200 @@ -184,6 +184,7 @@ libpsl_dep, brotlidec_dep, platform_deps, + gssapi_dep, libz_dep, libnghttp2_dep, ] @@ -240,13 +241,13 @@ libsoup_dep = declare_dependency(link_with : libsoup, include_directories : libsoup_includes, sources : soup_enum_h, - dependencies : [ platform_deps, glib_deps ] + dependencies : [ platform_deps, gssapi_dep, glib_deps ] ) libsoup_static_dep = declare_dependency(link_with : libsoup_static, include_directories : libsoup_includes, sources : soup_enum_h, - dependencies : [ platform_deps, glib_deps ] + dependencies : [ platform_deps, gssapi_dep, glib_deps ] ) if enable_introspection or enable_vapi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-3.0.1/meson.build new/libsoup-3.0.2/meson.build --- old/libsoup-3.0.1/meson.build 2021-09-26 18:25:13.773087300 +0200 +++ new/libsoup-3.0.2/meson.build 2021-10-24 18:27:01.531673400 +0200 @@ -1,5 +1,5 @@ project('libsoup', 'c', - version: '3.0.1', + version: '3.0.2', meson_version : '>= 0.53', license : 'LGPL2', default_options : [ @@ -19,7 +19,7 @@ # # When bumping the first component version, set the second and third components # to 0. When bumping the second version, set the third one to zero. -libversion = '0.0.1' +libversion = '0.0.2' apiversion = '3.0' soversion = libversion.split('.')[0] libsoup_api_name = '@0@-@1@'.format(meson.project_name(), apiversion) @@ -48,6 +48,12 @@ ] cc = meson.get_compiler('c') + +# define ssize_t as Microsoft's headers do not define it +if cc.get_argument_syntax() == 'msvc' + add_project_arguments('-Dssize_t=gssize', language: 'c') +endif + # Enable extra warnings if compiler supports them. if cc.get_id() == 'msvc' common_flags += ['/FImsvc_recommended_pragmas.h'] @@ -64,7 +70,7 @@ '-Werror=aggregate-return', '-Werror=format=2', '-Werror=return-type', - '-Werror=incompatible-pointer-types', + '-Wincompatible-pointer-types', '-Wstrict-prototypes', '-Wno-format-zero-length', '-Wno-missing-include-dirs', @@ -311,12 +317,11 @@ else gssapi_lib_type = '64' endif - gssapi_lib = cc.find_library('gssapi' + gssapi_lib_type, + gssapi_dep = cc.find_library('gssapi' + gssapi_lib_type, has_headers: 'gssapi/gssapi.h', required: gssapi_opt) - if gssapi_lib.found() + if gssapi_dep.found() enable_gssapi = true - add_project_link_arguments('gssapi@0@.lib'.format(gssapi_lib_type), language : 'c') endif else krb5_config_path = get_option('krb5_config') @@ -329,9 +334,12 @@ cflags_output = run_command (krb5_config, '--cflags', 'gssapi', check: gssapi_opt.enabled()) if libs_output.returncode() == 0 and cflags_output.returncode() == 0 enable_gssapi = true - add_project_link_arguments(libs_output.stdout().split(), language : 'c') - add_project_arguments(cflags_output.stdout().split(), language : 'c') + gssapi_dep = declare_dependency( + link_args: libs_output.stdout().split(), + compile_args: cflags_output.stdout().split()) endif + else + gssapi_dep = dependency('', required: false) endif endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-3.0.1/po/he.po new/libsoup-3.0.2/po/he.po --- old/libsoup-3.0.1/po/he.po 2021-09-26 18:25:13.775087400 +0200 +++ new/libsoup-3.0.2/po/he.po 2021-10-24 18:27:01.532673400 +0200 @@ -7,172 +7,210 @@ msgid "" msgstr "" "Project-Id-Version: libsoup gnome\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-11-17 22:36+0200\n" -"PO-Revision-Date: 2016-11-17 22:38+0200\n" -"Last-Translator: Yosef Or Boczko <yosef...@gmail.com>\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libsoup/issues\n" +"POT-Creation-Date: 2021-06-11 18:40+0000\n" +"PO-Revision-Date: 2021-09-28 23:32+0300\n" +"Last-Translator: Yaron Shahrabani <sh.ya...@gmail.com>\n" "Language-Team: ?????????? <>\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Language: Hebrew\n" -"X-Poedit-Country: ISRAEL\n" -"X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Gtranslator 2.91.6\n" - -#: ../libsoup/soup-body-input-stream.c:139 -#: ../libsoup/soup-body-input-stream.c:170 -#: ../libsoup/soup-body-input-stream.c:203 ../libsoup/soup-message-io.c:235 -msgid "Connection terminated unexpectedly" -msgstr "???????????? ?????????? ?????????? ???????? ????????" - -#: ../libsoup/soup-body-input-stream.c:459 -msgid "Invalid seek request" -msgstr "???????? ?????????? ??????????" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? 2 : 3);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Generator: Poedit 3.0\n" -#: ../libsoup/soup-body-input-stream.c:487 -msgid "Cannot truncate SoupBodyInputStream" -msgstr "???? ???????? ???????? ???? SoupBodyInputStream" - -#: ../libsoup/soup-cache-input-stream.c:76 +#: libsoup/cache/soup-cache-input-stream.c:70 msgid "Network stream unexpectedly closed" msgstr "?????????? ???????? ???????? ??????????????????" -#: ../libsoup/soup-cache-input-stream.c:291 +#: libsoup/cache/soup-cache-input-stream.c:252 msgid "Failed to completely cache the resource" msgstr "?????????? ?????????? ???????????? ???????????? ??????????" -#: ../libsoup/soup-converter-wrapper.c:189 +#: libsoup/content-decoder/soup-converter-wrapper.c:197 #, c-format msgid "Output buffer is too small" msgstr "???????? ???????? ?????? ??????" -#: ../libsoup/soup-message-client-io.c:41 +#: libsoup/http1/soup-body-input-stream.c:155 +#: libsoup/http1/soup-body-input-stream.c:187 +#: libsoup/http1/soup-body-input-stream.c:220 +#: libsoup/http1/soup-message-io-data.c:77 +msgid "Connection terminated unexpectedly" +msgstr "???????????? ?????????? ?????????? ???????? ????????" + +#: libsoup/http1/soup-body-input-stream.c:471 +msgid "Invalid seek request" +msgstr "???????? ?????????? ??????????" + +#: libsoup/http1/soup-body-input-stream.c:499 +msgid "Cannot truncate SoupBodyInputStream" +msgstr "???? ???????? ???????? ???? SoupBodyInputStream" + +#: libsoup/http1/soup-client-message-io-http1.c:312 +#: libsoup/http1/soup-client-message-io-http1.c:756 +#: libsoup/http2/soup-body-input-stream-http2.c:221 +#: libsoup/server/soup-server-io.c:354 libsoup/server/soup-server-io.c:819 +msgid "Operation would block" +msgstr "???????????? ??????????" + +#: libsoup/http1/soup-client-message-io-http1.c:456 msgid "Could not parse HTTP response" msgstr "???? ???????? ???????? ???? ?????????? ????HTTP" -#: ../libsoup/soup-message-client-io.c:66 +#: libsoup/http1/soup-client-message-io-http1.c:479 msgid "Unrecognized HTTP response encoding" msgstr "?????????? ?????????? ????HTTP ???????? ????????" -#: ../libsoup/soup-message-io.c:392 ../libsoup/soup-message-io.c:1020 -msgid "Operation would block" -msgstr "???????????? ??????????" - -#: ../libsoup/soup-message-io.c:972 ../libsoup/soup-message-io.c:1005 +#: libsoup/http1/soup-client-message-io-http1.c:715 +#: libsoup/http1/soup-client-message-io-http1.c:741 +#: libsoup/http2/soup-client-message-io-http2.c:1426 +#: libsoup/http2/soup-client-message-io-http2.c:1450 msgid "Operation was cancelled" msgstr "???????????? ??????????" -#: ../libsoup/soup-message-server-io.c:64 -msgid "Could not parse HTTP request" -msgstr "???? ???????? ???????? ???? ?????????? ????HTTP" - -#: ../libsoup/soup-request.c:140 -#, c-format -msgid "No URI provided" -msgstr "???? ?????????? ??????????" +#: libsoup/http1/soup-message-io-data.c:105 +msgid "Header too big" +msgstr "???????????? ?????????? ??????" -#: ../libsoup/soup-request.c:150 -#, c-format -msgid "Invalid ???%s??? URI: %s" -msgstr "?????????? ???%s??? ??????????: %s" - -#: ../libsoup/soup-server.c:1727 +#: libsoup/server/soup-server.c:1072 msgid "Can???t create a TLS server without a TLS certificate" msgstr "???? ???????? ?????????? ???????? TLS ?????? ?????????? TLS" -#: ../libsoup/soup-server.c:1744 +#: libsoup/server/soup-server.c:1088 #, c-format msgid "Could not listen on address %s, port %d: " -msgstr "???? ???????? ???????????? ???????????? %s, ???????? %d:" +msgstr "???? ???????? ???????????? ???????????? %s, ???????? %d: " -#: ../libsoup/soup-session.c:4525 -#, c-format -msgid "Could not parse URI ???%s???" -msgstr "???? ???????? ???????? ???? ???????????? ???%s???" +#: libsoup/server/soup-socket.c:116 +msgid "Could not import existing socket: " +msgstr "???? ???????? ?????????? ?????? ????????: " -#: ../libsoup/soup-session.c:4562 -#, c-format -msgid "Unsupported URI scheme ???%s???" -msgstr "?????????? ???????????? ???????? ?????????? ???%s???" +#: libsoup/server/soup-socket.c:125 +msgid "Can???t import unconnected socket" +msgstr "???? ???????? ?????????? ?????? ???? ??????????" + +#: libsoup/soup-session.c:1166 +msgid "Location header is missing or empty in response headers" +msgstr "?????????? ???????????? ???????? ???? ???????? ?????????????? ????????????" -#: ../libsoup/soup-session.c:4584 +#: libsoup/soup-session.c:1180 #, c-format -msgid "Not an HTTP URI" -msgstr "?????????? ?????????? HTTP" +msgid "Invalid URI ???%s??? in Location response header" +msgstr "?????????? ?????????? ???%s??? ???????????? ?????????? ????????????" + +#: libsoup/soup-session.c:1200 +msgid "Too many redirects" +msgstr "???????? ?????? ????????????" + +#: libsoup/soup-session.c:1205 +msgid "Message was restarted too many times" +msgstr "???????????? ???????????? ???????? ???????? ?????? ??????????" + +#: libsoup/soup-session.c:3315 libsoup/soup-session.c:3464 +msgid "Message is already in session queue" +msgstr "???????????? ?????? ???????? ????????????" -#: ../libsoup/soup-session.c:4770 +#: libsoup/soup-session.c:3825 msgid "The server did not accept the WebSocket handshake." -msgstr "???????? ???? ???????? ???? ?????????? ?????? ???? ????WebSocket" +msgstr "???????? ???? ???????? ???? ?????????? ?????? ???? ????WebSocket." -#: ../libsoup/soup-socket.c:148 -msgid "Can???t import non-socket as SoupSocket" -msgstr "???? ???????? ?????????? ????-?????? ????SoupSocket" +#: libsoup/soup-tld.c:142 +msgid "No public-suffix list available." +msgstr "?????? ?????????? ???????????? ???????????????? ??????????." -#: ../libsoup/soup-socket.c:166 -msgid "Could not import existing socket: " -msgstr "???? ???????? ?????????? ?????? ????????:" +#: libsoup/soup-tld.c:152 libsoup/soup-tld.c:168 +msgid "Invalid hostname" +msgstr "???? ???????? ????????" -#: ../libsoup/soup-socket.c:175 -msgid "Can???t import unconnected socket" -msgstr "???? ???????? ?????????? ?????? ???? ??????????" +#: libsoup/soup-tld.c:159 +msgid "Hostname is an IP address" +msgstr "???? ?????????? ?????? ?????????? IP" + +#: libsoup/soup-tld.c:180 +msgid "Hostname has no base domain" +msgstr "?????? ?????????? ?????? ???? ???????? ??????????" + +#: libsoup/soup-tld.c:188 +msgid "Not enough domains" +msgstr "?????? ?????????? ???????? ????????" + +#: libsoup/websocket/soup-websocket.c:399 +#: libsoup/websocket/soup-websocket.c:443 +#: libsoup/websocket/soup-websocket.c:459 +msgid "Server requested unsupported extension" +msgstr "???????? ???????? ?????????? ???? ??????????" + +#: libsoup/websocket/soup-websocket.c:422 +#: libsoup/websocket/soup-websocket.c:614 +#, c-format +msgid "Incorrect WebSocket ???%s??? header" +msgstr "???????? WebSocket ??????%s??? ????????" + +#: libsoup/websocket/soup-websocket.c:423 +#: libsoup/websocket/soup-websocket.c:878 +#, c-format +msgid "Server returned incorrect ???%s??? key" +msgstr "???????? ?????????? ???????? ???%s??? ????????" + +#: libsoup/websocket/soup-websocket.c:486 +#, c-format +msgid "Duplicated parameter in ???%s??? WebSocket extension header" +msgstr "?????????? ???????? ???????????? ?????????? WebSocket??? ???%s???" -#: ../libsoup/soup-websocket.c:338 ../libsoup/soup-websocket.c:347 +#: libsoup/websocket/soup-websocket.c:487 +#, c-format +msgid "Server returned a duplicated parameter in ???%s??? WebSocket extension header" +msgstr "???????? ?????????? ?????????? ???????? ???????????? ?????????? WebSocket??? ???%s???" + +#: libsoup/websocket/soup-websocket.c:577 +#: libsoup/websocket/soup-websocket.c:587 msgid "WebSocket handshake expected" msgstr "?????????? ?????????? ???? ??????WebSocket" -#: ../libsoup/soup-websocket.c:355 +#: libsoup/websocket/soup-websocket.c:595 msgid "Unsupported WebSocket version" msgstr "???????? WebSocket ???? ??????????" -#: ../libsoup/soup-websocket.c:364 +#: libsoup/websocket/soup-websocket.c:604 msgid "Invalid WebSocket key" msgstr "???????? WebSocket ???? ????????" -#: ../libsoup/soup-websocket.c:374 -#, c-format -msgid "Incorrect WebSocket ???%s??? header" -msgstr "???????? WebSocket ??????%s??? ????????" - -#: ../libsoup/soup-websocket.c:383 +#: libsoup/websocket/soup-websocket.c:623 msgid "Unsupported WebSocket subprotocol" msgstr "???????????????? WebSocket ???? ????????" -#: ../libsoup/soup-websocket.c:510 +#: libsoup/websocket/soup-websocket.c:829 msgid "Server rejected WebSocket handshake" msgstr "???????? ?????? ???? ?????????? ?????? ???? ????WebSocket" -#: ../libsoup/soup-websocket.c:518 ../libsoup/soup-websocket.c:527 +#: libsoup/websocket/soup-websocket.c:837 +#: libsoup/websocket/soup-websocket.c:846 msgid "Server ignored WebSocket handshake" msgstr "???????? ?????????? ???????????? ?????? ???? ????WebSocket" -#: ../libsoup/soup-websocket.c:539 +#: libsoup/websocket/soup-websocket.c:858 msgid "Server requested unsupported protocol" msgstr "???????? ???????? ???????????????? ???? ????????" -#: ../libsoup/soup-websocket.c:549 -msgid "Server requested unsupported extension" -msgstr "???????? ???????? ?????????? ???? ??????????" +#~ msgid "Could not parse HTTP request" +#~ msgstr "???? ???????? ???????? ???? ?????????? ????HTTP" -#: ../libsoup/soup-websocket.c:562 -#, c-format -msgid "Server returned incorrect ???%s??? key" -msgstr "???????? ?????????? ???????? ???%s??? ????????" +#~ msgid "No URI provided" +#~ msgstr "???? ?????????? ??????????" -#: ../libsoup/soup-tld.c:188 -msgid "Hostname is an IP address" -msgstr "???? ?????????? ?????? ?????????? IP" +#~ msgid "Invalid ???%s??? URI: %s" +#~ msgstr "?????????? ???%s??? ??????????: %s" -#: ../libsoup/soup-tld.c:198 ../libsoup/soup-tld.c:220 -msgid "Invalid hostname" -msgstr "???? ???????? ????????" +#~ msgid "Could not parse URI ???%s???" +#~ msgstr "???? ???????? ???????? ???? ???????????? ???%s???" -#: ../libsoup/soup-tld.c:250 -msgid "Hostname has no base domain" -msgstr "?????? ?????????? ?????? ???? ???????? ??????????" +#~ msgid "Unsupported URI scheme ???%s???" +#~ msgstr "?????????? ???????????? ???????? ?????????? ???%s???" -#: ../libsoup/soup-tld.c:304 -msgid "Not enough domains" -msgstr "?????? ?????????? ???????? ????????" +#~ msgid "Not an HTTP URI" +#~ msgstr "?????????? ?????????? HTTP" + +#~ msgid "Can???t import non-socket as SoupSocket" +#~ msgstr "???? ???????? ?????????? ????-?????? ????SoupSocket" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-3.0.1/tests/auth-test.c new/libsoup-3.0.2/tests/auth-test.c --- old/libsoup-3.0.1/tests/auth-test.c 2021-09-26 18:25:13.780087200 +0200 +++ new/libsoup-3.0.2/tests/auth-test.c 2021-10-24 18:27:01.534673500 +0200 @@ -1760,6 +1760,76 @@ soup_test_session_abort_unref (session); } +static void +on_request_read (SoupServer *server, + SoupServerMessage *msg, + gpointer user_data) +{ + SoupMessageHeaders *response_headers = soup_server_message_get_response_headers (msg); + char *old_header = g_strdup (soup_message_headers_get_one (response_headers, "WWW-Authenticate")); + if (old_header) { + /* These must be in order to ensure libsoup passes over the invalid one. */ + soup_message_headers_replace (response_headers, "WWW-Authenticate", + "Digest realm=\"auth-test\", nonce=\"0000000000001\", qop=\"auth\", algorithm=FAKE"); + soup_message_headers_append (response_headers, "WWW-Authenticate", old_header); + g_free (old_header); + } +} + +static gboolean +on_digest_authenticate (SoupMessage *msg, + SoupAuth *auth, + gboolean retrying, + gpointer user_data) +{ + g_assert_false (retrying); + soup_auth_authenticate (auth, "user", "good"); + return TRUE; +} + +static void +do_multiple_digest_algorithms (void) +{ + SoupSession *session; + SoupMessage *msg; + SoupServer *server; + SoupAuthDomain *digest_auth_domain; + gint status; + GUri *uri; + + server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD); + soup_server_add_handler (server, NULL, + server_callback, NULL, NULL); + uri = soup_test_server_get_uri (server, "http", NULL); + + /* Add one real authentication option, later we will add + a fake one with an unsupported algorithm. */ + digest_auth_domain = soup_auth_domain_digest_new ( + "realm", "auth-test", + "auth-callback", server_digest_auth_callback, + NULL); + soup_auth_domain_add_path (digest_auth_domain, "/"); + soup_server_add_auth_domain (server, digest_auth_domain); + g_object_unref (digest_auth_domain); + + /* We wait for the message to come in and will add a header. */ + g_signal_connect (server, "request-read", + G_CALLBACK (on_request_read), + NULL); + + session = soup_test_session_new (NULL); + msg = soup_message_new_from_uri ("GET", uri); + g_signal_connect (msg, "authenticate", + G_CALLBACK (on_digest_authenticate), + NULL); + + status = soup_test_session_send_message (session, msg); + + g_assert_cmpint (status, ==, SOUP_STATUS_OK); + g_uri_unref (uri); + soup_test_server_quit_unref (server); +} + int main (int argc, char **argv) { @@ -1791,6 +1861,7 @@ g_test_add_func ("/auth/cancel-on-authenticate", do_cancel_on_authenticate); g_test_add_func ("/auth/auth-uri", do_auth_uri_test); g_test_add_func ("/auth/cancel-request-on-authenticate", do_cancel_request_on_authenticate); + g_test_add_func ("/auth/multiple-algorithms", do_multiple_digest_algorithms); ret = g_test_run ();