[libsoup/carlosgc/status: 2/5] message: make status-code and reason-phrase properties read only




commit cc5d147c1ac482008fdf68fef6d60216b6b5d821
Author: Carlos Garcia Campos <cgarcia igalia com>
Date:   Thu Nov 12 16:58:54 2020 +0100

    message: make status-code and reason-phrase properties read only
    
    Now that status code is only used for HTTP values, there's no reason for
    users to set a status

 docs/reference/libsoup-3.0-sections.txt |  2 --
 libsoup/cache/soup-cache.c              |  2 +-
 libsoup/soup-message-io.c               |  2 +-
 libsoup/soup-message-private.h          |  3 +++
 libsoup/soup-message.c                  | 47 +++++----------------------------
 libsoup/soup-message.h                  | 12 ---------
 libsoup/soup-session.c                  |  2 +-
 libsoup/soup-status.c                   |  4 +--
 tests/websocket-test.c                  | 13 ++++-----
 9 files changed, 20 insertions(+), 67 deletions(-)
---
diff --git a/docs/reference/libsoup-3.0-sections.txt b/docs/reference/libsoup-3.0-sections.txt
index 5c8f1d6a..9b779374 100644
--- a/docs/reference/libsoup-3.0-sections.txt
+++ b/docs/reference/libsoup-3.0-sections.txt
@@ -23,8 +23,6 @@ soup_message_get_reason_phrase
 soup_message_get_request_headers
 soup_message_get_response_headers
 <SUBSECTION>
-soup_message_set_status
-soup_message_set_status_full
 soup_message_is_keepalive
 soup_message_get_tls_certificate
 soup_message_get_tls_certificate_errors
diff --git a/libsoup/cache/soup-cache.c b/libsoup/cache/soup-cache.c
index 68ba5f26..e169a373 100644
--- a/libsoup/cache/soup-cache.c
+++ b/libsoup/cache/soup-cache.c
@@ -715,7 +715,7 @@ soup_cache_send_response (SoupCache *cache, SoupMessage *msg)
        soup_message_starting (msg);
 
        /* Status */
-       soup_message_set_status (msg, entry->status_code);
+       soup_message_set_status (msg, entry->status_code, NULL);
 
        /* Headers */
        copy_end_to_end_headers (entry->headers, soup_message_get_response_headers (msg));
diff --git a/libsoup/soup-message-io.c b/libsoup/soup-message-io.c
index c247a9b6..a9714aa5 100644
--- a/libsoup/soup-message-io.c
+++ b/libsoup/soup-message-io.c
@@ -484,7 +484,7 @@ parse_headers (SoupMessage  *msg,
                return FALSE;
        }
 
-        soup_message_set_status_full (msg, status, reason_phrase);
+        soup_message_set_status (msg, status, reason_phrase);
         g_free (reason_phrase);
 
        if (version < soup_message_get_http_version (msg))
diff --git a/libsoup/soup-message-private.h b/libsoup/soup-message-private.h
index a4d1923f..ad1dfba0 100644
--- a/libsoup/soup-message-private.h
+++ b/libsoup/soup-message-private.h
@@ -17,6 +17,9 @@
 typedef struct _SoupClientMessageIOData SoupClientMessageIOData;
 void soup_client_message_io_data_free (SoupClientMessageIOData *io);
 
