Annotation of parser3/src/classes/form.C, revision 1.54
1.3 paf 1: /** @file
2: Parser: @b form parser class.
3:
1.53 moko 4: Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com)
1.51 moko 5: Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.27 paf 6: */
1.3 paf 7:
1.10 paf 8: #include "classes.h"
1.35 paf 9: #include "pa_vmethod_frame.h"
10:
1.1 paf 11: #include "pa_request.h"
12: #include "pa_vform.h"
13:
1.54 ! moko 14: volatile const char * IDENT_FORM_C="$Id: form.C,v 1.53 2026/04/25 13:38:46 moko Exp $";
1.5 paf 15:
1.4 paf 16: // class
17:
18: class MForm : public Methoded {
1.11 paf 19: public: // Methoded
1.35 paf 20:
1.4 paf 21: bool used_directly() { return false; }
1.5 paf 22: void configure_admin(Request& r);
1.35 paf 23:
24: public:
25:
26: MForm(): Methoded("form") {}
27:
1.4 paf 28: };
1.1 paf 29:
1.35 paf 30: // global variable
31:
1.47 moko 32: DECLARE_CLASS_VAR(form, new MForm);
1.35 paf 33:
1.1 paf 34: // methods
35:
1.5 paf 36: // constructor & configurator
1.4 paf 37:
1.5 paf 38: void MForm::configure_admin(Request& r) {
39:
1.44 misha 40: if(r.request_info.can_have_body()){
1.54 ! moko 41: if(r.request_info.content_length>pa_post_max_size)
! 42: throw Exception(PARSER_RUNTIME, 0, "posted content_length(%s) > $LIMITS.post_max_size(%s)", pa_uitoa(r.request_info.content_length), pa_uitoa(pa_post_max_size));
1.5 paf 43:
44: // read POST data
1.35 paf 45: if(r.request_info.content_length) {
46: char *post_data=new(PointerFreeGC) char[r.request_info.content_length+1/*terminating zero*/];
1.48 moko 47: size_t post_size=SAPI::read_post(r.sapi_info, post_data, r.request_info.content_length);
1.35 paf 48: post_data[post_size]=0; // terminating zero
49: r.request_info.post_data=post_data;
50: r.request_info.post_size=post_size;
51: } else {
52: r.request_info.post_data=0;
53: r.request_info.post_size=0;
1.17 parser 54: }
1.35 paf 55: if(r.request_info.post_size!=r.request_info.content_length)
1.54 ! moko 56: throw Exception(0, 0, "post_size(%s) != content_length(%s)", pa_uitoa(r.request_info.post_size), pa_uitoa(r.request_info.content_length));
1.6 paf 57: }
1.1 paf 58: }
E-mail: