Diff for /parser3/src/classes/form.C between versions 1.34.2.7.2.4 and 1.41

version 1.34.2.7.2.4, 2003/03/21 13:42:26 version 1.41, 2008/06/06 11:17:22
Line 1 Line 1
 /** @file  /** @file
         Parser: @b form parser class.          Parser: @b form parser class.
   
         Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com)
         Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)          Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
 */  */
   
 static const char* IDENT_FORM_C="$Date$";  static const char * const IDENT_FORM_C="$Date$";
   
 #include "classes.h"  #include "classes.h"
 #include "pa_vmethod_frame.h"  #include "pa_vmethod_frame.h"
Line 19  const size_t MAX_POST_SIZE_DEFAULT=10*0x Line 19  const size_t MAX_POST_SIZE_DEFAULT=10*0x
 // class  // class
   
 class MForm : public Methoded {  class MForm : public Methoded {
 public:  
         MForm();  
 public: // Methoded  public: // Methoded
   
         bool used_directly() { return false; }          bool used_directly() { return false; }
Line 43  DECLARE_CLASS_VAR(form, 0/*fictive*/, ne Line 41  DECLARE_CLASS_VAR(form, 0/*fictive*/, ne
   
 // statics  // statics
   
 const String& max_post_size_name(new String(MAX_POST_SIZE_NAME));  static const String max_post_size_name(MAX_POST_SIZE_NAME);
 const String& limits_name(new String(LIMITS_NAME));  static const String limits_name(LIMITS_NAME);
   
 // methods  // methods
   
Line 52  const String& limits_name(new String(LIM Line 50  const String& limits_name(new String(LIM
   
 void MForm::configure_admin(Request& r) {  void MForm::configure_admin(Request& r) {
   
         Value* limits=r.main_class->get_element(limits_name, *r.main_class, false);          Value* limits=r.main_class.get_element(limits_name, r.main_class, false);
         if(r.request_info.method && StrEqNc(r.request_info.method, "post", true)) {          if(r.request_info.method && StrStartFromNC(r.request_info.method, "post", true)) {
                 // $limits.max_post_size default 10M                  // $limits.max_post_size default 10M
                 Value* element=limits?limits->get_element(max_post_size_name, *limits, false)                  Value* element=limits?limits->get_element(max_post_size_name, *limits, false)
                         :0;                          :0;
Line 61  void MForm::configure_admin(Request& r) Line 59  void MForm::configure_admin(Request& r)
                 size_t max_post_size=value?value:MAX_POST_SIZE_DEFAULT;                  size_t max_post_size=value?value:MAX_POST_SIZE_DEFAULT;
                                   
                 if(r.request_info.content_length>max_post_size)                  if(r.request_info.content_length>max_post_size)
                         throw Exception("parser.runtime",                          throw Exception(PARSER_RUNTIME,
                                 0,                                  0,
                                 "posted content_length(%u) > max_post_size(%u)",                                  "posted content_length(%u) > $"LIMITS_NAME"."MAX_POST_SIZE_NAME"(%u)",
                                         r.request_info.content_length, max_post_size);                                          r.request_info.content_length, max_post_size);
                 if(r.request_info.content_length<0)  
                         throw Exception(0,  
                                 0,  
                                 "posted content_length(%u) < 0",  
                                         r.request_info.content_length);  
   
                 // read POST data                  // read POST data
                 if(r.request_info.content_length) {                  if(r.request_info.content_length) {
                         char *post_data=new char[r.request_info.content_length];                          char *post_data=new(PointerFreeGC) char[r.request_info.content_length+1/*terminating zero*/];
                         r.request_info.post_size=SAPI::read_post(r.sapi_info,                           size_t post_size=SAPI::read_post(r.sapi_info, 
                                         post_data, r.request_info.content_length);                                          post_data, r.request_info.content_length);
                           post_data[post_size]=0; // terminating zero
                         r.request_info.post_data=post_data;                          r.request_info.post_data=post_data;
                           r.request_info.post_size=post_size;
                   } else {
                           r.request_info.post_data=0;
                           r.request_info.post_size=0;
                 }                  }
                 if(r.request_info.post_size!=r.request_info.content_length)                  if(r.request_info.post_size!=r.request_info.content_length)
                         throw Exception(0,                           throw Exception(0, 

Removed from v.1.34.2.7.2.4  
changed lines
  Added in v.1.41


E-mail: