diff options
author | Søren Sandmann <sandmann@redhat.com> | 2007-08-01 15:29:32 -0400 |
---|---|---|
committer | Søren Sandmann <sandmann@redhat.com> | 2007-08-01 15:29:32 -0400 |
commit | 84cf756d28597689e85b2e28a6aa5b0453832b9d (patch) | |
tree | 4b6886d4f4f3933763ea93e2cfc63fe86fd051a3 /src | |
parent | 2e4ddb6f593155ef7fbd3d1095c8789ef4ac1271 (diff) |
Fix bug in lac_byte_queue_transfer(); restore new emit_content()
Diffstat (limited to 'src')
-rw-r--r-- | src/lacbytequeue.c | 7 | ||||
-rw-r--r-- | src/lachttp.c | 47 |
2 files changed, 10 insertions, 44 deletions
diff --git a/src/lacbytequeue.c b/src/lacbytequeue.c index 23df1a9..504df0b 100644 --- a/src/lacbytequeue.c +++ b/src/lacbytequeue.c @@ -298,7 +298,14 @@ lac_byte_queue_transfer_data (LacByteQueue *dest, lac_byte_queue_append (dest, source, n_bytes); if (swap_contents) + { + lac_byte_queue_delete_tail (src, n_bytes); lac_byte_queue_swap_content (dest, src); + } + else + { + lac_byte_queue_delete_head (src, n_bytes); + } } else { diff --git a/src/lachttp.c b/src/lachttp.c index f965e3b..d650249 100644 --- a/src/lachttp.c +++ b/src/lachttp.c @@ -352,7 +352,7 @@ http_event_free (LacHttpEvent *event) break; case LAC_HTTP_EVENT_CONTENT: - g_free ((guint8 *)event->content.data); + lac_byte_queue_free (event->content.byte_queue, TRUE); break; case LAC_HTTP_EVENT_ERROR: @@ -1356,7 +1356,7 @@ request_emit_begin_content (LacHttpRequest *request, } static void -request_emit_content_new (LacHttpRequest *request, +request_emit_content (LacHttpRequest *request, gsize length, LacByteQueue *queue) { @@ -1384,57 +1384,16 @@ request_emit_content_new (LacHttpRequest *request, if (length > 0) { - const gchar *data = lac_byte_queue_peek (copy, NULL); - event->type = LAC_HTTP_EVENT_CONTENT; event->content.length = length; event->content.byte_queue = copy; - event->content.data = g_memdup (data, length); + event->content.data = lac_byte_queue_peek (copy, NULL); request_queue_event (request, event); } } 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); |