diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2020-10-09 11:29:11 +0200 |
---|---|---|
committer | Carlos Garcia Campos <cgarcia@igalia.com> | 2020-10-19 14:02:25 +0200 |
commit | 99c19cc27ae837e665ace3c1f0e99cd1088e6c24 (patch) | |
tree | bbb7f7a7a9c9544801c66cf3e543ee3ea93291be /tests/redirect-test.c | |
parent | d5cd7249b20beee01dc26c09ec80f270ef8962fd (diff) | |
download | libsoup-carlosgc/split-io.tar.gz |
Split SoupMessage into client and server partscarlosgc/split-io
Add SoupServerMessage and move there all the server only functionality.
Diffstat (limited to 'tests/redirect-test.c')
-rw-r--r-- | tests/redirect-test.c | 78 |
1 files changed, 45 insertions, 33 deletions
diff --git a/tests/redirect-test.c b/tests/redirect-test.c index d360065a..9ecc2e2d 100644 --- a/tests/redirect-test.c +++ b/tests/redirect-test.c @@ -287,72 +287,82 @@ do_async_req_api_test (gconstpointer test) } static void -server_callback (SoupServer *server, SoupMessage *msg, - const char *path, GHashTable *query, - SoupClientContext *context, gpointer data) +server_callback (SoupServer *server, + SoupServerMessage *msg, + const char *path, + GHashTable *query, + gpointer data) { char *remainder; guint status_code; + SoupMessageHeaders *response_headers; + const char *method; /* Make sure that a HTTP/1.0 redirect doesn't cause an * HTTP/1.0 re-request. (#521848) */ - if (soup_message_get_http_version (msg) == SOUP_HTTP_1_0) { - soup_message_set_status (msg, SOUP_STATUS_BAD_REQUEST); + if (soup_server_message_get_http_version (msg) == SOUP_HTTP_1_0) { + soup_server_message_set_status (msg, SOUP_STATUS_BAD_REQUEST, NULL); return; } + method = soup_server_message_get_method (msg); + response_headers = soup_server_message_get_response_headers (msg); + if (g_str_has_prefix (path, "/bad")) { if (!strcmp (path, "/bad")) { - soup_message_set_status (msg, SOUP_STATUS_FOUND); - soup_message_headers_replace (msg->response_headers, + soup_server_message_set_status (msg, SOUP_STATUS_FOUND, NULL); + soup_message_headers_replace (response_headers, "Location", "/bad with spaces"); } else if (!strcmp (path, "/bad-recursive")) { - soup_message_set_status (msg, SOUP_STATUS_FOUND); - soup_message_headers_replace (msg->response_headers, + soup_server_message_set_status (msg, SOUP_STATUS_FOUND, NULL); + soup_message_headers_replace (response_headers, "Location", "/bad-recursive"); } else if (!strcmp (path, "/bad-no-host")) { - soup_message_set_status (msg, SOUP_STATUS_FOUND); - soup_message_headers_replace (msg->response_headers, + soup_server_message_set_status (msg, SOUP_STATUS_FOUND, NULL); + soup_message_headers_replace (response_headers, "Location", "about:blank"); } else if (!strcmp (path, "/bad with spaces")) - soup_message_set_status (msg, SOUP_STATUS_OK); + soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL); else - soup_message_set_status (msg, SOUP_STATUS_NOT_FOUND); + soup_server_message_set_status (msg, SOUP_STATUS_NOT_FOUND, NULL); return; } else if (!strcmp (path, "/server2")) { - soup_message_set_status (msg, SOUP_STATUS_FOUND); - soup_message_headers_replace (msg->response_headers, + soup_server_message_set_status (msg, SOUP_STATUS_FOUND, NULL); + soup_message_headers_replace (response_headers, "Location", server2_uri); return; } else if (!strcmp (path, "/")) { - if (msg->method != SOUP_METHOD_GET && - msg->method != SOUP_METHOD_HEAD) { - soup_message_set_status (msg, SOUP_STATUS_METHOD_NOT_ALLOWED); + SoupMessageBody *request_body; + + if (method != SOUP_METHOD_GET && + method != SOUP_METHOD_HEAD) { + soup_server_message_set_status (msg, SOUP_STATUS_METHOD_NOT_ALLOWED, NULL); return; } /* Make sure that redirecting a POST clears the body */ - if (msg->request_body->length) { - soup_message_set_status (msg, SOUP_STATUS_BAD_REQUEST); + request_body = soup_server_message_get_request_body (msg); + if (request_body->length) { + soup_server_message_set_status (msg, SOUP_STATUS_BAD_REQUEST, NULL); return; } - soup_message_set_status (msg, SOUP_STATUS_OK); + soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL); /* FIXME: this is wrong, though it doesn't matter for * the purposes of this test, and to do the right * thing currently we'd have to set Content-Length by * hand. */ - if (msg->method != SOUP_METHOD_HEAD) { - soup_message_set_response (msg, "text/plain", - SOUP_MEMORY_STATIC, - "OK\r\n", 4); + if (method != SOUP_METHOD_HEAD) { + soup_server_message_set_response (msg, "text/plain", + SOUP_MEMORY_STATIC, + "OK\r\n", 4); } return; } @@ -360,7 +370,7 @@ server_callback (SoupServer *server, SoupMessage *msg, status_code = strtoul (path + 1, &remainder, 10); if (!SOUP_STATUS_IS_REDIRECTION (status_code) || (*remainder && *remainder != '/')) { - soup_message_set_status (msg, SOUP_STATUS_NOT_FOUND); + soup_server_message_set_status (msg, SOUP_STATUS_NOT_FOUND, NULL); return; } @@ -369,18 +379,20 @@ server_callback (SoupServer *server, SoupMessage *msg, * the rest of the time. */ if (*remainder == '/') - soup_message_set_http_version (msg, SOUP_HTTP_1_0); + soup_server_message_set_http_version (msg, SOUP_HTTP_1_0); - soup_message_set_redirect (msg, status_code, - *remainder ? remainder : "/"); + soup_server_message_set_redirect (msg, status_code, + *remainder ? remainder : "/"); } static void -server2_callback (SoupServer *server, SoupMessage *msg, - const char *path, GHashTable *query, - SoupClientContext *context, gpointer data) +server2_callback (SoupServer *server, + SoupServerMessage *msg, + const char *path, + GHashTable *query, + gpointer data) { - soup_message_set_status (msg, SOUP_STATUS_OK); + soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL); } int |