[libsoup/carlosgc/hsts-enforced] hsts: Move hsts-enforced signal from SoupHSTSEnforcer to SoupMessage




commit 9f7fb01084c404906d753e4c92b2a22efbbbd13e
Author: Carlos Garcia Campos <cgarcia igalia com>
Date:   Thu Feb 11 12:29:33 2021 +0100

    hsts: Move hsts-enforced signal from SoupHSTSEnforcer to SoupMessage
    
    For convenience and also consistency with other features.

 libsoup/hsts/soup-hsts-enforcer.c |  23 +------
 libsoup/hsts/soup-hsts-enforcer.h |   4 --
 libsoup/soup-message-private.h    |   1 +
 libsoup/soup-message.c            |  24 +++++++
 tests/hsts-db-test.c              |  31 +++++++---
 tests/hsts-test.c                 | 127 +++++++++++++++++++++-----------------
 6 files changed, 119 insertions(+), 91 deletions(-)
---
diff --git a/libsoup/hsts/soup-hsts-enforcer.c b/libsoup/hsts/soup-hsts-enforcer.c
index 5a6090a4..85d344f5 100644
--- a/libsoup/hsts/soup-hsts-enforcer.c
+++ b/libsoup/hsts/soup-hsts-enforcer.c
@@ -15,6 +15,7 @@
 #include "soup.h"
 #include "soup-session-private.h"
 #include "soup-session-feature-private.h"
+#include "soup-message-private.h"
 #include "soup-uri-utils-private.h"
 
 /**
@@ -55,7 +56,6 @@ static void soup_hsts_enforcer_session_feature_init (SoupSessionFeatureInterface
 
 enum {
        CHANGED,
-       HSTS_ENFORCED,
        LAST_SIGNAL
 };
 
@@ -181,25 +181,6 @@ soup_hsts_enforcer_class_init (SoupHSTSEnforcerClass *hsts_enforcer_class)
                              G_TYPE_NONE, 2,
                              SOUP_TYPE_HSTS_POLICY | G_SIGNAL_TYPE_STATIC_SCOPE,
                              SOUP_TYPE_HSTS_POLICY | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-       /**
-        * SoupHSTSEnforcer::hsts-enforced:
-        * @hsts_enforcer: the #SoupHSTSEnforcer
-        * @message: the message for which HSTS is being enforced
-        *
-        * Emitted when @hsts_enforcer has upgraded the protocol
-        * for @message to HTTPS as a result of matching its domain with
-        * a HSTS policy.
-        **/
-       signals[HSTS_ENFORCED] =
-               g_signal_new ("hsts-enforced",
-                             G_OBJECT_CLASS_TYPE (object_class),
-                             G_SIGNAL_RUN_FIRST,
-                             G_STRUCT_OFFSET (SoupHSTSEnforcerClass, hsts_enforced),
-                             NULL, NULL,
-                             NULL,
-                             G_TYPE_NONE, 1,
-                             SOUP_TYPE_MESSAGE);
 }
 
 /**
@@ -547,7 +528,7 @@ preprocess_request (SoupHSTSEnforcer *enforcer, SoupMessage *msg)
                        g_signal_connect (msg, "starting",
                                          G_CALLBACK (on_sts_known_host_message_starting),
                                          enforcer);
-                       g_signal_emit (enforcer, signals[HSTS_ENFORCED], 0, msg);
+                       soup_message_hsts_enforced (msg);
                }
                g_free (canonicalized);
        } else if (soup_uri_is_https (uri, NULL)) {
diff --git a/libsoup/hsts/soup-hsts-enforcer.h b/libsoup/hsts/soup-hsts-enforcer.h
index b986c505..8a27b5d0 100644
--- a/libsoup/hsts/soup-hsts-enforcer.h
+++ b/libsoup/hsts/soup-hsts-enforcer.h
@@ -25,7 +25,6 @@ G_DECLARE_DERIVABLE_TYPE (SoupHSTSEnforcer, soup_hsts_enforcer, SOUP, HSTS_ENFOR
  * chain up to the @has_valid_policy in the parent class to check, for instance, for runtime
  * policies.
  * @changed: The class closure for the #SoupHSTSEnforcer::changed signal.
- * @hsts_enforced: The class closure for the #SoupHSTSEnforcer::hsts-enforced signal.
  *
  * Class structure for #SoupHSTSEnforcer.
  **/
