[Swfdec-commits] 7 commits - swfdec/compiler.c test/Makefile.am test/swfdec_test_function.c test/swfdec_test_http_request.c test/swfdec_test_http_request.h test/swfdec_test_http_server.c test/swfdec_test_http_server.h test/swfdec_test_initialize.as test/swfdec_test_initialize.h

Pekka Lampila medar at kemper.freedesktop.org
Fri Feb 1 16:47:06 PST 2008


 swfdec/compiler.c               |   15 +-
 test/Makefile.am                |    4 
 test/swfdec_test_function.c     |    2 
 test/swfdec_test_http_request.c |  256 ++++++++++++++++++++++++++++++++++++++++
 test/swfdec_test_http_request.h |   72 +++++++++++
 test/swfdec_test_http_server.c  |  199 +++++++++++++++++++++++++++++++
 test/swfdec_test_http_server.h  |   63 +++++++++
 test/swfdec_test_initialize.as  |   14 ++
 test/swfdec_test_initialize.h   |  126 ++++++++++++-------
 9 files changed, 701 insertions(+), 50 deletions(-)

New commits:
commit ec810576d1f88a3bb7ac61c4d934a93e2a757a6e
Merge: 5d60f67... 3f4498b...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Feb 1 13:22:08 2008 +0200

    Merge branch 'master' of ssh://medar@git.freedesktop.org/git/swfdec/swfdec

commit 5d60f671a970d34bca30baab67ad0dd695e6a2d0
Merge: f016461... 607f3ee...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Feb 1 13:10:02 2008 +0200

    Merge branch 'master' of ssh://medar@git.freedesktop.org/git/swfdec/swfdec

commit f0164613dc0faa58df1cb1b2426cefa7a6516287
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Feb 1 13:07:10 2008 +0200

    Fix couple of bugs in HTTPRequest and add headers property

diff --git a/test/swfdec_test_http_request.c b/test/swfdec_test_http_request.c
index 7c5b66a..9c204a1 100644
--- a/test/swfdec_test_http_request.c
+++ b/test/swfdec_test_http_request.c
@@ -79,6 +79,7 @@ swfdec_test_http_request_mark (SwfdecAsObject *object)
   SwfdecTestHTTPRequest *request = SWFDEC_TEST_HTTP_REQUEST (object);
 
   swfdec_as_object_mark (SWFDEC_AS_OBJECT (request->server));
+  swfdec_as_object_mark (SWFDEC_AS_OBJECT (request->headers));
 
   SWFDEC_AS_OBJECT_CLASS (swfdec_test_http_request_parent_class)->mark (object);
 }
@@ -119,8 +120,6 @@ swfdec_test_http_request_toString (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_VALUE_SET_STRING (retval,
       swfdec_as_context_give_string (cx, g_string_free (string, FALSE)));
-
-  soup_uri_free (uri);
 }
 
 SWFDEC_TEST_FUNCTION ("HTTPRequest_get_server", swfdec_test_http_request_get_server, 0)
@@ -150,8 +149,6 @@ swfdec_test_http_request_get_url (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_VALUE_SET_STRING (retval,
       swfdec_as_context_give_string (cx, soup_uri_to_string (uri, FALSE)));
-
-  soup_uri_free (uri);
 }
 
 SWFDEC_TEST_FUNCTION ("HTTPRequest_get_path", swfdec_test_http_request_get_path, 0)
@@ -168,8 +165,42 @@ swfdec_test_http_request_get_path (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_VALUE_SET_STRING (retval,
       swfdec_as_context_give_string (cx, soup_uri_to_string (uri, TRUE)));
+}
+
+static void
+swfdec_test_http_request_foreach_set_headers (const char *name,
+    const char *value, gpointer user_data)
+{
+  SwfdecTestHTTPRequest *request = user_data;
+  SwfdecAsContext *cx;
+  SwfdecAsValue val;
+
+  g_return_if_fail (SWFDEC_IS_AS_OBJECT (request->headers));
+
+  cx = request->headers->context;
+
+  SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_get_string (cx, value));
+  swfdec_as_object_set_variable (request->headers,
+      swfdec_as_context_get_string (cx, name), &val);
+}
+
+SWFDEC_TEST_FUNCTION ("HTTPRequest_get_headers", swfdec_test_http_request_get_headers, 0)
+void
+swfdec_test_http_request_get_headers (SwfdecAsContext *cx,
+    SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+    SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPRequest *request;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "");
+
+  if (!request->headers) {
+    request->headers = swfdec_as_object_new_empty (cx);
+    soup_message_headers_foreach (request->message->request_headers,
+	swfdec_test_http_request_foreach_set_headers, request);
+  }
 
-  soup_uri_free (uri);
+  SWFDEC_AS_VALUE_SET_OBJECT (retval, request->headers);
 }
 
 SWFDEC_TEST_FUNCTION ("HTTPRequest_push", swfdec_test_http_request_push, 0)
diff --git a/test/swfdec_test_http_request.h b/test/swfdec_test_http_request.h
index b244c97..e4b08ae 100644
--- a/test/swfdec_test_http_request.h
+++ b/test/swfdec_test_http_request.h
@@ -53,6 +53,8 @@ struct _SwfdecTestHTTPRequest
   SoupMessage *			message;
   gboolean			status_set;
   SwfdecTestHTTPRequestState	state;
+
+  SwfdecAsObject *		headers;
 };
 
 struct _SwfdecTestHTTPRequestClass
diff --git a/test/swfdec_test_initialize.as b/test/swfdec_test_initialize.as
index 4792b80..7f94b83 100644
--- a/test/swfdec_test_initialize.as
+++ b/test/swfdec_test_initialize.as
@@ -28,9 +28,10 @@ HTTPServer.prototype.getRequest = Native.HTTPServer_getRequest;
 
 HTTPRequest = new Object ();
 HTTPRequest.prototype = {};
-HTTPRequest.prototype.addProperty ("server", Native.HTTPRequest_get_server, NULL);
-HTTPRequest.prototype.addProperty ("url", Native.HTTPRequest_get_url, NULL);
-HTTPRequest.prototype.addProperty ("path", Native.HTTPRequest_get_path, NULL);
+HTTPRequest.prototype.addProperty ("server", Native.HTTPRequest_get_server, null);
+HTTPRequest.prototype.addProperty ("url", Native.HTTPRequest_get_url, null);
+HTTPRequest.prototype.addProperty ("path", Native.HTTPRequest_get_path, null);
+HTTPRequest.prototype.addProperty ("headers", Native.HTTPRequest_get_headers, null);
 HTTPRequest.prototype.toString = Native.HTTPRequest_toString;
 HTTPRequest.prototype.push = Native.HTTPRequest_push;
 HTTPRequest.prototype.close = Native.HTTPRequest_close;
diff --git a/test/swfdec_test_initialize.h b/test/swfdec_test_initialize.h
index 4587116..9b6c0c8 100644
--- a/test/swfdec_test_initialize.h
+++ b/test/swfdec_test_initialize.h
@@ -2,7 +2,7 @@
 
 /* compiled from swfdec_test_initialize.as */
 static const unsigned char swfdec_test_initialize[] = {
-  0x88, 0x03, 0x02, 0x30,  0x00, 0x49, 0x6D, 0x61,  0x67, 0x65, 0x00, 0x4E,  0x61, 0x74, 0x69, 0x76,
+  0x88, 0x1E, 0x02, 0x31,  0x00, 0x49, 0x6D, 0x61,  0x67, 0x65, 0x00, 0x4E,  0x61, 0x74, 0x69, 0x76,
   0x65, 0x00, 0x70, 0x72,  0x6F, 0x74, 0x6F, 0x74,  0x79, 0x70, 0x65, 0x00,  0x63, 0x6F, 0x6D, 0x70,
   0x61, 0x72, 0x65, 0x00,  0x49, 0x6D, 0x61, 0x67,  0x65, 0x5F, 0x63, 0x6F,  0x6D, 0x70, 0x61, 0x72,
   0x65, 0x00, 0x73, 0x61,  0x76, 0x65, 0x00, 0x49,  0x6D, 0x61, 0x67, 0x65,  0x5F, 0x73, 0x61, 0x76,
@@ -11,77 +11,80 @@ static const unsigned char swfdec_test_initialize[] = {
   0x65, 0x72, 0x5F, 0x67,  0x65, 0x74, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,  0x74, 0x00, 0x48, 0x54,
   0x54, 0x50, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,  0x74, 0x00, 0x4F, 0x62,  0x6A, 0x65, 0x63, 0x74,
   0x00, 0x73, 0x65, 0x72,  0x76, 0x65, 0x72, 0x00,  0x48, 0x54, 0x54, 0x50,  0x52, 0x65, 0x71, 0x75,
-  0x65, 0x73, 0x74, 0x5F,  0x67, 0x65, 0x74, 0x5F,  0x73, 0x65, 0x72, 0x76,  0x65, 0x72, 0x00, 0x4E,
-  0x55, 0x4C, 0x4C, 0x00,  0x61, 0x64, 0x64, 0x50,  0x72, 0x6F, 0x70, 0x65,  0x72, 0x74, 0x79, 0x00,
-  0x75, 0x72, 0x6C, 0x00,  0x48, 0x54, 0x54, 0x50,  0x52, 0x65, 0x71, 0x75,  0x65, 0x73, 0x74, 0x5F,
-  0x67, 0x65, 0x74, 0x5F,  0x75, 0x72, 0x6C, 0x00,  0x70, 0x61, 0x74, 0x68,  0x00, 0x48, 0x54, 0x54,
-  0x50, 0x52, 0x65, 0x71,  0x75, 0x65, 0x73, 0x74,  0x5F, 0x67, 0x65, 0x74,  0x5F, 0x70, 0x61, 0x74,
-  0x68, 0x00, 0x74, 0x6F,  0x53, 0x74, 0x72, 0x69,  0x6E, 0x67, 0x00, 0x48,  0x54, 0x54, 0x50, 0x52,
-  0x65, 0x71, 0x75, 0x65,  0x73, 0x74, 0x5F, 0x74,  0x6F, 0x53, 0x74, 0x72,  0x69, 0x6E, 0x67, 0x00,
-  0x70, 0x75, 0x73, 0x68,  0x00, 0x48, 0x54, 0x54,  0x50, 0x52, 0x65, 0x71,  0x75, 0x65, 0x73, 0x74,
-  0x5F, 0x70, 0x75, 0x73,  0x68, 0x00, 0x63, 0x6C,  0x6F, 0x73, 0x65, 0x00,  0x48, 0x54, 0x54, 0x50,
-  0x52, 0x65, 0x71, 0x75,  0x65, 0x73, 0x74, 0x5F,  0x63, 0x6C, 0x6F, 0x73,  0x65, 0x00, 0x54, 0x65,
-  0x73, 0x74, 0x00, 0x61,  0x64, 0x76, 0x61, 0x6E,  0x63, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
-  0x61, 0x64, 0x76, 0x61,  0x6E, 0x63, 0x65, 0x00,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,
-  0x76, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,
-  0x76, 0x65, 0x00, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x70, 0x72, 0x65,  0x73, 0x73, 0x00, 0x54,
-  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x70, 0x72,  0x65, 0x73, 0x73, 0x00,
-  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x72, 0x65,  0x6C, 0x65, 0x61, 0x73,  0x65, 0x00, 0x54, 0x65,
-  0x73, 0x74, 0x5F, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x72, 0x65, 0x6C,  0x65, 0x61, 0x73, 0x65,
-  0x00, 0x72, 0x65, 0x6E,  0x64, 0x65, 0x72, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x72, 0x65, 0x6E,
-  0x64, 0x65, 0x72, 0x00,  0x72, 0x65, 0x73, 0x65,  0x74, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x72,
-  0x65, 0x73, 0x65, 0x74,  0x00, 0x74, 0x72, 0x61,  0x63, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
-  0x74, 0x72, 0x61, 0x63,  0x65, 0x00, 0x72, 0x61,  0x74, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
-  0x67, 0x65, 0x74, 0x5F,  0x72, 0x61, 0x74, 0x65,  0x00, 0x70, 0x72, 0x69,  0x6E, 0x74, 0x00, 0x73,
-  0x00, 0x49, 0x4E, 0x46,  0x4F, 0x3A, 0x20, 0x00,  0x65, 0x72, 0x72, 0x6F,  0x72, 0x00, 0x45, 0x52,
-  0x52, 0x4F, 0x52, 0x3A,  0x20, 0x00, 0x96, 0x04,  0x00, 0x08, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x00, 0x4E,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x00, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x02,
-  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x00,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x03,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,
-  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x00, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,
-  0x00, 0x08, 0x05, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x06, 0x4E,  0x4F, 0x96, 0x04, 0x00,
-  0x08, 0x07, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x07, 0x4E, 0x1D,  0x96, 0x02, 0x00, 0x08,
-  0x07, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x02, 0x07,  0x00, 0x00, 0x00, 0x00,  0x43, 0x4F, 0x96, 0x02,
-  0x00, 0x08, 0x07, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x08, 0x08,
-  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x09, 0x4E,  0x4F, 0x96, 0x09, 0x00,  0x08, 0x0A, 0x07, 0x00,
-  0x00, 0x00, 0x00, 0x08,  0x0B, 0x40, 0x1D, 0x96,  0x02, 0x00, 0x08, 0x0A,  0x1C, 0x96, 0x07, 0x00,
-  0x08, 0x02, 0x07, 0x00,  0x00, 0x00, 0x00, 0x43,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x0E, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x0D, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x0C,
-  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x0A, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x02,
-  0x00, 0x08, 0x0F, 0x52,  0x17, 0x96, 0x02, 0x00,  0x08, 0x0E, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x01,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x11, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x10,  0x07, 0x03, 0x00, 0x00,
-  0x00, 0x08, 0x0A, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x0F, 0x52,
-  0x17, 0x96, 0x02, 0x00,  0x08, 0x0E, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x13, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x12,  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x0A, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x0F, 0x52,  0x17, 0x96, 0x02, 0x00,
-  0x08, 0x0A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x14, 0x08, 0x01,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x15, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x0A, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x16, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x17, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x0A,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,
-  0x04, 0x00, 0x08, 0x18,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x19,  0x4E, 0x4F, 0x96, 0x04,
-  0x00, 0x08, 0x1A, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x1A, 0x4E,  0x1D, 0x96, 0x02, 0x00,
-  0x08, 0x1A, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x02,  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,
-  0x02, 0x00, 0x08, 0x1A,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x1B,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x1C,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x1A, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x1D, 0x08,  0x01, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x1E, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x1A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,
-  0x4E, 0x96, 0x04, 0x00,  0x08, 0x1F, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x20, 0x4E, 0x4F,
-  0x96, 0x02, 0x00, 0x08,  0x1A, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,
-  0x21, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x22, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x1A,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x23,  0x08, 0x01, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x24,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x1A, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x25, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x26, 0x4E,
-  0x4F, 0x96, 0x02, 0x00,  0x08, 0x1A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,
-  0x08, 0x27, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x28, 0x4E, 0x4F,  0x96, 0x03, 0x00, 0x02,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x2A,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x29, 0x07, 0x03,
-  0x00, 0x00, 0x00, 0x08,  0x1A, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x02, 0x00, 0x08,
-  0x0F, 0x52, 0x17, 0x96,  0x02, 0x00, 0x08, 0x2B,  0x8E, 0x0B, 0x00, 0x00,  0x01, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x73, 0x00,  0x27, 0x00, 0x96, 0x02,  0x00, 0x08, 0x2C, 0x1C,  0x12, 0x9D, 0x02, 0x00,
-  0x1B, 0x00, 0x96, 0x04,  0x00, 0x08, 0x2D, 0x08,  0x2C, 0x1C, 0x47, 0x96,  0x07, 0x00, 0x07, 0x01,
-  0x00, 0x00, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x2B, 0x52,  0x17, 0x1D, 0x96, 0x02,
-  0x00, 0x08, 0x2E, 0x8E,  0x0B, 0x00, 0x00, 0x01,  0x00, 0x00, 0x00, 0x00,  0x00, 0x73, 0x00, 0x27,
-  0x00, 0x96, 0x02, 0x00,  0x08, 0x2C, 0x1C, 0x12,  0x9D, 0x02, 0x00, 0x1B,  0x00, 0x96, 0x04, 0x00,
-  0x08, 0x2F, 0x08, 0x2C,  0x1C, 0x47, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x01,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x2B, 0x52, 0x17,  0x1D, 0x00
+  0x65, 0x73, 0x74, 0x5F,  0x67, 0x65, 0x74, 0x5F,  0x73, 0x65, 0x72, 0x76,  0x65, 0x72, 0x00, 0x61,
+  0x64, 0x64, 0x50, 0x72,  0x6F, 0x70, 0x65, 0x72,  0x74, 0x79, 0x00, 0x75,  0x72, 0x6C, 0x00, 0x48,
+  0x54, 0x54, 0x50, 0x52,  0x65, 0x71, 0x75, 0x65,  0x73, 0x74, 0x5F, 0x67,  0x65, 0x74, 0x5F, 0x75,
+  0x72, 0x6C, 0x00, 0x70,  0x61, 0x74, 0x68, 0x00,  0x48, 0x54, 0x54, 0x50,  0x52, 0x65, 0x71, 0x75,
+  0x65, 0x73, 0x74, 0x5F,  0x67, 0x65, 0x74, 0x5F,  0x70, 0x61, 0x74, 0x68,  0x00, 0x68, 0x65, 0x61,
+  0x64, 0x65, 0x72, 0x73,  0x00, 0x48, 0x54, 0x54,  0x50, 0x52, 0x65, 0x71,  0x75, 0x65, 0x73, 0x74,
+  0x5F, 0x67, 0x65, 0x74,  0x5F, 0x68, 0x65, 0x61,  0x64, 0x65, 0x72, 0x73,  0x00, 0x74, 0x6F, 0x53,
+  0x74, 0x72, 0x69, 0x6E,  0x67, 0x00, 0x48, 0x54,  0x54, 0x50, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,
+  0x74, 0x5F, 0x74, 0x6F,  0x53, 0x74, 0x72, 0x69,  0x6E, 0x67, 0x00, 0x70,  0x75, 0x73, 0x68, 0x00,
+  0x48, 0x54, 0x54, 0x50,  0x52, 0x65, 0x71, 0x75,  0x65, 0x73, 0x74, 0x5F,  0x70, 0x75, 0x73, 0x68,
+  0x00, 0x63, 0x6C, 0x6F,  0x73, 0x65, 0x00, 0x48,  0x54, 0x54, 0x50, 0x52,  0x65, 0x71, 0x75, 0x65,
+  0x73, 0x74, 0x5F, 0x63,  0x6C, 0x6F, 0x73, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x00, 0x61, 0x64,
+  0x76, 0x61, 0x6E, 0x63,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x61,  0x64, 0x76, 0x61, 0x6E,
+  0x63, 0x65, 0x00, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x6D, 0x6F, 0x76,  0x65, 0x00, 0x54, 0x65,
+  0x73, 0x74, 0x5F, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x6D, 0x6F, 0x76,  0x65, 0x00, 0x6D, 0x6F,
+  0x75, 0x73, 0x65, 0x5F,  0x70, 0x72, 0x65, 0x73,  0x73, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x6D,
+  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x70, 0x72, 0x65,  0x73, 0x73, 0x00, 0x6D,  0x6F, 0x75, 0x73, 0x65,
+  0x5F, 0x72, 0x65, 0x6C,  0x65, 0x61, 0x73, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x6D, 0x6F,
+  0x75, 0x73, 0x65, 0x5F,  0x72, 0x65, 0x6C, 0x65,  0x61, 0x73, 0x65, 0x00,  0x72, 0x65, 0x6E, 0x64,
+  0x65, 0x72, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,  0x72, 0x65, 0x6E, 0x64,  0x65, 0x72, 0x00, 0x72,
+  0x65, 0x73, 0x65, 0x74,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x72, 0x65,  0x73, 0x65, 0x74, 0x00,
+  0x74, 0x72, 0x61, 0x63,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x74,  0x72, 0x61, 0x63, 0x65,
+  0x00, 0x72, 0x61, 0x74,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x67,  0x65, 0x74, 0x5F, 0x72,
+  0x61, 0x74, 0x65, 0x00,  0x70, 0x72, 0x69, 0x6E,  0x74, 0x00, 0x73, 0x00,  0x49, 0x4E, 0x46, 0x4F,
+  0x3A, 0x20, 0x00, 0x65,  0x72, 0x72, 0x6F, 0x72,  0x00, 0x45, 0x52, 0x52,  0x4F, 0x52, 0x3A, 0x20,
+  0x00, 0x96, 0x04, 0x00,  0x08, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x00, 0x4E, 0x1D,
+  0x96, 0x02, 0x00, 0x08,  0x00, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x02, 0x07,  0x00, 0x00, 0x00, 0x00,
+  0x43, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x00, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,
+  0x00, 0x08, 0x03, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x4F, 0x96, 0x02, 0x00,
+  0x08, 0x00, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x05, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x06, 0x4E, 0x4F,  0x96, 0x04, 0x00, 0x08,  0x07, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x07, 0x4E, 0x1D, 0x96,  0x02, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x07, 0x00,
+  0x08, 0x02, 0x07, 0x00,  0x00, 0x00, 0x00, 0x43,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x07, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x08, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x09, 0x4E, 0x4F,  0x96, 0x09, 0x00, 0x08,  0x0A, 0x07, 0x00, 0x00,  0x00, 0x00, 0x08, 0x0B,
+  0x40, 0x1D, 0x96, 0x02,  0x00, 0x08, 0x0A, 0x1C,  0x96, 0x07, 0x00, 0x08,  0x02, 0x07, 0x00, 0x00,
+  0x00, 0x00, 0x43, 0x4F,  0x96, 0x03, 0x00, 0x02,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0D,
+  0x4E, 0x96, 0x09, 0x00,  0x08, 0x0C, 0x07, 0x03,  0x00, 0x00, 0x00, 0x08,  0x0A, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x02, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x0E, 0x52, 0x17, 0x96,  0x03, 0x00, 0x02, 0x08,
+  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x10, 0x4E,  0x96, 0x09, 0x00, 0x08,  0x0F, 0x07, 0x03, 0x00,
+  0x00, 0x00, 0x08, 0x0A,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x0E,
+  0x52, 0x17, 0x96, 0x03,  0x00, 0x02, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x12, 0x4E, 0x96,
+  0x09, 0x00, 0x08, 0x11,  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x0A, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x02, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x0E, 0x52,  0x17, 0x96, 0x03, 0x00,  0x02, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x14, 0x4E, 0x96, 0x09,  0x00, 0x08, 0x13, 0x07,  0x03, 0x00, 0x00, 0x00,
+  0x08, 0x0A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x0E, 0x52, 0x17,
+  0x96, 0x02, 0x00, 0x08,  0x0A, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,
+  0x15, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x16, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x0A,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x17,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x18,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x0A, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x19, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x1A, 0x4E,
+  0x4F, 0x96, 0x04, 0x00,  0x08, 0x1B, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x1B, 0x4E, 0x1D,
+  0x96, 0x02, 0x00, 0x08,  0x1B, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x02, 0x07,  0x00, 0x00, 0x00, 0x00,
+  0x43, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x1B, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,
+  0x00, 0x08, 0x1C, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x1D, 0x4E,  0x4F, 0x96, 0x02, 0x00,
+  0x08, 0x1B, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x1E, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x1F, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x1B, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x20, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x21, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x1B,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,
+  0x04, 0x00, 0x08, 0x22,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x23,  0x4E, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x1B, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x24, 0x08,
+  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x25, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x1B, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x26, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x27, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x1B, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,
+  0x96, 0x04, 0x00, 0x08,  0x28, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x29, 0x4E, 0x4F, 0x96,
+  0x03, 0x00, 0x02, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x2B, 0x4E,  0x96, 0x09, 0x00, 0x08,
+  0x2A, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x1B,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,
+  0x02, 0x00, 0x08, 0x0E,  0x52, 0x17, 0x96, 0x02,  0x00, 0x08, 0x2C, 0x8E,  0x0B, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x00,  0x00, 0x73, 0x00, 0x27,  0x00, 0x96, 0x02, 0x00,  0x08, 0x2D, 0x1C, 0x12,
+  0x9D, 0x02, 0x00, 0x1B,  0x00, 0x96, 0x04, 0x00,  0x08, 0x2E, 0x08, 0x2D,  0x1C, 0x47, 0x96, 0x07,
+  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x2C, 0x52, 0x17,
+  0x1D, 0x96, 0x02, 0x00,  0x08, 0x2F, 0x8E, 0x0B,  0x00, 0x00, 0x01, 0x00,  0x00, 0x00, 0x00, 0x00,
+  0x73, 0x00, 0x27, 0x00,  0x96, 0x02, 0x00, 0x08,  0x2D, 0x1C, 0x12, 0x9D,  0x02, 0x00, 0x1B, 0x00,
+  0x96, 0x04, 0x00, 0x08,  0x30, 0x08, 0x2D, 0x1C,  0x47, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,
+  0x00, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x2C, 0x52, 0x17, 0x1D,  0x00
 };
 
commit 7830ba56d271c06d4398e3b74b415999cf7b30f9
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Feb 1 12:24:01 2008 +0200

    Add state to HTTPRequest to disallow some things after message has been sent

diff --git a/test/swfdec_test_http_request.c b/test/swfdec_test_http_request.c
index 40a76e5..7c5b66a 100644
--- a/test/swfdec_test_http_request.c
+++ b/test/swfdec_test_http_request.c
@@ -50,8 +50,10 @@ swfdec_test_http_request_new (SwfdecAsContext *context,
   if (SWFDEC_AS_VALUE_IS_OBJECT (&val))
     swfdec_as_object_set_constructor (ret, SWFDEC_AS_VALUE_GET_OBJECT (&val));
 
-  SWFDEC_TEST_HTTP_REQUEST (ret)->message = message;
   SWFDEC_TEST_HTTP_REQUEST (ret)->server = server;
+  SWFDEC_TEST_HTTP_REQUEST (ret)->message = message;
+  SWFDEC_TEST_HTTP_REQUEST (ret)->state =
+    SWFDEC_TEST_HTTP_REQUEST_STATE_WAITING;
 
   return ret;
 }
@@ -65,9 +67,6 @@ swfdec_test_http_request_dispose (GObject *object)
 {
   SwfdecTestHTTPRequest *request = SWFDEC_TEST_HTTP_REQUEST (object);
 
-  soup_message_set_status (request->message, SOUP_STATUS_INTERNAL_SERVER_ERROR);
-  soup_server_unpause_message (request->server->server, request->message);
-
   g_object_unref (request->message);
   request->message = NULL;
 
@@ -183,6 +182,9 @@ swfdec_test_http_request_push (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "s", &data);
 
+  if (request->state > SWFDEC_TEST_HTTP_REQUEST_STATE_SENDING)
+    return;
+
   if (!request->status_set) {
     soup_message_set_status (request->message, SOUP_STATUS_OK);
     request->status_set = TRUE;
@@ -193,6 +195,8 @@ swfdec_test_http_request_push (SwfdecAsContext *cx, SwfdecAsObject *object,
   soup_server_unpause_message (request->server->server, request->message);
 
   swfdec_test_http_server_run (request->server);
+
+  request->state = SWFDEC_TEST_HTTP_REQUEST_STATE_SENDING;
 }
 
 SWFDEC_TEST_FUNCTION ("HTTPRequest_close", swfdec_test_http_request_close, 0)
@@ -204,6 +208,9 @@ swfdec_test_http_request_close (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "");
 
+  if (request->state == SWFDEC_TEST_HTTP_REQUEST_STATE_SENT)
+    return;
+
   if (!request->status_set) {
     soup_message_set_status (request->message, SOUP_STATUS_OK);
     request->status_set = TRUE;
@@ -213,4 +220,6 @@ swfdec_test_http_request_close (SwfdecAsContext *cx, SwfdecAsObject *object,
   soup_server_unpause_message (request->server->server, request->message);
 
   swfdec_test_http_server_run (request->server);
+
+  request->state = SWFDEC_TEST_HTTP_REQUEST_STATE_SENT;
 }
diff --git a/test/swfdec_test_http_request.h b/test/swfdec_test_http_request.h
index 3ee2a53..b244c97 100644
--- a/test/swfdec_test_http_request.h
+++ b/test/swfdec_test_http_request.h
@@ -32,6 +32,12 @@ G_BEGIN_DECLS
 typedef struct _SwfdecTestHTTPRequest SwfdecTestHTTPRequest;
 typedef struct _SwfdecTestHTTPRequestClass SwfdecTestHTTPRequestClass;
 
+typedef enum {
+  SWFDEC_TEST_HTTP_REQUEST_STATE_WAITING,
+  SWFDEC_TEST_HTTP_REQUEST_STATE_SENDING,
+  SWFDEC_TEST_HTTP_REQUEST_STATE_SENT
+} SwfdecTestHTTPRequestState;
+
 #define SWFDEC_TYPE_TEST_HTTP_REQUEST                    (swfdec_test_http_request_get_type())
 #define SWFDEC_IS_TEST_HTTP_REQUEST(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_TEST_HTTP_REQUEST))
 #define SWFDEC_IS_TEST_HTTP_REQUEST_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_TEST_HTTP_REQUEST))
@@ -46,6 +52,7 @@ struct _SwfdecTestHTTPRequest
   SwfdecTestHTTPServer *	server;
   SoupMessage *			message;
   gboolean			status_set;
+  SwfdecTestHTTPRequestState	state;
 };
 
 struct _SwfdecTestHTTPRequestClass
commit af73f79b0e5e7df40e654a2ea0881d23bcdd23cf
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Thu Jan 31 23:56:30 2008 +0200

    Continue implementing HTTP server for the test system
    
    Progress on HTTPServer class
    Added HTTPRequest class

diff --git a/test/Makefile.am b/test/Makefile.am
index dec3a3f..398f442 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -6,6 +6,7 @@ swfdec_test_sources = \
 	swfdec_test.c \
 	swfdec_test_function.c \
 	swfdec_test_global.c \
+	swfdec_test_http_request.c \
 	swfdec_test_http_server.c \
 	swfdec_test_image.c \
 	swfdec_test_test.c
@@ -26,6 +27,7 @@ EXTRA_DIST = \
 noinst_HEADERS = \
 	swfdec_test_function.h \
 	swfdec_test_function_list.h \
+	swfdec_test_http_request.h \
 	swfdec_test_http_server.h \
 	swfdec_test_image.h \
 	swfdec_test_initialize.h \
diff --git a/test/swfdec_test_function.c b/test/swfdec_test_function.c
index 81e77e6..9c5a510 100644
--- a/test/swfdec_test_function.c
+++ b/test/swfdec_test_function.c
@@ -25,6 +25,7 @@
 #include "swfdec_test_function_list.h"
 
 /* needed by the function list */
+#include "swfdec_test_http_request.h"
 #include "swfdec_test_http_server.h"
 #include "swfdec_test_image.h"
 #include "swfdec_test_test.h"
diff --git a/test/swfdec_test_http_request.c b/test/swfdec_test_http_request.c
new file mode 100644
index 0000000..40a76e5
--- /dev/null
+++ b/test/swfdec_test_http_request.c
@@ -0,0 +1,216 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *               2008 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include "swfdec_test_http_request.h"
+#include "swfdec_test_http_server.h"
+#include "swfdec_test_function.h"
+
+SwfdecAsObject *
+swfdec_test_http_request_new (SwfdecAsContext *context,
+    SwfdecTestHTTPServer *server, SoupMessage *message)
+{
+  SwfdecAsValue val;
+  SwfdecAsObject *ret;
+
+  g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), NULL);
+  g_return_val_if_fail (SWFDEC_IS_TEST_HTTP_SERVER (server), NULL);
+  g_return_val_if_fail (SOUP_IS_MESSAGE (message), NULL);
+
+  if (!swfdec_as_context_use_mem (context, sizeof (SwfdecTestHTTPRequest)))
+    return NULL;
+
+  ret = g_object_new (SWFDEC_TYPE_TEST_HTTP_REQUEST, NULL);
+  swfdec_as_object_add (ret, context, sizeof (SwfdecTestHTTPRequest));
+  swfdec_as_object_get_variable (context->global,
+      swfdec_as_context_get_string (context, "HTTPRequest"), &val);
+
+  if (SWFDEC_AS_VALUE_IS_OBJECT (&val))
+    swfdec_as_object_set_constructor (ret, SWFDEC_AS_VALUE_GET_OBJECT (&val));
+
+  SWFDEC_TEST_HTTP_REQUEST (ret)->message = message;
+  SWFDEC_TEST_HTTP_REQUEST (ret)->server = server;
+
+  return ret;
+}
+
+/*** SWFDEC_TEST_HTTP_REQUEST ***/
+
+G_DEFINE_TYPE (SwfdecTestHTTPRequest, swfdec_test_http_request, SWFDEC_TYPE_AS_OBJECT)
+
+static void
+swfdec_test_http_request_dispose (GObject *object)
+{
+  SwfdecTestHTTPRequest *request = SWFDEC_TEST_HTTP_REQUEST (object);
+
+  soup_message_set_status (request->message, SOUP_STATUS_INTERNAL_SERVER_ERROR);
+  soup_server_unpause_message (request->server->server, request->message);
+
+  g_object_unref (request->message);
+  request->message = NULL;
+
+  G_OBJECT_CLASS (swfdec_test_http_request_parent_class)->dispose (object);
+}
+
+static void
+swfdec_test_http_request_mark (SwfdecAsObject *object)
+{
+  SwfdecTestHTTPRequest *request = SWFDEC_TEST_HTTP_REQUEST (object);
+
+  swfdec_as_object_mark (SWFDEC_AS_OBJECT (request->server));
+
+  SWFDEC_AS_OBJECT_CLASS (swfdec_test_http_request_parent_class)->mark (object);
+}
+
+static void
+swfdec_test_http_request_class_init (SwfdecTestHTTPRequestClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  SwfdecAsObjectClass *asobject_class = SWFDEC_AS_OBJECT_CLASS (klass);
+
+  object_class->dispose = swfdec_test_http_request_dispose;
+  asobject_class->mark = swfdec_test_http_request_mark;
+}
+
+static void
+swfdec_test_http_request_init (SwfdecTestHTTPRequest *this)
+{
+}
+
+/*** AS CODE ***/
+
+SWFDEC_TEST_FUNCTION ("HTTPRequest_toString", swfdec_test_http_request_toString, 0)
+void
+swfdec_test_http_request_toString (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPRequest *request;
+  GString *string;
+  SoupURI *uri;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "");
+
+  string = g_string_new (request->message->method);
+  string = g_string_append (string, " ");
+
+  uri = soup_message_get_uri (request->message);
+  string = g_string_append (string, soup_uri_to_string (uri, FALSE));
+
+  SWFDEC_AS_VALUE_SET_STRING (retval,
+      swfdec_as_context_give_string (cx, g_string_free (string, FALSE)));
+
+  soup_uri_free (uri);
+}
+
+SWFDEC_TEST_FUNCTION ("HTTPRequest_get_server", swfdec_test_http_request_get_server, 0)
+void
+swfdec_test_http_request_get_server (SwfdecAsContext *cx,
+    SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+    SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPRequest *request;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "");
+
+  SWFDEC_AS_VALUE_SET_OBJECT (retval, SWFDEC_AS_OBJECT (request->server));
+}
+
+SWFDEC_TEST_FUNCTION ("HTTPRequest_get_url", swfdec_test_http_request_get_url, 0)
+void
+swfdec_test_http_request_get_url (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPRequest *request;
+  SoupURI *uri;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "");
+
+  uri = soup_message_get_uri (request->message);
+
+  SWFDEC_AS_VALUE_SET_STRING (retval,
+      swfdec_as_context_give_string (cx, soup_uri_to_string (uri, FALSE)));
+
+  soup_uri_free (uri);
+}
+
+SWFDEC_TEST_FUNCTION ("HTTPRequest_get_path", swfdec_test_http_request_get_path, 0)
+void
+swfdec_test_http_request_get_path (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPRequest *request;
+  SoupURI *uri;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "");
+
+  uri = soup_message_get_uri (request->message);
+
+  SWFDEC_AS_VALUE_SET_STRING (retval,
+      swfdec_as_context_give_string (cx, soup_uri_to_string (uri, TRUE)));
+
+  soup_uri_free (uri);
+}
+
+SWFDEC_TEST_FUNCTION ("HTTPRequest_push", swfdec_test_http_request_push, 0)
+void
+swfdec_test_http_request_push (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPRequest *request;
+  const char *data;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "s", &data);
+
+  if (!request->status_set) {
+    soup_message_set_status (request->message, SOUP_STATUS_OK);
+    request->status_set = TRUE;
+  }
+
+  soup_message_body_append (request->message->response_body, SOUP_MEMORY_COPY,
+      data, strlen (data));
+  soup_server_unpause_message (request->server->server, request->message);
+
+  swfdec_test_http_server_run (request->server);
+}
+
+SWFDEC_TEST_FUNCTION ("HTTPRequest_close", swfdec_test_http_request_close, 0)
+void
+swfdec_test_http_request_close (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPRequest *request;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_REQUEST, &request, "");
+
+  if (!request->status_set) {
+    soup_message_set_status (request->message, SOUP_STATUS_OK);
+    request->status_set = TRUE;
+  }
+
+  soup_message_body_complete (request->message->response_body);
+  soup_server_unpause_message (request->server->server, request->message);
+
+  swfdec_test_http_server_run (request->server);
+}
diff --git a/test/swfdec_test_http_request.h b/test/swfdec_test_http_request.h
new file mode 100644
index 0000000..3ee2a53
--- /dev/null
+++ b/test/swfdec_test_http_request.h
@@ -0,0 +1,63 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *               2008 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+#ifndef _SWFDEC_TEST_HTTP_REQUEST_H_
+#define _SWFDEC_TEST_HTTP_REQUEST_H_
+
+#include <swfdec/swfdec.h>
+#include <libsoup/soup.h>
+
+#include "swfdec_test_http_server.h"
+
+G_BEGIN_DECLS
+
+
+typedef struct _SwfdecTestHTTPRequest SwfdecTestHTTPRequest;
+typedef struct _SwfdecTestHTTPRequestClass SwfdecTestHTTPRequestClass;
+
+#define SWFDEC_TYPE_TEST_HTTP_REQUEST                    (swfdec_test_http_request_get_type())
+#define SWFDEC_IS_TEST_HTTP_REQUEST(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_TEST_HTTP_REQUEST))
+#define SWFDEC_IS_TEST_HTTP_REQUEST_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_TEST_HTTP_REQUEST))
+#define SWFDEC_TEST_HTTP_REQUEST(obj)                    (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWFDEC_TYPE_TEST_HTTP_REQUEST, SwfdecTestHTTPRequest))
+#define SWFDEC_TEST_HTTP_REQUEST_CLASS(klass)            (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_TEST_HTTP_REQUEST, SwfdecTestHTTPRequestClass))
+#define SWFDEC_TEST_HTTP_REQUEST_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_TEST_HTTP_REQUEST, SwfdecTestHTTPRequestClass))
+
+struct _SwfdecTestHTTPRequest
+{
+  SwfdecAsObject		as_object;
+
+  SwfdecTestHTTPServer *	server;
+  SoupMessage *			message;
+  gboolean			status_set;
+};
+
+struct _SwfdecTestHTTPRequestClass
+{
+  SwfdecAsObjectClass	as_object_class;
+};
+
+GType		swfdec_test_http_request_get_type	(void);
+
+SwfdecAsObject *swfdec_test_http_request_new		(SwfdecAsContext *	context,
+							 SwfdecTestHTTPServer *	server,
+							 SoupMessage *		message);
+
+G_END_DECLS
+#endif
diff --git a/test/swfdec_test_http_server.c b/test/swfdec_test_http_server.c
index 839e66c..d6b65be 100644
--- a/test/swfdec_test_http_server.c
+++ b/test/swfdec_test_http_server.c
@@ -1,5 +1,6 @@
 /* Swfdec
  * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *               2008 Pekka Lampila <pekka.lampila at iki.fi>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -25,18 +26,30 @@
 #include <libsoup/soup.h>
 
 #include "swfdec_test_http_server.h"
+#include "swfdec_test_http_request.h"
 #include "swfdec_test_function.h"
 
 #define SWFDEC_TEST_HTTP_SERVER_IS_VALID(server) ((server)->server)
 
 static void
-swfdec_test_http_server_callback (SoupServer *soup_server, SoupMessage *msg,
-    const char *path, GHashTable *query, SoupClientContext *client,
-    gpointer userdata)
+swfdec_test_http_server_callback (SoupServer *soup_server,
+    SoupMessage *message, const char *path, GHashTable *query,
+    SoupClientContext *client, gpointer userdata)
 {
   SwfdecTestHTTPServer *server = userdata;
 
   g_return_if_fail (server->server == soup_server);
+
+  soup_message_headers_set_encoding (message->response_headers,
+      SOUP_ENCODING_CHUNKED);
+
+  g_queue_push_head (server->messages, g_object_ref (message));
+}
+
+void
+swfdec_test_http_server_run (SwfdecTestHTTPServer *server)
+{
+  while (g_main_context_iteration (server->context, FALSE));
 }
 
 static gboolean
@@ -105,6 +118,7 @@ swfdec_test_http_server_dispose (GObject *object)
 
   if (server->server) {
     soup_server_quit (server->server);
+    g_object_unref (server->server);
     server->server = NULL;
   }
 
@@ -113,6 +127,8 @@ swfdec_test_http_server_dispose (GObject *object)
     server->context = NULL;
   }
 
+  g_queue_free (server->messages);
+
   G_OBJECT_CLASS (swfdec_test_http_server_parent_class)->dispose (object);
 }
 
@@ -125,8 +141,9 @@ swfdec_test_http_server_class_init (SwfdecTestHTTPServerClass *klass)
 }
 
 static void
-swfdec_test_http_server_init (SwfdecTestHTTPServer *this)
+swfdec_test_http_server_init (SwfdecTestHTTPServer *server)
 {
+  server->messages = g_queue_new ();
 }
 
 /*** AS CODE ***/
