summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2007-08-01 15:29:32 -0400
committerSøren Sandmann <sandmann@redhat.com>2007-08-01 15:29:32 -0400
commit84cf756d28597689e85b2e28a6aa5b0453832b9d (patch)
tree4b6886d4f4f3933763ea93e2cfc63fe86fd051a3
parent2e4ddb6f593155ef7fbd3d1095c8789ef4ac1271 (diff)
Fix bug in lac_byte_queue_transfer(); restore new emit_content()
-rw-r--r--src/lacbytequeue.c7
-rw-r--r--src/lachttp.c47
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);