+void             soup_message_set_status       (SoupMessage      *msg,
+                                               guint             status_code,
+                                               const char       *reason_phrase);
 void             soup_message_cleanup_response (SoupMessage      *msg);
 
 typedef void     (*SoupMessageGetHeadersFn)  (SoupMessage      *msg,
diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c
index ef16f8e6..ee1e2ea7 100644
--- a/libsoup/soup-message.c
+++ b/libsoup/soup-message.c
@@ -208,13 +208,6 @@ soup_message_set_property (GObject *object, guint prop_id,
        case PROP_FLAGS:
                soup_message_set_flags (msg, g_value_get_flags (value));
                break;
-       case PROP_STATUS_CODE:
-               soup_message_set_status (msg, g_value_get_uint (value));
-               break;
-       case PROP_REASON_PHRASE:
-               soup_message_set_status_full (msg, priv->status_code,
-                                             g_value_get_string (value));
-               break;
        case PROP_FIRST_PARTY:
                soup_message_set_first_party (msg, g_value_get_boxed (value));
                break;
@@ -633,7 +626,7 @@ soup_message_class_init (SoupMessageClass *message_class)
                                   "Status code",
                                   "The HTTP response status code",
                                   0, 999, 0,
-                                  G_PARAM_READWRITE |
+                                  G_PARAM_READABLE |
                                   G_PARAM_STATIC_STRINGS));
        g_object_class_install_property (
                object_class, PROP_REASON_PHRASE,
@@ -641,7 +634,7 @@ soup_message_class_init (SoupMessageClass *message_class)
                                     "Reason phrase",
                                     "The HTTP response reason phrase",
                                     NULL,
-                                    G_PARAM_READWRITE |
+                                    G_PARAM_READABLE |
                                     G_PARAM_STATIC_STRINGS));
        /**
         * SoupMessage:first-party:
@@ -1647,44 +1640,16 @@ soup_message_get_uri (SoupMessage *msg)
  * known value, it will also set @msg's reason_phrase.
  **/
 void
-soup_message_set_status (SoupMessage *msg, guint status_code)
+soup_message_set_status (SoupMessage *msg,
+                        guint        status_code,
+                        const char  *reason_phrase)
 {
-       g_return_if_fail (SOUP_IS_MESSAGE (msg));
-       g_return_if_fail (status_code != 0);
-
-        SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
-
-       g_free (priv->reason_phrase);
-
-       priv->status_code = status_code;
-       priv->reason_phrase = g_strdup (soup_status_get_phrase (status_code));
-       g_object_notify (G_OBJECT (msg), "status-code");
-       g_object_notify (G_OBJECT (msg), "reason-phrase");
-}
-
-/**
- * soup_message_set_status_full:
- * @msg: a #SoupMessage
- * @status_code: an HTTP status code
- * @reason_phrase: a description of the status
- *
- * Sets @msg's status code and reason phrase.
- **/
-void
-soup_message_set_status_full (SoupMessage *msg,
-                             guint        status_code,
-                             const char  *reason_phrase)
-{
-       g_return_if_fail (SOUP_IS_MESSAGE (msg));
-       g_return_if_fail (status_code != 0);
-       g_return_if_fail (reason_phrase != NULL);
-
         SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
 
        g_free (priv->reason_phrase);
 
        priv->status_code = status_code;
-       priv->reason_phrase = g_strdup (reason_phrase);
+       priv->reason_phrase = g_strdup (reason_phrase ? reason_phrase : soup_status_get_phrase (status_code));
        g_object_notify (G_OBJECT (msg), "status-code");
        g_object_notify (G_OBJECT (msg), "reason-phrase");
 }
diff --git a/libsoup/soup-message.h b/libsoup/soup-message.h
index de3c7a7d..5540d016 100644
--- a/libsoup/soup-message.h
+++ b/libsoup/soup-message.h
@@ -122,18 +122,6 @@ guint          soup_message_add_status_code_handler (
                                                 GCallback          callback,
                                                 gpointer           user_data);
 
-/*
- * Status Setting
- */
-SOUP_AVAILABLE_IN_2_4
-void           soup_message_set_status          (SoupMessage       *msg, 
-                                                guint              status_code);
-
-SOUP_AVAILABLE_IN_2_4
-void           soup_message_set_status_full     (SoupMessage       *msg, 
-                                                guint              status_code, 
-                                                const char        *reason_phrase);
-
 SOUP_AVAILABLE_IN_2_28
 void           soup_message_disable_feature     (SoupMessage       *msg,
                                                 GType              feature_type);
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index fa0ce46b..0cf5c081 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -1288,7 +1288,7 @@ tunnel_complete (SoupMessageQueueItem *tunnel_item,
                soup_connection_disconnect (item->conn);
                soup_session_set_item_connection (session, item, NULL);
                if (!error && soup_message_get_status (item->msg) == SOUP_STATUS_NONE)
-                       soup_message_set_status (item->msg, status);
+                       soup_message_set_status (item->msg, status, NULL);
        }
 
        if (item->async)
