summaryrefslogtreecommitdiff
path: root/libsoup/soup-body-output-stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'libsoup/soup-body-output-stream.c')
-rw-r--r--libsoup/soup-body-output-stream.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/libsoup/soup-body-output-stream.c b/libsoup/soup-body-output-stream.c
index 499e8e6f..c0aeb458 100644
--- a/libsoup/soup-body-output-stream.c
+++ b/libsoup/soup-body-output-stream.c
@@ -118,7 +118,15 @@ soup_body_output_stream_wrote_data (SoupBodyOutputStream *bostream,
const void *buffer,
gsize count)
{
- g_signal_emit (bostream, signals[WROTE_DATA], 0, buffer, count);
+ g_signal_emit (bostream, signals[WROTE_DATA], 0, buffer, count, FALSE);
+}
+
+static void
+soup_body_output_stream_wrote_metadata (SoupBodyOutputStream *bostream,
+ const void *buffer,
+ gsize count)
+{
+ g_signal_emit (bostream, signals[WROTE_DATA], 0, buffer, count, TRUE);
}
static gssize
@@ -178,6 +186,9 @@ again:
nwrote = g_pollable_stream_write (priv->base_stream,
buf, len, blocking,
cancellable, error);
+ if (nwrote > 0)
+ soup_body_output_stream_wrote_metadata (bostream, buf, nwrote);
+
if (nwrote < 0)
return nwrote;
memmove (buf, buf + nwrote, len + 1 - nwrote);
@@ -341,9 +352,10 @@ soup_body_output_stream_class_init (SoupBodyOutputStreamClass *stream_class)
0,
NULL, NULL,
NULL,
- G_TYPE_NONE, 2,
+ G_TYPE_NONE, 3,
G_TYPE_POINTER,
- G_TYPE_UINT);
+ G_TYPE_UINT,
+ G_TYPE_BOOLEAN);
g_object_class_install_property (
object_class, PROP_ENCODING,