mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Add sapi_get_fd() and implement it for the Apache/thttpd SAPIs.
This commit is contained in:
parent
f0b6f5450c
commit
09f463ddae
4 changed files with 48 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
};
|
||||
/* }}} */
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue