summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Griffis <pgriffis@igalia.com>2021-03-08 10:17:19 -0600
committerPatrick Griffis <pgriffis@igalia.com>2021-03-08 10:17:19 -0600
commit39ffd0a036fa696775d6142566b69bf8b94741b6 (patch)
tree7393878a33c07753cbd3515b066df3f0ba4bf452
parent0335eb08db86ff2eb8983cabcb4ca697d4ff6c07 (diff)
downloadlibsoup-pgriffis/pollable.tar.gz
Require SoupMessage request streams be pollablepgriffis/pollable
This is assumed for the HTTP2 backend and just makes things cleaner. Most streams are pollable anyway.
-rw-r--r--libsoup/soup-message-io.c4
-rw-r--r--libsoup/soup-message-private.h2
-rw-r--r--libsoup/soup-message.c22
-rw-r--r--libsoup/soup-message.h8
-rw-r--r--tests/request-body-test.c6
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);