--- parser3/src/main/pa_request.C 2001/04/28 13:25:03 1.126 +++ parser3/src/main/pa_request.C 2001/05/24 09:29:52 1.136 @@ -5,13 +5,14 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_request.C,v 1.126 2001/04/28 13:25:03 paf Exp $ + $Id: pa_request.C,v 1.136 2001/05/24 09:29:52 parser Exp $ */ #include "pa_config_includes.h" #include "pcre.h" #include "internal.h" +extern "C" unsigned char pcre_default_tables[]; // pcre/chartables.c #include "pa_sapi.h" #include "pa_common.h" @@ -54,13 +55,14 @@ Request::Request(Pool& apool, main_class(0), connection(0), pcre_tables(0), - classes_conf(apool) + classes_conf(apool), + anti_endless_execute_recoursion(0) { /// directly used // operators OP.register_directly_used(*this); // classes: - // table, file, random, mail, image + // table, file, random, mail, image, ... methoded_array->register_directly_used(*this); /// methodless @@ -146,8 +148,6 @@ static void element2case(unsigned char * the file user requested us to process all located classes become children of one another, composing class we name 'MAIN' - - @test move configure to M-class */ void Request::core(const char *root_auto_path, bool root_auto_fail, const char *site_auto_path, bool site_auto_fail, @@ -169,6 +169,7 @@ void Request::core(const char *root_auto // configure root options // until someone with less privileges have overriden them + OP.configure_admin(*this); methoded_array->configure_admin(*this); // loading site auto.p @@ -214,11 +215,12 @@ void Request::core(const char *root_auto // compile requested file String& spath_translated=*NEW String(pool()); - spath_translated.APPEND_CLEAN(info.path_translated, 0, "user-request", 0); + spath_translated.APPEND_TAINTED(info.path_translated, 0, "user-request", 0); main_class=use_file(spath_translated, true/*don't ignore read problem*/, main_class_name, main_class); // configure not-root=user options + OP.configure_user(*this); methoded_array->configure_user(*this); // $MAIN:DEFAULTS @@ -265,7 +267,8 @@ void Request::core(const char *root_auto cstr2ctypes(pcre_tables, (const unsigned char *)"*+?{^.$|()[", ctype_meta); element2case(pcre_tables, *ctype, *ctype_lowercase_name); - } + } else + pcre_tables=pcre_default_tables; // filling form fields form.fill_fields(*this); @@ -289,7 +292,7 @@ void Request::core(const char *root_auto if(const Method *method=junction->method) { // preparing to pass parameters to // @postprocess[data] - VMethodFrame frame(pool(), *junction, false); + VMethodFrame frame(pool(), value->name(), *junction, false); frame.set_self(*main_class); frame.store_param(method->name, @@ -339,6 +342,8 @@ void Request::core(const char *root_auto // reset language to default flang=fdefault_lang; + if(flang==String::UL_USER_HTML) + flang=String::UL_HTML; // no _ conversions in @exception[params] // reset response response.fields().clear(); @@ -354,7 +359,7 @@ void Request::core(const char *root_auto if(const Method *method=junction->method) { // preparing to pass parameters to // @exception[origin;source;comment;type;code] - VMethodFrame frame(pool(), *junction, false); + VMethodFrame frame(pool(), value->name(), *junction, false); frame.set_self(*main_class); const String *problem_source=e.problem_source(); @@ -374,7 +379,7 @@ void Request::core(const char *root_auto } #endif frame.store_param(method->name, - origin_value?origin_value:NEW VUnknown(pool())); + origin_value?origin_value:NEW VNothing(pool())); // source Value *source_value=0; @@ -385,7 +390,7 @@ void Request::core(const char *root_auto source_value=NEW VString(problem_source_copy); } frame.store_param(method->name, - source_value?source_value:NEW VUnknown(pool())); + source_value?source_value:NEW VNothing(pool())); // comment String *comment_value=NEW String(pool(), @@ -400,7 +405,7 @@ void Request::core(const char *root_auto type_value=NEW VString(type_copy.append(*e.type(), flang, true)); } else - type_value=NEW VUnknown(pool()); + type_value=NEW VNothing(pool()); frame.store_param(method->name, type_value); // code @@ -410,7 +415,7 @@ void Request::core(const char *root_auto code_value=NEW VString(code_copy.append(*e.code(), flang, true)); } else - code_value=NEW VUnknown(pool()); + code_value=NEW VNothing(pool()); frame.store_param(method->name, code_value); // future $response:body= @@ -597,4 +602,4 @@ const String& Request::mime_type_of(cons "MIME-TYPE table column elements must not be empty"); } return *NEW String(pool(), "application/octet-stream"); -} \ No newline at end of file +}