[libsoup/pgriffis/pollable] Require SoupMessage request streams be pollable This is assumed for the HTTP2 backend and just makes




commit 39ffd0a036fa696775d6142566b69bf8b94741b6
Author: Patrick Griffis <pgriffis igalia com>
Date:   Mon Mar 8 10:17:19 2021 -0600

    Require SoupMessage request streams be pollable
    This is assumed for the HTTP2 backend and just makes things cleaner.
    Most streams are pollable anyway.

 libsoup/soup-message-io.c      |  4 ++--
 libsoup/soup-message-private.h |  2 +-
 libsoup/soup-message.c         | 22 +++++++++++-----------
 libsoup/soup-message.h         |  8 ++++----
 tests/request-body-test.c      |  6 +++---
 5 files changed, 21 insertions(+), 21 deletions(-)
---
diff --git a/libsoup/soup-message-io.c b/libsoup/soup-message-io.c
index c4999df0..89579e44 100644
--- a/libsoup/soup-message-io.c
+++ b/libsoup/soup-message-io.c
@@ -382,7 +382,7 @@ io_write (SoupMessage *msg, gboolean blocking,
                                                 msg, G_CONNECT_SWAPPED);
                        if (blocking) {
                                nwrote = g_output_stream_splice (io->body_ostream,
-                                                                soup_message_get_request_body_stream (msg),
+                                                                G_INPUT_STREAM 
(soup_message_get_request_body_stream (msg)),
                                                                 G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE,
                                                                 cancellable,
                                                                 error);
@@ -393,7 +393,7 @@ io_write (SoupMessage *msg, gboolean blocking,
                        } else {
                                io->async_wait = g_cancellable_new ();
                                g_output_stream_splice_async (io->body_ostream,
-                                                             soup_message_get_request_body_stream (msg),
+                                                             G_INPUT_STREAM 
(soup_message_get_request_body_stream (msg)),
                                                              G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE,
                                                              soup_client_message_io_data_get_priority 
(client_io),
                                                              cancellable,
diff --git a/libsoup/soup-message-private.h b/libsoup/soup-message-private.h
index 4eb1a36d..35655d7d 100644
--- a/libsoup/soup-message-private.h
+++ b/libsoup/soup-message-private.h
@@ -132,7 +132,7 @@ void                soup_message_set_content_sniffer    (SoupMessage        *msg
 void                soup_message_set_bytes_for_sniffing (SoupMessage        *msg,
                                                         gsize               bytes);
 
-GInputStream       *soup_message_get_request_body_stream (SoupMessage        *msg);
+GPollableInputStream *soup_message_get_request_body_stream (SoupMessage        *msg);
 
 void                soup_message_set_reason_phrase       (SoupMessage        *msg,
                                                           const char         *reason_phrase);
diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c
index 73e7e003..50f3f222 100644
--- a/libsoup/soup-message.c
+++ b/libsoup/soup-message.c
@@ -63,10 +63,10 @@ typedef struct {
         SoupMessageHeaders *request_headers;
        SoupMessageHeaders *response_headers;
 
-       GInputStream      *request_body_stream;
-        const char        *method;
-        char              *reason_phrase;
-        SoupStatus         status_code;
+       GPollableInputStream *request_body_stream;
+        const char           *method;
+        char                 *reason_phrase;
+        SoupStatus            status_code;
 
        guint              msg_flags;
 
@@ -920,7 +920,7 @@ soup_message_new_from_multipart (const char    *uri_string,
  * soup_message_set_request_body:
  * @msg: the message
  * @content_type: (allow-none): MIME Content-Type of the body, or %NULL if unknown
- * @stream: (allow-none): a #GInputStream to read the request body from
+ * @stream: (allow-none): a #GPollableInputStream to read the request body from
  * @content_length: the byte length of @stream or -1 if unknown
  *
  * Set the request body of a #SoupMessage.
@@ -931,12 +931,12 @@ soup_message_new_from_multipart (const char    *uri_string,
  */
 void
 soup_message_set_request_body (SoupMessage  *msg,
-                               const char   *content_type,
-                               GInputStream *stream,
-                               gssize        content_length)
+                               const char           *content_type,
+                               GPollableInputStream *stream,
+                               gssize                content_length)
 {
         g_return_if_fail (SOUP_IS_MESSAGE (msg));
-        g_return_if_fail (stream == NULL || G_IS_INPUT_STREAM (stream));
+        g_return_if_fail (stream == NULL || G_IS_POLLABLE_INPUT_STREAM (stream));
         g_return_if_fail (content_length == -1 || content_length >= 0);
 
         SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
@@ -986,7 +986,7 @@ soup_message_set_request_body_from_bytes (SoupMessage  *msg,
                 GInputStream *stream;
 
                 stream = g_memory_input_stream_new_from_bytes (bytes);
-                soup_message_set_request_body (msg, content_type, stream, g_bytes_get_size (bytes));
+                soup_message_set_request_body (msg, content_type, G_POLLABLE_INPUT_STREAM (stream), 
g_bytes_get_size (bytes));
                 g_object_unref (stream);
         } else
                 soup_message_set_request_body (msg, NULL, NULL, 0);
@@ -2072,7 +2072,7 @@ soup_message_set_bytes_for_sniffing (SoupMessage *msg, gsize bytes)
        priv->bytes_for_sniffing = bytes;
 }
 
-GInputStream *
+GPollableInputStream *
 soup_message_get_request_body_stream (SoupMessage *msg)
 {
         SoupMessagePrivate *priv = soup_message_get_instance_private (msg);
diff --git a/libsoup/soup-message.h b/libsoup/soup-message.h
index 2cd2603a..454fa389 100644
--- a/libsoup/soup-message.h
+++ b/libsoup/soup-message.h
@@ -34,10 +34,10 @@ SoupMessage   *soup_message_new_from_multipart    (const char        *uri_string
                                                   SoupMultipart     *multipart);
 
 SOUP_AVAILABLE_IN_ALL
-void           soup_message_set_request_body    (SoupMessage       *msg,
-                                                const char        *content_type,
-                                                GInputStream      *stream,
-                                                gssize             content_length);
+void           soup_message_set_request_body    (SoupMessage          *msg,
+                                                const char           *content_type,
+                                                GPollableInputStream *stream,
+                                                gssize                content_length);
 SOUP_AVAILABLE_IN_ALL
 void           soup_message_set_request_body_from_bytes (SoupMessage  *msg,
                                                         const char   *content_type,
diff --git a/tests/request-body-test.c b/tests/request-body-test.c
index e5d9ffa1..5202e44a 100644
--- a/tests/request-body-test.c
+++ b/tests/request-body-test.c
@@ -12,7 +12,7 @@ static GUri *base_uri;
 
 typedef struct {
         SoupSession *session;
-        GInputStream *stream;
+        GPollableInputStream *stream;
         GBytes *bytes;
         const char *content_type;
         int nwrote;
@@ -71,7 +71,7 @@ setup_request_body (PutTestData     *ptd,
                 ptd->bytes = g_bytes_new_static (data, strlen (data));
                 g_checksum_update (check, (guchar *)data, strlen (data));
         }
-        ptd->stream = flags & BYTES ? NULL : g_memory_input_stream_new_from_bytes (ptd->bytes);
+        ptd->stream = flags & BYTES ? NULL : G_POLLABLE_INPUT_STREAM (g_memory_input_stream_new_from_bytes 
(ptd->bytes));
         ptd->content_type = flags & NO_CONTENT_TYPE ? NULL : "text/plain";
 
         return check;
@@ -90,7 +90,7 @@ restarted (SoupMessage *msg,
 
         if (ptd->stream) {
                 g_object_unref (ptd->stream);
-                ptd->stream = g_memory_input_stream_new_from_bytes (ptd->bytes);
+                ptd->stream = G_POLLABLE_INPUT_STREAM (g_memory_input_stream_new_from_bytes (ptd->bytes));
                 soup_message_set_request_body (msg, ptd->content_type, ptd->stream, -1);
         } else if (ptd->bytes) {
                 soup_message_set_request_body_from_bytes (msg, ptd->content_type, ptd->bytes);


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