--- parser3/src/targets/cgi/parser3.C 2009/08/27 10:21:28 1.252 +++ parser3/src/targets/cgi/parser3.C 2009/10/06 11:39:58 1.255 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_PARSER3_C="$Date: 2009/08/27 10:21:28 $"; +static const char * const IDENT_PARSER3_C="$Date: 2009/10/06 11:39:58 $"; #include "pa_config_includes.h" @@ -165,11 +165,13 @@ static void die_or_abort(const char* fmt // prepare header // let's be honest, that's bad we couldn't produce valid output - SAPI::add_header_attribute(SAPI_info, "status", "500"); - SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE, "text/plain"); + // capitalized headers passed for preventing malloc during capitalization + SAPI::add_header_attribute(SAPI_info, HTTP_STATUS_CAPITALIZED, "500"); + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE_CAPITALIZED, "text/plain"); + // don't use 'format' function because it calls malloc char content_length_cstr[MAX_NUMBER]; snprintf(content_length_cstr, sizeof(content_length_cstr), "%u", content_length); - SAPI::add_header_attribute(SAPI_info, "content-length", content_length_cstr); + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_LENGTH_CAPITALIZED, content_length_cstr); // send header SAPI::send_header(SAPI_info); @@ -239,7 +241,7 @@ size_t SAPI::read_post(SAPI_Info& , char void SAPI::add_header_attribute(SAPI_Info& , const char* dont_store_key, const char* dont_store_value) { if( cgi && (!request || !request->console.was_used()) ) - printf("%s: %s\n", dont_store_key, dont_store_value); + printf("%s: %s\n", capitalize(dont_store_key), dont_store_value); } /// @todo intelligent cache-control @@ -764,10 +766,12 @@ int main(int argc, char *argv[]) { int content_length=strlen(buf); // prepare header - SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE, "text/plain"); + // capitalized headers are used for preventing malloc during capitalization + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE_CAPITALIZED, "text/plain"); + // don't use 'format' function because it calls malloc char content_length_cstr[MAX_NUMBER]; snprintf(content_length_cstr, MAX_NUMBER, "%u", content_length); - SAPI::add_header_attribute(SAPI_info, "content-length", content_length_cstr); + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_LENGTH_CAPITALIZED, content_length_cstr); // send header SAPI::send_header(SAPI_info);