[libsoup] Add soup_server_message_get_reason_phrase() to match SoupMessage



commit aaee0a9fa0f0a028eadc4618b741d6dc88550ff9
Author: Patrick Griffis <pgriffis igalia com>
Date:   Sat Jan 9 14:19:35 2021 -0600

    Add soup_server_message_get_reason_phrase() to match SoupMessage

 docs/reference/libsoup-3.0-sections.txt |  1 +
 libsoup/server/soup-server-io.c         | 11 ++++++-----
 libsoup/server/soup-server-message.c    | 25 ++++++++++++++++++-------
 libsoup/server/soup-server-message.h    |  7 +++++--
 libsoup/server/soup-server.c            | 12 ++++++------
 tests/auth-test.c                       |  2 +-
 tests/continue-test.c                   |  6 +++---
 tests/websocket-test.c                  | 12 ++++++------
 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
@@ -629,24 +629,35 @@ soup_server_message_set_http_version (SoupServerMessage *msg,
                 msg->orig_http_version = version;
 }
 
+/**
+ * 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))


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