summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>2002-11-26 05:15:55 +0000
committerSascha Schumann <sas@php.net>2002-11-26 05:15:55 +0000
commit09f463ddae79c53a065d28da61a33fda96669f84 (patch)
tree6a15768f41099cf790428c6fb999956610cabe31
parentf0b6f5450ca8888f79a4fb2ab77b628b3c49120f (diff)
downloadphp-git-09f463ddae79c53a065d28da61a33fda96669f84.tar.gz
Add sapi_get_fd() and implement it for the Apache/thttpd SAPIs.
-rw-r--r--main/SAPI.c9
-rw-r--r--main/SAPI.h6
-rw-r--r--sapi/apache/mod_php4.c23
-rw-r--r--sapi/thttpd/thttpd.c12
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)