@@ -40,9 +39,6 @@ struct _SoupHSTSEnforcerClass {
                         SoupHSTSPolicy   *old_policy,
                         SoupHSTSPolicy   *new_policy);
 
-       void (*hsts_enforced) (SoupHSTSEnforcer *enforcer,
-                              SoupMessage      *message);
-
         /* <private> */
        gpointer padding[4];
 };
diff --git a/libsoup/soup-message-private.h b/libsoup/soup-message-private.h
index ad1dfba0..4eb1a36d 100644
--- a/libsoup/soup-message-private.h
+++ b/libsoup/soup-message-private.h
@@ -106,6 +106,7 @@ void soup_message_finished          (SoupMessage *msg);
 gboolean soup_message_authenticate  (SoupMessage *msg,
                                     SoupAuth    *auth,
                                     gboolean     retrying);
+void soup_message_hsts_enforced     (SoupMessage *msg);
 
 gboolean soup_message_disables_feature (SoupMessage *msg,
                                        gpointer     feature);
diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c
index 9b2bda0a..b1cd39a4 100644
--- a/libsoup/soup-message.c
+++ b/libsoup/soup-message.c
@@ -113,6 +113,7 @@ enum {
        AUTHENTICATE,
        NETWORK_EVENT,
        ACCEPT_CERTIFICATE,
+       HSTS_ENFORCED,
 
        LAST_SIGNAL
 };
@@ -586,6 +587,23 @@ soup_message_class_init (SoupMessageClass *message_class)
                              G_TYPE_TLS_CERTIFICATE,
                              G_TYPE_TLS_CERTIFICATE_FLAGS);
 
