summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Griffis <pgriffis@igalia.com>2021-01-09 14:19:35 -0600
committerPatrick Griffis <pgriffis@igalia.com>2021-01-09 14:40:18 -0600
commitaaee0a9fa0f0a028eadc4618b741d6dc88550ff9 (patch)
treee5e8579eec560368643a36aa5c49720d2a063684
parent6a2d9585d85fd7e6c5fca8dbc49130e00d2a64e3 (diff)
downloadlibsoup-aaee0a9fa0f0a028eadc4618b741d6dc88550ff9.tar.gz
Add soup_server_message_get_reason_phrase() to match SoupMessage
-rw-r--r--docs/reference/libsoup-3.0-sections.txt1
-rw-r--r--libsoup/server/soup-server-io.c11
-rw-r--r--libsoup/server/soup-server-message.c25
-rw-r--r--libsoup/server/soup-server-message.h7
-rw-r--r--libsoup/server/soup-server.c12
-rw-r--r--tests/auth-test.c2
-rw-r--r--tests/continue-test.c6
-rw-r--r--tests/websocket-test.c12
8 files changed, 46 insertions, 30 deletions
diff --git a/docs/reference/libsoup-3.0-sections.txt b/docs/reference/libsoup-3.0-sections.txt
index d9c4acb2..b8c55a65 100644
--- a/docs/reference/libsoup-3.0-sections.txt
+++ b/docs/reference/libsoup-3.0-sections.txt
@@ -266,6 +266,7 @@ soup_server_message_get_http_version
soup_server_message_set_http_version
soup_server_message_get_status
soup_server_message_set_status
+soup_server_message_get_reason_phrase
soup_server_message_get_uri
soup_server_message_set_response
soup_server_message_set_redirect
diff --git a/libsoup/server/soup-server-io.c b/libsoup/server/soup-server-io.c
index aaf7829f..7d2831cd 100644
--- a/libsoup/server/soup-server-io.c
+++ b/libsoup/server/soup-server-io.c
@@ -178,7 +178,7 @@ handle_partial_get (SoupServerMessage *msg)
* the response body
*/
if (soup_server_message_get_method (msg) != SOUP_METHOD_GET ||
- soup_server_message_get_status (msg, NULL) != SOUP_STATUS_OK ||
+ soup_server_message_get_status (msg) != SOUP_STATUS_OK ||
soup_message_headers_get_encoding (response_headers) !=
SOUP_ENCODING_CONTENT_LENGTH ||
response_body->length == 0 ||
@@ -281,12 +281,13 @@ write_headers (SoupServerMessage *msg,
SoupMessageHeaders *response_headers;
SoupMessageBody *response_body;
- if (soup_server_message_get_status (msg, NULL) == 0)
+ if (soup_server_message_get_status (msg) == 0)
soup_server_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR, NULL);
handle_partial_get (msg);
- status_code = soup_server_message_get_status (msg, &reason_phrase);
+ status_code = soup_server_message_get_status (msg);
+ reason_phrase = soup_server_message_get_reason_phrase (msg);
g_string_append_printf (headers, "HTTP/1.%c %d %s\r\n",
soup_server_message_get_http_version (msg) == SOUP_HTTP_1_0 ? '0' : '1',
@@ -347,7 +348,7 @@ io_write (SoupServerMessage *msg,
switch (io->write_state) {
case SOUP_MESSAGE_IO_STATE_HEADERS:
- status_code = soup_server_message_get_status (msg, NULL);
+ status_code = soup_server_message_get_status (msg);
if (io->read_state == SOUP_MESSAGE_IO_STATE_BLOCKING && status_code == 0) {
/* Client requested "Expect: 100-continue", and
* server did not set an error.
@@ -372,7 +373,7 @@ io_write (SoupServerMessage *msg,
io->written = 0;
g_string_truncate (io->write_buf, 0);
- status_code = soup_server_message_get_status (msg, NULL);
+ status_code = soup_server_message_get_status (msg);
if (SOUP_STATUS_IS_INFORMATIONAL (status_code)) {
if (status_code == SOUP_STATUS_CONTINUE) {
/* Stop and wait for the body now */
diff --git a/libsoup/server/soup-server-message.c b/libsoup/server/soup-server-message.c
index 8f2423b5..bb9a6385 100644
--- a/libsoup/server/soup-server-message.c
+++ b/libsoup/server/soup-server-message.c
@@ -630,23 +630,34 @@ soup_server_message_set_http_version (SoupServerMessage *msg,
}
/**
+ * soup_server_message_get_reason_phrase:
+ * @msg: a #SoupServerMessage:
+ *
+ * Get the HTTP reason phrase of @msg or %NULL.
+ *
+ * Returns: the reason phrase.
+ */
+const char *
+soup_server_message_get_reason_phrase (SoupServerMessage *msg)
+{
+ g_return_val_if_fail (SOUP_IS_SERVER_MESSAGE (msg), NULL);
+
+ return msg->reason_phrase;
+}
+
+/**
* soup_server_message_get_status:
* @msg: a #SoupServerMessage
- * @reason_phrase: (out) (nullable) (transfer none): a location to store the reason phrase or %NULL
*
- * Get the HTTP status code of @msg and optionally the reason phrase if @reason_phrase is not %NULL.
+ * Get the HTTP status code of @msg.
*
* Returns: the HTTP status code.
*/
guint
-soup_server_message_get_status (SoupServerMessage *msg,
- const char **reason_phrase)
+soup_server_message_get_status (SoupServerMessage *msg)
{
g_return_val_if_fail (SOUP_IS_SERVER_MESSAGE (msg), 0);
- if (reason_phrase)
- *reason_phrase = msg->reason_phrase;
-
return msg->status_code;
}
diff --git a/libsoup/server/soup-server-message.h b/libsoup/server/soup-server-message.h
index d3f202d0..e47fc45c 100644
--- a/libsoup/server/soup-server-message.h
+++ b/libsoup/server/soup-server-message.h
@@ -39,8 +39,11 @@ void soup_server_message_set_http_version (SoupServerMessage
SoupHTTPVersion version);
SOUP_AVAILABLE_IN_ALL
-guint soup_server_message_get_status (SoupServerMessage *msg,
- const char **reason_phrase);
+const char *soup_server_message_get_reason_phrase (SoupServerMessage *msg);
+
+SOUP_AVAILABLE_IN_ALL
+guint soup_server_message_get_status (SoupServerMessage *msg);
+
SOUP_AVAILABLE_IN_ALL
void soup_server_message_set_status (SoupServerMessage *msg,
guint status_code,
diff --git a/libsoup/server/soup-server.c b/libsoup/server/soup-server.c
index f6cddf9c..7b415899 100644
--- a/libsoup/server/soup-server.c
+++ b/libsoup/server/soup-server.c
@@ -755,7 +755,7 @@ call_handler (SoupServer *server,
else if (!early && !handler->callback)
return;
- if (soup_server_message_get_status (msg, NULL) != 0)
+ if (soup_server_message_get_status (msg) != 0)
return;
uri = soup_server_message_get_uri (msg);
@@ -803,7 +803,7 @@ got_headers (SoupServer *server,
g_free (date_string);
g_date_time_unref (date);
- if (soup_server_message_get_status (msg, NULL) != 0)
+ if (soup_server_message_get_status (msg) != 0)
return;
sock = soup_server_message_get_soup_socket (msg);
@@ -915,7 +915,7 @@ got_body (SoupServer *server,
g_signal_emit (server, signals[REQUEST_READ], 0, msg);
- if (soup_server_message_get_status (msg, NULL) != 0)
+ if (soup_server_message_get_status (msg) != 0)
return;
handler = get_handler (server, msg);
@@ -925,7 +925,7 @@ got_body (SoupServer *server,
}
call_handler (server, handler, msg, FALSE);
- if (soup_server_message_get_status (msg, NULL) != 0)
+ if (soup_server_message_get_status (msg) != 0)
return;
if (handler->websocket_callback) {
@@ -952,7 +952,7 @@ client_disconnected (SoupServer *server,
priv->clients = g_slist_remove (priv->clients, msg);
- if (soup_server_message_get_status (msg, NULL) != 0)
+ if (soup_server_message_get_status (msg) != 0)
soup_server_message_io_finished (msg);
}
@@ -990,7 +990,7 @@ request_finished (SoupServerMessage *msg,
soup_server_message_finished (msg);
failed = (completion == SOUP_MESSAGE_IO_INTERRUPTED ||
- soup_server_message_get_status (msg, NULL) == SOUP_STATUS_INTERNAL_SERVER_ERROR);
+ soup_server_message_get_status (msg) == SOUP_STATUS_INTERNAL_SERVER_ERROR);
g_signal_emit (server,
failed ? signals[REQUEST_ABORTED] : signals[REQUEST_FINISHED],
0, msg);
diff --git a/tests/auth-test.c b/tests/auth-test.c
index 1ec1405d..305179d8 100644
--- a/tests/auth-test.c
+++ b/tests/auth-test.c
@@ -1188,7 +1188,7 @@ disappear_request_read (SoupServer *server,
/* Remove the WWW-Authenticate header if this was a failed attempt */
if (soup_message_headers_get_one (request_headers, "Authorization") &&
- soup_server_message_get_status (msg, NULL) == SOUP_STATUS_UNAUTHORIZED)
+ soup_server_message_get_status (msg) == SOUP_STATUS_UNAUTHORIZED)
soup_message_headers_remove (response_headers, "WWW-Authenticate");
}
diff --git a/tests/continue-test.c b/tests/continue-test.c
index ea91f84c..14c00ce2 100644
--- a/tests/continue-test.c
+++ b/tests/continue-test.c
@@ -33,8 +33,8 @@ server_event (SoupServerMessage *msg,
gboolean record_status =
(!strcmp (data, "server-wrote_headers") ||
!strcmp (data, "server-wrote_informational"));
- const char *reason_phrase;
- guint status_code = soup_server_message_get_status (msg, &reason_phrase);
+ const char *reason_phrase = soup_server_message_get_reason_phrase (msg);
+ guint status_code = soup_server_message_get_status (msg);
debug_printf (2, " %s", data);
if (record_status)
@@ -433,7 +433,7 @@ _server_got_headers (SoupServerMessage *msg,
guint status_code;
SoupMessageHeaders *request_headers;
- status_code = soup_server_message_get_status (msg, NULL);
+ status_code = soup_server_message_get_status (msg);
/* FIXME */
if (status_code != SOUP_STATUS_CONTINUE && status_code != 0)
return;
diff --git a/tests/websocket-test.c b/tests/websocket-test.c
index d045d966..714f77fb 100644
--- a/tests/websocket-test.c
+++ b/tests/websocket-test.c
@@ -679,7 +679,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), NULL);
+ soup_message_set_status (msg, soup_server_message_get_status (server_msg), 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))
@@ -749,7 +749,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), NULL);
+ soup_message_set_status (msg, soup_server_message_get_status (server_msg), NULL);
soup_test_assert_message_status (msg, SOUP_STATUS_BAD_REQUEST);
response_headers = soup_server_message_get_response_headers (server_msg);
@@ -812,7 +812,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), NULL);
+ soup_message_set_status (msg, soup_server_message_get_status (server_msg), 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))
@@ -874,7 +874,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), NULL);
+ soup_message_set_status (msg, soup_server_message_get_status (server_msg), 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))
@@ -1733,7 +1733,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), NULL);
+ soup_message_set_status (msg, soup_server_message_get_status (server_msg), 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))
@@ -1812,7 +1812,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), NULL);
+ soup_message_set_status (msg, soup_server_message_get_status (server_msg), 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))