@@ -146,9 +163,21 @@ swfdec_test_http_server_get_request (SwfdecAsContext *cx,
   if (!SWFDEC_TEST_HTTP_SERVER_IS_VALID (server))
     return;
 
-  g_main_context_iteration (server->context, FALSE);
+  if (g_queue_is_empty (server->messages)) {
+    g_print ("waiting\n");
+    usleep (1000000);
+    g_print ("checking\n");
+    swfdec_test_http_server_run (server);
+  }
+
+  if (!g_queue_is_empty (server->messages)) {
+    SwfdecAsObject *request;
 
-  SWFDEC_AS_VALUE_SET_BOOLEAN (retval, TRUE);
+    request = swfdec_test_http_request_new (cx, server,
+	g_queue_pop_tail (server->messages));
+
+    SWFDEC_AS_VALUE_SET_OBJECT (retval, request);
+  }
 }
 
 SWFDEC_TEST_FUNCTION ("HTTPServer", swfdec_test_http_server_create, swfdec_test_http_server_get_type)
diff --git a/test/swfdec_test_http_server.h b/test/swfdec_test_http_server.h
index 7ec52a4..ad6907d 100644
--- a/test/swfdec_test_http_server.h
+++ b/test/swfdec_test_http_server.h
@@ -1,5 +1,6 @@
 /* Swfdec
  * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *               2008 Pekka Lampila <pekka.lampila at iki.fi>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -44,7 +45,7 @@ struct _SwfdecTestHTTPServer
   SoupServer *		server;
   guint			port;
 
-  SoupMessage *		message;
+  GQueue *		messages;	// SoupMessage **
 };
 
 struct _SwfdecTestHTTPServerClass
@@ -56,6 +57,7 @@ GType		swfdec_test_http_server_get_type	(void);
 
 SwfdecAsObject *swfdec_test_http_server_new		(SwfdecAsContext *	context,
 							 guint			port);
+void		swfdec_test_http_server_run		(SwfdecTestHTTPServer *	server);
 
 G_END_DECLS
 #endif
diff --git a/test/swfdec_test_initialize.as b/test/swfdec_test_initialize.as
index 97bebc8..4792b80 100644
--- a/test/swfdec_test_initialize.as
+++ b/test/swfdec_test_initialize.as
@@ -28,7 +28,10 @@ HTTPServer.prototype.getRequest = Native.HTTPServer_getRequest;
 
 HTTPRequest = new Object ();
 HTTPRequest.prototype = {};
+HTTPRequest.prototype.addProperty ("server", Native.HTTPRequest_get_server, NULL);
 HTTPRequest.prototype.addProperty ("url", Native.HTTPRequest_get_url, NULL);
+HTTPRequest.prototype.addProperty ("path", Native.HTTPRequest_get_path, NULL);
+HTTPRequest.prototype.toString = Native.HTTPRequest_toString;
 HTTPRequest.prototype.push = Native.HTTPRequest_push;
 HTTPRequest.prototype.close = Native.HTTPRequest_close;
 
diff --git a/test/swfdec_test_initialize.h b/test/swfdec_test_initialize.h
index 437b948..4587116 100644
--- a/test/swfdec_test_initialize.h
+++ b/test/swfdec_test_initialize.h
@@ -2,7 +2,7 @@
 
 /* compiled from swfdec_test_initialize.as */
 static const unsigned char swfdec_test_initialize[] = {
-  0x88, 0xAD, 0x01, 0x2A,  0x00, 0x49, 0x6D, 0x61,  0x67, 0x65, 0x00, 0x4E,  0x61, 0x74, 0x69, 0x76,
+  0x88, 0x03, 0x02, 0x30,  0x00, 0x49, 0x6D, 0x61,  0x67, 0x65, 0x00, 0x4E,  0x61, 0x74, 0x69, 0x76,
   0x65, 0x00, 0x70, 0x72,  0x6F, 0x74, 0x6F, 0x74,  0x79, 0x70, 0x65, 0x00,  0x63, 0x6F, 0x6D, 0x70,
   0x61, 0x72, 0x65, 0x00,  0x49, 0x6D, 0x61, 0x67,  0x65, 0x5F, 0x63, 0x6F,  0x6D, 0x70, 0x61, 0x72,
   0x65, 0x00, 0x73, 0x61,  0x76, 0x65, 0x00, 0x49,  0x6D, 0x61, 0x67, 0x65,  0x5F, 0x73, 0x61, 0x76,
@@ -10,66 +10,78 @@ static const unsigned char swfdec_test_initialize[] = {
   0x52, 0x65, 0x71, 0x75,  0x65, 0x73, 0x74, 0x00,  0x48, 0x54, 0x54, 0x50,  0x53, 0x65, 0x72, 0x76,
   0x65, 0x72, 0x5F, 0x67,  0x65, 0x74, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,  0x74, 0x00, 0x48, 0x54,
   0x54, 0x50, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,  0x74, 0x00, 0x4F, 0x62,  0x6A, 0x65, 0x63, 0x74,
-  0x00, 0x75, 0x72, 0x6C,  0x00, 0x48, 0x54, 0x54,  0x50, 0x52, 0x65, 0x71,  0x75, 0x65, 0x73, 0x74,
-  0x5F, 0x67, 0x65, 0x74,  0x5F, 0x75, 0x72, 0x6C,  0x00, 0x4E, 0x55, 0x4C,  0x4C, 0x00, 0x61, 0x64,
-  0x64, 0x50, 0x72, 0x6F,  0x70, 0x65, 0x72, 0x74,  0x79, 0x00, 0x70, 0x75,  0x73, 0x68, 0x00, 0x48,
-  0x54, 0x54, 0x50, 0x52,  0x65, 0x71, 0x75, 0x65,  0x73, 0x74, 0x5F, 0x70,  0x75, 0x73, 0x68, 0x00,
-  0x63, 0x6C, 0x6F, 0x73,  0x65, 0x00, 0x48, 0x54,  0x54, 0x50, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,
-  0x74, 0x5F, 0x63, 0x6C,  0x6F, 0x73, 0x65, 0x00,  0x54, 0x65, 0x73, 0x74,  0x00, 0x61, 0x64, 0x76,
-  0x61, 0x6E, 0x63, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x61, 0x64,  0x76, 0x61, 0x6E, 0x63,
-  0x65, 0x00, 0x6D, 0x6F,  0x75, 0x73, 0x65, 0x5F,  0x6D, 0x6F, 0x76, 0x65,  0x00, 0x54, 0x65, 0x73,
-  0x74, 0x5F, 0x6D, 0x6F,  0x75, 0x73, 0x65, 0x5F,  0x6D, 0x6F, 0x76, 0x65,  0x00, 0x6D, 0x6F, 0x75,
-  0x73, 0x65, 0x5F, 0x70,  0x72, 0x65, 0x73, 0x73,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x6D, 0x6F,
-  0x75, 0x73, 0x65, 0x5F,  0x70, 0x72, 0x65, 0x73,  0x73, 0x00, 0x6D, 0x6F,  0x75, 0x73, 0x65, 0x5F,
-  0x72, 0x65, 0x6C, 0x65,  0x61, 0x73, 0x65, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x6D, 0x6F, 0x75,
-  0x73, 0x65, 0x5F, 0x72,  0x65, 0x6C, 0x65, 0x61,  0x73, 0x65, 0x00, 0x72,  0x65, 0x6E, 0x64, 0x65,
-  0x72, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x72,  0x65, 0x6E, 0x64, 0x65,  0x72, 0x00, 0x72, 0x65,
-  0x73, 0x65, 0x74, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x72, 0x65, 0x73,  0x65, 0x74, 0x00, 0x74,
-  0x72, 0x61, 0x63, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x74, 0x72,  0x61, 0x63, 0x65, 0x00,
-  0x72, 0x61, 0x74, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x67, 0x65,  0x74, 0x5F, 0x72, 0x61,
-  0x74, 0x65, 0x00, 0x70,  0x72, 0x69, 0x6E, 0x74,  0x00, 0x73, 0x00, 0x49,  0x4E, 0x46, 0x4F, 0x3A,
-  0x20, 0x00, 0x65, 0x72,  0x72, 0x6F, 0x72, 0x00,  0x45, 0x52, 0x52, 0x4F,  0x52, 0x3A, 0x20, 0x00,
-  0x96, 0x04, 0x00, 0x08,  0x00, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x00, 0x4E, 0x1D, 0x96,
-  0x02, 0x00, 0x08, 0x00,  0x1C, 0x96, 0x07, 0x00,  0x08, 0x02, 0x07, 0x00,  0x00, 0x00, 0x00, 0x43,
-  0x4F, 0x96, 0x02, 0x00,  0x08, 0x00, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,
-  0x08, 0x03, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,
-  0x00, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x05, 0x08, 0x01, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x06, 0x4E, 0x4F, 0x96,  0x04, 0x00, 0x08, 0x07,  0x08, 0x01, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x07,  0x4E, 0x1D, 0x96, 0x02,  0x00, 0x08, 0x07, 0x1C,  0x96, 0x07, 0x00, 0x08,
-  0x02, 0x07, 0x00, 0x00,  0x00, 0x00, 0x43, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x07, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x08, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x09, 0x4E, 0x4F, 0x96,  0x09, 0x00, 0x08, 0x0A,  0x07, 0x00, 0x00, 0x00,  0x00, 0x08, 0x0B, 0x40,
-  0x1D, 0x96, 0x02, 0x00,  0x08, 0x0A, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x02,  0x07, 0x00, 0x00, 0x00,
-  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x0E,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x01, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x0D,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x0C, 0x07, 0x03,  0x00, 0x00, 0x00, 0x08,
-  0x0A, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x0F, 0x52, 0x17, 0x96,
-  0x02, 0x00, 0x08, 0x0A,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x10,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x11,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x0A, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x12, 0x08,  0x01, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x13, 0x4E,  0x4F, 0x96, 0x04, 0x00,  0x08, 0x14, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x14, 0x4E, 0x1D,  0x96, 0x02, 0x00, 0x08,  0x14, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x02, 0x07,
-  0x00, 0x00, 0x00, 0x00,  0x43, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x14, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x15, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x16, 0x4E,
-  0x4F, 0x96, 0x02, 0x00,  0x08, 0x14, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,
-  0x08, 0x17, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x18, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,
-  0x14, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x19, 0x08, 0x01, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x1A, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x14,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x1B,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x1C,
-  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x14, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,
-  0x00, 0x08, 0x1D, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x1E, 0x4E,  0x4F, 0x96, 0x02, 0x00,
-  0x08, 0x14, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x1F, 0x08, 0x01,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x20, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x14, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x21, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x22, 0x4E, 0x4F, 0x96,  0x03, 0x00, 0x02, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x24, 0x4E,
-  0x96, 0x09, 0x00, 0x08,  0x23, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x14,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x02, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x0F,  0x52, 0x17, 0x96, 0x02,  0x00, 0x08, 0x25, 0x8E,
-  0x0B, 0x00, 0x00, 0x01,  0x00, 0x00, 0x00, 0x00,  0x00, 0x73, 0x00, 0x27,  0x00, 0x96, 0x02, 0x00,
-  0x08, 0x26, 0x1C, 0x12,  0x9D, 0x02, 0x00, 0x1B,  0x00, 0x96, 0x04, 0x00,  0x08, 0x27, 0x08, 0x26,
-  0x1C, 0x47, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x25, 0x52, 0x17,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x28, 0x8E, 0x0B,  0x00, 0x00, 0x01, 0x00,
-  0x00, 0x00, 0x00, 0x00,  0x73, 0x00, 0x27, 0x00,  0x96, 0x02, 0x00, 0x08,  0x26, 0x1C, 0x12, 0x9D,
-  0x02, 0x00, 0x1B, 0x00,  0x96, 0x04, 0x00, 0x08,  0x29, 0x08, 0x26, 0x1C,  0x47, 0x96, 0x07, 0x00,
-  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x25, 0x52, 0x17, 0x1D,
-  0x00
+  0x00, 0x73, 0x65, 0x72,  0x76, 0x65, 0x72, 0x00,  0x48, 0x54, 0x54, 0x50,  0x52, 0x65, 0x71, 0x75,
+  0x65, 0x73, 0x74, 0x5F,  0x67, 0x65, 0x74, 0x5F,  0x73, 0x65, 0x72, 0x76,  0x65, 0x72, 0x00, 0x4E,
+  0x55, 0x4C, 0x4C, 0x00,  0x61, 0x64, 0x64, 0x50,  0x72, 0x6F, 0x70, 0x65,  0x72, 0x74, 0x79, 0x00,
+  0x75, 0x72, 0x6C, 0x00,  0x48, 0x54, 0x54, 0x50,  0x52, 0x65, 0x71, 0x75,  0x65, 0x73, 0x74, 0x5F,
+  0x67, 0x65, 0x74, 0x5F,  0x75, 0x72, 0x6C, 0x00,  0x70, 0x61, 0x74, 0x68,  0x00, 0x48, 0x54, 0x54,
+  0x50, 0x52, 0x65, 0x71,  0x75, 0x65, 0x73, 0x74,  0x5F, 0x67, 0x65, 0x74,  0x5F, 0x70, 0x61, 0x74,
+  0x68, 0x00, 0x74, 0x6F,  0x53, 0x74, 0x72, 0x69,  0x6E, 0x67, 0x00, 0x48,  0x54, 0x54, 0x50, 0x52,
+  0x65, 0x71, 0x75, 0x65,  0x73, 0x74, 0x5F, 0x74,  0x6F, 0x53, 0x74, 0x72,  0x69, 0x6E, 0x67, 0x00,
+  0x70, 0x75, 0x73, 0x68,  0x00, 0x48, 0x54, 0x54,  0x50, 0x52, 0x65, 0x71,  0x75, 0x65, 0x73, 0x74,
+  0x5F, 0x70, 0x75, 0x73,  0x68, 0x00, 0x63, 0x6C,  0x6F, 0x73, 0x65, 0x00,  0x48, 0x54, 0x54, 0x50,
+  0x52, 0x65, 0x71, 0x75,  0x65, 0x73, 0x74, 0x5F,  0x63, 0x6C, 0x6F, 0x73,  0x65, 0x00, 0x54, 0x65,
+  0x73, 0x74, 0x00, 0x61,  0x64, 0x76, 0x61, 0x6E,  0x63, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
+  0x61, 0x64, 0x76, 0x61,  0x6E, 0x63, 0x65, 0x00,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,
+  0x76, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,
+  0x76, 0x65, 0x00, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x70, 0x72, 0x65,  0x73, 0x73, 0x00, 0x54,
+  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x70, 0x72,  0x65, 0x73, 0x73, 0x00,
+  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x72, 0x65,  0x6C, 0x65, 0x61, 0x73,  0x65, 0x00, 0x54, 0x65,
+  0x73, 0x74, 0x5F, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x72, 0x65, 0x6C,  0x65, 0x61, 0x73, 0x65,
+  0x00, 0x72, 0x65, 0x6E,  0x64, 0x65, 0x72, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x72, 0x65, 0x6E,
+  0x64, 0x65, 0x72, 0x00,  0x72, 0x65, 0x73, 0x65,  0x74, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x72,
+  0x65, 0x73, 0x65, 0x74,  0x00, 0x74, 0x72, 0x61,  0x63, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
+  0x74, 0x72, 0x61, 0x63,  0x65, 0x00, 0x72, 0x61,  0x74, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
+  0x67, 0x65, 0x74, 0x5F,  0x72, 0x61, 0x74, 0x65,  0x00, 0x70, 0x72, 0x69,  0x6E, 0x74, 0x00, 0x73,
+  0x00, 0x49, 0x4E, 0x46,  0x4F, 0x3A, 0x20, 0x00,  0x65, 0x72, 0x72, 0x6F,  0x72, 0x00, 0x45, 0x52,
+  0x52, 0x4F, 0x52, 0x3A,  0x20, 0x00, 0x96, 0x04,  0x00, 0x08, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x00, 0x4E,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x00, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x02,
+  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x00,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x03,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,
+  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x00, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,
+  0x00, 0x08, 0x05, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x06, 0x4E,  0x4F, 0x96, 0x04, 0x00,
+  0x08, 0x07, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x07, 0x4E, 0x1D,  0x96, 0x02, 0x00, 0x08,
+  0x07, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x02, 0x07,  0x00, 0x00, 0x00, 0x00,  0x43, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x07, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x08, 0x08,
+  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x09, 0x4E,  0x4F, 0x96, 0x09, 0x00,  0x08, 0x0A, 0x07, 0x00,
+  0x00, 0x00, 0x00, 0x08,  0x0B, 0x40, 0x1D, 0x96,  0x02, 0x00, 0x08, 0x0A,  0x1C, 0x96, 0x07, 0x00,
+  0x08, 0x02, 0x07, 0x00,  0x00, 0x00, 0x00, 0x43,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x0E, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x0D, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x0C,
+  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x0A, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x02,
+  0x00, 0x08, 0x0F, 0x52,  0x17, 0x96, 0x02, 0x00,  0x08, 0x0E, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x11, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x10,  0x07, 0x03, 0x00, 0x00,
+  0x00, 0x08, 0x0A, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x0F, 0x52,
+  0x17, 0x96, 0x02, 0x00,  0x08, 0x0E, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x13, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x12,  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x0A, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x0F, 0x52,  0x17, 0x96, 0x02, 0x00,
+  0x08, 0x0A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x14, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x15, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x0A, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x16, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x17, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x0A,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,
+  0x04, 0x00, 0x08, 0x18,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x19,  0x4E, 0x4F, 0x96, 0x04,
+  0x00, 0x08, 0x1A, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x1A, 0x4E,  0x1D, 0x96, 0x02, 0x00,
+  0x08, 0x1A, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x02,  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,
+  0x02, 0x00, 0x08, 0x1A,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x1B,
+  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x1C,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x1A, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x1D, 0x08,  0x01, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x1E, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x1A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,
+  0x4E, 0x96, 0x04, 0x00,  0x08, 0x1F, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x20, 0x4E, 0x4F,
+  0x96, 0x02, 0x00, 0x08,  0x1A, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,
+  0x21, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x22, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x1A,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x23,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x24,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x1A, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x25, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x26, 0x4E,
+  0x4F, 0x96, 0x02, 0x00,  0x08, 0x1A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,
+  0x08, 0x27, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x28, 0x4E, 0x4F,  0x96, 0x03, 0x00, 0x02,
+  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x2A,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x29, 0x07, 0x03,
+  0x00, 0x00, 0x00, 0x08,  0x1A, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x02, 0x00, 0x08,
+  0x0F, 0x52, 0x17, 0x96,  0x02, 0x00, 0x08, 0x2B,  0x8E, 0x0B, 0x00, 0x00,  0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x73, 0x00,  0x27, 0x00, 0x96, 0x02,  0x00, 0x08, 0x2C, 0x1C,  0x12, 0x9D, 0x02, 0x00,
+  0x1B, 0x00, 0x96, 0x04,  0x00, 0x08, 0x2D, 0x08,  0x2C, 0x1C, 0x47, 0x96,  0x07, 0x00, 0x07, 0x01,
+  0x00, 0x00, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x2B, 0x52,  0x17, 0x1D, 0x96, 0x02,
+  0x00, 0x08, 0x2E, 0x8E,  0x0B, 0x00, 0x00, 0x01,  0x00, 0x00, 0x00, 0x00,  0x00, 0x73, 0x00, 0x27,
+  0x00, 0x96, 0x02, 0x00,  0x08, 0x2C, 0x1C, 0x12,  0x9D, 0x02, 0x00, 0x1B,  0x00, 0x96, 0x04, 0x00,
+  0x08, 0x2F, 0x08, 0x2C,  0x1C, 0x47, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x2B, 0x52, 0x17,  0x1D, 0x00
 };
 
commit c797a920f74dc2991193691a137640d3a6c89825
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Thu Jan 31 19:56:15 2008 +0200

    Start implementing HTTPServer class for the test system

diff --git a/test/Makefile.am b/test/Makefile.am
index d7f5830..dec3a3f 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -6,6 +6,7 @@ swfdec_test_sources = \
 	swfdec_test.c \
 	swfdec_test_function.c \
 	swfdec_test_global.c \
+	swfdec_test_http_server.c \
 	swfdec_test_image.c \
 	swfdec_test_test.c
 
@@ -25,6 +26,7 @@ EXTRA_DIST = \
 noinst_HEADERS = \
 	swfdec_test_function.h \
 	swfdec_test_function_list.h \
+	swfdec_test_http_server.h \
 	swfdec_test_image.h \
 	swfdec_test_initialize.h \
 	swfdec_test_test.h
diff --git a/test/swfdec_test_function.c b/test/swfdec_test_function.c
index 4e6605d..81e77e6 100644
--- a/test/swfdec_test_function.c
+++ b/test/swfdec_test_function.c
@@ -25,6 +25,7 @@
 #include "swfdec_test_function_list.h"
 
 /* needed by the function list */
+#include "swfdec_test_http_server.h"
 #include "swfdec_test_image.h"
 #include "swfdec_test_test.h"
 
diff --git a/test/swfdec_test_http_server.c b/test/swfdec_test_http_server.c
new file mode 100644
index 0000000..839e66c
--- /dev/null
+++ b/test/swfdec_test_http_server.c
@@ -0,0 +1,170 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <unistd.h>
+#include <libsoup/soup.h>
+
+#include "swfdec_test_http_server.h"
+#include "swfdec_test_function.h"
+
+#define SWFDEC_TEST_HTTP_SERVER_IS_VALID(server) ((server)->server)
+
+static void
+swfdec_test_http_server_callback (SoupServer *soup_server, SoupMessage *msg,
+    const char *path, GHashTable *query, SoupClientContext *client,
+    gpointer userdata)
+{
+  SwfdecTestHTTPServer *server = userdata;
+
+  g_return_if_fail (server->server == soup_server);
+}
+
+static gboolean
+swfdec_test_http_server_start (SwfdecTestHTTPServer *server)
+{
+  SoupAddress *address;
+
+  g_return_val_if_fail (SWFDEC_IS_TEST_HTTP_SERVER (server), FALSE);
+  g_return_val_if_fail (server->server == NULL, FALSE);
+
+  address = soup_address_new ("localhost", server->port);
+  if (soup_address_resolve_sync (address, NULL) != SOUP_STATUS_OK)
+    return FALSE;
+
+  server->context = g_main_context_new ();
+
+  server->server = soup_server_new (SOUP_SERVER_PORT, server->port,
+      SOUP_SERVER_INTERFACE, address, SOUP_SERVER_ASYNC_CONTEXT,
+      server->context, NULL);
+  if (!server) {
+    g_main_context_unref (server->context);
+    server->context = NULL;
+    return FALSE;
+  }
+
+  soup_server_add_handler (server->server, NULL,
+      swfdec_test_http_server_callback, server, NULL);
+
+  soup_server_run_async (server->server);
+
+  return TRUE;
+}
+
+SwfdecAsObject *
+swfdec_test_http_server_new (SwfdecAsContext *context, guint port)
+{
+  SwfdecAsValue val;
+  SwfdecAsObject *ret;
+
+  if (!swfdec_as_context_use_mem (context, sizeof (SwfdecTestHTTPServer)))
+    return NULL;
+
+  ret = g_object_new (SWFDEC_TYPE_TEST_HTTP_SERVER, NULL);
+  swfdec_as_object_add (ret, context, sizeof (SwfdecTestHTTPServer));
+  swfdec_as_object_get_variable (context->global,
+      swfdec_as_context_get_string (context, "HTTPServer"), &val);
+
+  if (SWFDEC_AS_VALUE_IS_OBJECT (&val))
+    swfdec_as_object_set_constructor (ret, SWFDEC_AS_VALUE_GET_OBJECT (&val));
+
+  SWFDEC_TEST_HTTP_SERVER (ret)->port = port;
+
+  swfdec_test_http_server_start (SWFDEC_TEST_HTTP_SERVER (ret));
+
+  return ret;
+}
+
+/*** SWFDEC_TEST_HTTP_SERVER ***/
+
+G_DEFINE_TYPE (SwfdecTestHTTPServer, swfdec_test_http_server, SWFDEC_TYPE_AS_OBJECT)
+
+static void
+swfdec_test_http_server_dispose (GObject *object)
+{
+  SwfdecTestHTTPServer *server = SWFDEC_TEST_HTTP_SERVER (object);
+
+  if (server->server) {
+    soup_server_quit (server->server);
+    server->server = NULL;
+  }
+
+  if (server->context) {
+    g_main_context_unref (server->context);
+    server->context = NULL;
+  }
+
+  G_OBJECT_CLASS (swfdec_test_http_server_parent_class)->dispose (object);
+}
+
+static void
+swfdec_test_http_server_class_init (SwfdecTestHTTPServerClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->dispose = swfdec_test_http_server_dispose;
+}
+
+static void
+swfdec_test_http_server_init (SwfdecTestHTTPServer *this)
+{
+}
+
+/*** AS CODE ***/
+
+SWFDEC_TEST_FUNCTION ("HTTPServer_getRequest", swfdec_test_http_server_get_request, 0)
+void
+swfdec_test_http_server_get_request (SwfdecAsContext *cx,
+    SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+    SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPServer *server;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_SERVER, &server, "");
+
+  SWFDEC_AS_VALUE_SET_NULL (retval);
+
+  if (!SWFDEC_TEST_HTTP_SERVER_IS_VALID (server))
+    return;
+
+  g_main_context_iteration (server->context, FALSE);
+
+  SWFDEC_AS_VALUE_SET_BOOLEAN (retval, TRUE);
+}
+
+SWFDEC_TEST_FUNCTION ("HTTPServer", swfdec_test_http_server_create, swfdec_test_http_server_get_type)
+void
+swfdec_test_http_server_create (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+    SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestHTTPServer *server;
+  int port;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_HTTP_SERVER, &server, "|i", &port);
+
+  if (port <= 0)
+    port = 12345;
+
+  server->port = port;
+
+  swfdec_test_http_server_start (server);
+}
diff --git a/test/swfdec_test_http_server.h b/test/swfdec_test_http_server.h
new file mode 100644
index 0000000..7ec52a4
--- /dev/null
+++ b/test/swfdec_test_http_server.h
@@ -0,0 +1,61 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+#ifndef _SWFDEC_TEST_HTTP_SERVER_H_
+#define _SWFDEC_TEST_HTTP_SERVER_H_
+
+#include <swfdec/swfdec.h>
+#include <libsoup/soup.h>
+
+G_BEGIN_DECLS
+
+
+typedef struct _SwfdecTestHTTPServer SwfdecTestHTTPServer;
+typedef struct _SwfdecTestHTTPServerClass SwfdecTestHTTPServerClass;
+
+#define SWFDEC_TYPE_TEST_HTTP_SERVER                    (swfdec_test_http_server_get_type())
+#define SWFDEC_IS_TEST_HTTP_SERVER(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_TEST_HTTP_SERVER))
+#define SWFDEC_IS_TEST_HTTP_SERVER_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_TEST_HTTP_SERVER))
+#define SWFDEC_TEST_HTTP_SERVER(obj)                    (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWFDEC_TYPE_TEST_HTTP_SERVER, SwfdecTestHTTPServer))
+#define SWFDEC_TEST_HTTP_SERVER_CLASS(klass)            (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_TEST_HTTP_SERVER, SwfdecTestHTTPServerClass))
+#define SWFDEC_TEST_HTTP_SERVER_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_TEST_HTTP_SERVER, SwfdecTestHTTPServerClass))
+
+struct _SwfdecTestHTTPServer
+{
+  SwfdecAsObject	as_object;
+
+  GMainContext *	context;
+  SoupServer *		server;
+  guint			port;
+
+  SoupMessage *		message;
+};
+
+struct _SwfdecTestHTTPServerClass
+{
+  SwfdecAsObjectClass	as_object_class;
+};
+
+GType		swfdec_test_http_server_get_type	(void);
+
+SwfdecAsObject *swfdec_test_http_server_new		(SwfdecAsContext *	context,
+							 guint			port);
+
+G_END_DECLS
+#endif
diff --git a/test/swfdec_test_initialize.as b/test/swfdec_test_initialize.as
index debff41..97bebc8 100644
--- a/test/swfdec_test_initialize.as
+++ b/test/swfdec_test_initialize.as
@@ -22,6 +22,16 @@ Image.prototype = {};
 Image.prototype.compare = Native.Image_compare;
 Image.prototype.save = Native.Image_save;
 
