--- parser3/src/targets/apache/mod_parser3.c 2010/11/13 00:44:08 1.2 +++ parser3/src/targets/apache/mod_parser3.c 2010/11/14 22:49:57 1.4 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_MOD_PARSER3_C="$Date: 2010/11/13 00:44:08 $"; +static const char * const IDENT_MOD_PARSER3_C="$Date: 2010/11/14 22:49:57 $"; #ifdef WIN32 #include @@ -21,6 +21,8 @@ static const char * const IDENT_MOD_PARS #include "pa_httpd.h" +#define PARSER3_HANDLER "parser3-handler" + /* * To Ease Compatibility */ @@ -87,42 +89,52 @@ static const char* cmd_parser_status_all * Now let's declare routines for each of the callback phase in order. */ -static int parser_handler(request_rec *ar) { - // record clone - pa_request_rec lr={ - ar, - ar->pool, - ar->header_only, - &ar->status, - ar->method, - ar->headers_out, - ar->subprocess_env, - &ar->content_type, - ar->uri, - ar->filename, - ar->path_info, - ar->args, - &ar->finfo +static int parser_handler(request_rec *r) { + +// ap_log_rerror(APLOG_MARK, APLOG_EMERG, 0, r, "handler, r->handler=%s", r->handler); + +#ifdef STANDARD20_MODULE_STUFF + if(strcmp(r->handler, PARSER3_HANDLER)) + return DECLINED; +#endif + // converting to parser version + pa_request_rec pr={ + r, + r->pool, + r->header_only, + &r->status, + r->method, + r->headers_out, + r->subprocess_env, + &r->content_type, + r->uri, + r->filename, + r->path_info, + r->args, +#ifdef STANDARD20_MODULE_STUFF + r->finfo.filetype == 0 +#else + r->finfo.st_mode == 0 +#endif }; // config - Parser_module_config *dcfg=our_dconfig(ar); - - return pa_parser_handler(&lr, dcfg); + Parser_module_config *dcfg=our_dconfig(r); + + return pa_parser_handler(&pr, dcfg); } /* -* This function is called during server initialisation. +* This function is called during process initialisation. */ +#ifdef STANDARD20_MODULE_STUFF +static void parser_module_init(apr_pool_t *p, server_rec *s) { +#else static void parser_module_init(server_rec *s, apr_pool_t *p) { -#if MODULE_MAGIC_NUMBER >= 19980527 ap_add_version_component(p, pa_version()); #endif - - /* - * Set up any module cells that ought to be initialised. - */ + ap_log_perror(APLOG_MARK, APLOG_EMERG, 0, p, "parser inited %d", getpid()); pa_setup_module_cells(); } @@ -269,7 +281,7 @@ static const command_rec parser_cmds[] = #ifndef STANDARD20_MODULE_STUFF static const handler_rec parser_handlers[] = { - {"parser3-handler", parser_handler}, + {PARSER3_HANDLER, parser_handler}, {NULL} }; #endif @@ -286,9 +298,10 @@ static const handler_rec parser_handlers */ static void parser_register_hooks(apr_pool_t* pool) { - ap_add_version_component(pool, pa_version()); +// ap_add_version_component(pool, pa_version()); // ap_hook_post_config(parser_server_init, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_handler(parser_handler, NULL, NULL, APR_HOOK_MIDDLE); + ap_hook_child_init(parser_module_init, NULL, NULL, APR_HOOK_MIDDLE); // ap_hook_translate_name(parser_translate_handler, NULL, NULL, APR_HOOK_MIDDLE); // ap_hook_check_user_id(parser_check_user_id, NULL, NULL, APR_HOOK_MIDDLE); // ap_hook_auth_checker(parser_auth_checker, NULL, NULL, APR_HOOK_MIDDLE); @@ -319,17 +332,10 @@ module MODULE_VAR_EXPORT parser3_module parser_access_checker, /* [4] check access by host address */ 0, /* [7] MIME type checker/setter */ 0, /* [8] fixups */ - 0 /* [10] logger */ -#if MODULE_MAGIC_NUMBER >= 19970103 - ,0 /* [3] header parser */ -#endif -#if MODULE_MAGIC_NUMBER >= 19970719 - ,0 /* process initializer */ -#endif -#if MODULE_MAGIC_NUMBER >= 19970728 - ,parser_module_done /* process exit/cleanup */ -#endif - + 0, /* [10] logger */ + 0, /* [3] header parser */ + 0, /* process initializer */ + parser_module_done /* process exit/cleanup */ #endif // STANDARD20_MODULE_STUFF }; @@ -345,18 +351,18 @@ module MODULE_VAR_EXPORT parser3_module // interface to C++ -#define PA_APLOG_EMERG 0 /* system is unusable */ -#define PA_APLOG_ALERT 1 /* action must be taken immediately */ -#define PA_APLOG_CRIT 2 /* critical conditions */ -#define PA_APLOG_ERR 3 /* error conditions */ +#define PA_APLOG_EMERG 0 /* system is unusable */ +#define PA_APLOG_ALERT 1 /* action must be taken immediately */ +#define PA_APLOG_CRIT 2 /* critical conditions */ +#define PA_APLOG_ERR 3 /* error conditions */ #define PA_APLOG_WARNING 4 /* warning conditions */ -#define PA_APLOG_NOTICE 5 /* normal but significant condition */ -#define PA_APLOG_INFO 6 /* informational */ -#define PA_APLOG_DEBUG 7 /* debug-level messages */ +#define PA_APLOG_NOTICE 5 /* normal but significant condition */ +#define PA_APLOG_INFO 6 /* informational */ +#define PA_APLOG_DEBUG 7 /* debug-level messages */ #define PA_APLOG_LEVELMASK 7 /* mask off the level value */ -#define PA_APLOG_NOERRNO (PA_APLOG_LEVELMASK + 1) +#define PA_APLOG_NOERRNO (PA_APLOG_LEVELMASK + 1) #define PA_APLOG_MARK __FILE__,__LINE__