Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libsoup for openSUSE:Factory checked 
in at 2022-07-09 16:59:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libsoup (Old)
 and      /work/SRC/openSUSE:Factory/.libsoup.new.1523 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libsoup"

Sat Jul  9 16:59:23 2022 rev:135 rq:987356 version:3.0.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/libsoup/libsoup.changes  2022-04-03 
21:30:44.607985144 +0200
+++ /work/SRC/openSUSE:Factory/.libsoup.new.1523/libsoup.changes        
2022-07-09 16:59:35.176485592 +0200
@@ -1,0 +2,17 @@
+Wed Jul  6 12:27:20 UTC 2022 - Dominique Leuenberger <[email protected]>
+
+- Update to version 3.0.7:
+  + Fix leak in SoupAuthNTLM.
+  + Fix constructing SoupAuthNTLM objects.
+  + Disable mutual negotiation in SoupAuthNegotiate.
+  + http2:
+    - Do not advertise the `h2` protocool for proxy connections.
+    - Remove left-over headers when HTTP/1 redirects to HTTP/2.
+    - Handle HTTP_1_1_REQUIRED error.
+    - Read request bodies synchronously for sync requests.
+    - Properly handle server sending shut down GOAWAY.
+  + tests:
+     - Remove dependency on Apache's PHP module.
+     - Depend upon Apache's http2 module.
+
+-------------------------------------------------------------------

Old:
----
  libsoup-3.0.6.tar.xz

New:
----
  libsoup-3.0.7.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libsoup.spec ++++++
--- /var/tmp/diff_new_pack.mjvdGz/_old  2022-07-09 16:59:35.656486313 +0200
+++ /var/tmp/diff_new_pack.mjvdGz/_new  2022-07-09 16:59:35.656486313 +0200
@@ -18,7 +18,7 @@
 
 %define api_version 3.0
 Name:           libsoup
-Version:        3.0.6
+Version:        3.0.7
 Release:        0
 Summary:        HTTP client/server library for GNOME
 License:        LGPL-2.1-or-later

++++++ libsoup-3.0.6.tar.xz -> libsoup-3.0.7.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/.gitignore new/libsoup-3.0.7/.gitignore
--- old/libsoup-3.0.6/.gitignore        1970-01-01 01:00:00.000000000 +0100
+++ new/libsoup-3.0.7/.gitignore        2022-06-30 19:11:48.000000000 +0200
@@ -0,0 +1,3 @@
+/po/libsoup.pot
+/*build/
+/html/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/NEWS new/libsoup-3.0.7/NEWS
--- old/libsoup-3.0.6/NEWS      2022-03-31 20:33:58.624886500 +0200
+++ new/libsoup-3.0.7/NEWS      2022-06-30 19:11:48.000000000 +0200
@@ -1,3 +1,16 @@
+Changes in libsoup from 3.0.6 to 3.0.7:
+
+* Fix leak in SoupAuthNTLM [Milan Crha]
+* Fix constructing SoupAuthNTLM objects [Milan Crha]
+* Disable mutual negotiation in SoupAuthNegotiate [Michael Catanzaro]
+* http2: Do not advertise the `h2` protocool for proxy connections [Carlos 
Garcia Campos]
+* http2: Remove left-over headers when HTTP/1 redirects to HTTP/2 [Carlos 
Garcia Campos]
+* http2: Handle HTTP_1_1_REQUIRED error [Carlos Garcia Campos]
+* http2: Read request bodies synchronously for sync requests [Carlos Garcia 
Campos]
+* http2: Properly handle server sending shut down GOAWAY [Carlos Garcia Campos]
+* tests: Remove dependency on Apache's PHP module [Carlos Garcia Campos]
+* tests: Depend upon Apache's http2 module [Carlos Garcia Campos]
+
 Changes in libsoup from 3.0.5 to 3.0.6:
 
 * Misc HTTP/2 fixes [Carlos Garcia Campos]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/get_apache_modules_dirs.py 
new/libsoup-3.0.7/get_apache_modules_dirs.py
--- old/libsoup-3.0.6/get_apache_modules_dirs.py        2022-03-31 
20:33:58.626886600 +0200
+++ new/libsoup-3.0.7/get_apache_modules_dirs.py        2022-06-30 
19:11:48.000000000 +0200
@@ -27,13 +27,6 @@
 import os
 import glob
 
-def check_php_module(modules_path):
-    php_modules = glob.glob(os.path.join(modules_path, 'libphp7*.so'));
-    if len(php_modules):
-        # The last one in the sorted output will be the desired php module.
-        return sorted(php_modules)[-1];
-
-
 def check_module(modules_path, module):
      module_path = os.path.join(modules_path, module)
      return os.path.isfile(module_path)
@@ -52,7 +45,7 @@
         'mod_authz_user',
         'mod_dir',
         'mod_mime',
-        'mod_mpm_prefork',
+        'mod_mpm_event',
         'mod_proxy',
         'mod_proxy_http',
         'mod_proxy_connect'
@@ -105,8 +98,8 @@
 
     apache_modules_dir = ''
     apache_ssl_module_dir = ''
-    apache_php_module_file = ''
     apache_mod_unixd_module_file = ''
+    apache_http2_module_dir = ''
 
     for lib_dir in ['lib', 'lib64']:
         for httpd_dir in ['apache', 'apache2', 'http', 'http2', 'httpd']:
@@ -117,11 +110,10 @@
                         apache_modules_dir = modules_path
                     if check_module(modules_path, 'mod_ssl.so'):
                         apache_ssl_module_dir = modules_path
-                    php_module = check_php_module(modules_path)
-                    if (php_module):
-                        apache_php_module_file = php_module
                     if check_module(modules_path, 'mod_unixd.so'):
                         apache_mod_unixd_module_file = modules_path
+                    if check_module(modules_path, 'mod_http2.so'):
+                        apache_http2_module_dir = modules_path
 
     # These two are mandatory for having properly configured Apache
     if apache_modules_dir == '' or apache_ssl_module_dir == '':
@@ -129,8 +121,8 @@
 
     print(apache_modules_dir + ":" +
           apache_ssl_module_dir + ":" +
-          apache_php_module_file + ":" +
-          apache_mod_unixd_module_file, end='')
+          apache_mod_unixd_module_file + ":" +
+          apache_http2_module_dir, end='')
 
 if __name__ == "__main__":
     main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/auth/soup-auth-manager.c 
new/libsoup-3.0.7/libsoup/auth/soup-auth-manager.c
--- old/libsoup-3.0.6/libsoup/auth/soup-auth-manager.c  2022-03-31 
20:33:58.626886600 +0200
+++ new/libsoup-3.0.7/libsoup/auth/soup-auth-manager.c  2022-06-30 
19:11:48.000000000 +0200
@@ -454,15 +454,18 @@
 make_auto_ntlm_auth (SoupAuthManagerPrivate *priv, SoupAuthHost *host)
 {
        SoupAuth *auth;
+       char *authority;
 
        if (!priv->auto_ntlm)
                return FALSE;
 
+       authority = g_strdup_printf ("%s:%d", g_uri_get_host (host->uri), 
g_uri_get_port (host->uri));
        auth = g_object_new (SOUP_TYPE_AUTH_NTLM,
-                            "host", g_uri_get_host (host->uri),
+                            "authority", authority,
                             NULL);
        record_auth_for_uri (priv, host->uri, auth, FALSE);
        g_object_unref (auth);
+       g_free (authority);
        return TRUE;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/auth/soup-auth-negotiate.c 
new/libsoup-3.0.7/libsoup/auth/soup-auth-negotiate.c
--- old/libsoup-3.0.6/libsoup/auth/soup-auth-negotiate.c        2022-03-31 
20:33:58.626886600 +0200
+++ new/libsoup-3.0.7/libsoup/auth/soup-auth-negotiate.c        2022-06-30 
19:11:48.000000000 +0200
@@ -32,6 +32,7 @@
  * still be added to a #SoupSession, but libsoup will never attempt to
  * actually use this auth type.
  *
+ * Returns: %TRUE if supported otherwise %FALSE
  */
 gboolean
 soup_auth_negotiate_supported (void)