+HTTPServer = Native.HTTPServer;
+HTTPServer.prototype = {};
+HTTPServer.prototype.getRequest = Native.HTTPServer_getRequest;
+
+HTTPRequest = new Object ();
+HTTPRequest.prototype = {};
+HTTPRequest.prototype.addProperty ("url", Native.HTTPRequest_get_url, NULL);
+HTTPRequest.prototype.push = Native.HTTPRequest_push;
+HTTPRequest.prototype.close = Native.HTTPRequest_close;
+
 Test = Native.Test;
 Test.prototype = {};
 Test.prototype.advance = Native.Test_advance;
diff --git a/test/swfdec_test_initialize.h b/test/swfdec_test_initialize.h
index 20be2e5..437b948 100644
--- a/test/swfdec_test_initialize.h
+++ b/test/swfdec_test_initialize.h
@@ -2,53 +2,74 @@
 
 /* compiled from swfdec_test_initialize.as */
 static const unsigned char swfdec_test_initialize[] = {
-  0x88, 0x23, 0x01, 0x1E,  0x00, 0x49, 0x6D, 0x61,  0x67, 0x65, 0x00, 0x4E,  0x61, 0x74, 0x69, 0x76,
+  0x88, 0xAD, 0x01, 0x2A,  0x00, 0x49, 0x6D, 0x61,  0x67, 0x65, 0x00, 0x4E,  0x61, 0x74, 0x69, 0x76,
   0x65, 0x00, 0x70, 0x72,  0x6F, 0x74, 0x6F, 0x74,  0x79, 0x70, 0x65, 0x00,  0x63, 0x6F, 0x6D, 0x70,
   0x61, 0x72, 0x65, 0x00,  0x49, 0x6D, 0x61, 0x67,  0x65, 0x5F, 0x63, 0x6F,  0x6D, 0x70, 0x61, 0x72,
   0x65, 0x00, 0x73, 0x61,  0x76, 0x65, 0x00, 0x49,  0x6D, 0x61, 0x67, 0x65,  0x5F, 0x73, 0x61, 0x76,
-  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x00, 0x61,  0x64, 0x76, 0x61, 0x6E,  0x63, 0x65, 0x00, 0x54,
-  0x65, 0x73, 0x74, 0x5F,  0x61, 0x64, 0x76, 0x61,  0x6E, 0x63, 0x65, 0x00,  0x6D, 0x6F, 0x75, 0x73,
-  0x65, 0x5F, 0x6D, 0x6F,  0x76, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,
-  0x65, 0x5F, 0x6D, 0x6F,  0x76, 0x65, 0x00, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x70, 0x72, 0x65,
-  0x73, 0x73, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x70, 0x72,
-  0x65, 0x73, 0x73, 0x00,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x72, 0x65,  0x6C, 0x65, 0x61, 0x73,
-  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x72, 0x65, 0x6C,
-  0x65, 0x61, 0x73, 0x65,  0x00, 0x72, 0x65, 0x6E,  0x64, 0x65, 0x72, 0x00,  0x54, 0x65, 0x73, 0x74,
-  0x5F, 0x72, 0x65, 0x6E,  0x64, 0x65, 0x72, 0x00,  0x72, 0x65, 0x73, 0x65,  0x74, 0x00, 0x54, 0x65,
-  0x73, 0x74, 0x5F, 0x72,  0x65, 0x73, 0x65, 0x74,  0x00, 0x74, 0x72, 0x61,  0x63, 0x65, 0x00, 0x54,
-  0x65, 0x73, 0x74, 0x5F,  0x74, 0x72, 0x61, 0x63,  0x65, 0x00, 0x72, 0x61,  0x74, 0x65, 0x00, 0x54,
-  0x65, 0x73, 0x74, 0x5F,  0x67, 0x65, 0x74, 0x5F,  0x72, 0x61, 0x74, 0x65,  0x00, 0x61, 0x64, 0x64,
-  0x50, 0x72, 0x6F, 0x70,  0x65, 0x72, 0x74, 0x79,  0x00, 0x70, 0x72, 0x69,  0x6E, 0x74, 0x00, 0x73,
-  0x00, 0x49, 0x4E, 0x46,  0x4F, 0x3A, 0x20, 0x00,  0x65, 0x72, 0x72, 0x6F,  0x72, 0x00, 0x45, 0x52,
-  0x52, 0x4F, 0x52, 0x3A,  0x20, 0x00, 0x96, 0x04,  0x00, 0x08, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x00, 0x4E,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x00, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x02,
-  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x00,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x03,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,
-  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x00, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,
-  0x00, 0x08, 0x05, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x06, 0x4E,  0x4F, 0x96, 0x04, 0x00,
-  0x08, 0x07, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x07, 0x4E, 0x1D,  0x96, 0x02, 0x00, 0x08,
-  0x07, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x02, 0x07,  0x00, 0x00, 0x00, 0x00,  0x43, 0x4F, 0x96, 0x02,
-  0x00, 0x08, 0x07, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x08, 0x08,
-  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x09, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x07, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x0A, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x0B, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x07, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,
-  0x96, 0x04, 0x00, 0x08,  0x0C, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x0D, 0x4E, 0x4F, 0x96,
-  0x02, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x0E,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0F,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x07, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x10, 0x08,  0x01, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x11, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x07, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,
-  0x4E, 0x96, 0x04, 0x00,  0x08, 0x12, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x13, 0x4E, 0x4F,
-  0x96, 0x02, 0x00, 0x08,  0x07, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,
-  0x14, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x15, 0x4E, 0x4F, 0x96,  0x03, 0x00, 0x02, 0x08,
-  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x17, 0x4E,  0x96, 0x09, 0x00, 0x08,  0x16, 0x07, 0x03, 0x00,
-  0x00, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x18,
-  0x52, 0x17, 0x96, 0x02,  0x00, 0x08, 0x19, 0x9B,  0x07, 0x00, 0x00, 0x01,  0x00, 0x73, 0x00, 0x27,
-  0x00, 0x96, 0x02, 0x00,  0x08, 0x1A, 0x1C, 0x12,  0x9D, 0x02, 0x00, 0x1B,  0x00, 0x96, 0x04, 0x00,
-  0x08, 0x1B, 0x08, 0x1A,  0x1C, 0x47, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x01,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x19, 0x52, 0x17,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x1C, 0x9B, 0x07,
-  0x00, 0x00, 0x01, 0x00,  0x73, 0x00, 0x27, 0x00,  0x96, 0x02, 0x00, 0x08,  0x1A, 0x1C, 0x12, 0x9D,
-  0x02, 0x00, 0x1B, 0x00,  0x96, 0x04, 0x00, 0x08,  0x1D, 0x08, 0x1A, 0x1C,  0x47, 0x96, 0x07, 0x00,
-  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x19, 0x52, 0x17, 0x1D,
+  0x65, 0x00, 0x48, 0x54,  0x54, 0x50, 0x53, 0x65,  0x72, 0x76, 0x65, 0x72,  0x00, 0x67, 0x65, 0x74,
+  0x52, 0x65, 0x71, 0x75,  0x65, 0x73, 0x74, 0x00,  0x48, 0x54, 0x54, 0x50,  0x53, 0x65, 0x72, 0x76,
+  0x65, 0x72, 0x5F, 0x67,  0x65, 0x74, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,  0x74, 0x00, 0x48, 0x54,
+  0x54, 0x50, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,  0x74, 0x00, 0x4F, 0x62,  0x6A, 0x65, 0x63, 0x74,
+  0x00, 0x75, 0x72, 0x6C,  0x00, 0x48, 0x54, 0x54,  0x50, 0x52, 0x65, 0x71,  0x75, 0x65, 0x73, 0x74,
+  0x5F, 0x67, 0x65, 0x74,  0x5F, 0x75, 0x72, 0x6C,  0x00, 0x4E, 0x55, 0x4C,  0x4C, 0x00, 0x61, 0x64,
+  0x64, 0x50, 0x72, 0x6F,  0x70, 0x65, 0x72, 0x74,  0x79, 0x00, 0x70, 0x75,  0x73, 0x68, 0x00, 0x48,
+  0x54, 0x54, 0x50, 0x52,  0x65, 0x71, 0x75, 0x65,  0x73, 0x74, 0x5F, 0x70,  0x75, 0x73, 0x68, 0x00,
+  0x63, 0x6C, 0x6F, 0x73,  0x65, 0x00, 0x48, 0x54,  0x54, 0x50, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,
+  0x74, 0x5F, 0x63, 0x6C,  0x6F, 0x73, 0x65, 0x00,  0x54, 0x65, 0x73, 0x74,  0x00, 0x61, 0x64, 0x76,
+  0x61, 0x6E, 0x63, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x61, 0x64,  0x76, 0x61, 0x6E, 0x63,
+  0x65, 0x00, 0x6D, 0x6F,  0x75, 0x73, 0x65, 0x5F,  0x6D, 0x6F, 0x76, 0x65,  0x00, 0x54, 0x65, 0x73,
+  0x74, 0x5F, 0x6D, 0x6F,  0x75, 0x73, 0x65, 0x5F,  0x6D, 0x6F, 0x76, 0x65,  0x00, 0x6D, 0x6F, 0x75,
+  0x73, 0x65, 0x5F, 0x70,  0x72, 0x65, 0x73, 0x73,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x6D, 0x6F,
+  0x75, 0x73, 0x65, 0x5F,  0x70, 0x72, 0x65, 0x73,  0x73, 0x00, 0x6D, 0x6F,  0x75, 0x73, 0x65, 0x5F,
+  0x72, 0x65, 0x6C, 0x65,  0x61, 0x73, 0x65, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x6D, 0x6F, 0x75,
+  0x73, 0x65, 0x5F, 0x72,  0x65, 0x6C, 0x65, 0x61,  0x73, 0x65, 0x00, 0x72,  0x65, 0x6E, 0x64, 0x65,
+  0x72, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x72,  0x65, 0x6E, 0x64, 0x65,  0x72, 0x00, 0x72, 0x65,
+  0x73, 0x65, 0x74, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x72, 0x65, 0x73,  0x65, 0x74, 0x00, 0x74,
+  0x72, 0x61, 0x63, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x74, 0x72,  0x61, 0x63, 0x65, 0x00,
+  0x72, 0x61, 0x74, 0x65,  0x00, 0x54, 0x65, 0x73,  0x74, 0x5F, 0x67, 0x65,  0x74, 0x5F, 0x72, 0x61,
+  0x74, 0x65, 0x00, 0x70,  0x72, 0x69, 0x6E, 0x74,  0x00, 0x73, 0x00, 0x49,  0x4E, 0x46, 0x4F, 0x3A,
+  0x20, 0x00, 0x65, 0x72,  0x72, 0x6F, 0x72, 0x00,  0x45, 0x52, 0x52, 0x4F,  0x52, 0x3A, 0x20, 0x00,
+  0x96, 0x04, 0x00, 0x08,  0x00, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x00, 0x4E, 0x1D, 0x96,
+  0x02, 0x00, 0x08, 0x00,  0x1C, 0x96, 0x07, 0x00,  0x08, 0x02, 0x07, 0x00,  0x00, 0x00, 0x00, 0x43,
+  0x4F, 0x96, 0x02, 0x00,  0x08, 0x00, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,
+  0x08, 0x03, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x00, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x05, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x06, 0x4E, 0x4F, 0x96,  0x04, 0x00, 0x08, 0x07,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x07,  0x4E, 0x1D, 0x96, 0x02,  0x00, 0x08, 0x07, 0x1C,  0x96, 0x07, 0x00, 0x08,
+  0x02, 0x07, 0x00, 0x00,  0x00, 0x00, 0x43, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x07, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x08, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x09, 0x4E, 0x4F, 0x96,  0x09, 0x00, 0x08, 0x0A,  0x07, 0x00, 0x00, 0x00,  0x00, 0x08, 0x0B, 0x40,
+  0x1D, 0x96, 0x02, 0x00,  0x08, 0x0A, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x02,  0x07, 0x00, 0x00, 0x00,
+  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x0E,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x0D,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x0C, 0x07, 0x03,  0x00, 0x00, 0x00, 0x08,
+  0x0A, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x0F, 0x52, 0x17, 0x96,
+  0x02, 0x00, 0x08, 0x0A,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x10,
+  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x11,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x0A, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x12, 0x08,  0x01, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x13, 0x4E,  0x4F, 0x96, 0x04, 0x00,  0x08, 0x14, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x14, 0x4E, 0x1D,  0x96, 0x02, 0x00, 0x08,  0x14, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x02, 0x07,
+  0x00, 0x00, 0x00, 0x00,  0x43, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x14, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x02, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x15, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x16, 0x4E,
+  0x4F, 0x96, 0x02, 0x00,  0x08, 0x14, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,
+  0x08, 0x17, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x18, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x14, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x19, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x1A, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x14,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x02, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x1B,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x1C,
+  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x14, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x02, 0x4E, 0x96, 0x04,
+  0x00, 0x08, 0x1D, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x1E, 0x4E,  0x4F, 0x96, 0x02, 0x00,
+  0x08, 0x14, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x02,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x1F, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x20, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x14, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x02, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x21, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x22, 0x4E, 0x4F, 0x96,  0x03, 0x00, 0x02, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x24, 0x4E,
+  0x96, 0x09, 0x00, 0x08,  0x23, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x14,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x02, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x0F,  0x52, 0x17, 0x96, 0x02,  0x00, 0x08, 0x25, 0x8E,
+  0x0B, 0x00, 0x00, 0x01,  0x00, 0x00, 0x00, 0x00,  0x00, 0x73, 0x00, 0x27,  0x00, 0x96, 0x02, 0x00,
+  0x08, 0x26, 0x1C, 0x12,  0x9D, 0x02, 0x00, 0x1B,  0x00, 0x96, 0x04, 0x00,  0x08, 0x27, 0x08, 0x26,
+  0x1C, 0x47, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x25, 0x52, 0x17,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x28, 0x8E, 0x0B,  0x00, 0x00, 0x01, 0x00,
+  0x00, 0x00, 0x00, 0x00,  0x73, 0x00, 0x27, 0x00,  0x96, 0x02, 0x00, 0x08,  0x26, 0x1C, 0x12, 0x9D,
+  0x02, 0x00, 0x1B, 0x00,  0x96, 0x04, 0x00, 0x08,  0x29, 0x08, 0x26, 0x1C,  0x47, 0x96, 0x07, 0x00,
+  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x25, 0x52, 0x17, 0x1D,
   0x00
 };
 
