diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2022-11-08 16:28:12 +0100 |
---|---|---|
committer | Carlos Garcia Campos <cgarcia@igalia.com> | 2022-11-08 16:28:12 +0100 |
commit | d20c6601664624116f3dc43f21c7ec4a186cf8d3 (patch) | |
tree | 961222dc117093df832246d0123836bc625bbbfb /tests/server-test.c | |
parent | 6c06a44ac8eae1804924270b283613df76194ac4 (diff) | |
download | libsoup-d20c6601664624116f3dc43f21c7ec4a186cf8d3.tar.gz |
server: do not leak idle connections closed by the client
Diffstat (limited to 'tests/server-test.c')
-rw-r--r-- | tests/server-test.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/server-test.c b/tests/server-test.c index 3f09f753..12bfd980 100644 --- a/tests/server-test.c +++ b/tests/server-test.c @@ -6,6 +6,7 @@ #include "test-utils.h" #include "soup-message-private.h" #include "soup-uri-utils-private.h" +#include "soup-server-private.h" #include "soup-misc.h" #include <gio/gnetworking.h> @@ -1315,6 +1316,32 @@ do_steal_connect_test (ServerData *sd, gconstpointer test_data) g_free (proxy_uri_str); } +static void +do_idle_connection_closed_test (ServerData *sd, gconstpointer test_data) +{ + SoupSession *session; + SoupMessage *msg; + GBytes *body; + GError *error = NULL; + GSList *clients; + + session = soup_test_session_new (NULL); + + msg = soup_message_new_from_uri ("GET", sd->base_uri); + body = soup_session_send_and_read (session, msg, NULL, &error); + g_assert_no_error (error); + g_bytes_unref (body); + g_object_unref (msg); + + clients = soup_server_get_clients (sd->server); + g_assert_cmpuint (g_slist_length (clients), ==, 1); + + soup_test_session_abort_unref (session); + + while (soup_server_get_clients (sd->server)) + g_main_context_iteration (NULL, FALSE); +} + int main (int argc, char **argv) { @@ -1330,6 +1357,8 @@ main (int argc, char **argv) server_setup, do_invalid_percent_encoding_paths_test, server_teardown); g_test_add ("/server/ipv6", ServerData, NULL, NULL, do_ipv6_test, server_teardown); + g_test_add ("/server/idle-connection-closed", ServerData, NULL, + server_setup, do_idle_connection_closed_test, server_teardown); g_test_add ("/server/multi/port", ServerData, NULL, NULL, do_multi_port_test, server_teardown); g_test_add ("/server/multi/scheme", ServerData, NULL, |