summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2020-11-12 16:58:54 +0100
committerCarlos Garcia Campos <cgarcia@igalia.com>2020-11-15 15:06:05 +0100
commitcc5d147c1ac482008fdf68fef6d60216b6b5d821 (patch)
treedf59257688fbe4e6838d326d4e16366dd370a9be
parentb4b865d8d62f4207059c187c345dca4d0349a77e (diff)
downloadlibsoup-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.txt2
-rw-r--r--libsoup/cache/soup-cache.c2
-rw-r--r--libsoup/soup-message-io.c2
-rw-r--r--libsoup/soup-message-private.h3
-rw-r--r--libsoup/soup-message.c47
-rw-r--r--libsoup/soup-message.h12
-rw-r--r--libsoup/soup-session.c2
-rw-r--r--libsoup/soup-status.c4
-rw-r--r--tests/websocket-test.c13
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))