[libsoup] misc-test: fix a bug
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup] misc-test: fix a bug
- Date: Thu, 1 Dec 2011 10:18:26 +0000 (UTC)
commit 8477cbf40e28260d8101637eb7319deaec0af853
Author: Dan Winship <danw gnome org>
Date: Wed Nov 30 18:30:26 2011 +0100
misc-test: fix a bug
misc-test would crash if it ran long enough (due to either stopping in
gdb or just adding enough new tests to the end) because of a bug in the
max_conns_test cleanup code.
tests/misc-test.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/tests/misc-test.c b/tests/misc-test.c
index 495c33f..b1bc2e7 100644
--- a/tests/misc-test.c
+++ b/tests/misc-test.c
@@ -820,6 +820,7 @@ do_persistent_connection_timeout_test (void)
static GMainLoop *max_conns_loop;
static int msgs_done;
+static guint quit_loop_timeout;
#define MAX_CONNS 2
#define TEST_CONNS (MAX_CONNS * 2)
@@ -833,6 +834,7 @@ idle_start_server (gpointer data)
static gboolean
quit_loop (gpointer data)
{
+ quit_loop_timeout = 0;
g_main_loop_quit (max_conns_loop);
return FALSE;
}
@@ -841,8 +843,11 @@ static void
max_conns_request_started (SoupSession *session, SoupMessage *msg,
SoupSocket *socket, gpointer user_data)
{
- if (++msgs_done == MAX_CONNS)
- g_timeout_add (100, quit_loop, NULL);
+ if (++msgs_done == MAX_CONNS) {
+ if (quit_loop_timeout)
+ g_source_remove (quit_loop_timeout);
+ quit_loop_timeout = g_timeout_add (100, quit_loop, NULL);
+ }
}
static void
@@ -857,7 +862,6 @@ do_max_conns_test_for_session (SoupSession *session)
{
SoupMessage *msgs[TEST_CONNS];
int i;
- guint timeout_id;
max_conns_loop = g_main_loop_new (NULL, TRUE);
@@ -883,7 +887,7 @@ do_max_conns_test_for_session (SoupSession *session)
msgs_done = 0;
g_idle_add (idle_start_server, NULL);
- timeout_id = g_timeout_add (1000, quit_loop, NULL);
+ quit_loop_timeout = g_timeout_add (1000, quit_loop, NULL);
g_main_loop_run (max_conns_loop);
for (i = 0; i < TEST_CONNS; i++) {
@@ -902,10 +906,11 @@ do_max_conns_test_for_session (SoupSession *session)
for (i = 0; i < TEST_CONNS; i++)
soup_session_cancel_message (session, msgs[i], SOUP_STATUS_CANCELLED);
g_main_loop_run (max_conns_loop);
- g_source_remove (timeout_id);
}
g_main_loop_unref (max_conns_loop);
+ if (quit_loop_timeout)
+ g_source_remove (quit_loop_timeout);
for (i = 0; i < TEST_CONNS; i++)
g_object_unref (msgs[i]);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]