--- parser3/src/targets/apache/mod_parser3_core.C 2026/04/25 13:38:46 1.44 +++ parser3/src/targets/apache/mod_parser3_core.C 2026/10/18 22:42:43 1.49 @@ -5,7 +5,7 @@ Parser: apache 1.3/2.X module, part, com Authors: Konstantin Morshnev , Alexandr Petrosian */ -volatile const char * IDENT_MOD_PARSER3_CORE_C="$Id: mod_parser3_core.C,v 1.44 2026/04/25 13:38:46 moko Exp $"; +volatile const char * IDENT_MOD_PARSER3_CORE_C="$Id: mod_parser3_core.C,v 1.49 2026/10/18 22:42:43 moko Exp $"; #include "pa_config_includes.h" @@ -63,7 +63,7 @@ void SAPI::log(SAPI_Info& SAPI_info, con va_list args; va_start(args,fmt); char buf[MAX_LOG_STRING]; - size_t size=vsnprintf(buf, MAX_LOG_STRING, fmt, args); + size_t size=pa_vsnprintf(buf, MAX_LOG_STRING, fmt, args); size=remove_crlf(buf, buf+size); pa_ap_log_rerror(0, 0, PA_APLOG_ERR | PA_APLOG_NOERRNO, SAPI_info.r, "%s", buf); va_end(args); @@ -73,7 +73,7 @@ void SAPI::die(const char* fmt, ...) { va_list args; va_start(args, fmt); char buf[MAX_LOG_STRING]; - size_t size=vsnprintf(buf, MAX_LOG_STRING, fmt, args); + size_t size=pa_vsnprintf(buf, MAX_LOG_STRING, fmt, args); size=remove_crlf(buf, buf+size); pa_ap_log_error(PA_APLOG_MARK, PA_APLOG_EMERG, 0, "%s", buf); exit(1); @@ -196,8 +196,8 @@ static void real_parser_handler(SAPI_Inf // Request info Request_info request_info; memset(&request_info, 0, sizeof(request_info)); - request_info.document_root=SAPI::Env::get(SAPI_info, "DOCUMENT_ROOT"); - request_info.path_translated=SAPI_info.r->filename; + request_info.set_document_root(SAPI::Env::get(SAPI_info, "DOCUMENT_ROOT")); + request_info.path_translated=backslashes_to_slashes(SAPI_info.r->filename); request_info.method=SAPI_info.r->method; request_info.query_string=SAPI_info.r->args; request_info.uri=request_info.strip_absolute_uri(SAPI::Env::get(SAPI_info, "REQUEST_URI")); @@ -216,7 +216,7 @@ static void real_parser_handler(SAPI_Inf config=SYSTEM_CONFIG_FILE; } #endif - request.core(config, SAPI_info.r->header_only!=0); + request.core(config); } #ifdef PA_SUPPRESS_SYSTEM_EXCEPTION @@ -239,7 +239,7 @@ static void call_real_parser_handler__su } __except ( (system_exception=GetExceptionInformation()), EXCEPTION_EXECUTE_HANDLER) { if(system_exception) if(_EXCEPTION_RECORD *er=system_exception->ExceptionRecord) - throw Exception("system", 0, "0x%08X at 0x%08X", er->ExceptionCode, er->ExceptionAddress); + throw Exception("system", 0, "0x%08X at %p", er->ExceptionCode, er->ExceptionAddress); else throw Exception("system", 0, ""); else @@ -253,6 +253,8 @@ static void call_real_parser_handler__su /// @test r->finfo.st_mode check seems to work only on win32 int pa_parser_handler(pa_request_rec *r, Parser_module_config *dcfg) { + Temp_gc_references gc_references; // for pointers GC does not see + // SAPI info SAPI_Info SAPI_info; SAPI_info.r=r;