|
@@ -487,6 +487,8 @@ START_TEST(test_request_handlers)
|
|
const char *OPTIONS[8]; /* initializer list here is rejected by CI test */
|
|
const char *OPTIONS[8]; /* initializer list here is rejected by CI test */
|
|
const char *opt;
|
|
const char *opt;
|
|
FILE *f;
|
|
FILE *f;
|
|
|
|
+ const char *plain_file_content;
|
|
|
|
+ const char *encoded_file_content;
|
|
int opt_idx = 0;
|
|
int opt_idx = 0;
|
|
const char *ssl_cert = locate_ssl_cert();
|
|
const char *ssl_cert = locate_ssl_cert();
|
|
|
|
|
|
@@ -693,6 +695,20 @@ START_TEST(test_request_handlers)
|
|
fwrite("simple text file\n", 17, 1, f);
|
|
fwrite("simple text file\n", 17, 1, f);
|
|
fclose(f);
|
|
fclose(f);
|
|
|
|
|
|
|
|
+#ifdef _WIN32
|
|
|
|
+ f = fopen("test_gz.txt.gz", "wb");
|
|
|
|
+#else
|
|
|
|
+ f = fopen("test_gz.txt.gz", "w");
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ encoded_file_content = "\x1f\x8b\x08\x08\xf8\x9d\xcb\x55\x00\x00"
|
|
|
|
+ "test_gz.txt"
|
|
|
|
+ "\x00\x01\x11\x00\xee\xff"
|
|
|
|
+ "zipped text file"
|
|
|
|
+ "\x0a\x34\x5f\xcc\x49\x11\x00\x00\x00";
|
|
|
|
+ fwrite(encoded_file_content, 1, 52, f);
|
|
|
|
+ fclose(f);
|
|
|
|
+
|
|
|
|
|
|
/* Get static data */
|
|
/* Get static data */
|
|
client_conn = mg_download("localhost",
|
|
client_conn = mg_download("localhost",
|
|
@@ -721,6 +737,51 @@ START_TEST(test_request_handlers)
|
|
mg_close_connection(client_conn);
|
|
mg_close_connection(client_conn);
|
|
|
|
|
|
|
|
|
|
|
|
+ /* Get zipped static data - will not work if Accept-Encoding is not set */
|
|
|
|
+ client_conn = mg_download("localhost",
|
|
|
|
+ ipv4_port,
|
|
|
|
+ 0,
|
|
|
|
+ ebuf,
|
|
|
|
+ sizeof(ebuf),
|
|
|
|
+ "%s",
|
|
|
|
+ "GET /test_gz.txt HTTP/1.0\r\n\r\n");
|
|
|
|
+ ck_assert(client_conn != NULL);
|
|
|
|
+ ri = mg_get_request_info(client_conn);
|
|
|
|
+
|
|
|
|
+ ck_assert(ri != NULL);
|
|
|
|
+
|
|
|
|
+ ck_assert_str_eq(ri->uri, "404");
|
|
|
|
+ mg_close_connection(client_conn);
|
|
|
|
+
|
|
|
|
+ /* Get zipped static data - with Accept-Encoding */
|
|
|
|
+ client_conn = mg_download(
|
|
|
|
+ "localhost",
|
|
|
|
+ ipv4_port,
|
|
|
|
+ 0,
|
|
|
|
+ ebuf,
|
|
|
|
+ sizeof(ebuf),
|
|
|
|
+ "%s",
|
|
|
|
+ "GET /test_gz.txt HTTP/1.0\r\nAccept-Encoding: gzip\r\n\r\n");
|
|
|
|
+ ck_assert(client_conn != NULL);
|
|
|
|
+ ri = mg_get_request_info(client_conn);
|
|
|
|
+
|
|
|
|
+ ck_assert(ri != NULL);
|
|
|
|
+
|
|
|
|
+#if defined(NO_FILES)
|
|
|
|
+ ck_assert_str_eq(ri->uri, "404");
|
|
|
|
+#else
|
|
|
|
+ ck_assert_str_eq(ri->uri, "200");
|
|
|
|
+ i = mg_read(client_conn, buf, sizeof(buf));
|
|
|
|
+ ck_assert_int_eq(i, 52);
|
|
|
|
+ if ((i >= 0) && (i < (int)sizeof(buf))) {
|
|
|
|
+ buf[i] = 0;
|
|
|
|
+ }
|
|
|
|
+ ck_assert_int_eq(ri->content_length, 52);
|
|
|
|
+ ck_assert_str_eq(buf, encoded_file_content);
|
|
|
|
+#endif
|
|
|
|
+ mg_close_connection(client_conn);
|
|
|
|
+
|
|
|
|
+
|
|
/* Get directory listing */
|
|
/* Get directory listing */
|
|
client_conn = mg_download("localhost",
|
|
client_conn = mg_download("localhost",
|
|
ipv4_port,
|
|
ipv4_port,
|