@@ -361,9 +362,20 @@
        auth_headers = soup_message_headers_get_one_common 
(soup_message_get_response_headers (msg),
                                                             
SOUP_HEADER_WWW_AUTHENTICATE);
        if (!auth_headers || g_ascii_strncasecmp (auth_headers, "Negotiate ", 
10) != 0) {
-               g_warning ("Failed to parse auth header");
+               if (soup_message_get_status (msg) == SOUP_STATUS_OK) {
+                       /* The server *may* supply final authentication data to
+                        * the client, but doesn't have to. We are not
+                        * authenticating the server, so just ignore missing
+                        * auth data. In practice, this is required for web
+                        * compat.
+                        */
+                       priv->is_authenticated = TRUE;
+                       return;
+               }
+
+               g_warning ("Server bug: missing or invalid WWW-Authenticate 
header: %s", auth_headers);
                conn->state = SOUP_NEGOTIATE_FAILED;
-               goto out;
+               return;
        }
 
        ret = soup_gss_client_step (conn, auth_headers + 10, &error_message);
@@ -393,7 +405,7 @@
        default:
                conn->state = SOUP_NEGOTIATE_FAILED;
        }
- out:
+
        g_clear_pointer (&error_message, g_free);
 }
 
@@ -584,7 +596,7 @@
                                         &conn->context,
                                         conn->server_name,
                                         (gss_OID) &gss_mech_spnego,
-                                        GSS_C_MUTUAL_FLAG,
+                                        0,
                                         GSS_C_INDEFINITE,
                                         GSS_C_NO_CHANNEL_BINDINGS,
                                         &in,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/auth/soup-auth-ntlm.c 
new/libsoup-3.0.7/libsoup/auth/soup-auth-ntlm.c
--- old/libsoup-3.0.6/libsoup/auth/soup-auth-ntlm.c     2022-03-31 
20:33:58.626886600 +0200
+++ new/libsoup-3.0.7/libsoup/auth/soup-auth-ntlm.c     2022-06-30 
19:11:48.000000000 +0200
@@ -758,12 +758,14 @@
                        return FALSE;
                }
 
+               g_free (*default_domain);
                *default_domain = g_convert ((char *)chall + domain.offset,
                                             domain.length, "UTF-8", "UCS-2LE",
                                             NULL, NULL, NULL);
        }
 
        if (nonce) {
+               g_free (*nonce);
                *nonce = g_memdup2 (chall + NTLM_CHALLENGE_NONCE_OFFSET,
                                   NTLM_CHALLENGE_NONCE_LENGTH);
        }
@@ -777,6 +779,7 @@
                        g_free (chall);
                        return FALSE;
                }
+               g_free (*target_info);
                *target_info = g_memdup2 (chall + target.offset, target.length);
                *target_info_sz = target.length;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/cache/soup-cache-private.h 
new/libsoup-3.0.7/libsoup/cache/soup-cache-private.h
--- old/libsoup-3.0.6/libsoup/cache/soup-cache-private.h        2022-03-31 
20:33:58.627886500 +0200
+++ new/libsoup-3.0.7/libsoup/cache/soup-cache-private.h        2022-06-30 
19:11:48.000000000 +0200
@@ -27,6 +27,12 @@
 
 G_BEGIN_DECLS
 
+typedef enum {
+       SOUP_CACHE_RESPONSE_FRESH,
+       SOUP_CACHE_RESPONSE_NEEDS_VALIDATION,
+       SOUP_CACHE_RESPONSE_STALE
+} SoupCacheResponse;
+
 SoupCacheResponse  soup_cache_has_response                    (SoupCache   
*cache,
                                                               SoupMessage 
*msg);
 GInputStream      *soup_cache_send_response                   (SoupCache   
*cache,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/cache/soup-cache.h 
new/libsoup-3.0.7/libsoup/cache/soup-cache.h
--- old/libsoup-3.0.6/libsoup/cache/soup-cache.h        2022-03-31 
20:33:58.627886500 +0200
+++ new/libsoup-3.0.7/libsoup/cache/soup-cache.h        2022-06-30 
19:11:48.000000000 +0200
@@ -38,12 +38,6 @@
 } SoupCacheability;
 
 typedef enum {
-       SOUP_CACHE_RESPONSE_FRESH,
-       SOUP_CACHE_RESPONSE_NEEDS_VALIDATION,
-       SOUP_CACHE_RESPONSE_STALE
-} SoupCacheResponse;
-
-typedef enum {
        SOUP_CACHE_SINGLE_USER,
        SOUP_CACHE_SHARED
 } SoupCacheType;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libsoup-3.0.6/libsoup/http2/soup-body-input-stream-http2.c 
new/libsoup-3.0.7/libsoup/http2/soup-body-input-stream-http2.c
--- old/libsoup-3.0.6/libsoup/http2/soup-body-input-stream-http2.c      
2022-03-31 20:33:58.630886600 +0200
+++ new/libsoup-3.0.7/libsoup/http2/soup-body-input-stream-http2.c      
2022-06-30 19:11:48.000000000 +0200
@@ -180,7 +180,7 @@
         if (count == 0 && blocking && !priv->completed) {
                 GError *read_error = NULL;
                 g_signal_emit (memory_stream, signals[NEED_MORE_DATA], 0,
-                               cancellable, &read_error);
+                               blocking, cancellable, &read_error);
 
                 if (read_error) {
                         g_propagate_error (error, read_error);
@@ -429,5 +429,6 @@
                               NULL, NULL,
                               NULL,
                               G_TYPE_ERROR,
-                              1, G_TYPE_CANCELLABLE);
+                              2, G_TYPE_BOOLEAN,
+                              G_TYPE_CANCELLABLE);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libsoup-3.0.6/libsoup/http2/soup-client-message-io-http2.c 
new/libsoup-3.0.7/libsoup/http2/soup-client-message-io-http2.c
--- old/libsoup-3.0.6/libsoup/http2/soup-client-message-io-http2.c      
2022-03-31 20:33:58.630886600 +0200
+++ new/libsoup-3.0.7/libsoup/http2/soup-client-message-io-http2.c      
2022-06-30 19:11:48.000000000 +0200
@@ -589,6 +589,7 @@
 
 static GError *
 memory_stream_need_more_data_callback (SoupBodyInputStreamHttp2 *stream,
+                                       gboolean                  blocking,
                                        GCancellable             *cancellable,
                                        gpointer                  user_data)
 {
@@ -596,7 +597,7 @@
         GError *error = NULL;
 
         if (nghttp2_session_want_read (data->io->session))
-                io_read (data->io, TRUE, cancellable, &error);
+                io_read (data->io, blocking, cancellable, &error);
 
         return error;
 }
@@ -652,6 +653,9 @@
         GHashTableIter iter;
         SoupHTTP2MessageData *data;
 
+        if (last_stream_id == G_MAXINT32)
+                return;
+
         g_hash_table_iter_init (&iter, io->messages);
         while (g_hash_table_iter_next (&iter, NULL, (gpointer*)&data)) {
                 /* If there is no error it is a graceful shutdown and
@@ -960,8 +964,16 @@
 
         data->io->in_callback++;
 
-        if (error_code == NGHTTP2_REFUSED_STREAM && data->state < 
STATE_READ_DATA)
+        switch (error_code) {
+        case NGHTTP2_REFUSED_STREAM:
+                if (data->state < STATE_READ_DATA)
+                        data->can_be_restarted = TRUE;
+                break;
+        case NGHTTP2_HTTP_1_1_REQUIRED:
+                soup_message_set_force_http_version (data->item->msg, 
SOUP_HTTP_1_1);
                 data->can_be_restarted = TRUE;
+                break;
+        }
 
         data->io->in_callback--;
         return 0;
@@ -991,8 +1003,6 @@
         GError *error = NULL;
         gssize read = g_input_stream_read_finish (source, res, &error);
 
-        h2_debug (data->io, data, "[SEND_BODY] Read %zd", read);
-
         /* This operation may have outlived the message data in which
            case this will have been cancelled. */
         if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
@@ -1000,6 +1010,8 @@
                 return;
         }
 
+        h2_debug (data->io, data, "[SEND_BODY] Read %zd", read);
+
         if (read < 0) {
                 g_byte_array_set_size (data->data_source_buffer, 0);
                 data->data_source_error = g_steal_pointer (&error);
@@ -1040,6 +1052,31 @@
         SoupHTTP2MessageData *data = nghttp2_session_get_stream_user_data 
(session, stream_id);
         data->io->in_callback++;
 
+        if (!data->item->async) {
+                gssize read;
+                GError *error = NULL;
+
+                read = g_input_stream_read (source->ptr, buf, length, 
data->item->cancellable, &error);
+                if (read) {
+                        h2_debug (data->io, data, "[SEND_BODY] Read %zd", 
read);
+                        log_request_data (data, buf, read);
+                }
+
+                if (read < 0) {
+                        set_error_for_data (data, g_steal_pointer (&error));
+                        data->io->in_callback--;
+                        return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+                }
+
+                if (read == 0) {
+                        h2_debug (data->io, data, "[SEND_BODY] EOF");
+                        *data_flags |= NGHTTP2_DATA_FLAG_EOF;
+                }
+
+                data->io->in_callback--;
+                return read;
+        }
+
         /* We support pollable streams in the best case because they
          * should perform better with one fewer copy of each buffer and no 
threading. */
         if (G_IS_POLLABLE_INPUT_STREAM (source->ptr) && 
g_pollable_input_stream_can_poll (G_POLLABLE_INPUT_STREAM (source->ptr))) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libsoup-3.0.6/libsoup/server/soup-auth-domain-basic.c 
new/libsoup-3.0.7/libsoup/server/soup-auth-domain-basic.c
--- old/libsoup-3.0.6/libsoup/server/soup-auth-domain-basic.c   2022-03-31 
20:33:58.631886500 +0200
+++ new/libsoup-3.0.7/libsoup/server/soup-auth-domain-basic.c   2022-06-30 
19:11:48.000000000 +0200
@@ -12,6 +12,7 @@
 #include <string.h>
 
 #include "soup-auth-domain-basic.h"
+#include "soup-auth-domain-private.h"
 #include "soup-message-headers-private.h"
 #include "soup.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libsoup-3.0.6/libsoup/server/soup-auth-domain-digest.c 
new/libsoup-3.0.7/libsoup/server/soup-auth-domain-digest.c
--- old/libsoup-3.0.6/libsoup/server/soup-auth-domain-digest.c  2022-03-31 
20:33:58.631886500 +0200
+++ new/libsoup-3.0.7/libsoup/server/soup-auth-domain-digest.c  2022-06-30 
19:11:48.000000000 +0200
@@ -13,6 +13,7 @@
 #include <stdlib.h>
 
 #include "soup-auth-domain-digest.h"
+#include "soup-auth-domain-private.h"
 #include "soup-uri-utils-private.h"
 #include "soup-message-headers-private.h"
 #include "soup.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libsoup-3.0.6/libsoup/server/soup-auth-domain-private.h 
new/libsoup-3.0.7/libsoup/server/soup-auth-domain-private.h
--- old/libsoup-3.0.6/libsoup/server/soup-auth-domain-private.h 1970-01-01 
01:00:00.000000000 +0100
+++ new/libsoup-3.0.7/libsoup/server/soup-auth-domain-private.h 2022-06-30 
19:11:48.000000000 +0200
@@ -0,0 +1,12 @@
+/*
+ * Copyright (C) 2007 Novell, Inc.
+ * Copyright (C) 2022 Igalia S.L.
+ */
+
+#pragma once
+
+#include "soup-auth-domain.h"
+
+gboolean    soup_auth_domain_try_generic_auth_callback (SoupAuthDomain    
*domain,
+                                                       SoupServerMessage *msg,
+                                                       const char        
*username);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/server/soup-auth-domain.c 
new/libsoup-3.0.7/libsoup/server/soup-auth-domain.c
--- old/libsoup-3.0.6/libsoup/server/soup-auth-domain.c 2022-03-31 
20:33:58.631886500 +0200
+++ new/libsoup-3.0.7/libsoup/server/soup-auth-domain.c 2022-06-30 
19:11:48.000000000 +0200
@@ -11,7 +11,7 @@
 
 #include <string.h>
 
-#include "soup-auth-domain.h"
+#include "soup-auth-domain-private.h"
 #include "soup-message-headers-private.h"
 #include "soup.h"
 #include "soup-path-map.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/server/soup-auth-domain.h 
new/libsoup-3.0.7/libsoup/server/soup-auth-domain.h
--- old/libsoup-3.0.6/libsoup/server/soup-auth-domain.h 2022-03-31 
20:33:58.631886500 +0200
+++ new/libsoup-3.0.7/libsoup/server/soup-auth-domain.h 2022-06-30 
19:11:48.000000000 +0200
@@ -74,10 +74,4 @@
 void        soup_auth_domain_challenge   (SoupAuthDomain       *domain,
                                          SoupServerMessage    *msg);
 
-/* protected */
-SOUP_AVAILABLE_IN_ALL
-gboolean    soup_auth_domain_try_generic_auth_callback (SoupAuthDomain    
*domain,
-                                                       SoupServerMessage *msg,
-                                                       const char        
*username);
-
 G_END_DECLS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/server/soup-server-message.c 
new/libsoup-3.0.7/libsoup/server/soup-server-message.c
--- old/libsoup-3.0.6/libsoup/server/soup-server-message.c      2022-03-31 
20:33:58.631886500 +0200
+++ new/libsoup-3.0.7/libsoup/server/soup-server-message.c      2022-06-30 
19:11:48.000000000 +0200
@@ -682,7 +682,7 @@
  *
  * Get the HTTP reason phrase of @msg or %NULL.
  *
- * Returns: the reason phrase.
+ * Returns: (nullable): the reason phrase.
  */
 const char *
 soup_server_message_get_reason_phrase (SoupServerMessage *msg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/soup-connection.c 
new/libsoup-3.0.7/libsoup/soup-connection.c
--- old/libsoup-3.0.6/libsoup/soup-connection.c 2022-03-31 20:33:58.632886600 
+0200
+++ new/libsoup-3.0.7/libsoup/soup-connection.c 2022-06-30 19:11:48.000000000 
+0200
@@ -31,7 +31,7 @@
        SoupSocketProperties *socket_props;
         guint64 id;
         GSocketAddress *remote_address;
-        gboolean force_http1;
+        guint8 force_http_version;
 
        GUri *proxy_uri;
        gboolean ssl;
@@ -75,7 +75,7 @@
        PROP_TLS_CERTIFICATE_ERRORS,
         PROP_TLS_PROTOCOL_VERSION,
         PROP_TLS_CIPHERSUITE_NAME,
-        PROP_FORCE_HTTP1,
+        PROP_FORCE_HTTP_VERSION,
 
        LAST_PROPERTY
 };
@@ -95,6 +95,7 @@
         SoupConnectionPrivate *priv = soup_connection_get_instance_private 
(conn);
 
         priv->http_version = SOUP_HTTP_1_1;
+        priv->force_http_version = G_MAXUINT8;
 }
 
 static void
@@ -156,8 +157,8 @@
        case PROP_ID:
                priv->id = g_value_get_uint64 (value);
                break;
-       case PROP_FORCE_HTTP1:
-               priv->force_http1 = g_value_get_boolean (value);
+       case PROP_FORCE_HTTP_VERSION:
+               priv->force_http_version = g_value_get_uchar (value);
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -202,8 +203,8 @@
         case PROP_TLS_CIPHERSUITE_NAME:
                 g_value_set_string (value, 
soup_connection_get_tls_ciphersuite_name (SOUP_CONNECTION (object)));
                 break;
-       case PROP_FORCE_HTTP1:
-               g_value_set_boolean (value, priv->force_http1);
+       case PROP_FORCE_HTTP_VERSION:
+               g_value_set_uchar (value, priv->force_http_version);
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -344,12 +345,13 @@
                                      NULL,
                                      G_PARAM_READABLE |
                                      G_PARAM_STATIC_STRINGS);
-        properties[PROP_FORCE_HTTP1] =
-                g_param_spec_boolean ("force-http1",
-                                      "Force HTTP 1.x",
-                                      "Force connection to use HTTP 1.x",
-                                      FALSE, G_PARAM_READWRITE | 
G_PARAM_CONSTRUCT_ONLY |
-                                      G_PARAM_STATIC_STRINGS);
+        properties[PROP_FORCE_HTTP_VERSION] =
+                g_param_spec_uchar ("force-http-version",
+                                    "Force HTTP version",
+                                    "Force connection to use a specific HTTP 
version",
+                                    0, G_MAXUINT8, G_MAXUINT8,
+                                    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY 
|
+                                    G_PARAM_STATIC_STRINGS);
 
         g_object_class_install_properties (object_class, LAST_PROPERTY, 
properties);
 }
@@ -568,11 +570,23 @@
         GPtrArray *advertised_protocols = g_ptr_array_sized_new (4);
 
         // 
https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml
-        if (!priv->force_http1)
+        switch (priv->force_http_version) {
+        case SOUP_HTTP_1_0:
+                g_ptr_array_add (advertised_protocols, "http/1.0");
+                break;
+        case SOUP_HTTP_1_1:
+                g_ptr_array_add (advertised_protocols, "http/1.1");
+                break;
+        case SOUP_HTTP_2_0:
                 g_ptr_array_add (advertised_protocols, "h2");
-
-        g_ptr_array_add (advertised_protocols, "http/1.1");
-        g_ptr_array_add (advertised_protocols, "http/1.0");
+                break;
+        default:
+                if (!priv->remote_address || !G_IS_PROXY_ADDRESS 
(priv->remote_address))
+                        g_ptr_array_add (advertised_protocols, "h2");
+                g_ptr_array_add (advertised_protocols, "http/1.1");
+                g_ptr_array_add (advertised_protocols, "http/1.0");
+                break;
+        }
         g_ptr_array_add (advertised_protocols, NULL);
 
         tls_interaction = priv->socket_props->tls_interaction ? g_object_ref 
(priv->socket_props->tls_interaction) : soup_tls_interaction_new (conn);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/soup-message-private.h 
new/libsoup-3.0.7/libsoup/soup-message-private.h
--- old/libsoup-3.0.6/libsoup/soup-message-private.h    2022-03-31 
20:33:58.634886500 +0200
+++ new/libsoup-3.0.7/libsoup/soup-message-private.h    2022-06-30 
19:11:48.000000000 +0200
@@ -147,10 +147,10 @@
 
 void soup_message_force_keep_alive_if_needed    (SoupMessage *msg);
 
-void soup_message_set_force_http1               (SoupMessage *msg,
-                                                 gboolean     force_http1);
+void     soup_message_set_force_http_version    (SoupMessage *msg,
+                                                 guint8       version);
 
-gboolean soup_message_get_force_http1           (SoupMessage *msg);
+guint8   soup_message_get_force_http_version    (SoupMessage *msg);
 
 void     soup_message_set_is_misdirected_retry  (SoupMessage *msg,
                                                  gboolean     
is_misdirected_retry);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/soup-message.c 
new/libsoup-3.0.7/libsoup/soup-message.c
--- old/libsoup-3.0.6/libsoup/soup-message.c    2022-03-31 20:33:58.635886700 
+0200
+++ new/libsoup-3.0.7/libsoup/soup-message.c    2022-06-30 19:11:48.000000000 
+0200
@@ -103,9 +103,9 @@
        gboolean is_top_level_navigation;
         gboolean is_options_ping;
         gboolean is_preconnect;
-        gboolean force_http1;
         gboolean is_misdirected_retry;
         guint    last_connection_id;
+        guint8   force_http_version;
         GSocketAddress *remote_address;
 
         SoupMessageMetrics *metrics;
@@ -173,6 +173,7 @@
 
        priv->http_version = priv->orig_http_version = SOUP_HTTP_1_1;
        priv->priority = SOUP_MESSAGE_PRIORITY_NORMAL;
+        priv->force_http_version = G_MAXUINT8;
 
        priv->request_headers = soup_message_headers_new 
(SOUP_MESSAGE_HEADERS_REQUEST);
        priv->response_headers = soup_message_headers_new 
(SOUP_MESSAGE_HEADERS_RESPONSE);
@@ -1208,7 +1209,11 @@
 void
 soup_message_finished (SoupMessage *msg)
 {
+        SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
+
        g_signal_emit (msg, signals[FINISHED], 0);
+
+        priv->force_http_version = G_MAXUINT8;
 }
 
 gboolean
@@ -2851,7 +2856,7 @@
  *
  * Returns the reason phrase for the status of this message.
  *
- * Returns: Phrase or %NULL
+ * Returns: (nullable): the phrase
  */
 const char *
 soup_message_get_reason_phrase (SoupMessage *msg)
