--- parser3/src/targets/isapi/parser3isapi.C 2006/04/09 13:38:47 1.97 +++ parser3/src/targets/isapi/parser3isapi.C 2019/12/25 22:22:07 1.112 @@ -1,11 +1,11 @@ /** @file Parser: IIS extension. - Copyright (c) 2000,2001-2005 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2000-2017 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_PARSER3ISAPI_C="$Date: 2006/04/09 13:38:47 $"; +volatile const char * IDENT_PARSER3ISAPI_C="$Id: parser3isapi.C,v 1.112 2019/12/25 22:22:07 moko Exp $"; #ifndef _MSC_VER # error compile ISAPI module with MSVC [no urge for now to make it autoconf-ed (PAF)] @@ -17,9 +17,7 @@ static const char * const IDENT_PARSER3I #include "pa_globals.h" #include "pa_request.h" #include "pa_version.h" -#include "pa_socks.h" -#define WINVER 0x0400 #include #include @@ -27,7 +25,7 @@ static const char * const IDENT_PARSER3I // defines -#if _MSC_VER && !defined(_DEBUG) +#if defined(_MSC_VER) && !defined(_DEBUG) # define PA_SUPPRESS_SYSTEM_EXCEPTION #endif @@ -42,12 +40,13 @@ const char* IIS51vars[]={ "CERT_COOKIE", "CERT_FLAGS", "CERT_ISSUER", "CERT_KEYSIZE", "CERT_SECRETKEYSIZE", "CERT_SERIALNUMBER", "CERT_SERVER_ISSUER", "CERT_SERVER_SUBJECT", "CERT_SUBJECT", "CONTENT_LENGTH", "CONTENT_TYPE", - "LOGON_USER", + "GATEWAY_INTERFACE", "HTTPS", "HTTPS_KEYSIZE", "HTTPS_SECRETKEYSIZE", "HTTPS_SERVER_ISSUER", "HTTPS_SERVER_SUBJECT", "INSTANCE_ID", "INSTANCE_META_PATH", + "LOCAL_ADDR", "LOGON_USER", "PATH_INFO", "PATH_TRANSLATED", "QUERY_STRING", - "REMOTE_ADDR", "REMOTE_HOST", "REMOTE_USER", "REQUEST_METHOD", + "REMOTE_ADDR", "REMOTE_HOST", "REMOTE_PORT", "REMOTE_USER", "REQUEST_METHOD", "SCRIPT_NAME", "SERVER_NAME", "SERVER_PORT", "SERVER_PORT_SECURE", "SERVER_PROTOCOL", "SERVER_SOFTWARE", "URL", @@ -77,12 +76,12 @@ public: void SAPI::log(SAPI_Info& SAPI_info, const char* fmt, ...) { va_list args; va_start(args,fmt); - char buf[MAX_STRING]; + char buf[MAX_LOG_STRING]; const char* prefix="PARSER_ERROR:"; strcpy(buf, prefix); char *start=buf+strlen(prefix); - DWORD size=vsnprintf(start, MAX_STRING-strlen(prefix), fmt, args); - remove_crlf(start, start+size); + DWORD size=vsnprintf(start, MAX_LOG_STRING-strlen(prefix), fmt, args); + size=remove_crlf(start, start+size); SAPI_info.lpECB->ServerSupportFunction(SAPI_info.lpECB->ConnID, HSE_APPEND_LOG_PARAMETER, buf, &size, 0); @@ -111,7 +110,7 @@ void SAPI::abort(const char* fmt, ...) { // va_end(args); } -char* SAPI::get_env(SAPI_Info& SAPI_info, const char* name) { +char* SAPI::Env::get(SAPI_Info& SAPI_info, const char* name) { char *variable_buf=new(PointerFreeGC) char[MAX_STRING]; DWORD variable_len = MAX_STRING-1; @@ -151,9 +150,9 @@ static const char* mk_env_pair(const cha strcpy(result, key); strcat(result, "="); strcat(result, value); return result; } -const char* const *SAPI::environment(SAPI_Info& info) { +const char* const *SAPI::Env::get(SAPI_Info& info) { // we know this buf is writable - char* all_http_vars=SAPI::get_env(info, "ALL_HTTP"); + char* all_http_vars=SAPI::Env::get(info, "ALL_HTTP"); const int http_var_count=grep_char(all_http_vars, '\n')+1/*\n for theoretical(never saw) this \0*/; const char* *result=new(PointerFreeGC) const char*[IIS51var_count+http_var_count+1/*0*/]; @@ -162,7 +161,7 @@ const char* const *SAPI::environment(SAP // IIS5.1 vars for(int i=0; ilpszContentType; request_info.content_length=lpECB->cbTotalBytes; - request_info.cookie=SAPI::get_env(SAPI_info, "HTTP_COOKIE"); + request_info.cookie=SAPI::Env::get(SAPI_info, "HTTP_COOKIE"); request_info.mail_received=false; // prepare to process request Request request(SAPI_info, request_info, - String::Language(String::L_HTML|String::L_OPTIMIZE_BIT), - true /* status_allowed */); + String::Language(String::L_HTML|String::L_OPTIMIZE_BIT)); // beside by binary static char beside_binary_path[MAX_STRING]; @@ -476,8 +463,8 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSI // prepare header // not using SAPI func wich allocates on pool char header_buf[MAX_STRING]; int header_len=snprintf(header_buf, MAX_STRING, - "content-type: text/plain\r\n" - "content-length: %u\r\n" + HTTP_CONTENT_TYPE_CAPITALIZED ": text/plain\r\n" + HTTP_CONTENT_LENGTH_CAPITALIZED ": %u\r\n" // "expires: Fri, 23 Mar 2001 09:32:23 GMT\r\n" "\r\n", content_length); @@ -509,8 +496,8 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSI // prepare header // not using SAPI func wich allocates on pool char header_buf[MAX_STRING]; int header_len=snprintf(header_buf, MAX_STRING, - "content-type: text/plain\r\n" - "content-length: %u\r\n" + HTTP_CONTENT_TYPE_CAPITALIZED ": text/plain\r\n" + HTTP_CONTENT_LENGTH_CAPITALIZED ": %u\r\n" "expires: Fri, 23 Mar 2001 09:32:23 GMT\r\n" "\r\n", content_length);