summaryrefslogtreecommitdiff
path: root/tests/misc-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/misc-test.c')
-rw-r--r--tests/misc-test.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/tests/misc-test.c b/tests/misc-test.c
index 4dab6fe8..6d43bd7f 100644
--- a/tests/misc-test.c
+++ b/tests/misc-test.c
@@ -976,11 +976,10 @@ do_pause_cancel_test (void)
g_source_remove (timeout_id);
}
-static void
-steal_after_upgrade (SoupMessage *msg, gpointer user_data)
+static gboolean
+run_echo_server (gpointer user_data)
{
- SoupClientContext *context = user_data;
- GIOStream *stream;
+ GIOStream *stream = user_data;
GInputStream *istream;
GDataInputStream *distream;
GOutputStream *ostream;
@@ -988,11 +987,6 @@ steal_after_upgrade (SoupMessage *msg, gpointer user_data)
gssize n;
GError *error = NULL;
- /* This should not ever be seen. */
- soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR);
-
- stream = soup_client_context_steal_connection (context);
-
istream = g_io_stream_get_input_stream (stream);
distream = G_DATA_INPUT_STREAM (g_data_input_stream_new (istream));
ostream = g_io_stream_get_output_stream (stream);
@@ -1020,6 +1014,26 @@ steal_after_upgrade (SoupMessage *msg, gpointer user_data)
g_io_stream_close (stream, NULL, &error);
g_assert_no_error (error);
g_object_unref (stream);
+
+ return FALSE;
+}
+
+static void
+steal_after_upgrade (SoupMessage *msg, gpointer user_data)
+{
+ SoupClientContext *context = user_data;
+ GIOStream *stream;
+ GSource *source;
+
+ /* This should not ever be seen. */
+ soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR);
+
+ stream = soup_client_context_steal_connection (context);
+
+ source = g_idle_source_new ();
+ g_source_set_callback (source, run_echo_server, stream, NULL);
+ g_source_attach (source, g_main_context_get_thread_default ());
+ g_source_unref (source);
}
static void
@@ -1196,5 +1210,6 @@ main (int argc, char **argv)
soup_test_server_quit_unref (ssl_server);
}
+ test_cleanup ();
return ret;
}