summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Lampila <pekka.lampila@iki.fi>2008-06-13 10:17:43 +0300
committerPekka Lampila <pekka.lampila@iki.fi>2008-06-13 10:17:43 +0300
commit9610a4ccc0197154f15f6c261dd8361d885b6a57 (patch)
tree74b2fa054d6e5ac9c540028117ca90d7cd8100a7
parent8dcc593102512a803a19fb02a98e05e292276362 (diff)
Add support for sending headers to the loader
-rw-r--r--src/swfmoz_loader.c42
1 files changed, 39 insertions, 3 deletions
diff --git a/src/swfmoz_loader.c b/src/swfmoz_loader.c
index c7221a8..9decb51 100644
--- a/src/swfmoz_loader.c
+++ b/src/swfmoz_loader.c
@@ -47,10 +47,32 @@ swfmoz_loader_dispose (GObject *object)
G_OBJECT_CLASS (swfmoz_loader_parent_class)->dispose (object);
}
+static SwfdecBuffer *
+swfmoz_loader_format_headers (guint header_count, const char **header_names,
+ const char **header_values)
+{
+ GString *string;
+ guint i;
+ gsize len;
+
+ string = g_string_new ("");
+ for (i = 0; i < header_count; i++) {
+ g_string_append (string, header_names[i]);
+ g_string_append (string, ": ");
+ g_string_append (string, header_values[i]);
+ g_string_append (string, "\n");
+ }
+ g_string_append (string, "\n\n");
+
+ len = string->len;
+ return swfdec_buffer_new_for_data (
+ (unsigned char *)g_string_free (string, FALSE), len);
+}
+
static void
swfmoz_loader_load (SwfdecLoader *loader, SwfdecPlayer *player,
const char *url, SwfdecBuffer *buffer, guint header_count,
- const char **header_names, const char ** header_values)
+ const char **header_names, const char **header_values)
{
SwfmozPlayer *mozplay = SWFMOZ_PLAYER (player);
SwfmozLoader *moz = SWFMOZ_LOADER (loader);
@@ -63,9 +85,23 @@ swfmoz_loader_load (SwfdecLoader *loader, SwfdecPlayer *player,
} else {
g_object_ref (moz);
if (buffer) {
- plugin_post_url_notify (moz->instance, url, NULL, (char *)buffer->data,
- buffer->length, moz);
+ SwfdecBufferQueue *queue;
+ SwfdecBuffer *combined;
+
+ queue = swfdec_buffer_queue_new ();
+ swfdec_buffer_queue_push (queue, swfmoz_loader_format_headers (
+ header_count, header_names, header_values));
+ swfdec_buffer_queue_push (queue, swfdec_buffer_ref (buffer));
+
+ combined = swfdec_buffer_queue_pull (queue,
+ swfdec_buffer_queue_get_depth (queue));
+ plugin_post_url_notify (moz->instance, url, NULL, (char *)combined->data,
+ combined->length, moz);
+ swfdec_buffer_unref (combined);
+
+ swfdec_buffer_queue_unref (queue);
} else {
+ // FIXME: Impossible to set headers here?
plugin_get_url_notify (moz->instance, url, NULL, moz);
}
}