diff --git a/libsoup/soup-status.c b/libsoup/soup-status.c
index 58c5c4a4..861d3d61 100644
--- a/libsoup/soup-status.c
+++ b/libsoup/soup-status.c
@@ -220,9 +220,7 @@ static const struct {
  * soup_status_get_phrase:
  * @status_code: an HTTP status code
  *
- * Looks up the stock HTTP description of @status_code. This is used
- * by soup_message_set_status() to get the correct text to go with a
- * given status code.
+ * Looks up the stock HTTP description of @status_code.
  *
  * <emphasis>There is no reason for you to ever use this
  * function.</emphasis> If you wanted the textual description for the
diff --git a/tests/websocket-test.c b/tests/websocket-test.c
index cc8b5a19..a947f4f4 100644
--- a/tests/websocket-test.c
+++ b/tests/websocket-test.c
@@ -19,6 +19,7 @@
  */
 
 #include "test-utils.h"
+#include "soup-message-private.h"
 #include "soup-server-message-private.h"
 #include <zlib.h>
 
@@ -676,7 +677,7 @@ test_protocol_negotiate_direct (Test *test,
                                                      NULL, NULL);
        g_assert_true (ok);
 
-        soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL));
+        soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL), NULL);
        response_headers = soup_server_message_get_response_headers (server_msg);
        soup_message_headers_iter_init (&iter, response_headers);
        while (soup_message_headers_iter_next (&iter, &name, &value))
@@ -746,7 +747,7 @@ test_protocol_mismatch_direct (Test *test,
                                                      (char **) mismatch_server_protocols,
                                                      NULL, NULL);
        g_assert_false (ok);
-       soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL));
+       soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL), NULL);
        soup_test_assert_message_status (msg, SOUP_STATUS_BAD_REQUEST);
 
        response_headers = soup_server_message_get_response_headers (server_msg);
@@ -809,7 +810,7 @@ test_protocol_server_any_direct (Test *test,
        ok = soup_websocket_server_process_handshake (server_msg, NULL, NULL, NULL, NULL);
        g_assert_true (ok);
 
-        soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL));
+        soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL), NULL);
        response_headers = soup_server_message_get_response_headers (server_msg);
        soup_message_headers_iter_init (&iter, response_headers);
        while (soup_message_headers_iter_next (&iter, &name, &value))
@@ -871,7 +872,7 @@ test_protocol_client_any_direct (Test *test,
        ok = soup_websocket_server_process_handshake (server_msg, NULL, (char **) all_protocols, NULL, NULL);
        g_assert_true (ok);
 
-       soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL));
+       soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL), NULL);
        response_headers = soup_server_message_get_response_headers (server_msg);
        soup_message_headers_iter_init (&iter, response_headers);
        while (soup_message_headers_iter_next (&iter, &name, &value))
@@ -1730,7 +1731,7 @@ test_deflate_negotiate_direct (Test *test,
                                                                  &accepted_extensions);
                g_assert (result == deflate_negotiate_tests[i].expected_check_result);
 
-               soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL));
+               soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL), NULL);
                response_headers = soup_server_message_get_response_headers (server_msg);
                soup_message_headers_iter_init (&iter, response_headers);
                 while (soup_message_headers_iter_next (&iter, &name, &value))
@@ -1809,7 +1810,7 @@ test_deflate_disabled_in_message_direct (Test *test,
 
        g_assert_true (soup_websocket_server_process_handshake (server_msg, NULL, NULL, supported_extensions, 
&accepted_extensions));
        g_assert_null (accepted_extensions);
-       soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL));
+       soup_message_set_status (msg, soup_server_message_get_status (server_msg, NULL), NULL);
        response_headers = soup_server_message_get_response_headers (server_msg);
        soup_message_headers_iter_init (&iter, response_headers);
        while (soup_message_headers_iter_next (&iter, &name, &value))


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