Sat, 10 Jun 2023 18:12:04 +0200
fix cgi-send inactive write event blocking request termination
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2019 Olaf Wintermann. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <errno.h> #include <pthread.h> #include "../util/pool.h" #include "../public/nsapi.h" #include "../util/plist.h" #include "../util/date.h" #include "../daemon/vfs.h" #include "test.h" #include "vfs.h" #include "writer.h" #include "xml.h" #include "webdav.h" #include "uri.h" #include "object.h" #include "io.h" void register_pg_tests(int argc, char **argv, UcxTestSuite *suite); void test() { } // needed for linking WSBool main_is_daemon(void) { return 0; } int main(int argc, char **argv) { pool_init(NULL, NULL, NULL); pblock_init_default_keys(); vfs_init(); //test(); printf("%s", "Webserver Test Suite\n====================\n\n"); UcxTestSuite* suite = ucx_test_suite_new(); // util tests ucx_test_register(suite, test_util_uri_escape_alphanum); ucx_test_register(suite, test_util_uri_escape_space); ucx_test_register(suite, test_util_uri_escape_latin); ucx_test_register(suite, test_util_uri_escape_kanji); // object tests ucx_test_register(suite, test_expr_parse_expr_value); ucx_test_register(suite, test_expr_parse_expr_neg_value); ucx_test_register(suite, test_expr_parse_expr_value_str); ucx_test_register(suite, test_expr_parse_expr_value_bool); ucx_test_register(suite, test_expr_parse_expr_value_var); ucx_test_register(suite, test_expr_parse_expr_not_value); ucx_test_register(suite, test_expr_parse_expr_sign_value); ucx_test_register(suite, test_expr_parse_expr_compare2values); ucx_test_register(suite, test_expr_parse_expr_compare2value_expr); ucx_test_register(suite, test_expr_parse_expr_compare2expr_value); ucx_test_register(suite, test_expr_parse_expr_bracket); ucx_test_register(suite, test_expr_op_defined_simple); ucx_test_register(suite, test_expr_op_defined); ucx_test_register(suite, test_expr_op_file_exists_simple); ucx_test_register(suite, test_expr_parse_expr_func_arg0); ucx_test_register(suite, test_expr_parse_expr_func_arg1); ucx_test_register(suite, test_expr_parse_expr_func_arg3); ucx_test_register(suite, test_expr_parse_expr_func_expr1); ucx_test_register(suite, test_expr_parse_expr_func_expr2); // io tests ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdronly_first); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdronly); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdronly_seq_fail); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_hdr_data); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_empty); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_partial_first); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_partial); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_invalid); ucx_test_register(suite, test_io_http_stream_parse_chunk_header_zero); ucx_test_register(suite, test_io_httpstream_write); ucx_test_register(suite, test_io_httpstream_chunked_write); ucx_test_register(suite, test_io_httpstream_chunked_write_end); ucx_test_register(suite, test_io_httpstream_chunked_write_xx); ucx_test_register(suite, test_io_httpstream_chunked_write_partial_header); ucx_test_register(suite, test_io_httpstream_chunked_write_partial_data); ucx_test_register(suite, test_io_httpstream_chunked_write_partial_trailer); ucx_test_register(suite, test_io_httpstream_chunked_write_partial_trailer_partial_header); ucx_test_register(suite, test_io_httpstream_chunked_write_data_2x); ucx_test_register(suite, test_io_httpstream_chunked_write_xx_limit); // vfs tests ucx_test_register(suite, test_vfs_open); ucx_test_register(suite, test_vfs_mkdir); ucx_test_register(suite, test_vfs_opendir); ucx_test_register(suite, test_vfs_readdir); ucx_test_register(suite, test_vfs_unlink); ucx_test_register(suite, test_vfs_rmdir); // writer tests ucx_test_register(suite, test_writer_putc); ucx_test_register(suite, test_writer_flush); ucx_test_register(suite, test_writer_put); // xml tests ucx_test_register(suite, test_wsxml_iterator); ucx_test_register(suite, test_wsxml_get_required_namespaces); ucx_test_register(suite, test_wsxml_write_nodes); ucx_test_register(suite, test_wsxml_nslist2string); ucx_test_register(suite, test_wsxml_string2nslist); // webdav tests ucx_test_register(suite, test_webdav_plist_add); ucx_test_register(suite, test_webdav_plist_size); ucx_test_register(suite, test_propfind_parse); ucx_test_register(suite, test_proppatch_parse); ucx_test_register(suite, test_lock_parse); ucx_test_register(suite, test_rqbody2buffer); ucx_test_register(suite, test_webdav_plist_iterator); ucx_test_register(suite, test_webdav_plist_iterator_remove_current); ucx_test_register(suite, test_msresponse_addproperty); ucx_test_register(suite, test_webdav_propfind_init); ucx_test_register(suite, test_webdav_op_propfind_begin); ucx_test_register(suite, test_webdav_op_propfind_children); ucx_test_register(suite, test_proppatch_msresponse); ucx_test_register(suite, test_msresponse_addproperty_with_errors); ucx_test_register(suite, test_webdav_op_proppatch); ucx_test_register(suite, test_webdav_vfs_op_do); ucx_test_register(suite, test_webdav_delete); // webdav methods ucx_test_register(suite, test_webdav_propfind); ucx_test_register(suite, test_webdav_proppatch); ucx_test_register(suite, test_webdav_put); // plugin tests #ifdef ENABLE_POSTGRESQL register_pg_tests(argc, argv, suite); #endif // run tests ucx_test_run(suite, stdout); fflush(stdout); return EXIT_SUCCESS; }