|
|
| version 1.288, 2026/10/16 13:55:16 | version 1.293, 2026/10/28 01:17:38 |
|---|---|
| Line 48 class VConsole; | Line 48 class VConsole; |
| class WebSocket; | class WebSocket; |
| class VException; | class VException; |
| extern int pa_loop_limit; | extern int pa_loop_limit; // not thread local: never changes |
| extern int pa_array_limit; | extern int pa_array_limit; // not thread local: never changes |
| extern int pa_execute_recursion_limit; | extern int pa_execute_recursion_limit; // not thread local: never changes |
| extern int pa_httpd_timeout; | extern int pa_httpd_timeout; // not thread local: never changes |
| extern size_t pa_file_size_limit; | extern THREAD_LOCAL size_t pa_file_size_limit; // thread local: url-dependent |
| extern THREAD_LOCAL size_t pa_post_max_size; // thread local: url-dependent | |
| class Code_cache; | class Code_cache; |
| Line 176 public: | Line 177 public: |
| private: | private: |
| int fin_cycle; | int fin_cycle; |
| Skip fskip; | volatile Skip fskip; // also changed from the signal handler |
| volatile int finterrupted; // set by the signal handler, if fskip was overwritten meanwhile, the next set_skip() restores SKIP_INTERRUPTED from it | |
| VMethodFrame* freturn_method_frame; | VMethodFrame* freturn_method_frame; |
| public: | public: |
| Line 328 public: | Line 330 public: |
| } | } |
| Skip get_skip() { return fskip; } | Skip get_skip() { return fskip; } |
| void set_skip(Skip askip) { fskip=askip; } | void set_skip(Skip askip) { fskip=finterrupted ? SKIP_INTERRUPTED : askip; } |
| void set_skip_return(VMethodFrame& amethod_frame) { fskip=SKIP_RETURN; freturn_method_frame=&amethod_frame; } | void set_skip_return(VMethodFrame& amethod_frame) { freturn_method_frame=&amethod_frame; set_skip(SKIP_RETURN); } |
| inline bool check_skip_break() { bool result=fskip >= SKIP_BREAK; if(fskip <= SKIP_BREAK) fskip=SKIP_NOTHING; return result; } | inline bool check_skip_break() { bool result=fskip >= SKIP_BREAK; if(fskip <= SKIP_BREAK) set_skip(SKIP_NOTHING); return result; } |
| inline void check_skip_return() { if(fskip==SKIP_RETURN && method_frame==freturn_method_frame) fskip=SKIP_NOTHING; } | inline void check_skip_return() { if(fskip==SKIP_RETURN && method_frame==freturn_method_frame) set_skip(SKIP_NOTHING); } |
| /// for signal handlers | |
| void interrupt() { finterrupted=1; fskip=SKIP_INTERRUPTED; } | |
| /// clears the interruption and throws parser.interrupted | |
| void throw_interrupted(); | |
| void set_in_cycle(int adelta) { fin_cycle+=adelta; } | void set_in_cycle(int adelta) { fin_cycle+=adelta; } |
| bool get_in_cycle() { return fin_cycle>0; } | bool get_in_cycle() { return fin_cycle>0; } |
| Line 418 private: // execute.C | Line 424 private: // execute.C |
| private: // mime types | private: // mime types |
| /// $MAIN:MIME-TYPES | /// $MAIN:MIME-TYPES (table or @GET_MIME-TYPES[] property), built at the first use |
| Table *mime_types; | Table *mime_types; |
| private: // connection manipulation | private: // connection manipulation |