@@ -3126,8 +3131,10 @@
 {
         SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
 
-        if (priv->http_version == SOUP_HTTP_2_0)
+        if (priv->http_version == SOUP_HTTP_2_0) {
+                soup_message_headers_remove_common (priv->request_headers, 
SOUP_HEADER_HOST);
                 return;
+        }
 
         if (soup_message_headers_get_one_common (priv->request_headers, 
SOUP_HEADER_HOST))
                 return;
@@ -3140,8 +3147,10 @@
 {
         SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
 
-        if (priv->http_version == SOUP_HTTP_2_0)
+        if (priv->http_version == SOUP_HTTP_2_0) {
+                soup_message_headers_remove_common (priv->request_headers, 
SOUP_HEADER_CONNECTION);
                 return;
+        }
 
         /* Force keep alive connections for HTTP 1.0. Performance will
          * improve when issuing multiple requests to the same host in
@@ -3156,20 +3165,20 @@
 }
 
 void
-soup_message_set_force_http1 (SoupMessage *msg,
-                              gboolean     force_http1)
+soup_message_set_force_http_version (SoupMessage *msg,
+                                     guint8       version)
 {
         SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
 
-        priv->force_http1 = force_http1;
+        priv->force_http_version = version;
 }
 
-gboolean
-soup_message_get_force_http1 (SoupMessage *msg)
+guint8
+soup_message_get_force_http_version (SoupMessage *msg)
 {
         SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
 
-        return priv->force_http1;
+        return priv->force_http_version;
 }
 
 void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/libsoup/soup-session.c 
new/libsoup-3.0.7/libsoup/soup-session.c
--- old/libsoup-3.0.6/libsoup/soup-session.c    2022-03-31 20:33:58.636886600 
+0200
+++ new/libsoup-3.0.7/libsoup/soup-session.c    2022-06-30 19:11:48.000000000 
+0200
@@ -82,8 +82,6 @@
        GSList      *connections;      /* CONTAINS: SoupConnection */
        guint        num_conns;
 
-       guint        num_messages;
-
        GSource     *keep_alive_src;
        SoupSession *session;
 } SoupSessionHost;
@@ -1358,7 +1356,6 @@
 {
        SoupSessionPrivate *priv = soup_session_get_instance_private (session);
        SoupMessageQueueItem *item;
-       SoupSessionHost *host;
        GSList *f;
 
         soup_message_set_metrics_timestamp (msg, 
SOUP_MESSAGE_METRICS_FETCH_START);
@@ -1370,9 +1367,6 @@
                               soup_message_queue_item_ref (item),
                               (GCompareDataFunc)compare_queue_item, NULL);
 
-       host = get_host_for_message (session, item->msg);
-       host->num_messages++;
-
        if (!soup_message_query_flags (msg, SOUP_MESSAGE_NO_REDIRECT)) {
                soup_message_add_header_handler (
                        msg, "got_body", "Location",
@@ -1550,7 +1544,6 @@
                           SoupMessageQueueItem *item)
 {
        SoupSessionPrivate *priv = soup_session_get_instance_private (session);
-       SoupSessionHost *host;
        GSList *f;
 
         soup_message_set_connection (item->msg, NULL);
@@ -1562,9 +1555,6 @@
 
        g_queue_remove (priv->queue, item);
 
-       host = get_host_for_message (session, item->msg);
-       host->num_messages--;
-
        /* g_signal_handlers_disconnect_by_func doesn't work if you
         * have a metamarshal, meaning it doesn't work with
         * soup_message_add_header_handler()
@@ -1806,7 +1796,7 @@
 {
        SoupSessionPrivate *priv = soup_session_get_instance_private (session);
        GSocketConnectable *remote_connectable;
-        gboolean force_http1;
+        guint8 force_http_version;
        SoupConnection *conn;
        GSList *conns;
 
@@ -1819,10 +1809,7 @@
                return conn;
        }
 
-        if (g_getenv ("SOUP_FORCE_HTTP1"))
-                force_http1 = TRUE;
-        else
-                force_http1 = soup_message_get_force_http1 (item->msg);
+        force_http_version = g_getenv ("SOUP_FORCE_HTTP1") ? SOUP_HTTP_1_1 : 
soup_message_get_force_http_version (item->msg);
 
        for (conns = host->connections; conns; conns = conns->next) {
                 SoupHTTPVersion http_version;
@@ -1830,7 +1817,7 @@
                conn = conns->data;
 
                 http_version = soup_connection_get_negotiated_protocol (conn);
-                if (force_http1 && http_version > SOUP_HTTP_1_1)
+                if (force_http_version <= SOUP_HTTP_2_0 && http_version != 
force_http_version)
                         continue;
 
                switch (soup_connection_get_state (conn)) {
@@ -1849,7 +1836,7 @@
                         /* Always wait if we have a pending connection as it 
may be
                          * an h2 connection which will be shared. http/1.x 
connections
                          * will only be slightly delayed. */
-                        if (!force_http1 && !need_new_connection && 
!item->connect_only)
+                        if (force_http_version > SOUP_HTTP_1_1 && 
!need_new_connection && !item->connect_only)
                                 return NULL;
                default:
                        break;
@@ -1884,7 +1871,7 @@
                             "remote-connectable", remote_connectable,
                             "ssl", soup_uri_is_https (host->uri),
                             "socket-properties", priv->socket_props,
-                             "force-http1", force_http1,
+                             "force-http-version", force_http_version,
                             NULL);
        g_object_unref (remote_connectable);
 
@@ -3935,7 +3922,7 @@
         /* WebSocket negotiation over HTTP/2 is not currently supported
          * and in practice all websocket servers support HTTP1.x with
          * HTTP/2 not providing a tangible benefit */
-        soup_message_set_force_http1 (msg, TRUE);
+        soup_message_set_force_http_version (msg, SOUP_HTTP_1_1);
 
        item = soup_session_append_queue_item (session, msg, TRUE, cancellable);
        item->io_priority = io_priority;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/meson.build 
new/libsoup-3.0.7/meson.build
--- old/libsoup-3.0.6/meson.build       2022-03-31 20:33:58.638886700 +0200
+++ new/libsoup-3.0.7/meson.build       2022-06-30 19:11:48.000000000 +0200
@@ -1,5 +1,5 @@
 project('libsoup', 'c',
-        version: '3.0.6',
+        version: '3.0.7',
         meson_version : '>= 0.54',
         license : 'LGPL-2.0-or-later',
         default_options : [
@@ -266,10 +266,11 @@
     cdata.set('APACHE_MODULE_DIR', apache_modules_dirs[0])
     message('Apache SSL module directory: ' + apache_modules_dirs[1])
     cdata.set('APACHE_SSL_MODULE_DIR', apache_modules_dirs[1])
-    message('Apache PHP module file: ' + apache_modules_dirs[2])
-    cdata.set('APACHE_PHP_MODULE_FILE', apache_modules_dirs[2])
-    message('Apache mod_unixd module directory: ' + (apache_modules_dirs[3] != 
'' ? apache_modules_dirs[3] : '(none)'))
-    cdata.set('IF_HAVE_MOD_UNIXD', apache_modules_dirs[3] != '' ? '' : '#')
+    message('Apache mod_unixd module directory: ' + (apache_modules_dirs[2] != 
'' ? apache_modules_dirs[2] : '(none)'))
+    cdata.set('IF_HAVE_MOD_UNIXD', apache_modules_dirs[2] != '' ? '' : '#')
+    message('Apache HTTP/2 module directory: ' + apache_modules_dirs[3])
+    cdata.set('IF_HAVE_MOD_HTTP2', apache_modules_dirs[3] != '' ? '' : '#')
+    cdata.set('APACHE_HTTP2_MODULE_DIR', apache_modules_dirs[3])
     cdata.set('HAVE_APACHE', have_apache)
   else
     message('Failed to locate necessary Apache modules for full test coverage')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/po/sk.po new/libsoup-3.0.7/po/sk.po
--- old/libsoup-3.0.6/po/sk.po  2022-03-31 20:33:58.641886500 +0200
+++ new/libsoup-3.0.7/po/sk.po  2022-06-30 19:11:48.000000000 +0200
@@ -7,8 +7,8 @@
 msgstr ""
 "Project-Id-Version: libsoup\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libsoup/issues\n";
-"POT-Creation-Date: 2020-06-26 17:08+0000\n"
-"PO-Revision-Date: 2020-09-06 17:36+0200\n"
+"POT-Creation-Date: 2021-06-11 18:40+0000\n"
+"PO-Revision-Date: 2022-04-01 14:04+0200\n"
 "Last-Translator: Du??an Kazik <[email protected]>\n"
 "Language-Team: Slovak <[email protected]>\n"
 "Language: sk\n"
@@ -16,195 +16,218 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 3.0.1\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:236
-msgid "Connection terminated unexpectedly"
-msgstr "Pripojenie bolo neo??ak??vane ukon??en??"
-
-#: libsoup/soup-body-input-stream.c:459
-msgid "Invalid seek request"
-msgstr "Neplatn?? po??iadavka na posunutie"
-
-# struct
-#: libsoup/soup-body-input-stream.c:487
-msgid "Cannot truncate SoupBodyInputStream"
-msgstr "SoupBodyInputStream sa ned?? skr??ti??"
-
-#: libsoup/soup-cache-input-stream.c:76
+#: libsoup/cache/soup-cache-input-stream.c:70
 msgid "Network stream unexpectedly closed"
 msgstr "Sie??ov?? pr??d bol neo??ak??vane uzavret??"
 
-#: libsoup/soup-cache-input-stream.c:291
+#: libsoup/cache/soup-cache-input-stream.c:252
 msgid "Failed to completely cache the resource"
 msgstr "??pln?? na????tanie zdroja do do??asnej pam??te zlyhalo"
 
-#: libsoup/soup-directory-input-stream.c:231
-msgid "Name"
-msgstr "N??zov"
-
-#: libsoup/soup-directory-input-stream.c:232
-msgid "Size"
-msgstr "Ve??kos??"
-
-#: libsoup/soup-directory-input-stream.c:233
-msgid "Date Modified"
-msgstr "D??tum zmeny"
-
 # PM: buffer by som prelo??il ako schr??nka
 # PK: schranka je clipboard, buffer je jednoznacne vyrovnavacia pamet
-#: libsoup/soup-converter-wrapper.c:189
+#: libsoup/content-decoder/soup-converter-wrapper.c:197
 #, c-format
 msgid "Output buffer is too small"
 msgstr "V??stupn?? vyrovn??vacia pam???? je pr??li?? mal??"
 
-#: libsoup/soup-message-client-io.c:39
-msgid "Could not parse HTTP response"
-msgstr "Nepodarilo sa analyzova?? odpove?? HTTP"
+#: 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 "Pripojenie bolo neo??ak??vane ukon??en??"
 
-#: libsoup/soup-message-client-io.c:62
-msgid "Unrecognized HTTP response encoding"
-msgstr "Nerozpoznan?? k??dovanie odpovede HTTP"
+#: libsoup/http1/soup-body-input-stream.c:471
+msgid "Invalid seek request"
+msgstr "Neplatn?? po??iadavka na posunutie"
 
-#: libsoup/soup-message-io.c:261
-msgid "Header too big"
-msgstr "Z??hlavie je pr??li?? ve??k??"
+# struct
+#: libsoup/http1/soup-body-input-stream.c:499
+msgid "Cannot truncate SoupBodyInputStream"
+msgstr "SoupBodyInputStream sa ned?? skr??ti??"
 
 # PK: tu neviem ako to povedat, malo by ist o to, ze proste ta operacia neni 
async
-#: libsoup/soup-message-io.c:393 libsoup/soup-message-io.c:1016
+#: 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 "Oper??cia by blokovala spracovanie"
 
-#: libsoup/soup-message-io.c:968 libsoup/soup-message-io.c:1001
-msgid "Operation was cancelled"
-msgstr "Oper??cia bola zru??en??"
+#: libsoup/http1/soup-client-message-io-http1.c:456
+msgid "Could not parse HTTP response"
+msgstr "Nepodarilo sa analyzova?? odpove?? HTTP"
 
-#: libsoup/soup-message-server-io.c:63
-msgid "Could not parse HTTP request"
-msgstr "Nepodarilo sa analyzova?? po??iadavku HTTP"
+#: libsoup/http1/soup-client-message-io-http1.c:479
+msgid "Unrecognized HTTP response encoding"
+msgstr "Nerozpoznan?? k??dovanie odpovede HTTP"
 
-# error
-#: libsoup/soup-request.c:141
-#, c-format
-msgid "No URI provided"
-msgstr "Nebol poskytnut?? identifik??tor URI"
+#: 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 "Oper??cia bola zru??en??"
 
-# first %s - scheme (http, ftp, ...)
-#: libsoup/soup-request.c:151
-#, c-format
-msgid "Invalid ???%s??? URI: %s"
-msgstr "Neplatn?? sch??ma ???%s??? identifik??tora URI: %s"
+#: libsoup/http1/soup-message-io-data.c:105
+msgid "Header too big"
+msgstr "Z??hlavie je pr??li?? ve??k??"
 
-#: libsoup/soup-server.c:1810
+#: libsoup/server/soup-server.c:1072
 msgid "Can???t create a TLS server without a TLS certificate"
 msgstr "Ned?? sa vytvori?? TLS server bez TLS certifik??tu"
 
-#: libsoup/soup-server.c:1827
+#: libsoup/server/soup-server.c:1088
 #, c-format
 msgid "Could not listen on address %s, port %d: "
 msgstr "Nepodarilo sa po????va?? na adrese %s, porte %d: "
 
-#: libsoup/soup-session.c:4570
-#, c-format
-msgid "Could not parse URI ???%s???"
-msgstr "Nepodarilo sa analyzova?? identifik??tor URI ???%s???"
+#: libsoup/server/soup-socket.c:116
+msgid "Could not import existing socket: "
+msgstr "Nepodarilo sa importova?? existuj??ci soket: "
 
-#: libsoup/soup-session.c:4607
-#, c-format
-msgid "Unsupported URI scheme ???%s???"
-msgstr "Nepodporovan?? sch??ma ???%s??? pre identifik??tor URI"
+#: libsoup/server/soup-socket.c:125
+msgid "Can???t import unconnected socket"
+msgstr "Ned?? sa importova?? nepripojen?? soket"
+
+#: libsoup/soup-session.c:1166
+msgid "Location header is missing or empty in response headers"
+msgstr ""
+"Hlavi??ka s umiestnen??m ch??ba alebo je pr??zdna v hlavi??k??ch s 
odpove??ami"
 
-#: libsoup/soup-session.c:4629
+#: libsoup/soup-session.c:1180
 #, c-format
-msgid "Not an HTTP URI"
-msgstr "Nie je HTTP URI"
+msgid "Invalid URI ???%s??? in Location response header"
+msgstr "Neplatn?? URI ???%s??? v hlavi??ke odpovede s umiestnen??m"
+
+#: libsoup/soup-session.c:1200
+msgid "Too many redirects"
+msgstr "Pr??li?? ve??a presmerovan??"
+
+#: libsoup/soup-session.c:1205
+msgid "Message was restarted too many times"
+msgstr "Spr??va bola re??tartovan?? pr??li?? ve??akr??t"
+
+#: libsoup/soup-session.c:3315 libsoup/soup-session.c:3464
+msgid "Message is already in session queue"
+msgstr "Spr??va u?? je vo fronte rel??cie"
 
-#: libsoup/soup-session.c:4840
+#: libsoup/soup-session.c:3825
 msgid "The server did not accept the WebSocket handshake."
 msgstr "Server neprijal vyjednanie protokolu WebSocket."
 
-#: libsoup/soup-socket.c:148
-msgid "Can???t import non-socket as SoupSocket"
-msgstr "Ned?? sa importova?? ne-soket ako SoupSocket"
+#: libsoup/soup-tld.c:142
+msgid "No public-suffix list available."
+msgstr "Nie je dostupn?? ??iadny zoznam verejn??ch pr??pon."
 
-#: libsoup/soup-socket.c:166
-msgid "Could not import existing socket: "
-msgstr "Nepodarilo sa importova?? existuj??ci soket: "
+#: libsoup/soup-tld.c:152 libsoup/soup-tld.c:168
+msgid "Invalid hostname"
+msgstr "Neplatn?? n??zov hostite??a"
 
-#: libsoup/soup-socket.c:175
-msgid "Can???t import unconnected socket"
-msgstr "Ned?? sa importova?? nepripojen?? soket"
+#: libsoup/soup-tld.c:159
+msgid "Hostname is an IP address"
+msgstr "N??zov hostite??a je adresa IP"
+
+#: libsoup/soup-tld.c:180
+msgid "Hostname has no base domain"
+msgstr "N??zov hostite??a neobsahuje z??kladn?? dom??nu"
+
+#: libsoup/soup-tld.c:188
+msgid "Not enough domains"
+msgstr "Nedostato??n?? po??et dom??n"
 
-#: libsoup/soup-websocket.c:479 libsoup/soup-websocket.c:523
-#: libsoup/soup-websocket.c:539
+#: libsoup/websocket/soup-websocket.c:399
+#: libsoup/websocket/soup-websocket.c:443
+#: libsoup/websocket/soup-websocket.c:459
 msgid "Server requested unsupported extension"
 msgstr "Server si vy??iadal nepodporovan?? roz????renie"
 
-#: libsoup/soup-websocket.c:502 libsoup/soup-websocket.c:694
+#: libsoup/websocket/soup-websocket.c:422
+#: libsoup/websocket/soup-websocket.c:614
 #, c-format
 msgid "Incorrect WebSocket ???%s??? header"
 msgstr "Nespr??vna hlavi??ka ???%s??? protokolu Websocket"
 
-#: libsoup/soup-websocket.c:503 libsoup/soup-websocket.c:1024
+#: libsoup/websocket/soup-websocket.c:423
+#: libsoup/websocket/soup-websocket.c:878
 #, c-format
 msgid "Server returned incorrect ???%s??? key"
 msgstr "Server vr??til nespr??vny k?????? ???%s???"
 
-#: libsoup/soup-websocket.c:566
+#: libsoup/websocket/soup-websocket.c:486
 #, c-format
 msgid "Duplicated parameter in ???%s??? WebSocket extension header"
 msgstr "Duplikovan?? parameter v hlavi??ke roz????renia protokolu WebSocket 
???%s???"
 
-#: libsoup/soup-websocket.c:567
+#: libsoup/websocket/soup-websocket.c:487
 #, c-format
-msgid "Server returned a duplicated parameter in ???%s??? WebSocket extension 
header"
-msgstr "Server vr??til duplikovan?? parameter v hlavi??ke roz????renia 
protokolu WebSocket ???%s???"
+msgid ""
+"Server returned a duplicated parameter in ???%s??? WebSocket extension header"
+msgstr ""
+"Server vr??til duplikovan?? parameter v hlavi??ke roz????renia protokolu "
+"WebSocket ???%s???"
 
-#: libsoup/soup-websocket.c:658 libsoup/soup-websocket.c:667
+#: libsoup/websocket/soup-websocket.c:577
+#: libsoup/websocket/soup-websocket.c:587
 msgid "WebSocket handshake expected"
 msgstr "O??ak??valo sa vyjednanie protokolu WebSocket"
 
-#: libsoup/soup-websocket.c:675
+#: libsoup/websocket/soup-websocket.c:595
 msgid "Unsupported WebSocket version"
 msgstr "Nepodporovan?? verzia protokolu WebSocket"
 
-#: libsoup/soup-websocket.c:684
+#: libsoup/websocket/soup-websocket.c:604
 msgid "Invalid WebSocket key"
 msgstr "Neplatn?? k?????? protokolu WebSocket"
 
-#: libsoup/soup-websocket.c:703
+#: libsoup/websocket/soup-websocket.c:623
 msgid "Unsupported WebSocket subprotocol"
 msgstr "Nepodporovan?? podprotokol protokolu WebSocket"
 
-#: libsoup/soup-websocket.c:975
+#: libsoup/websocket/soup-websocket.c:829
 msgid "Server rejected WebSocket handshake"
 msgstr "Server odmietol vyjednanie protokolu WebSocket"
 
-#: libsoup/soup-websocket.c:983 libsoup/soup-websocket.c:992
+#: libsoup/websocket/soup-websocket.c:837
+#: libsoup/websocket/soup-websocket.c:846
 msgid "Server ignored WebSocket handshake"
 msgstr "Server ignoroval vyjednanie protokolu WebSocket"
 
-#: libsoup/soup-websocket.c:1004
+#: libsoup/websocket/soup-websocket.c:858
 msgid "Server requested unsupported protocol"
 msgstr "Server si vy??iadal nepodporovan?? protokol"
 
-#: libsoup/soup-tld.c:150
-msgid "No public-suffix list available."
-msgstr "Nie je dostupn?? ??iadny zoznam verejn??ch pr??pon."
+#~ msgid "Name"
+#~ msgstr "N??zov"
 
-#: libsoup/soup-tld.c:160 libsoup/soup-tld.c:176
-msgid "Invalid hostname"
-msgstr "Neplatn?? n??zov hostite??a"
+#~ msgid "Size"
+#~ msgstr "Ve??kos??"
 
-#: libsoup/soup-tld.c:167
-msgid "Hostname is an IP address"
-msgstr "N??zov hostite??a je adresa IP"
+#~ msgid "Date Modified"
+#~ msgstr "D??tum zmeny"
 
-#: libsoup/soup-tld.c:188
-msgid "Hostname has no base domain"
-msgstr "N??zov hostite??a neobsahuje z??kladn?? dom??nu"
+#~ msgid "Could not parse HTTP request"
+#~ msgstr "Nepodarilo sa analyzova?? po??iadavku HTTP"
 
-#: libsoup/soup-tld.c:196
-msgid "Not enough domains"
-msgstr "Nedostato??n?? po??et dom??n"
+# error
+#~ msgid "No URI provided"
+#~ msgstr "Nebol poskytnut?? identifik??tor URI"
+
+# first %s - scheme (http, ftp, ...)
+#~ msgid "Invalid ???%s??? URI: %s"
+#~ msgstr "Neplatn?? sch??ma ???%s??? identifik??tora URI: %s"
+
+#~ msgid "Could not parse URI ???%s???"
+#~ msgstr "Nepodarilo sa analyzova?? identifik??tor URI ???%s???"
+
+#~ msgid "Unsupported URI scheme ???%s???"
+#~ msgstr "Nepodporovan?? sch??ma ???%s??? pre identifik??tor URI"
+
+#~ msgid "Not an HTTP URI"
+#~ msgstr "Nie je HTTP URI"
+
+#~ msgid "Can???t import non-socket as SoupSocket"
+#~ msgstr "Ned?? sa importova?? ne-soket ako SoupSocket"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/tests/auth-test.c 
new/libsoup-3.0.7/tests/auth-test.c
--- old/libsoup-3.0.6/tests/auth-test.c 2022-03-31 20:33:58.643886600 +0200
+++ new/libsoup-3.0.7/tests/auth-test.c 2022-06-30 19:11:48.000000000 +0200
@@ -803,6 +803,42 @@
        soup_test_session_abort_unref (session);
 }
 
+static gboolean
+sync_bad_password_authenticate (SoupMessage *msg,
+                                SoupAuth    *auth,
+                                gboolean     retrying)
+{
+        if (retrying)
+                return FALSE;
+
+        soup_auth_authenticate (auth, "user1", "wrong");
+        return TRUE;
+}
+
+static void
+do_sync_auth_bad_password_test (void)
+{
+        SoupSession *session;
+        SoupMessage *msg;
+        char *uri;
+
+        SOUP_TEST_SKIP_IF_NO_APACHE;
+
+        session = soup_test_session_new (NULL);
+        uri = g_strconcat (base_uri, "Basic/realm1/", NULL);
+
+        msg = soup_message_new ("GET", uri);
+        g_free (uri);
+        g_signal_connect (msg, "authenticate",
+                          G_CALLBACK (sync_bad_password_authenticate),
+                          NULL);
+        soup_test_session_send_message (session, msg);
+        soup_test_assert_message_status (msg, SOUP_STATUS_UNAUTHORIZED);
+        g_object_unref (msg);
+
+        soup_test_session_abort_unref (session);
+}
+
 typedef struct {
        const char *password;
        struct {
@@ -1849,6 +1885,7 @@
        g_test_add_func ("/auth/async-auth/bad-password", 
do_async_auth_bad_password_test);
        g_test_add_func ("/auth/async-auth/no-password", 
do_async_auth_no_password_test);
        g_test_add_func ("/auth/async-auth/cancel", do_async_auth_cancel_test);
+        g_test_add_func ("/auth/sync-auth/bad-password", 
do_sync_auth_bad_password_test);
        g_test_add_func ("/auth/select-auth", do_select_auth_test);
        g_test_add_func ("/auth/auth-close", do_auth_close_test);
        g_test_add_func ("/auth/infinite-auth", do_infinite_auth_test);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/tests/connection-test.c 
new/libsoup-3.0.7/tests/connection-test.c
--- old/libsoup-3.0.6/tests/connection-test.c   2022-03-31 20:33:58.644886500 
+0200
+++ new/libsoup-3.0.7/tests/connection-test.c   2022-06-30 19:11:48.000000000 
+0200
@@ -1591,6 +1591,60 @@
         soup_test_session_abort_unref (session);
 }
 
+static void
+force_http2_test_network_event (SoupMessage        *msg,
+                                GSocketClientEvent  event,
+                                GIOStream          *connection,
+                                SoupConnection    **conn)
+{
+        if (event != G_SOCKET_CLIENT_RESOLVING)
+                return;
+
+        *conn = soup_message_get_connection (msg);
+}
+
+static void
+do_connection_force_http2_test (void)
+{
+        SoupSession *session;
+        SoupMessage *msg;
+        SoupConnection *conn1 = NULL;
+        SoupConnection *conn2 = NULL;
+        GBytes *body;
+
+        SOUP_TEST_SKIP_IF_NO_TLS;
+        SOUP_TEST_SKIP_IF_NO_APACHE;
+
+        session = soup_test_session_new (NULL);
+
+        msg = soup_message_new ("GET", HTTPS_SERVER);
+        g_signal_connect (msg, "network-event",
+                          G_CALLBACK (force_http2_test_network_event),
+                          &conn1);
+        body = soup_session_send_and_read (session, msg, NULL, NULL);
+        g_assert_nonnull (conn1);
+        g_assert_cmpint (soup_connection_get_state (conn1), ==, 
SOUP_CONNECTION_IDLE);
+        g_assert_cmpint (soup_connection_get_negotiated_protocol (conn1), ==, 
SOUP_HTTP_1_1);
+        g_object_unref (msg);
+        g_bytes_unref (body);
+
+        /* With HTTP/2 forced, a new connection must be created */
+        msg = soup_message_new ("GET", HTTPS_SERVER);
+        g_signal_connect (msg, "network-event",
+                          G_CALLBACK (force_http2_test_network_event),
+                          &conn2);
+        soup_message_set_force_http_version (msg, SOUP_HTTP_2_0);
+        body = soup_session_send_and_read (session, msg, NULL, NULL);
+        g_assert_nonnull (conn2);
+        g_assert_cmpint (soup_connection_get_state (conn2), ==, 
SOUP_CONNECTION_IDLE);
+        g_assert_cmpint (soup_connection_get_negotiated_protocol (conn2), ==, 
SOUP_HTTP_2_0);
+        g_assert_false (conn1 == conn2);
+        g_object_unref (msg);
+        g_bytes_unref (body);
+
+        soup_test_session_abort_unref (session);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -1614,6 +1668,7 @@
        g_test_add_func ("/connection/event", do_connection_event_test);
        g_test_add_func ("/connection/preconnect", 
do_connection_preconnect_test);
         g_test_add_func ("/connection/metrics", do_connection_metrics_test);
+        g_test_add_func ("/connection/force-http2", 
do_connection_force_http2_test);
 
        ret = g_test_run ();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/tests/http2-test.c 
new/libsoup-3.0.7/tests/http2-test.c
--- old/libsoup-3.0.6/tests/http2-test.c        2022-03-31 20:33:58.644886500 
+0200
+++ new/libsoup-3.0.7/tests/http2-test.c        2022-06-30 19:11:48.000000000 
+0200
@@ -1013,6 +1013,39 @@
                 g_main_context_iteration (NULL, FALSE);
 }
 
+static void
+message_restarted (SoupMessage *msg,
+                   gboolean    *was_restarted)
+{
+        *was_restarted = TRUE;
+}
+
+static void
+do_http_1_1_required_test (Test *test, gconstpointer data)
+{
+        SoupMessage *msg;
+        GBytes *response;
+        gboolean was_restarted = FALSE;
+        GError *error = NULL;
+
+        SOUP_TEST_SKIP_IF_NO_APACHE;
+
+        msg = soup_message_new (SOUP_METHOD_GET, 
"https://127.0.0.1:47525/client-cert";);
+        soup_message_set_force_http_version (msg, SOUP_HTTP_2_0);
+        g_signal_connect (msg, "restarted",
+                          G_CALLBACK (message_restarted), &was_restarted);
+        response = soup_test_session_async_send (test->session, msg, NULL, 
&error);
+        g_assert_no_error (error);
+        g_assert_cmpuint (soup_message_get_status (msg), ==, 403);
+        g_assert_true (was_restarted);
+        g_assert_nonnull (response);
+        g_bytes_unref (response);
+        g_object_unref (msg);
+
+        while (g_main_context_pending (NULL))
+                g_main_context_iteration (NULL, FALSE);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -1025,6 +1058,8 @@
                 return 1;
         }
 
+        apache_init ();
+
         g_test_add ("/http2/basic/async", Test, NULL,
                     setup_session,
                     do_basic_async_test,
@@ -1125,6 +1160,10 @@
                     setup_session,
                     do_timeout_test,
                     teardown_session);
+        g_test_add ("/http2/http-1-1-required", Test, NULL,
+                    setup_session,
+                    do_http_1_1_required_test,
+                    teardown_session);
 
        ret = g_test_run ();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsoup-3.0.6/tests/httpd.conf.in 
new/libsoup-3.0.7/tests/httpd.conf.in
--- old/libsoup-3.0.6/tests/httpd.conf.in       2022-03-31 20:33:58.645886700 
+0200
+++ new/libsoup-3.0.7/tests/httpd.conf.in       2022-06-30 19:11:48.000000000 
+0200
@@ -13,7 +13,7 @@
 # Change this to "./error.log" if it's failing and you don't know why
 ErrorLog /dev/null
 
-LoadModule mpm_prefork_module   @APACHE_MODULE_DIR@/mod_mpm_prefork.so
+LoadModule mpm_event_module        @APACHE_MODULE_DIR@/mod_mpm_event.so
 LoadModule alias_module         @APACHE_MODULE_DIR@/mod_alias.so
 LoadModule auth_basic_module    @APACHE_MODULE_DIR@/mod_auth_basic.so
 LoadModule auth_digest_module   @APACHE_MODULE_DIR@/mod_auth_digest.so
@@ -29,12 +29,15 @@
 LoadModule proxy_connect_module @APACHE_MODULE_DIR@/mod_proxy_connect.so
 LoadModule ssl_module           @APACHE_SSL_MODULE_DIR@/mod_ssl.so
 @IF_HAVE_MOD_UNIXD@LoadModule unixd_module         
@APACHE_SSL_MODULE_DIR@/mod_unixd.so
+@IF_HAVE_MOD_HTTP2@LoadModule http2_module         
@APACHE_HTTP2_MODULE_DIR@/mod_http2.so
 
 DirectoryIndex index.txt
 TypesConfig /dev/null
-AddType application/x-httpd-php .php
 Redirect permanent /redirected /index.txt
 
+# Prefer http1 for now because most of the tests expect http1 behavior.
+Protocols http/1.1 h2
+
 # Proxy #1: unauthenticated
 Listen 127.0.0.1:47526
 <VirtualHost 127.0.0.1:47526>
@@ -281,3 +284,7 @@
   # test RFC2069-style Digest
   AuthDigestQop none
 </Location>
+
+<Location /client-cert>
+  SSLVerifyClient require
+</Location>
\ No newline at end of file

Reply via email to