--- parser3/src/targets/cgi/parser3.C 2001/11/05 11:46:30 1.128 +++ parser3/src/targets/cgi/parser3.C 2001/11/16 12:38:44 1.136 @@ -4,13 +4,14 @@ Copyright(c) 2001 ArtLebedev Group(http://www.artlebedev.com) Author: Alexander Petrosyan (http://paf.design.ru) - $Id: parser3.C,v 1.128 2001/11/05 11:46:30 paf Exp $ + $Id: parser3.C,v 1.136 2001/11/16 12:38:44 paf Exp $ */ #include "pa_config_includes.h" #ifdef WIN32 # include +# include #endif #include "pa_sapi.h" @@ -115,6 +116,26 @@ void SAPI::die(const char *fmt, ...) { ::log(fmt, args); va_end(args); + char body[MAX_STRING]; + size_t size=vsnprintf(body, MAX_STRING, fmt, args); + + // + int content_length=strlen(body); + + // prepare header + // let's be honest, that's bad we couldn't produce valid output + SAPI::add_header_attribute(pool, "status", "500"); + SAPI::add_header_attribute(pool, "content-type", "text/plain"); + char content_length_cstr[MAX_NUMBER]; + snprintf(content_length_cstr, MAX_NUMBER, "%u", content_length); + SAPI::add_header_attribute(pool, "content-length", content_length_cstr); + + // send header + SAPI::send_header(pool); + + // body + SAPI::send_body(pool, body, content_length); + exit(1); } @@ -127,7 +148,7 @@ size_t SAPI::read_post(Pool& , char *buf do { int chunk_size=read(fileno(stdin), buf+read_size, min(READ_POST_CHUNK_SIZE, max_bytes-read_size)); - if(chunk_size<0) + if(chunk_size<=0) break; read_size+=chunk_size; } while(read_size"); +#endif } @@ -431,5 +453,5 @@ int main(int argc, char *argv[]) { if(!cgi) SAPI::send_body(pool, "\n", 1); #endif - return result; + return 0; }