commit 85389a38e087b47e14726bcdba0c1cc32ffde022
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Thu Jan 31 18:06:22 2008 +0200

    Fix crash in swfdec/compiler.c, use SWFAction_compile. Compile version is 8 now

diff --git a/swfdec/compiler.c b/swfdec/compiler.c
index 5593cec..b8af8ba 100644
--- a/swfdec/compiler.c
+++ b/swfdec/compiler.c
@@ -12,9 +12,9 @@
  * autorun, as we don't want to depend on external bugs, only on internal ones.
  */
 static gboolean
-write_data (guint8 *data, gsize len)
+write_data (guint8 *data, int len)
 {
-  gsize i;
+  int i;
 
   for (i = 0; i < len; i++) {
     switch (i % 16) {
@@ -60,7 +60,8 @@ main (int argc, char **argv)
   char *contents;
   GError *error = NULL;
   guint i;
-  gsize len;
+  int len;
+  gsize ignored;
   byte *data;
 
   if (argc < 2) {
@@ -74,13 +75,17 @@ main (int argc, char **argv)
   g_print ("/* This file is autogenerated, do not edit! */\n\n");
   for (i = 1; i < argc; i++) {
     if (!g_file_get_contents (argv[1], &contents, NULL, &error)) {
-      g_printerr ("%s\n", error->message);
+      g_printerr ("Error: %s\n", error->message);
       g_error_free (error);
       error = NULL;
       return 1;
     }
     action = newSWFAction (contents);
-    data = SWFAction_getByteCode (action, &len);
+    if (SWFAction_compile (action, 8, &len) != 0) {
+      g_printerr ("Error: Couldn't compile\n");
+      return -1;
+    }
+    data = SWFAction_getByteCode (action, &ignored);
     contents = get_name (argv[i]);
     g_print ("/* compiled from %s */\n", argv[i]);
     g_print ("static const unsigned char %s[] = {\n", contents);


More information about the Swfdec-commits mailing list