--- php-4.0.4pl1/sapi/apache/mod_php4.c.wiget Wed Jan 3 23:07:59 2001 +++ php-4.0.4pl1/sapi/apache/mod_php4.c Fri Jan 19 17:01:11 2001 @@ -59,9 +59,6 @@ #include "util_script.h" #include "mod_php4.h" -#if HAVE_MOD_DAV -# include "mod_dav.h" -#endif #undef shutdown @@ -111,8 +108,6 @@ int type; } php_per_dir_entry; -php_apache_info_struct php_apache_info; /* active config */ - /* some systems are missing these from their header files */ void php_save_umask(void) @@ -440,6 +435,7 @@ ELS_FETCH(); CLS_FETCH(); PLS_FETCH(); + APLS_FETCH(); if (setjmp(EG(bailout))!=0) { return OK; @@ -463,7 +459,7 @@ /* If PHP parser engine has been turned off with an "engine off" * directive, then decline to handle this request */ - if (!php_apache_info.engine) { + if (!AP(engine)) { r->content_type = php_apache_get_default_mimetype(r SLS_CC); r->allowed |= (1 << METHODS) - 1; if (setjmp(EG(bailout))==0) { @@ -485,7 +481,7 @@ } #endif - if (php_apache_info.last_modified) { + if (AP(last_modified)) { #if MODULE_MAGIC_NUMBER < 19970912 if ((retval = set_last_modified(r, r->finfo.st_mtime))) { if (setjmp(EG(bailout))==0) { @@ -734,46 +730,6 @@ } -#if HAVE_MOD_DAV - -extern int phpdav_mkcol_test_handler(request_rec *r); -extern int phpdav_mkcol_create_handler(request_rec *r); - -/* conf is being read twice (both here and in send_php()) */ -int send_parsed_php_dav_script(request_rec *r) -{ - php_apache_info_struct *conf; - - conf = (php_apache_info_struct *) get_module_config(r->per_dir_config, - &php4_module); - return send_php(r, 0, 0, conf->dav_script); -} - -static int php_type_checker(request_rec *r) -{ - php_apache_info_struct *conf; - - conf = (php_apache_info_struct *)get_module_config(r->per_dir_config, - &php4_module); - - /* If DAV support is enabled, use mod_dav's type checker. */ - if (conf->dav_script) { - dav_api_set_request_handler(r, send_parsed_php_dav_script); - dav_api_set_mkcol_handlers(r, phpdav_mkcol_test_handler, - phpdav_mkcol_create_handler); - /* leave the rest of the request to mod_dav */ - return dav_api_type_checker(r); - } - - return DECLINED; -} - -#else /* HAVE_MOD_DAV */ - -# define php_type_checker NULL - -#endif /* HAVE_MOD_DAV */ - handler_rec php_handlers[] = { @@ -809,7 +765,7 @@ NULL, /* check_user_id */ NULL, /* check auth */ NULL, /* check access */ - php_type_checker, /* type_checker */ + NULL, /* type_checker */ NULL, /* fixups */ NULL /* logger */ #if MODULE_MAGIC_NUMBER >= 19970103 --- php-4.0.4pl1/sapi/apache/mod_php4.h.wiget Mon Jul 3 01:46:50 2000 +++ php-4.0.4pl1/sapi/apache/mod_php4.h Fri Jan 19 17:01:11 2001 @@ -15,7 +15,7 @@ | Authors: Rasmus Lerdorf | +----------------------------------------------------------------------+ */ -/* $Id$ */ +/* $Id$ */ #ifndef MOD_PHP4_H #define MOD_PHP4_H @@ -29,12 +29,24 @@ typedef struct { long engine; long last_modified; - char *dav_script; long xbithack; + long terminate_child; } php_apache_info_struct; extern zend_module_entry apache_module_entry; + +#ifdef ZTS +extern int php_apache_info_id; +#define APLS_D php_apache_info_struct *apache_globals +#define AP(v) (apache_globals->v) +#define APLS_FETCH() APLS_D = ts_resource(php_apache_info_id) +#else extern php_apache_info_struct php_apache_info; +#define APLS_D +#define AP(v) (php_apache_info.v) +#define APLS_FETCH() +#endif + #ifdef WIN32 #define S_IXUSR _S_IEXEC --- php-4.0.4pl1/sapi/apache/php_apache.c.wiget Fri Oct 13 21:08:05 2000 +++ php-4.0.4pl1/sapi/apache/php_apache.c Fri Jan 19 17:01:11 2001 @@ -17,7 +17,7 @@ | David Sklar | +----------------------------------------------------------------------+ */ -/* $Id$ */ +/* $Id$ */ #define NO_REGEX_EXTRA_H @@ -45,6 +45,12 @@ #include "php_apache_http.h" #include "http_request.h" +#ifdef ZTS +int php_apache_info_id; +#else +php_apache_info_struct php_apache_info; +#endif + #ifdef PHP_WIN32 #include "zend.h" #include "ap_compat.h" @@ -61,6 +67,7 @@ PHP_FUNCTION(apachelog); PHP_FUNCTION(apache_note); PHP_FUNCTION(apache_lookup_uri); +PHP_FUNCTION(apache_child_terminate); PHP_MINFO_FUNCTION(apache); @@ -69,51 +76,24 @@ PHP_FE(getallheaders, NULL) PHP_FE(apache_note, NULL) PHP_FE(apache_lookup_uri, NULL) + PHP_FE(apache_child_terminate, NULL) {NULL, NULL, NULL} }; -static PHP_INI_MH(OnChangeApacheInt) -{ - long *p; - char *base = (char *) &php_apache_info; - - p = (long *) (base+(size_t) mh_arg1); - - if (new_value) { - *p = atoi(new_value); - return SUCCESS; - } else { - return FAILURE; - } -} - - -static PHP_INI_MH(OnChangeApacheString) -{ - char **p; - char *base = (char *) &php_apache_info; - - p = (char **) (base+(size_t) mh_arg1); - - if (new_value) { - *p = new_value; - return SUCCESS; - } else { - return FAILURE; - } -} - PHP_INI_BEGIN() - PHP_INI_ENTRY1("xbithack", "0", PHP_INI_ALL, OnChangeApacheInt, (void *) XtOffsetOf(php_apache_info_struct, xbithack)) - PHP_INI_ENTRY1("engine", "1", PHP_INI_ALL, OnChangeApacheInt, (void *) XtOffsetOf(php_apache_info_struct, engine)) - PHP_INI_ENTRY1("last_modified", "0", PHP_INI_ALL, OnChangeApacheInt, (void *) XtOffsetOf(php_apache_info_struct, last_modified)) - PHP_INI_ENTRY1("dav_script", NULL, PHP_INI_ALL, OnChangeApacheString, (void *) XtOffsetOf(php_apache_info_struct, dav_script)) + STD_PHP_INI_ENTRY("xbithack", "0", PHP_INI_ALL, OnUpdateInt, xbithack, php_apache_info_struct, php_apache_info) + STD_PHP_INI_ENTRY("engine", "1", PHP_INI_ALL, OnUpdateInt, engine, php_apache_info_struct, php_apache_info) + STD_PHP_INI_ENTRY("last_modified", "0", PHP_INI_ALL, OnUpdateInt, last_modified, php_apache_info_struct, php_apache_info) + STD_PHP_INI_ENTRY("child_terminate", "0", PHP_INI_ALL, OnUpdateInt, terminate_child, php_apache_info_struct, php_apache_info) PHP_INI_END() static PHP_MINIT_FUNCTION(apache) { +#ifdef ZTS + php_apache_info_id = ts_allocate_id(sizeof(php_apache_info_struct), NULL, NULL); +#endif REGISTER_INI_ENTRIES(); return SUCCESS; } @@ -129,6 +109,21 @@ zend_module_entry apache_module_entry = { "apache", apache_functions, PHP_MINIT(apache), PHP_MSHUTDOWN(apache), NULL, NULL, PHP_MINFO(apache), STANDARD_MODULE_PROPERTIES }; + +/* {{{ proto string child_terminate() + Get and set Apache request notes */ +PHP_FUNCTION(apache_child_terminate) +{ + APLS_FETCH(); + SLS_FETCH(); + + if (AP(terminate_child)) { + ap_child_terminate( ((request_rec *)SG(server_context)) ); + } else { /* tell them to get lost! */ + php_error(E_WARNING, "apache.child_terminate is disabled"); + } +} +/* }}} */ /* {{{ proto string apache_note(string note_name [, string note_value]) Get and set Apache request notes */