summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2007-08-01 15:19:20 -0400
committerSøren Sandmann <sandmann@redhat.com>2007-08-01 15:19:20 -0400
commit2e4ddb6f593155ef7fbd3d1095c8789ef4ac1271 (patch)
treecef705a210d287f8fd5e1caa63ff80ab0a88343c
parent86728957672c727903b5196ee0e12c0229cce404 (diff)
Restore request_emit_content to non-broken state
-rw-r--r--src/lachttp.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/src/lachttp.c b/src/lachttp.c
index 8ac79b5..f965e3b 100644
--- a/src/lachttp.c
+++ b/src/lachttp.c
@@ -1356,7 +1356,7 @@ request_emit_begin_content (LacHttpRequest *request,
}
static void
-request_emit_content (LacHttpRequest *request,
+request_emit_content_new (LacHttpRequest *request,
gsize length,
LacByteQueue *queue)
{
@@ -1396,6 +1396,45 @@ request_emit_content (LacHttpRequest *request,
}
static void
+request_emit_content (LacHttpRequest *request,
+ gsize length,
+ LacByteQueue *queue)
+{
+ gint bytes_to_emit;
+ LacHttpEvent *event = g_new (LacHttpEvent, 1);
+
+ if (!request->sent_begin_content)
+ request_emit_begin_content (request, -1);
+
+ bytes_to_emit = length;
+
+ if (request->n_content_bytes < request->n_ignore_bytes)
+ {
+ bytes_to_emit = length -
+ (request->n_ignore_bytes - request->n_content_bytes);
+ }
+
+ request->n_content_bytes += length;
+ if (bytes_to_emit > 0)
+ {
+ const gchar *data = lac_byte_queue_peek (queue, NULL);
+
+ data = data + (length - bytes_to_emit);
+
+ event->type = LAC_HTTP_EVENT_CONTENT;
+ event->content.length = length;
+#if 0
+ event->content.byte_queue = copy;
+#endif
+ event->content.data = g_memdup (data, length);
+
+ request_queue_event (request, event);
+ }
+
+ lac_byte_queue_delete_head (queue, length);
+}
+
+static void
request_emit_no_content (LacHttpRequest *request)
{
LacHttpEvent *event = g_new (LacHttpEvent, 1);