diff options
author | Sascha Schumann <sas@php.net> | 2002-11-26 05:15:55 +0000 |
---|---|---|
committer | Sascha Schumann <sas@php.net> | 2002-11-26 05:15:55 +0000 |
commit | 09f463ddae79c53a065d28da61a33fda96669f84 (patch) | |
tree | 6a15768f41099cf790428c6fb999956610cabe31 | |
parent | f0b6f5450ca8888f79a4fb2ab77b628b3c49120f (diff) | |
download | php-git-09f463ddae79c53a065d28da61a33fda96669f84.tar.gz |
Add sapi_get_fd() and implement it for the Apache/thttpd SAPIs.
-rw-r--r-- | main/SAPI.c | 9 | ||||
-rw-r--r-- | main/SAPI.h | 6 | ||||
-rw-r--r-- | sapi/apache/mod_php4.c | 23 | ||||
-rw-r--r-- | sapi/thttpd/thttpd.c | 12 |
4 files changed, 48 insertions, 2 deletions
diff --git a/main/SAPI.c b/main/SAPI.c index fd9b089bc5..f77c14ee11 100644 --- a/main/SAPI.c +++ b/main/SAPI.c @@ -851,6 +851,15 @@ SAPI_API char *sapi_getenv(char *name, size_t name_len TSRMLS_DC) } } +SAPI_API int sapi_get_fd(int *fd TSRMLS_DC) +{ + if (sapi_module.get_fd) { + return sapi_module.get_fd(fd TSRMLS_CC); + } else { + return -1; + } +} + /* * Local variables: * tab-width: 4 diff --git a/main/SAPI.h b/main/SAPI.h index f80d19f7d3..d0238516b5 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -186,6 +186,8 @@ SAPI_API void sapi_get_default_content_type_header(sapi_header_struct *default_h SAPI_API size_t sapi_apply_default_charset(char **mimetype, size_t len TSRMLS_DC); SAPI_API void sapi_activate_headers_only(TSRMLS_D); +SAPI_API int sapi_get_fd(int *fd TSRMLS_DC); + struct _sapi_module_struct { char *name; char *pretty_name; @@ -217,12 +219,16 @@ struct _sapi_module_struct { void (*block_interruptions)(void); void (*unblock_interruptions)(void); + void (*default_post_reader)(TSRMLS_D); void (*treat_data)(int arg, char *str, zval *destArray TSRMLS_DC); char *executable_location; int php_ini_ignore; + + int (*get_fd)(int *fd TSRMLS_DC); + }; diff --git a/sapi/apache/mod_php4.c b/sapi/apache/mod_php4.c index ce060e3c75..eac37883a7 100644 --- a/sapi/apache/mod_php4.c +++ b/sapi/apache/mod_php4.c @@ -343,6 +343,23 @@ static char *php_apache_getenv(char *name, size_t name_len TSRMLS_DC) } /* }}} */ +/* {{{ sapi_apache_get_fd + */ +static int sapi_apache_get_fd(int *nfd TSRMLS_DC) +{ + request_rec *r = SG(server_context); + int fd; + + fd = r->connection->client->fd; + + if (fd >= 0) { + if (nfd) *nfd = fd; + return 0; + } + return -1; +} +/* }}} */ + /* {{{ sapi_module_struct apache_sapi_module */ static sapi_module_struct apache_sapi_module = { @@ -382,7 +399,11 @@ static sapi_module_struct apache_sapi_module = { unblock_alarms, /* Unblock interruptions */ #endif - STANDARD_SAPI_MODULE_PROPERTIES + NULL, /* default post reader */ + NULL, /* treat data */ + NULL, /* exe location */ + 0, /* ini ignore */ + sapi_apache_get_fd }; /* }}} */ diff --git a/sapi/thttpd/thttpd.c b/sapi/thttpd/thttpd.c index 4f196973ca..96ba377aec 100644 --- a/sapi/thttpd/thttpd.c +++ b/sapi/thttpd/thttpd.c @@ -382,6 +382,12 @@ static int php_thttpd_startup(sapi_module_struct *sapi_module) return SUCCESS; } +static int sapi_thttpd_get_fd(int *nfd TSRMLS_DC) +{ + if (nfd) *nfd = TG(hc)->conn_fd; + return 0; +} + static sapi_module_struct thttpd_sapi_module = { "thttpd", "thttpd", @@ -411,7 +417,11 @@ static sapi_module_struct thttpd_sapi_module = { NULL, /* Block interruptions */ NULL, /* Unblock interruptions */ - STANDARD_SAPI_MODULE_PROPERTIES + NULL, + NULL, + NULL, + 0, + sapi_thttpd_get_fd }; static void thttpd_module_main(int show_source TSRMLS_DC) |