diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2020-11-12 16:58:54 +0100 |
---|---|---|
committer | Carlos Garcia Campos <cgarcia@igalia.com> | 2020-11-15 15:06:05 +0100 |
commit | cc5d147c1ac482008fdf68fef6d60216b6b5d821 (patch) | |
tree | df59257688fbe4e6838d326d4e16366dd370a9be | |
parent | b4b865d8d62f4207059c187c345dca4d0349a77e (diff) | |
download | libsoup-cc5d147c1ac482008fdf68fef6d60216b6b5d821.tar.gz |
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
-rw-r--r-- | docs/reference/libsoup-3.0-sections.txt | 2 | ||||
-rw-r--r-- | libsoup/cache/soup-cache.c | 2 | ||||
-rw-r--r-- | libsoup/soup-message-io.c | 2 | ||||
-rw-r--r-- | libsoup/soup-message-private.h | 3 | ||||
-rw-r--r-- | libsoup/soup-message.c | 47 | ||||
-rw-r--r-- | libsoup/soup-message.h | 12 | ||||
-rw-r--r-- | libsoup/soup-session.c | 2 | ||||
-rw-r--r-- | libsoup/soup-status.c | 4 | ||||
-rw-r--r-- | 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)) |