diff options
author | Rasmus Lerdorf <rasmus@php.net> | 1999-09-04 20:12:47 +0000 |
---|---|---|
committer | Rasmus Lerdorf <rasmus@php.net> | 1999-09-04 20:12:47 +0000 |
commit | 0bede914ab627eb1fb955f08a300f8b21296eab9 (patch) | |
tree | c5365c8b9fbc82507d4477ddbcd45fb8d4c91191 | |
parent | 8e9cd1e4aeb2750a177cfc83e63341de34dd062c (diff) | |
download | php-git-0bede914ab627eb1fb955f08a300f8b21296eab9.tar.gz |
First part of the connection_status work. No user-callable functions
yet. That is coming next. Have also only done Apache and CGI so far.
Will have to crack open my ISAPI book to do that one.
Also changed the SAPI output functions to return an int. We'll check
the connection status inside each one, but we might need the return
code at some other level and I don't see a good reason for just tossing
these return codes.
-rw-r--r-- | main/main.c | 13 | ||||
-rw-r--r-- | main/php.h | 4 | ||||
-rw-r--r-- | main/php_globals.h | 3 | ||||
-rw-r--r-- | mod_php4.c | 13 |
4 files changed, 26 insertions, 7 deletions
diff --git a/main/main.c b/main/main.c index f778212c07..5e53f5ffa1 100644 --- a/main/main.c +++ b/main/main.c @@ -228,6 +228,7 @@ PHP_INI_BEGIN() STD_PHP_INI_BOOLEAN("track_vars", (PHP_TRACK_VARS?"1":"0"), PHP_INI_ALL, OnUpdateInt, track_vars, php_core_globals, core_globals) STD_PHP_INI_ENTRY("gpc_order", "GPC", PHP_INI_ALL, OnUpdateStringUnempty, gpc_order, php_core_globals, core_globals) STD_PHP_INI_ENTRY("arg_separator", "&", PHP_INI_ALL, OnUpdateStringUnempty, arg_separator, php_core_globals, core_globals) + STD_PHP_INI_BOOLEAN("ignore_user_abort", "1", PHP_INI_ALL, OnUpdateInt, ignore_user_abort, php_core_globals, core_globals) PHP_INI_END() @@ -235,14 +236,16 @@ PHP_INI_END() /* True global (no need for thread safety */ static int module_initialized = 0; - +#if 0 #if APACHE void php3_apache_puts(const char *s) { SLS_FETCH(); if (SG(server_context)) { - rputs(s, (request_rec *) SG(server_context)); + if(rputs(s, (request_rec *) SG(server_context))==-1) { + PG(connection_status) = PHP_CONNECTION_ABORTED; + } } else { fputs(s, stdout); } @@ -253,12 +256,15 @@ void php3_apache_putc(char c) SLS_FETCH(); if (SG(server_context)) { - rputc(c, (request_rec *) SG(server_context)); + if(rputc(c, (request_rec *) SG(server_context))!=c) { + PG(connection_status) = PHP_CONNECTION_ABORTED; + } } else { fputc(c, stdout); } } #endif +#endif void php3_log_err(char *log_message) { @@ -847,6 +853,7 @@ int php_module_startup(sapi_module_struct *sf) PG(header_is_being_sent) = 0; SG(request_info).headers_only = 0; + PG(connection_status) = PHP_CONNECTION_NORMAL; #if HAVE_SETLOCALE setlocale(LC_CTYPE, ""); diff --git a/main/php.h b/main/php.h index 209e0c7b31..9bc697dd5b 100644 --- a/main/php.h +++ b/main/php.h @@ -324,6 +324,10 @@ PHPAPI int cfg_get_string(char *varname, char **result); #include "zend_variables.h" #include "zend_constants.h" +/* connection status states */ +#define PHP_CONNECTION_NORMAL 0 +#define PHP_CONNECTION_ABORTED 1 +#define PHP_CONNECTION_TIMEOUT 2 /* Finding offsets of elements within structures. diff --git a/main/php_globals.h b/main/php_globals.h index be8b5e3890..054ef07c8b 100644 --- a/main/php_globals.h +++ b/main/php_globals.h @@ -83,6 +83,9 @@ struct _php_core_globals { long y2k_compliance; + short connection_status; + short ignore_user_abort; + unsigned char header_is_being_sent; /* for fsock */ diff --git a/mod_php4.c b/mod_php4.c index bba5776a22..65d52df220 100644 --- a/mod_php4.c +++ b/mod_php4.c @@ -94,12 +94,17 @@ void php_save_umask() static int zend_apache_ub_write(const char *str, uint str_length) { SLS_FETCH(); - + int ret; + if (SG(server_context)) { - return rwrite(str, str_length, (request_rec *) SG(server_context)); + ret = rwrite(str, str_length, (request_rec *) SG(server_context)); } else { - return fwrite(str, 1, str_length, stdout); + ret = fwrite(str, 1, str_length, stdout); + } + if(ret != str_length) { + PG(connection_status) = PHP_CONNECTION_ABORTED; } + return ret; } @@ -466,7 +471,7 @@ int php_xbithack_handler(request_rec * r) return send_parsed_php(r); } -static void apache_php_module_shutdown_wrapper() +static void apache_php_module_shutdown_wrapper(void) { apache_php_initialized = 0; sapi_module.shutdown(&sapi_module); |