--- parser3/ChangeLog 2020/12/19 23:12:09 1.151 +++ parser3/ChangeLog 2023/10/02 02:05:14 1.182 @@ -1,5 +1,580 @@ +2023-10-01 moko + + * src/classes/json.C: we don't have a dynamic json object. + +2023-09-28 moko + + * tests/: 420.html, results/261.processed, results/420.processed: + tests updated after bug #1228 fix reverted + + * src/types/pa_vstring.h: revering fix for bug #1228, as empty or + whitespace string is hash compatible, so we don't want $s.key to + return a junction + + * tests/: 261.html, 420.html, results/261.processed, + results/420.processed: test for bug #1227 added, test updated + after bug #1228 fixed + + * src/types/: pa_vdouble.h, pa_vint.h: $int.field and $double.field + now throws exception as $non-empty-string.field (fixes bug #1227) + + * src/types/pa_vstring.h: allow $string.method access (fixes bug + #1228) + +2023-09-26 moko + + * AUTHORS, aclocal.m4, configure, src/classes/bool.C, + src/classes/classes.C, src/classes/classes.awk, + src/classes/classes.h, src/classes/curl.C, src/classes/date.C, + src/classes/double.C, src/classes/file.C, src/classes/form.C, + src/classes/hash.C, src/classes/hashfile.C, src/classes/image.C, + src/classes/inet.C, src/classes/int.C, src/classes/json.C, + src/classes/mail.C, src/classes/math.C, src/classes/memcached.C, + src/classes/memory.C, src/classes/op.C, src/classes/reflection.C, + src/classes/regex.C, src/classes/response.C, + src/classes/string.C, src/classes/table.C, src/classes/void.C, + src/classes/xdoc.C, src/classes/xnode.C, src/classes/xnode.h, + src/include/pa_array.h, src/include/pa_base64.h, + src/include/pa_cache_managers.h, src/include/pa_charset.h, + src/include/pa_charsets.h, src/include/pa_common.h, + src/include/pa_config_fixed.h, src/include/pa_config_includes.h, + src/include/pa_dictionary.h, src/include/pa_dir.h, + src/include/pa_exception.h, src/include/pa_exec.h, + src/include/pa_globals.h, src/include/pa_hash.h, + src/include/pa_http.h, src/include/pa_memory.h, + src/include/pa_opcode.h, src/include/pa_operation.h, + src/include/pa_os.h, src/include/pa_pool.h, + src/include/pa_random.h, src/include/pa_request.h, + src/include/pa_request_charsets.h, src/include/pa_request_info.h, + src/include/pa_sapi.h, src/include/pa_socks.h, + src/include/pa_sql_connection.h, + src/include/pa_sql_driver_manager.h, src/include/pa_stack.h, + src/include/pa_string.h, src/include/pa_stylesheet_connection.h, + src/include/pa_stylesheet_manager.h, src/include/pa_symbols.h, + src/include/pa_table.h, src/include/pa_threads.h, + src/include/pa_types.h, src/include/pa_uue.h, + src/include/pa_xml_exception.h, src/include/pa_xml_io.h, + src/lib/gd/gif.C, src/lib/gd/gif.h, src/lib/gd/gifio.C, + src/lib/ltdl/configure, src/lib/md5/pa_md5.h, + src/lib/md5/pa_md5c.c, src/lib/memcached/pa_memcached.C, + src/lib/memcached/pa_memcached.h, src/lib/punycode/pa_idna.c, + src/lib/punycode/pa_idna.h, src/lib/sdbm/pa_file_io.C, + src/lib/sdbm/pa_strings.C, src/lib/smtp/comms.C, + src/lib/smtp/smtp.C, src/lib/smtp/smtp.h, src/main/compile.C, + src/main/compile.tab.C, src/main/compile.y, + src/main/compile_tools.C, src/main/compile_tools.h, + src/main/execute.C, src/main/pa_base64.C, + src/main/pa_cache_managers.C, src/main/pa_charset.C, + src/main/pa_charsets.C, src/main/pa_common.C, + src/main/pa_dictionary.C, src/main/pa_dir.C, + src/main/pa_exception.C, src/main/pa_exec.C, + src/main/pa_globals.C, src/main/pa_http.C, src/main/pa_memory.C, + src/main/pa_os.C, src/main/pa_pool.C, src/main/pa_random.C, + src/main/pa_request.C, src/main/pa_socks.C, + src/main/pa_sql_driver_manager.C, src/main/pa_string.C, + src/main/pa_stylesheet_connection.C, + src/main/pa_stylesheet_manager.C, src/main/pa_symbols.C, + src/main/pa_table.C, src/main/pa_threads.C, src/main/pa_uue.C, + src/main/pa_xml_exception.C, src/main/pa_xml_io.C, + src/main/untaint.C, src/main/helpers/simple_folding.pl, + src/sql/pa_sql_driver.h, src/targets/apache/mod_parser3.c, + src/targets/apache/mod_parser3_core.C, + src/targets/apache/pa_httpd.h, src/targets/cgi/parser3.C, + src/targets/isapi/parser3isapi.C, src/types/pa_junction.h, + src/types/pa_method.h, src/types/pa_property.h, + src/types/pa_value.C, src/types/pa_value.h, src/types/pa_vbool.h, + src/types/pa_vcaller_wrapper.h, src/types/pa_vclass.C, + src/types/pa_vclass.h, src/types/pa_vcode_frame.h, + src/types/pa_vconsole.h, src/types/pa_vcookie.C, + src/types/pa_vcookie.h, src/types/pa_vdate.C, + src/types/pa_vdate.h, src/types/pa_vdouble.h, + src/types/pa_venv.C, src/types/pa_venv.h, src/types/pa_vfile.C, + src/types/pa_vfile.h, src/types/pa_vform.C, src/types/pa_vform.h, + src/types/pa_vhash.C, src/types/pa_vhash.h, + src/types/pa_vhashfile.C, src/types/pa_vhashfile.h, + src/types/pa_vimage.C, src/types/pa_vimage.h, + src/types/pa_vint.h, src/types/pa_vjunction.C, + src/types/pa_vjunction.h, src/types/pa_vmail.C, + src/types/pa_vmail.h, src/types/pa_vmath.C, src/types/pa_vmath.h, + src/types/pa_vmemcached.C, src/types/pa_vmemcached.h, + src/types/pa_vmemory.h, src/types/pa_vmethod_frame.C, + src/types/pa_vmethod_frame.h, src/types/pa_vobject.C, + src/types/pa_vobject.h, src/types/pa_vregex.C, + src/types/pa_vregex.h, src/types/pa_vrequest.C, + src/types/pa_vrequest.h, src/types/pa_vresponse.C, + src/types/pa_vresponse.h, src/types/pa_vstateless_class.C, + src/types/pa_vstateless_class.h, + src/types/pa_vstateless_object.h, src/types/pa_vstatus.C, + src/types/pa_vstatus.h, src/types/pa_vstring.C, + src/types/pa_vstring.h, src/types/pa_vtable.C, + src/types/pa_vtable.h, src/types/pa_vvoid.C, + src/types/pa_vvoid.h, src/types/pa_vxdoc.C, src/types/pa_vxdoc.h, + src/types/pa_vxnode.C, src/types/pa_vxnode.h, + src/types/pa_wcontext.C, src/types/pa_wcontext.h, + src/types/pa_wwrapper.h: copyright, authors actualized + +2023-08-20 moko + + * tests/: 141.html, results/141.processed: test for ^math:uuid7[] + commited (related to feature #1219) + +2023-08-16 moko + + * src/main/pa_random.C: replaced clock precision with monotonicity + counter, good for Windows version with low clock frequency + (related to feature #1229) + +2023-08-15 moko + + * src/: main/pa_random.C, types/pa_vstatus.C: win32 compatibility + fixes related to feature #1229 + + * src/: classes/math.C, include/pa_random.h, main/pa_random.C, + types/pa_vstatus.C: ^math:uuid7 added, code provided by Sumo + (implements feature #1229) + +2023-08-02 moko + + * tests/: results/417.processed, 417.html: test for empty string + match after last char added (related to bug #1224) + + * src/main/pa_string.C: avoid prestart++ after last char on zero + length match (related to bug #1224) + +2022-11-22 moko + + * tests/: 419.html, results/419.processed: test for L_URI and path + removeal from filename added (related to bug #1204) + + * src/main/pa_request.C: bugfix: pa_filename was lost in 1.394 + commit (related to bug #1204), L_HTTP_HEADER is incorrect for + attribute value, L_URI should be used + +2022-09-21 moko + + * src/targets/cgi/parser3.C: more clear error messages + + * src/targets/cgi/parser3.C: only SAPI_Info_CGI can read POST, + SAPI_Info will return 0 in read_post and post_size != + content_length will be thrown + +2022-08-23 moko + + * src/types/pa_vmail.C: .tables addes as .raw contains only last + header value + +2022-08-22 moko + + * tests/: 418.html, results/418.processed: test for + ^hash_a.intersection[hash_b; $.order[self|arg] ] added (related + to #1225) + + * src/classes/hash.C: keep old behavoir by default + + * src/classes/hash.C: ^hash_a.intersection[hash_b; + $.order[self|arg] ] added (implements #1215) + +2022-03-21 moko + + * src/main/pa_charset.C: bugfix: +static xml_encoding_handlers as + xmlInitCharEncodingHandlers is called in libxml static + initializers before gc_substitute_memory_management_functions in + pa_globals and thus gc may not see reference to our + xmlCharEncodingHandler and free it. + +2022-01-26 moko + + * src/targets/cgi/parser3.C: argv[0] -> parser3_filespec + +2021-12-28 moko + + * tests/: 417.html, results/417.processed: test for empty string + match added (related to bug #1224) + + * src/main/pa_string.C: empty string match now works (fixes bug + #1224) + +2021-12-24 moko + + * tests/: 415_dir/29.p, results/415.processed: yet another test + +2021-12-23 moko + + * src/: classes/table.C, main/pa_request.C: warnings war + + * src/: include/pa_common.h, include/pa_http.h, main/pa_common.C, + main/pa_http.C, targets/cgi/parser3.C: MSVC SOCKET warnings war + +2021-12-21 moko + + * tests/: 416.html, results/416.processed: test for ^break[] in + ^hash/table.select[] (related to feature #1222) + + * src/classes/: hash.C, table.C: ^break[] support for + ^hash/table.select[] (implements feature #1222) + +2021-11-30 moko + + * src/targets/cgi/parser3.C: default sock_ready interval changed to + 0.5 sec + +2021-11-10 moko + + * tests/results/415.processed: more syntax errors tests added + + * tests/415_dir/: 20.p, 21.p, 22.p, 23.p, 24.p, 25.p, 26.p, 27.p, + 28.p: minor syntax error tests + + * src/main/pa_exception.C: pa_strdup added for compatibility + + * src/classes/curl.C: hint to call ^curl:options[ + $.library[correct.libcurl.so.name] ] added if default load fails. + +2021-11-09 moko + + * src/main/compile.y: error message can be on stack + + * src/main/pa_xml_io.C: strcat replaced with pa_strcat + + * src/main/pa_charset.C: memcpy is more correct and efficient in + this case then strncpy + + * src/: classes/image.C, types/pa_vrequest.C: pa_strdup used + instead of strcpy where possible + + * src/: classes/op.C, main/pa_exception.C: "%s" format now can be + used to avoid MAX_STRING limit in Exception comment + + * tests/results/415.processed: compiler exceptions are no longer + limited to MAX_STRING + + * src/main/: compile.y, compile_tools.h: Parse_control uses const + char * instead of fixed buffer + + * tests/: 415.html, 415_dir/01.p, 415_dir/02.p, 415_dir/03.p, + 415_dir/04.p, 415_dir/05.p, 415_dir/06.p, 415_dir/07.p, + 415_dir/08.p, 415_dir/09.p, 415_dir/10.p, 415_dir/11.p, + 415_dir/12.p, 415_dir/13.p, 415_dir/14.p, 415_dir/15.p, + results/415.processed: tests for parser.compile exceptions added + +2021-11-08 moko + + * src/: classes/math.C, include/pa_common.h, main/compile.y, + main/pa_common.C, main/pa_dir.C, main/pa_exec.C, main/pa_http.C, + targets/cgi/parser3.C, targets/isapi/parser3isapi.C, + types/pa_vdate.C: pa_strncpy added ans used to avoid strncpy + drawbacks + +2021-11-06 moko + + * src/classes/inet.C: ^inet:hostname[] added by sumo@ patch + (implements feature #1219) + + * tests/: 414.html, results/414.processed: test for + ^hash.rename[from;to] added (related to feature #1144) + +2021-11-05 moko + + * src/classes/hash.C: ^hash.rename[ $.from[to] ... ] support added + (related to feature #1144) + +2021-11-04 moko + + * src/: classes/hash.C, include/pa_hash.h: ^hash.rename[from;to] + added (implements feature #1144) + +2021-10-19 moko + + * tests/: 413.html, results/413.processed: test for hash no longer + is accepted as file parameter (related to bug #1218) + + * src/: classes/curl.C, classes/file.C, classes/image.C, + classes/math.C, classes/xdoc.C, types/pa_value.C, + types/pa_value.h, types/pa_vfile.h, types/pa_vmail.C: hash no + longer is accepted as file parameter (fixes bug #1218) + +2021-07-19 moko + + * src/targets/cgi/parser3.C: waitpid in file::exec returned "No + child processes" when SIGCHLD was SIG_IGN (fixes bug #1215) + +2021-04-16 moko + + * src/types/pa_vmail.C: message can be null when e-mail is broken, + processing it leads to assertions. + +2021-03-25 moko + + * tests/: 412.html, results/412.processed: test to demonstrate bug + #1213 + +2021-02-12 moko + + * tests/: 360.html, results/360.processed, results/363.processed: + parser method call in expression mode no longer differs from call + in string mode (related to feature #1211) + +2021-02-11 moko + + * src/types/pa_vmail.C: mail parsing with Windows line endings + fixed (bug #1212) + + * src/types/pa_vmethod_frame.h: no more difference inside @test[] + when called $v[^test[]] vs $v(^test[]), numbers are converted to + strings in both calls (implements feature #1211) + +2021-01-28 moko + + * buildall, etc/auto.p.in: to remove last patch in debian package + + * configure, configure.ac, src/include/pa_version.h: 3.4.6 -> + 3.4.7b + +2021-01-21 moko + + * src/main/pa_http.C: no alarm() in file::load when web server mode + is MULTITHREADED + +2021-01-20 moko + + * src/targets/apache/mod_parser3.c: it is more correct to recommend + 'a2enmod mpm_prefork' + + * src/targets/apache/mod_parser3.c: prefork name is now + 'libapache2-mpm-itk' + + * src/targets/apache/mod_parser3_core.C: last regular malloc + removed + + * src/targets/isapi/Makefile.am: -pa_threads.C + + * configure, configure.ac, src/include/pa_version.h: 3.4.6rc -> + 3.4.6 + + * etc/auto.p.in: post_max_size 10Mb -> 64Mb. It's 2021 year now. :) + + * etc/auto.p.in: @config[result] added to simplify $cfg change in + /httpd.p + + * etc/auto.p.in: httpd fine-tune: + @OPTIONS partial, + + ^use[/httpd.p] + optional ^preprocess[] (related to feature + #1203) + +2021-01-19 moko + + * buildall: --disable-parallel-mark added to avoid "number of + processors" threads creation for heap marking as it conflicts + with RLimitNProc in apache (on Linux setrlimit RLIMIT_NPROC + limits threads) + +2021-01-16 moko + + * src/: classes/memory.C, include/pa_memory.h, lib/gc/include/gc.h, + main/pa_globals.C, main/pa_memory.C, + targets/apache/mod_parser3_core.C, targets/isapi/parser3isapi.C, + types/pa_vhashfile.C: ^memory:auto-compact(N) added (implements + feature #1209) + +2021-01-15 moko + + * configure, configure.ac, src/include/pa_version.h: 3.4.6b -> + 3.4.6rc + + * src/classes/json.C: get_delim added for delimiter caching (10% + faster on large json) + +2021-01-14 moko + + * operators.txt: updated with 3.4.6 changes + + * tests/results/224.processed: test result modified after + today(shift) implemented + + * tests/: 407.html, results/407.processed: test for ^hash.select + option $.default(bool) added (related to feature #1172) + + * src/classes/hash.C: ^hash.select option $.default(bool) added + (related to feature #1172) + + * tests/: 141.html, results/141.processed: test modified for + feature #1185. + + * src/: classes/math.C, include/pa_random.h, main/pa_random.C: + ^math:uuid options $.lower(bool) $.solid(bool), ^math:uid64 + options $.lower(bool) (implements feature #1185) + +2021-01-11 moko + + * src/classes/date.C: ^date::today(N) by gz@ (implements feature + #1192) + + * tests/: 411.html, results/411.processed: test for ^date::today(N) + added (related to feature #1192) + +2021-01-05 moko + + * tests/: 270.html, results/270.processed: test modified to work + under Windows + + * tests/: 390.html, 395.html, results/395.processed: tests updated + 4 windows + + * tests/: 410.html, results/410.processed: test for + $CLASS-GETTER-PROTECTED(false) added + +2021-01-04 moko + + * tests/: 409.html, results/409.processed, results/auto.p: test for + $MAIN:LOCALS(true) added + +2021-01-03 moko + + * src/: main/pa_http.C, main/pa_request.C, types/pa_vclass.C, + types/pa_vclass.h, types/pa_vstateless_class.C, + types/pa_vstateless_class.h: @conf[] +CLASS-GETTER-PROTECTED, + +LOCALS. $main -> $MAIN in exception texts (implements feature + #1207) + +2021-01-02 moko + + * etc/auto.p.in: minor + + * src/main/pa_request.C: sending headers only after opening file to + allow error reporting if file was not opened (foreign group, + etc). + +2020-12-31 moko + + * src/: include/pa_request.h, main/pa_request.C, + targets/cgi/parser3.C: ^httpd-main[] -> ^httpd:main[] + + * src/: classes/reflection.C, include/pa_request.h, main/execute.C, + main/pa_request.C: get_class_ref added and used + + * etc/auto.p.in: @CLASS httpd added + + * etc/auto.p.in: @auto[] is now first + +2020-12-30 moko + + * tests/: 408.html, results/408.processed: test for bug #1166 + (windows only) added + + * src/main/pa_common.C: create_dir_for_file should not create dir + for trailing / (fixes bug #1166) + + * tests/: 341.html, results/341.processed: tests for + ^nameless_table.hash[] added (related to feature #1138) + + * src/classes/table.C: ^nameless_table.hash[0;1] now supported + (implements feature #1138), extra fields in named tables no + longer ignored (implements feature #1138) + + * tests/results/390.processed: updated after exception text change + +2020-12-29 moko + + * tests/: 407.html, results/407.processed: +$._default check + + * src/classes/hash.C: keep $_default in ^hash.reverse[] + + * tests/: 407.html, results/407.processed: test for ^hash.select[] + and ^hash.reverse[] added (releated to feature #1172) + + * src/classes/hash.C: + ^hash.select[key;value](bool-condition)[options hash] + + ^hash.reverse[] added (implements feature #1172) + + * src/types/pa_vtable.h: warning war + + * src/include/pa_config_fixed.h: win32 fix + +2020-12-27 moko + + * tests/: 406.html, results/406.processed: test results updated + + * src/: classes/table.C, main/pa_request.C, types/pa_vmail.C, + types/pa_vmemcached.C: fine tuning in ^table.rename[], minor + spelling + +2020-12-26 moko + + * tests/: 406.html, results/406.processed: tests for + ^table.rename[] added (related to feature #1148) + + * src/: classes/table.C, include/pa_table.h, main/pa_table.C: + ^table.rename[column name from;column name to], ^table.rename[ + $.[column name from][column name to] ... ] added (implements + feature #1148) + +2020-12-25 moko + + * src/: include/pa_request_info.h, targets/cgi/parser3.C: + request_info now on stack to avoid yet another THREAD_LOCAL + memory deallocation issue (now with cookies), explained in #1203 + + * src/types/pa_vcookie.C: fields should be inited + +2020-12-24 moko + + * src/include/pa_stylesheet_connection.h: looks like + xsltFreeStylesheet leads to memory double-free. If so, it's for + sure libxml bug, but we have GC anyway, so we just remove this + call and see... + + * thread #1, name = 'parser.parser3.cgi', stop reason = signal + SIGABRT * frame #0: 0x0000000801ab50fa libc.so.7`__sys_thr_kill + + 10 frame #2: 0x0000000801ab5039 libc.so.7`abort at + abort.c:65:8 frame #3: 0x00000000004da663 + parser.parser3.cgi`GC_freehblk(hbp=) at + allchblk.c:878:9 frame #4: 0x00000000004cb8c4 + parser.parser3.cgi`GC_free(p=0x0000000808b34000) at + malloc.c:617:9 frame #5: 0x0000000000577f0c + parser.parser3.cgi`xmlHashFree(table=0x0000000806991a80, + f=) at hash.c:356:2 frame #6: 0x000000000051a7c2 + parser.parser3.cgi`xsltFreeTemplateHashes + 50 frame #7: + 0x000000000050cfac parser.parser3.cgi`xsltFreeStylesheet + 124 + frame #8: 0x000000000050d35c + parser.parser3.cgi`xsltFreeStylesheetList + 44 frame #9: + 0x000000000050d1fa parser.parser3.cgi`xsltFreeStylesheet + 714 + frame #10: 0x00000000004436e5 + parser.parser3.cgi`Stylesheet_manager::maybe_expire_cache() + [inlined] + Stylesheet_connection::disconnect(this=0x0000000804676c80) at + pa_stylesheet_connection.h:62:3 + +2020-12-23 moko + + * src/classes/image.C: ^image::measure[; $.video() ] option added + + * tests/: 395.html, 395_dir/4.mp4, results/395.processed: test + ^image::measure[; $.video(true) ] added + + * src/main/pa_exec.C: not cleared automatically in multithreaded + httpd mode for unknown reasons + +2020-12-22 moko + + * src/targets/cgi/parser3.C: added by PAF in rev 201 to "write to + error_log uri of currently processed document", but never used + and conflicts with how libgc stops threads on FreeBSD (#define + SIG_SUSPEND SIGUSR1), thus removed. + +2020-12-21 moko + + * src/main/pa_request.C: +comment + 2020-12-20 moko + * src/: include/pa_common.h, include/pa_memory.h, main/pa_common.C: + it is more safe to have versions of pa_strdup with one and two + arguments, as helper_length=0 not always mean that strlen() + should be called, but means zero. + + * src/targets/isapi/parser3isapi.C: minor + + * src/main/pa_http.C: +valid_http_method + * src/: include/pa_http.h, main/pa_http.C, targets/cgi/pa_sapi_info.h: SERVER_PORT now available