diff options
author | Søren Sandmann <sandmann@redhat.com> | 2007-08-01 15:19:20 -0400 |
---|---|---|
committer | Søren Sandmann <sandmann@redhat.com> | 2007-08-01 15:19:20 -0400 |
commit | 2e4ddb6f593155ef7fbd3d1095c8789ef4ac1271 (patch) | |
tree | cef705a210d287f8fd5e1caa63ff80ab0a88343c | |
parent | 86728957672c727903b5196ee0e12c0229cce404 (diff) |
Restore request_emit_content to non-broken state
-rw-r--r-- | src/lachttp.c | 41 |
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); |