+       /**
+        * SoupMessage::hsts-enforced:
+        * @msg: the message
+        *
+        * Emitted when #SoupHSTSEnforcer has upgraded the protocol
+        * for @msg to HTTPS as a result of matching its domain with
+        * a HSTS policy.
+        **/
+       signals[HSTS_ENFORCED] =
+               g_signal_new ("hsts-enforced",
+                             G_OBJECT_CLASS_TYPE (object_class),
+                             G_SIGNAL_RUN_LAST,
+                             0,
+                             NULL, NULL,
+                             NULL,
+                             G_TYPE_NONE, 0);
+
        /* properties */
        g_object_class_install_property (
                object_class, PROP_METHOD,
@@ -1060,6 +1078,12 @@ soup_message_authenticate (SoupMessage *msg,
        return handled;
 }
 
+void
+soup_message_hsts_enforced (SoupMessage *msg)
+{
+       g_signal_emit (msg, signals[HSTS_ENFORCED], 0);
+}
+
 static void
 header_handler_free (gpointer header_name, GClosure *closure)
 {
diff --git a/tests/hsts-db-test.c b/tests/hsts-db-test.c
index 54b3bcb8..8bb22f3f 100644
--- a/tests/hsts-db-test.c
+++ b/tests/hsts-db-test.c
@@ -60,13 +60,25 @@ server_callback  (SoupServer        *server,
 }
 
 static void
-session_get_uri (SoupSession *session, const char *uri, SoupStatus expected_status)
+hsts_enforced_cb (SoupMessage *msg,
+                 gboolean    *enforced)
+{
+       *enforced = TRUE;
+}
+
+static void
+session_get_uri (SoupSession *session,
+                 const char  *uri,
+                 SoupStatus   expected_status,
+                 gboolean     expected_enforced)
 {
        SoupMessage *msg;
         GBytes *body;
         GError *error = NULL;
+        gboolean enforced = FALSE;
 
        msg = soup_message_new ("GET", uri);
+        g_signal_connect (msg, "hsts-enforced", G_CALLBACK (hsts_enforced_cb), &enforced);
        soup_message_add_flags (msg, SOUP_MESSAGE_NO_REDIRECT);
        body = soup_test_session_send (session, msg, NULL, &error);
        if (expected_status == SOUP_STATUS_NONE)
@@ -74,6 +86,7 @@ session_get_uri (SoupSession *session, const char *uri, SoupStatus expected_stat
        else
                g_assert_no_error (error);
        soup_test_assert_message_status (msg, expected_status);
+        g_assert (enforced == expected_enforced);
         g_clear_error (&error);
         g_bytes_unref (body);
        g_object_unref (msg);
@@ -133,12 +146,12 @@ static void
 do_hsts_db_persistency_test (void)
 {
        SoupSession *session = hsts_db_session_new ();
-       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 
        session = hsts_db_session_new ();
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 
        g_remove (DB_FILE);
@@ -148,11 +161,11 @@ static void
 do_hsts_db_subdomains_test (void)
 {
        SoupSession *session = hsts_db_session_new ();
-       session_get_uri (session, "https://localhost/subdomains";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/subdomains";, SOUP_STATUS_OK, FALSE);
        soup_test_session_abort_unref (session);
 
        session = hsts_db_session_new ();
-       session_get_uri (session, "http://subdomain.localhost";, SOUP_STATUS_NONE);
+       session_get_uri (session, "http://subdomain.localhost";, SOUP_STATUS_NONE, TRUE);
        soup_test_session_abort_unref (session);
 
        g_remove (DB_FILE);
@@ -162,12 +175,12 @@ static void
 do_hsts_db_large_max_age_test (void)
 {
        SoupSession *session = hsts_db_session_new ();
-       session_get_uri (session, "https://localhost/very-long-lasting";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/very-long-lasting";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 
        session = hsts_db_session_new ();
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 
        g_remove (DB_FILE);
diff --git a/tests/hsts-test.c b/tests/hsts-test.c
index a0276c77..8dcfdeca 100644
--- a/tests/hsts-test.c
+++ b/tests/hsts-test.c
@@ -106,13 +106,25 @@ server_callback  (SoupServer        *server,
 }
 
 static void
-session_get_uri (SoupSession *session, const char *uri, SoupStatus expected_status)
+hsts_enforced_cb (SoupMessage *msg,
+                 gboolean    *enforced)
+{
+       *enforced = TRUE;
+}
+
+static void
+session_get_uri (SoupSession *session,
+                const char  *uri,
+                SoupStatus   expected_status,
+                gboolean     expected_enforced)
 {
        SoupMessage *msg;
        GBytes *body;
        GError *error = NULL;
+       gboolean enforced = FALSE;
 
        msg = soup_message_new ("GET", uri);
+       g_signal_connect (msg, "hsts-enforced", G_CALLBACK (hsts_enforced_cb), &enforced);
        soup_message_add_flags (msg, SOUP_MESSAGE_NO_REDIRECT);
        body = soup_test_session_send (session, msg, NULL, &error);
        if (expected_status == SOUP_STATUS_NONE)
@@ -120,6 +132,7 @@ session_get_uri (SoupSession *session, const char *uri, SoupStatus expected_stat
        else
                g_assert_no_error (error);
        soup_test_assert_message_status (msg, expected_status);
+       g_assert (enforced == expected_enforced);
        g_clear_error (&error);
        g_bytes_unref (body);
        g_object_unref (msg);
@@ -182,15 +195,15 @@ do_hsts_basic_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
 
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
-       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
+       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
 
        /* The HSTS headers in the url above doesn't include
           subdomains, so the request should ask for the unchanged
           HTTP address below, to which the server will respond with a
           moved permanently status. */
-       session_get_uri (session, "http://subdomain.localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "http://subdomain.localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
 
        soup_test_session_abort_unref (session);
 }
@@ -200,11 +213,11 @@ do_hsts_expire_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
 
-       session_get_uri (session, "https://localhost/two-seconds";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/two-seconds";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        /* Wait for the policy to expire. */
        g_usleep (3 * G_USEC_PER_SEC);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
 
        soup_test_session_abort_unref (session);
 }
@@ -214,9 +227,9 @@ do_hsts_delete_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
 
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
-       session_get_uri (session, "https://localhost/delete";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
+       session_get_uri (session, "https://localhost/delete";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
 
        soup_test_session_abort_unref (session);
 }
@@ -225,12 +238,12 @@ static void
 do_hsts_replace_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
-       session_get_uri (session, "https://localhost/two-seconds";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
+       session_get_uri (session, "https://localhost/two-seconds";, SOUP_STATUS_OK, FALSE);
        /* Wait for the policy to expire. */
        g_usleep (3 * G_USEC_PER_SEC);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
 
        soup_test_session_abort_unref (session);
 }
@@ -239,15 +252,15 @@ static void
 do_hsts_update_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/three-seconds";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/three-seconds";, SOUP_STATUS_OK, FALSE);
        g_usleep (2 * G_USEC_PER_SEC);
-       session_get_uri (session, "https://localhost/three-seconds";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/three-seconds";, SOUP_STATUS_OK, FALSE);
        g_usleep (2 * G_USEC_PER_SEC);
 
        /* At this point, 4 seconds have elapsed since setting the 3 seconds HSTS
           rule for the first time, and it should have expired by now, but since it
           was updated, it should still be valid. */
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 }
 
@@ -255,10 +268,10 @@ static void
 do_hsts_set_and_delete_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
-       session_get_uri (session, "https://localhost/delete";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
+       session_get_uri (session, "https://localhost/delete";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
 
        soup_test_session_abort_unref (session);
 }
@@ -267,10 +280,10 @@ static void
 do_hsts_no_hsts_header_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
-       session_get_uri (session, "https://localhost/no-sts-header";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
+       session_get_uri (session, "https://localhost/no-sts-header";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
 
        soup_test_session_abort_unref (session);
 }
@@ -279,12 +292,12 @@ static void
 do_hsts_persistency_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 
        session = hsts_session_new (NULL);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
        soup_test_session_abort_unref (session);
 }
 
@@ -292,11 +305,11 @@ static void
 do_hsts_subdomains_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/subdomains";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/subdomains";, SOUP_STATUS_OK, FALSE);
        /* The enforcer should cause the request to ask for an HTTPS
           uri, which will fail with an SSL error as there's no server
           in subdomain.localhost. */
-       session_get_uri (session, "http://subdomain.localhost";, SOUP_STATUS_NONE);
+       session_get_uri (session, "http://subdomain.localhost";, SOUP_STATUS_NONE, TRUE);
        soup_test_session_abort_unref (session);
 }
 
@@ -308,7 +321,7 @@ do_hsts_superdomain_test (void)
 
        SoupSession *session = hsts_session_new (enforcer);
        /* This adds a long-lasting policy for localhost. */
-       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/long-lasting";, SOUP_STATUS_OK, FALSE);
 
        /* We want to set a policy with age = 0 for a subdomain, to test that the
           superdomain's policy is not removed. We cannot test this with a
@@ -319,7 +332,7 @@ do_hsts_superdomain_test (void)
 
        /* This should work, as we have a long-lasting policy in place. If it fails,
           the subdomain policy has modified the superdomain's policy, which is wrong. */
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        g_object_unref (enforcer);
 }
 
@@ -327,9 +340,9 @@ static void
 do_hsts_multiple_headers_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/multiple-headers";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/multiple-headers";, SOUP_STATUS_OK, FALSE);
        g_usleep(2 * G_USEC_PER_SEC);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 }
 
@@ -337,8 +350,8 @@ static void
 do_hsts_insecure_sts_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "http://localhost/insecure";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "http://localhost/insecure";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
        soup_test_session_abort_unref (session);
 }
 
@@ -346,8 +359,8 @@ static void
 do_hsts_missing_values_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/missing-values";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "https://localhost/missing-values";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
        soup_test_session_abort_unref (session);
 }
 
@@ -355,8 +368,8 @@ static void
 do_hsts_invalid_values_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/invalid-values";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "https://localhost/invalid-values";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
        soup_test_session_abort_unref (session);
 }
 
@@ -367,8 +380,8 @@ do_hsts_extra_values_test (void)
        for (i = 0; i < 2; i++) {
                SoupSession *session = hsts_session_new (NULL);
                char *uri = g_strdup_printf ("https://localhost/extra-values-%i";, i);
-               session_get_uri (session, uri, SOUP_STATUS_OK);
-               session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+               session_get_uri (session, uri, SOUP_STATUS_OK, FALSE);
+               session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
                soup_test_session_abort_unref (session);
                g_free (uri);
        }
@@ -378,8 +391,8 @@ static void
 do_hsts_duplicated_directives_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/duplicated-directives";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "https://localhost/duplicated-directives";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
        soup_test_session_abort_unref (session);
 }
 
@@ -387,8 +400,8 @@ static void
 do_hsts_case_insensitive_header_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/case-insensitive-header";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/case-insensitive-header";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 }
 
@@ -396,8 +409,8 @@ static void
 do_hsts_case_insensitive_directives_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/case-insensitive-directives";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/case-insensitive-directives";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
        soup_test_session_abort_unref (session);
 }
 
@@ -406,8 +419,8 @@ do_hsts_optional_quotations_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
 
-       session_get_uri (session, "https://localhost/optional-quotations";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/optional-quotations";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
 
        soup_test_session_abort_unref (session);
 }
@@ -416,8 +429,8 @@ static void
 do_hsts_ip_address_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://127.0.0.1/basic";, SOUP_STATUS_OK);
-       session_get_uri (session, "http://127.0.0.1/";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "https://127.0.0.1/basic";, SOUP_STATUS_OK, FALSE);
+       session_get_uri (session, "http://127.0.0.1/";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
        soup_test_session_abort_unref (session);
 }
 
@@ -425,11 +438,11 @@ static void
 do_hsts_utf8_address_test (void)
 {
        SoupSession *session = hsts_session_new (NULL);
-       session_get_uri (session, "https://localhost/subdomains";, SOUP_STATUS_OK);
+       session_get_uri (session, "https://localhost/subdomains";, SOUP_STATUS_OK, FALSE);
        /* The enforcer should cause the request to ask for an HTTPS
           uri, which will fail with an SSL error as there's no server
           in 食狮.中国.localhost. */
-       session_get_uri (session, "http://食狮.中国.localhost";, SOUP_STATUS_NONE);
+       session_get_uri (session, "http://食狮.中国.localhost";, SOUP_STATUS_NONE, TRUE);
        soup_test_session_abort_unref (session);
 }
 
@@ -439,9 +452,9 @@ do_hsts_session_policy_test (void)
        SoupHSTSEnforcer *enforcer = soup_hsts_enforcer_new ();
        SoupSession *session = hsts_session_new (enforcer);
 
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_MOVED_PERMANENTLY, FALSE);
        soup_hsts_enforcer_set_session_policy (enforcer, "localhost", FALSE);
-       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK);
+       session_get_uri (session, "http://localhost";, SOUP_STATUS_OK, TRUE);
 
        soup_test_session_abort_unref (session);
        g_object_unref (enforcer);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]